<?php
/**
 * SCRIPT DE VERIFICACIÓN DE FACTURAS SRI
 * 
 * Este script SOLO LEE y CONSULTA. NO modifica nada.
 * Propósito: Verificar el estado REAL de las facturas en el SRI
 */

session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require_once "config/Conexion.php";
require_once "modelos/SriService.php";

// Estilo simple
echo "<style>
    body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
    .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 5px; }
    h1 { color: #333; border-bottom: 3px solid #3498db; padding-bottom: 10px; }
    h2 { color: #2c3e50; margin-top: 30px; }
    table { width: 100%; border-collapse: collapse; margin: 20px 0; }
    th { background: #3498db; color: white; padding: 12px; text-align: left; }
    td { padding: 10px; border-bottom: 1px solid #ddd; }
    tr:hover { background: #f8f9fa; }
    .status-autorizado { color: #27ae60; font-weight: bold; }
    .status-rechazado { color: #e74c3c; font-weight: bold; }
    .status-pendiente { color: #f39c12; font-weight: bold; }
    .btn { background: #3498db; color: white; padding: 8px 15px; border: none; border-radius: 3px; cursor: pointer; text-decoration: none; display: inline-block; margin: 5px; }
    .btn:hover { background: #2980b9; }
    .alert { padding: 15px; margin: 15px 0; border-radius: 5px; }
    .alert-info { background: #d1ecf1; border-left: 4px solid #0c5460; color: #0c5460; }
    .alert-warning { background: #fff3cd; border-left: 4px solid #856404; color: #856404; }
    .alert-danger { background: #f8d7da; border-left: 4px solid #721c24; color: #721c24; }
    .alert-success { background: #d4edda; border-left: 4px solid #155724; color: #155724; }
    .detail-box { background: #f8f9fa; padding: 15px; border-radius: 5px; margin: 10px 0; }
    pre { background: #2c3e50; color: #ecf0f1; padding: 15px; border-radius: 5px; overflow-x: auto; }
</style>";

echo "<div class='container'>";
echo "<h1>🔍 Verificación de Facturas SRI</h1>";

echo "<div class='alert alert-info'>";
echo "<strong>ℹ️ Información:</strong> Este script SOLO consulta el estado de las facturas. NO modifica ningún dato.";
echo "</div>";

// Obtener facturas de la BD
echo "<h2>📋 Facturas en la Base de Datos</h2>";

$sql = "SELECT * FROM facturas_sri ORDER BY fecha_emision DESC LIMIT 20";
$result = ejecutarConsulta($sql);

if ($result->num_rows == 0) {
    echo "<div class='alert alert-warning'>⚠️ No hay facturas registradas en la base de datos.</div>";
} else {
    echo "<table>";
    echo "<tr>
            <th>ID</th>
            <th>Clave de Acceso</th>
            <th>RUC Emisor</th>
            <th>Fecha Emisión</th>
            <th>Ambiente</th>
            <th>Estado BD</th>
            <th>Acciones</th>
          </tr>";

    while ($row = $result->fetch_assoc()) {
        $statusClass = 'status-pendiente';
        if ($row['estado_sri'] == 'AUTORIZADO')
            $statusClass = 'status-autorizado';
        if ($row['estado_sri'] == 'NO AUTORIZADO' || $row['estado_sri'] == 'RECHAZADO')
            $statusClass = 'status-rechazado';

        $ambiente = ($row['ambiente'] == '1') ? 'PRUEBAS' : 'PRODUCCIÓN';

        echo "<tr>";
        echo "<td>{$row['idfactura_sri']}</td>";
        echo "<td style='font-family: monospace; font-size: 11px;'>{$row['clave_acceso']}</td>";
        echo "<td>{$row['ruc_emisor']}</td>";
        echo "<td>{$row['fecha_emision']}</td>";
        echo "<td>{$ambiente}</td>";
        echo "<td class='$statusClass'>{$row['estado_sri']}</td>";
        echo "<td>
                <a href='?verificar={$row['clave_acceso']}&ambiente={$row['ambiente']}' class='btn'>Verificar en SRI</a>
              </td>";
        echo "</tr>";
    }
    echo "</table>";
}

// Si se solicita verificar una factura específica
if (isset($_GET['verificar']) && isset($_GET['ambiente'])) {
    $claveAcceso = $_GET['verificar'];
    $ambiente = $_GET['ambiente'];

    echo "<h2>🔎 Verificando en el SRI...</h2>";

    echo "<div class='detail-box'>";
    echo "<strong>Clave de Acceso:</strong> <code>$claveAcceso</code><br>";
    echo "<strong>Ambiente:</strong> " . (($ambiente == '1') ? 'PRUEBAS' : 'PRODUCCIÓN');
    echo "</div>";

    try {
        // Consultar autorización en el SRI
        echo "<p>⏳ Consultando al SRI...</p>";

        // Instanciar con argumentos vacíos para cert y pass, ya que solo vamos a consultar
        $sri = new SriService($ambiente, '', '');

        $resultado = $sri->autorizarComprobante($claveAcceso);

        echo "<h3>📄 Respuesta del SRI:</h3>";

        // Lógica de respuesta corregida para autorizarComprobante
        // Este método devuelve un array ['estado'=>...] si encuentra autorización, o el objeto SOAP si no.

        if (is_array($resultado) && isset($resultado['estado'])) {
            echo "<div class='alert alert-success'>";
            echo "<strong>✅ FACTURA ENCONTRADA EN EL SRI</strong><br>";
            echo "Estado: <strong>{$resultado['estado']}</strong><br>";
            if (isset($resultado['fechaAutorizacion'])) {
                echo "Fecha Autorización: {$resultado['fechaAutorizacion']}<br>";
            }
            if (isset($resultado['numeroAutorizacion'])) {
                echo "Número Autorización: {$resultado['numeroAutorizacion']}";
            }
            echo "</div>";

            // Comparar con BD
            $sqlBD = "SELECT estado_sri FROM facturas_sri WHERE clave_acceso='$claveAcceso'";
            $rowBD = ejecutarConsultaSimpleFila($sqlBD);

            if ($rowBD && $rowBD['estado_sri'] != $resultado['estado']) {
                echo "<div class='alert alert-warning'>";
                echo "<strong>⚠️ INCONSISTENCIA DETECTADA</strong><br>";
                echo "Estado en BD: <strong>{$rowBD['estado_sri']}</strong><br>";
                echo "Estado en SRI: <strong>{$resultado['estado']}</strong><br>";
                echo "<br><em>El estado en tu base de datos NO coincide con el SRI.</em>";
                echo "</div>";
            }

        } else {
            echo "<div class='alert alert-danger'>";
            echo "<strong>❌ RESPUESTA NO ESTÁNDAR O NO AUTORIZADA</strong><br>";
            echo "El SRI no devolvió una autorización válida estándar.<br>";
            echo "Revise el detalle técnico a continuación.<br><br>";
            echo "<a href='corregir_factura_sri.php?clave=$claveAcceso' class='btn' style='background:#e74c3c'>🗑️ ELIMINAR Y CORREGIR</a>";
            echo "</div>";
        }

        // Mostrar respuesta completa para debugging
        echo "<h3>🔧 Detalle Técnico (para debugging):</h3>";
        echo "<pre>" . json_encode($resultado, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "</pre>";

    } catch (Exception $e) {
        echo "<div class='alert alert-danger'>";
        echo "<strong>❌ ERROR:</strong> " . $e->getMessage();
        echo "</div>";
    }
}

echo "<hr style='margin: 30px 0;'>";
echo "<p style='color: #7f8c8d; font-size: 12px;'>
        <strong>Nota:</strong> Este script NO modifica ningún dato. Solo consulta y muestra información.
      </p>";

echo "</div>";
?>