<?php
/**
 * verificar_api_real.php
 * Script para verificar que los nuevos componentes de la API SRI
 * carguen correctamente y tengan la lógica básica lista.
 */

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

header('Content-Type: text/plain; charset=utf-8');

echo "--- PRUEBA DE CARGA DE COMPONENTES ---\n";

try {
    $gateway = new SriGateway('1'); // Pruebas
    echo "✅ SriGateway cargado correctamente.\n";
    
    $signer = new XmlSigner();
    echo "✅ XmlSigner cargado correctamente.\n";
    
    // Simular datos básicos para probar construcción de XML
    $datosFactura = [
        'infoTributaria' => [
            'ambiente' => '1',
            'razonSocial' => 'PRUEBA REAL API',
            'ruc' => '1234567890001',
            'claveAcceso' => '090220260112345678900011001001000000001123456781',
            'estab' => '001',
            'ptoEmi' => '001',
            'secuencial' => '000000001',
            'dirMatriz' => 'QUITO'
        ],
        'infoFactura' => [
            'dirEstablecimiento' => 'QUITO',
            'razonSocialComprador' => 'CONSUMIDOR FINAL',
            'identificacionComprador' => '9999999999999',
            'totalSinImpuestos' => '1.00',
            'importeTotal' => '1.12',
            'totalConImpuestos' => [
                ['codigo' => '2', 'codigoPorcentaje' => '2', 'baseImponible' => 1.00, 'valor' => 0.12]
            ]
        ],
        'detalles' => [
            [
                'codigo' => '001',
                'descripcion' => 'SERVICIO TEST',
                'cantidad' => 1,
                'precioUnitario' => 1.00,
                'descuento' => 0,
                'totalSinImpuesto' => 1.00,
                'impuestos' => [
                    ['codigo' => '2', 'codigoPorcentaje' => '2', 'tarifa' => 12, 'baseImponible' => 1.00, 'valor' => 0.12]
                ]
            ]
        ]
    ];

    $sriService = new SriService('1', 'dummy', 'dummy');
    $reflection = new ReflectionClass('SriService');
    $method = $reflection->getMethod('construirXmlFactura');
    $method->setAccessible(true);
    $xmlCrudo = $method->invoke($sriService, $datosFactura);
    
    if (strpos($xmlCrudo, '<factura') !== false) {
        echo "✅ Construcción de XML base: OK\n";
        echo "Fragmento: " . substr($xmlCrudo, 0, 100) . "...\n";
    } else {
        echo "❌ Fallo en construcción de XML base.\n";
    }

    echo "\n--- CONCLUSIÓN ---\n";
    echo "Los motores de la 'API Real' están listos para ser probados con un certificado P12 válido por el usuario.\n";
    echo "La lógica ahora NO permite estados FALSOS. Si el SRI no autoriza, el sistema reportará ERROR.\n";

} catch (Exception $e) {
    echo "❌ Error en verificación: " . $e->getMessage() . "\n";
}
