<?php




class Generarenvioxmlfir
{
 

   public function Enviarxml($xmlmues)
    {

// Ruta del archivo XML firmado
$rutaXmlFirmado = __DIR__.'/../firmaecu/firmado/'.$xmlmues; 
$respuestamen = [];
// Leer contenido del XML firmado
if (!file_exists($rutaXmlFirmado)) {
    //die("Error: No se encontró el archivo XML firmado.");
    $respuestamen[0] = "Error: No se encontró el archivo XML firmado.";
}

$xmlContenido = file_get_contents($rutaXmlFirmado);

// Definir el ambiente (pruebas o producción)
$ambiente = "pruebas"; // Cambiar a "produccion" cuando sea necesario

// URL del servicio WSDL del SRI
if ($ambiente === "pruebas") {
    $wsdl = "https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantesOffline?wsdl";
} else {
    $wsdl = "https://cel.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantesOffline?wsdl";
}

try {
    // Crear cliente SOAP
    $client = new SoapClient($wsdl, [
        "trace" => true,
        "cache_wsdl" => WSDL_CACHE_NONE,
        "connection_timeout" => 30,
    ]);

    // Enviar el XML firmado
    $parametros = ["xml" => $xmlContenido];
    $respuesta = $client->validarComprobante($parametros);

    

    //echo "<h3>Respuesta del SRI:</h3>";
    $respuestamen[1] = "Respuesta del SRI: ";
    $estado = $respuesta->RespuestaRecepcionComprobante->estado ?? "SIN RESPUESTA";
    //echo "<strong>Estado:</strong> " . $estado . "<br>";
    $respuestamen[2] = "Estado: ". $estado;
    // Procesar los comprobantes devueltos (si existen)
    if (
        isset($respuesta->RespuestaRecepcionComprobante->comprobantes) &&
        isset($respuesta->RespuestaRecepcionComprobante->comprobantes->comprobante)
    ) {
        $comprobantes = $respuesta->RespuestaRecepcionComprobante->comprobantes->comprobante;

        // Puede ser un solo objeto o un arreglo
        if (!is_array($comprobantes)) {
            $comprobantes = [$comprobantes];
        }

        foreach ($comprobantes as $comp) {
            //echo "<hr>";
            //echo "<strong>Clave de Acceso:</strong> " . ($comp->claveAcceso ?? "N/D") . "<br>";
            $respuestamen[3] = "Clave de Acceso: ". ($comp->claveAcceso ?? "N/D");
            if (isset($comp->mensajes->mensaje)) {
                $mensajes = $comp->mensajes->mensaje;

                if (!is_array($mensajes)) {
                    $mensajes = [$mensajes];
                }

                foreach ($mensajes as $msg) {
                    //echo "<strong>Identificador:</strong> " . ($msg->identificador ?? "N/D") . "<br>";
                    $respuestamen[4] = "Identificador: ". ($msg->identificador ?? "N/D");
                    //echo "<strong>Mensaje:</strong> " . ($msg->mensaje ?? "N/D") . "<br>";
                    $respuestamen[5] ="Mensaje: ". ($msg->mensaje ?? "N/D");
                    //echo "<strong>Información Adicional:</strong> " . ($msg->informacionAdicional ?? "N/A") . "<br>";
                    $respuestamen[6] ="Información Adicional: ". ($msg->informacionAdicional ?? "N/A");
                    //echo "<strong>Tipo:</strong> " . ($msg->tipo ?? "N/D") . "<br><br>";
                    $respuestamen[7] ="Tipo: ".($msg->tipo ?? "N/D");
                }
            } else {
                //echo "<strong>Mensaje:</strong> No disponible<br>";
                $respuestamen[8] ="Mensaje: No disponible ";
            }
        }
    } else {
        //echo "<br><strong>No se encontraron detalles de comprobantes.</strong><br>";
        $respuestamen[9] ="No se encontraron detalles de comprobantes. ";
    }

} catch (SoapFault $e) {
    //echo "<h3>Error SOAP:</h3>";
    $respuestamen[10] ="Error SOAP: ";
    //echo "<strong>Código:</strong> " . $e->faultcode . "<br>";
    $respuestamen[11] ="Código: ". $e->faultcode;
    //echo "<strong>Mensaje:</strong> " . $e->faultstring . "<br>";
    $respuestamen[12] ="Mensaje: ". $e->faultstring;

    // Para depuración: descomenta si deseas ver la respuesta completa del servidor
    // echo "<pre>" . htmlentities($client->__getLastResponse()) . "</pre>";
}



include'conexion1.php';
$cn = new mysqli($servidor, $nombre, $clave, $base);
$cn->set_charset("utf8mb4");
    $documento = "0";
    $dato1     = $xmlmues;
    $dato2     = "0";
    $respuestax = implode(" ",$respuestamen);
    $fecha = date('Y-m-d');
    $hora  = date('H:i:s');

    $sql = "INSERT INTO respuestadoc 
            (FECHAREGISTRO, HORAREGISTRO, DOCUMENTO, DATO1, DATO2, RESPUESTA)
            VALUES (?,?,?,?,?,?)";
    $stmt = $cn->prepare($sql);
    $stmt->bind_param('ssssss', $fecha, $hora, $documento, $dato1, $dato2, $respuestax);
    $stmt->execute();
    $stmt->close();






}


}

?>