<?php
session_start();
require_once 'includes/db.php';
require_once 'includes/theme_only.php';

// Crear tablas si no existen
try {
    $queries = [
        "CREATE TABLE IF NOT EXISTS vehiculos (
            id INT AUTO_INCREMENT PRIMARY KEY,
            matricula VARCHAR(20) NOT NULL UNIQUE,
            documento_vehiculo VARCHAR(50) NOT NULL,
            vehiculo VARCHAR(100),
            tipo VARCHAR(50) NOT NULL,
            marca VARCHAR(50) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )",
        "CREATE TABLE IF NOT EXISTS choferes (
            id INT AUTO_INCREMENT PRIMARY KEY,
            documento_chofer VARCHAR(20) NOT NULL UNIQUE,
            nombre VARCHAR(100) NOT NULL,
            direccion TEXT NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )",
        "CREATE TABLE IF NOT EXISTS remision_numero (
            id INT AUTO_INCREMENT PRIMARY KEY,
            numero INT NOT NULL DEFAULT 1,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )"
    ];

    foreach ($queries as $query) {
        $pdo->exec($query);
    }

    // Insertar número inicial si la tabla está vacía
    $stmt = $pdo->query("SELECT COUNT(*) FROM remision_numero");
    if ($stmt->fetchColumn() == 0) {
        $pdo->exec("INSERT INTO remision_numero (numero) VALUES (1)");
    }

} catch (PDOException $e) {
    error_log("Error creando tablas: " . $e->getMessage());
}

// Verificar si el usuario está logueado
if (!isset($_SESSION['usuario_id'])) {
    header('Location: login.php');
    exit;
}

// Obtener el ID de la venta
$venta_id = isset($_GET['venta_id']) ? intval($_GET['venta_id']) : 0;

if (!$venta_id) {
    die('ID de venta no proporcionado');
}

// Obtener configuración
$db = new Database();
$pdo = $db->getPDO();
$stmt = $pdo->prepare("SELECT color_principal, color_secundario FROM configuracion LIMIT 1");
$stmt->execute();
$config = $stmt->fetch(PDO::FETCH_ASSOC);

// Obtener configuración de facturación
$stmt = $pdo->prepare("SELECT * FROM configuracion_facturacion LIMIT 1");
$stmt->execute();
$config_facturacion = $stmt->fetch(PDO::FETCH_ASSOC);

// Obtener datos del usuario
$stmt = $pdo->prepare("SELECT documento, nombre FROM usuarios WHERE id = ?");
$stmt->execute([$_SESSION['usuario_id']]);
$usuario = $stmt->fetch(PDO::FETCH_ASSOC);

// Obtener items de la venta
$stmt = $pdo->prepare("
    SELECT vi.*, p.codigo, p.titulo, p.iva,
           LPAD(p.codigo, 7, '0') as codigo_formato
    FROM venta_items vi 
    JOIN productos p ON vi.producto_id = p.id 
    WHERE vi.venta_id = ?
");
$stmt->execute([$venta_id]);
$items_raw = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Formatear items
$items_venta = array_map(function($item) {
    return [
        'codigo' => $item['codigo_formato'],
        'descripcion' => $item['titulo'],
        'observacion' => '',
        'unidadMedida' => 77,
        'cantidad' => floatval($item['cantidad']),
        'precioUnitario' => floatval($item['precio_unitario']),
        'pais' => 'PRY',
        'paisDescripcion' => 'Paraguay',
        'tolerancia' => 1,
        'toleranciaCantidad' => 1,
        'toleranciaPorcentaje' => 1,
        'ivaTipo' => 1,
        'ivaBase' => 100,
        'iva' => intval($item['iva']),
        'lote' => 'no_definido',
        'vencimiento' => '2100-01-01'
    ];
}, $items_raw);

// Procesar la solicitud AJAX si es POST
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'guardar_remision') {
    try {
        // Validar datos recibidos
        if (!isset($_POST['json'])) {
            throw new Exception('Datos incompletos');
        }

        // Primero guardar chofer si no existe
        $stmt = $pdo->prepare("SELECT id FROM choferes WHERE documento_chofer = ?");
        $stmt->execute([$_POST['choferDocumento']]);
        if (!$stmt->fetch()) {
            $stmt = $pdo->prepare("INSERT INTO choferes (documento_chofer, nombre, direccion) VALUES (?, ?, ?)");
            $stmt->execute([
                $_POST['choferDocumento'],
                $_POST['choferNombre'],
                $_POST['choferDireccion']
            ]);
            error_log("Chofer registrado: " . $_POST['choferDocumento']);
        }

        // Luego guardar vehículo si no existe
        $stmt = $pdo->prepare("SELECT id FROM vehiculos WHERE matricula = ?");
        $stmt->execute([$_POST['vehiculoMatricula']]);
        if (!$stmt->fetch()) {
            $stmt = $pdo->prepare("INSERT INTO vehiculos (matricula, documento_vehiculo, tipo, marca, vehiculo) VALUES (?, ?, ?, ?, ?)");
            $stmt->execute([
                $_POST['vehiculoMatricula'],
                $_POST['vehiculoDocumento'],
                $_POST['vehiculoTipo'],
                $_POST['vehiculoMarca'],
                $_POST['vehiculoTipo'] . ' ' . $_POST['vehiculoMarca']
            ]);
            error_log("Vehículo registrado: " . $_POST['vehiculoMatricula']);
        }

        $json = $_POST['json'];

        // Generar nombre de archivo fijo
        $filename = __DIR__ . '/remision.txt';

        // Guardar el archivo (sobreescribir si existe)
        if (file_put_contents($filename, $json) === false) {
            throw new Exception('No se pudo guardar el archivo');
        }

        // Incrementar el número de remisión
        $stmt = $pdo->prepare("UPDATE remision_numero SET numero = numero + 1 WHERE id = 1");
        if (!$stmt->execute()) {
            throw new Exception('No se pudo actualizar el número de remisión');
        }
        
        //error_log("Número de remisión incrementado correctamente");

        echo json_encode(['success' => true]);
        exit;

    } catch (Exception $e) {
        error_log("Error en guardar_remision: " . $e->getMessage());
        echo json_encode(['success' => false, 'message' => $e->getMessage()]);
        exit;
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Buscar chofer
    if (isset($_POST['action']) && $_POST['action'] === 'buscar_chofer') {
        try {
            $stmt = $pdo->prepare("SELECT * FROM choferes WHERE documento_chofer = ?");
            $stmt->execute([$_POST['documento']]);
            $chofer = $stmt->fetch(PDO::FETCH_ASSOC);
            
            echo json_encode([
                'success' => true,
                'exists' => ($chofer !== false),
                'data' => $chofer
            ]);
            exit;
        } catch (PDOException $e) {
            echo json_encode(['success' => false, 'message' => $e->getMessage()]);
            exit;
        }
    }

    // Buscar vehículo
    if (isset($_POST['action']) && $_POST['action'] === 'buscar_vehiculo') {
        try {
            $stmt = $pdo->prepare("SELECT * FROM vehiculos WHERE matricula = ?");
            $stmt->execute([$_POST['matricula']]);
            $vehiculo = $stmt->fetch(PDO::FETCH_ASSOC);
            
            echo json_encode([
                'success' => true,
                'exists' => ($vehiculo !== false),
                'data' => $vehiculo
            ]);
            exit;
        } catch (PDOException $e) {
            echo json_encode(['success' => false, 'message' => $e->getMessage()]);
            exit;
        }
    }

    // Actualizar número de remisión
    if (isset($_POST['action']) && $_POST['action'] === 'actualizar_numero_remision') {
        try {
            $nuevo_numero = intval($_POST['numero_actual']) + 1;
            
            // Simplemente actualizar el registro existente
            $stmt = $pdo->prepare("UPDATE remision_numero SET numero = ? WHERE id = 1");
            $stmt->execute([$nuevo_numero]);
            
            //error_log("Número de remisión actualizado: anterior={$_POST['numero_actual']}, nuevo={$nuevo_numero}");
            
            echo json_encode(['success' => true, 'nuevo_numero' => $nuevo_numero]);
            exit;
        } catch (Exception $e) {
            error_log("Error actualizando número de remisión: " . $e->getMessage());
            echo json_encode(['success' => false, 'message' => $e->getMessage()]);
            exit;
        }
    }
}

// Obtener número de remisión actual
try {
    $stmt = $pdo->query("SELECT numero FROM remision_numero WHERE id = 1");
    $remision_numero = $stmt->fetchColumn();
    
    // Si no existe, crear el registro inicial
    if ($remision_numero === false) {
        $pdo->exec("INSERT INTO remision_numero (numero) VALUES (1)");
        $remision_numero = 1;
    }
    
    //error_log("Número de remisión actual: " . $remision_numero);
} catch (PDOException $e) {
    error_log("Error al obtener número de remisión: " . $e->getMessage());
    $remision_numero = 1;
}

require_once 'includes/header.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nota de Remisión</title>
    <link rel="stylesheet" href="admin/css/bootstrap.min.css">
    <style>
        :root {
            --color-primary: <?php echo $config['color_principal'] ?? '#007bff'; ?>;
            --color-secondary: <?php echo $config['color_secundario'] ?? '#6c757d'; ?>;
        }
        .btn-primary {
            background-color: var(--color-primary);
            border-color: var(--color-primary);
        }
        .card-header {
            background-color: var(--color-primary);
            color: white;
        }
        .section-title {
            color: var(--color-primary);
            border-bottom: 2px solid var(--color-primary);
            padding-bottom: 5px;
            margin-bottom: 20px;
        }
        
        .swal-wide {
            width: 80% !important;
            max-width: 800px;
        }
        .text-left {
            text-align: left;
        }
        #serverResponse {
            margin-bottom: 2rem;
        }
        #responseContent {
            white-space: pre-wrap;
            word-wrap: break-word;
        }
        
        pre {
            white-space: pre-wrap;
            word-wrap: break-word;
            background-color: #f8f9fa;
            padding: 1rem;
            border-radius: 0.25rem;
            font-size: 0.875rem;
            max-height: 400px;
            overflow-y: auto;
        }
        
        .swal-wide pre {
            max-height: 300px;
            overflow-y: auto;
            margin: 1rem 0;
            background-color: #f8f9fa;
            padding: 1rem;
        }
    </style>
</head>
<body>
    <div class="container mt-4">
        <h2 class="text-center mb-4">Nota de Remisión</h2>
        
        <form id="remisionForm" action="guardar_remision.php" method="POST">
            <input type="hidden" name="venta_id" value="<?php echo $venta_id; ?>">
            
            <!-- Sección Chofer -->
            <div class="card mb-4">
                <div class="card-header">
                    <h4 class="mb-0">Datos del Chofer</h4>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-4 mb-3">
                            <label for="choferDocumento" class="form-label">Documento N°:</label>
                            <input type="text" class="form-control" id="choferDocumento" name="choferDocumento" required>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="choferNombre" class="form-label">Nombre:</label>
                            <input type="text" class="form-control" id="choferNombre" name="choferNombre" required>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="choferDireccion" class="form-label">Dirección:</label>
                            <input type="text" class="form-control" id="choferDireccion" name="choferDireccion" required>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Sección Vehículo -->
            <div class="card mb-3">
                <div class="card-header">
                    <h5 class="mb-0">Datos del Vehículo</h5>
                </div>
                <div class="card-body">
                    <div class="row">
                        <!-- Matrícula primero a la izquierda -->
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="vehiculoMatricula">Matrícula</label>
                                <input type="text" class="form-control" id="vehiculoMatricula" name="vehiculoMatricula" required>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="vehiculoTipo">Tipo</label>
                                <input type="text" class="form-control" id="vehiculoTipo" name="vehiculoTipo" required>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="vehiculoMarca">Marca</label>
                                <input type="text" class="form-control" id="vehiculoMarca" name="vehiculoMarca" required>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="vehiculoDocumento">Documento N°</label>
                                <input type="text" class="form-control" id="vehiculoDocumento" name="vehiculoDocumento" required>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Sección Recorrido -->
            <div class="card mb-4">
                <div class="card-header">
                    <h4 class="mb-0">Datos del Recorrido</h4>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-4 mb-3">
                            <label for="kmRecorrer" class="form-label">Kilómetros a recorrer:</label>
                            <input type="number" class="form-control" id="kmRecorrer" name="kmRecorrer" required>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="inicioTraslado" class="form-label">Inicio Estimado Traslado:</label>
                            <input type="datetime-local" class="form-control" id="inicioTraslado" name="inicioTraslado" required>
                        </div>
                        <div class="col-md-4 mb-3">
                            <label for="finTraslado" class="form-label">Fin Estimado Traslado:</label>
                            <input type="datetime-local" class="form-control" id="finTraslado" name="finTraslado" required>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Botones de acción -->
            <div class="row justify-content-center mt-4 mb-4">
                <div class="col-md-4 col-sm-12 mb-3">
                    <button type="submit" class="btn btn-primary w-100">Generar Nota de Remisión</button>
                </div>
                <div class="col-md-4 col-sm-12 mb-3">
                    <button type="button" class="btn btn-secondary w-100" onclick="history.back()">Cancelar</button>
                </div>
            </div>
        </form>

        <!-- Agregar div para respuesta del servidor -->
        <div id="serverResponse" class="mt-4" style="display:none;">
            <div class="card">
                <div class="card-header">
                    <h4 class="mb-0">Respuesta del Servidor</h4>
                </div>
                <div class="card-body">
                    <pre id="responseContent" class="bg-light p-3" style="max-height: 200px; overflow-y: auto;"></pre>
                </div>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <script>
        $(document).ready(function() {
            // Establecer fecha y hora actual como valor por defecto
            const now = new Date();
            const nowString = now.toISOString().slice(0, 16);
            $('#inicioTraslado').val(nowString);
            
            // Establecer fecha y hora para fin de traslado (2 horas después por defecto)
            const later = new Date(now.getTime() + (2 * 60 * 60 * 1000));
            const laterString = later.toISOString().slice(0, 16);
            $('#finTraslado').val(laterString);

            // Validar que la fecha de fin sea posterior a la de inicio
            $('#remisionForm').on('submit', function(e) {
                e.preventDefault();
                
                const inicio = new Date($('#inicioTraslado').val());
                const fin = new Date($('#finTraslado').val());
                
                if (fin <= inicio) {
                    Swal.fire({
                        icon: 'error',
                        title: 'Error',
                        text: 'La fecha de fin debe ser posterior a la fecha de inicio'
                    });
                    return false;
                }

                // Crear objeto JSON
                const jsonData = {
                    tipoDocumento: 7,
                    establecimiento: <?php echo $config_facturacion['establecimiento']; ?>,
                    punto: "<?php echo $config_facturacion['punto']; ?>",
                    numero: <?php echo $remision_numero; ?>, // Usar el número actual
                    descripcion: "",
                    observacion: "Cualquier informacion de interes",
                    tipoContribuyente: 1,
                    fecha: new Date().toISOString().substring(0, 19), // Formato: 2025-05-27T20:28:52
                    tipoEmision: 1,
                    tipoTransaccion: 1,
                    tipoImpuesto: 1,
                    moneda: "PYG",
                    cambio: 0.0,
                    cliente: {
                        contribuyente: true,
                        ruc: "<?php echo $config_facturacion['ruc_empresa']; ?>",
                        razonSocial: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                        nombreFantasia: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                        tipoOperacion: 2,
                        direccion: "<?php echo $config_facturacion['direccion_empresa']; ?>",
                        numeroCasa: "0",
                        departamento: <?php echo $config_facturacion['codigo_departamento']; ?>,
                        departamentoDescripcion: "<?php echo $config_facturacion['descripcion_dpto']; ?>",
                        distrito: <?php echo $config_facturacion['codigo_distrito']; ?>,
                        distritoDescripcion: "<?php echo $config_facturacion['descripcion_distrito']; ?>",
                        ciudad: <?php echo $config_facturacion['codigo_ciudad']; ?>,
                        ciudadDescripcion: "<?php echo $config_facturacion['descripcion_ciudad']; ?>",
                        pais: "PRY",
                        paisDescripcion: "Paraguay",
                        tipoContribuyente: 1,
                        documentoTipo: 1,
                        documentoNumero: "<?php echo $config_facturacion['ruc_empresa']; ?>",
                        telefono: "<?php echo $config_facturacion['tel_empresa']; ?>",
                        celular: "<?php echo $config_facturacion['tel_empresa']; ?>",
                        email: "<?php echo $config_facturacion['email_empresa']; ?>",
                        codigo: "001"
                    },
                    usuario: {
                        documentoTipo: 1,
                        documentoNumero: "<?php echo $usuario['documento']; ?>",
                        nombre: "<?php echo $usuario['nombre']; ?>",
                        cargo: "Vendedor"
                    },
                    remision: {
                        motivo: 10,
                        tipoResponsable: 1,
                        kms: parseInt($('#kmRecorrer').val()),
                        fechaFactura: new Date().toISOString().split('T')[0] // Formato: 2025-05-26
                    },
                    items: <?php echo json_encode($items_venta); ?>,
                    transporte: {
                        tipo: 1,
                        modalidad: 1,
                        tipoResponsable: 1,
                        condicionNegociacion: "FOB",
                        numeroManifiesto: "0",
                        numeroDespachoImportacion: "0",
                        inicioEstimadoTranslado: $('#inicioTraslado').val().split('T')[0],
                        finEstimadoTranslado: $('#finTraslado').val().split('T')[0],
                        paisDestino: "PRY",
                        paisDestinoNombre: "Paraguay",
                        salida: {
                            direccion: "<?php echo $config_facturacion['direccion_empresa']; ?>",
                            numeroCasa: "0",
                            complementoDireccion1: "",
                            complementoDireccion2: "",
                            departamento: <?php echo $config_facturacion['codigo_departamento']; ?>,
                            departamentoDescripcion: "<?php echo $config_facturacion['descripcion_dpto']; ?>",
                            distrito: <?php echo $config_facturacion['codigo_distrito']; ?>,
                            distritoDescripcion: "<?php echo $config_facturacion['descripcion_distrito']; ?>",
                            ciudad: <?php echo $config_facturacion['codigo_ciudad']; ?>,
                            ciudadDescripcion: "<?php echo $config_facturacion['descripcion_ciudad']; ?>",
                            pais: "PRY",
                            paisDescripcion: "Paraguay",
                            telefonoContacto: "<?php echo $config_facturacion['tel_empresa']; ?>"
                        },
                        entrega: {
                            direccion: "<?php echo $config_facturacion['direccion_empresa']; ?>",
                            numeroCasa: "0",
                            complementoDireccion1: "",
                            complementoDireccion2: "",
                            departamento: <?php echo $config_facturacion['codigo_departamento']; ?>,
                            departamentoDescripcion: "<?php echo $config_facturacion['descripcion_dpto']; ?>",
                            distrito: <?php echo $config_facturacion['codigo_distrito']; ?>,
                            distritoDescripcion: "<?php echo $config_facturacion['descripcion_distrito']; ?>",
                            ciudad: <?php echo $config_facturacion['codigo_ciudad']; ?>,
                            ciudadDescripcion: "<?php echo $config_facturacion['descripcion_ciudad']; ?>",
                            pais: "PRY",
                            paisDescripcion: "Paraguay",
                            telefonoContacto: "<?php echo $config_facturacion['tel_empresa']; ?>"
                        },
                        vehiculo: {
                            tipo: $('#vehiculoTipo').val(),
                            marca: $('#vehiculoMarca').val(),
                            documentoTipo: 1,
                            documentoNumero: $('#vehiculoDocumento').val(),
                            obs: "",
                            numeroMatricula: $('#vehiculoMatricula').val(),
                            numeroVuelo: "0"
                        },
                        transportista: {
                            contribuyente: true,
                            nombre: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                            ruc: "<?php echo $config_facturacion['ruc_empresa']; ?>",
                            documentoTipo: 1,
                            documentoNumero: "<?php echo $config_facturacion['ruc_empresa']; ?>",
                            direccion: "<?php echo $config_facturacion['direccion_empresa']; ?>",
                            obs: "0",
                            pais: "PRY",
                            paisDescripcion: "Paraguay",
                            chofer: {
                                documentoNumero: $('#choferDocumento').val(),
                                nombre: $('#choferNombre').val(),
                                direccion: $('#choferDireccion').val()
                            },
                            agente: {
                                nombre: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                                ruc: "<?php echo $config_facturacion['ruc_empresa']; ?>",
                                direccion: "<?php echo $config_facturacion['direccion_empresa']; ?>"
                            }
                        }
                    }
                };

                // Convertir a string
                const jsonString = JSON.stringify([jsonData], null, 2);
                
                // Enviar al servidor usando AJAX
                $.ajax({
                    url: window.location.href,
                    method: 'POST',
                    data: {
                        action: 'guardar_remision',
                        json: jsonString,
                        venta_id: <?php echo $venta_id; ?>,
                        // Datos del chofer
                        choferDocumento: $('#choferDocumento').val(),
                        choferNombre: $('#choferNombre').val(),
                        choferDireccion: $('#choferDireccion').val(),
                        // Datos del vehículo
                        vehiculoMatricula: $('#vehiculoMatricula').val(),
                        vehiculoDocumento: $('#vehiculoDocumento').val(),
                        vehiculoTipo: $('#vehiculoTipo').val(),
                        vehiculoMarca: $('#vehiculoMarca').val()
                    },
                    success: function(response) {
                        const result = JSON.parse(response);
                        if(result.success) {
                            // Remover esta parte ya que el incremento se hace en el backend
                            /* $.ajax({
                                url: window.location.href,
                                method: 'POST',
                                data: {
                                    action: 'actualizar_numero_remision',
                                    numero_actual: <?php echo $remision_numero; ?>
                                }
                            }); */

                            // Si se guardó localmente, enviar al servidor externo
                            const externalData = {
                                data: jsonString,
                                apiKey: "<?php echo $config_facturacion['api_key']; ?>",
                                tenantId: "<?php echo $config_facturacion['tenantid']; ?>",
                                cliente: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                                url: "<?php echo $config_facturacion['dominio']; ?>/factuweb/remision.php"
                            };

                            $.ajax({
                                url: 'proxy_remision.php',
                                method: 'POST',
                                data: {
                                    data: jsonString,
                                    apiKey: "<?php echo $config_facturacion['api_key']; ?>",
                                    tenantId: "<?php echo $config_facturacion['tenantid']; ?>",
                                    cliente: "<?php echo $config_facturacion['nombre_empresa']; ?>",
                                    url: "<?php echo $config_facturacion['dominio']; ?>/factuweb/remision.php"
                                },
                                success: function(externalResponse) {
    try {
        // Parsear la respuesta si viene como string
        const response = typeof externalResponse === 'string' ? 
            JSON.parse(externalResponse) : externalResponse;

        // Mostrar respuesta en el div
        $('#responseContent').html(JSON.stringify(response, null, 2));
        $('#serverResponse').show();

        // Si es success y tiene CDC, mostrar mensaje y abrir PDF
        if (response.estado === 'success' && response.cdc) {
            // Construir URL del PDF
            const pdfUrl = `<?php echo $config_facturacion['dominio']; ?>/factuweb/<?php echo $config_facturacion['tenantid']; ?>/remision_${response.cdc}.pdf`;

            // Mostrar mensaje de éxito y abrir PDF automáticamente
            Swal.fire({
                icon: 'success',
                title: 'Éxito',
                text: response.mensaje,
                timer: 2000,
                showConfirmButton: false
            }).then(() => {
                // Abrir PDF en nueva ventana
                window.open(pdfUrl, '_blank');
                // Cerrar ventana actual
                window.close();
            });
        } else {
            // Si no es success, mostrar como error
            Swal.fire({
                icon: 'error',
                title: 'Error',
                text: response.mensaje || 'Error desconocido',
                customClass: {
                    popup: 'swal-wide',
                    content: 'text-left'
                }
            });
        }
    } catch (error) {
        console.error('Error al procesar respuesta:', error);
        Swal.fire({
            icon: 'error',
            title: 'Error',
            text: 'Error al procesar la respuesta del servidor'
        });
    }
},
error: function(xhr, status, error) {
    const errorDetails = `
        Estado: ${status}
        Error: ${error}
        Código de estado HTTP: ${xhr.status}
        Respuesta: ${xhr.responseText}
        Tipo de contenido: ${xhr.getResponseHeader('Content-Type')}
    `;

    console.error('Error de AJAX:', errorDetails);
    
    $('#responseContent').html(
        `Error de conexión:\n${errorDetails}`
    );
    $('#serverResponse').show();

    Swal.fire({
        icon: 'error',
        title: 'Error de conexión',
        html: `<pre style="text-align: left;">${errorDetails}</pre>`,
        customClass: {
            popup: 'swal-wide',
            content: 'text-left'
        }
    });
                                }
                            });
                        } else {
                            Swal.fire({
                                icon: 'error',
                                title: 'Error',
                                text: result.message || 'No se pudo guardar la nota de remisión'
                            });
                        }
                    },
                    error: function() {
                        Swal.fire({
                            icon: 'error',
                            title: 'Error',
                            text: 'Ocurrió un error al guardar la nota de remisión'
                        });
                    }
                });
            });
        });

        // Autocompletar datos del chofer
        $('#choferDocumento').on('blur', function() {
            const documento = $(this).val();
            if (!documento) return;

            $.ajax({
                url: window.location.href,
                method: 'POST',
                data: {
                    action: 'buscar_chofer',
                    documento: documento
                },
                success: function(response) {
                    const result = JSON.parse(response);
                    if (result.success && result.exists) {
                        $('#choferNombre').val(result.data.nombre);
                        $('#choferDireccion').val(result.data.direccion);
                    }
                }
            });
        });

        // Autocompletar datos del vehículo
        $('#vehiculoMatricula').on('blur', function() {
            const matricula = $(this).val();
            if (!matricula) return;

            $.ajax({
                url: window.location.href,
                method: 'POST',
                data: {
                    action: 'buscar_vehiculo',
                    matricula: matricula
                },
                success: function(response) {
                    const result = JSON.parse(response);
                    if (result.success && result.exists) {
                        $('#vehiculoTipo').val(result.data.tipo);
                        $('#vehiculoMarca').val(result.data.marca);
                        $('#vehiculoDocumento').val(result.data.documento_vehiculo);
                    }
                }
            });
        });
    </script>
    <script src="remision_autocompletar.js"></script>
</body>
</html>