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

if (!isset($_GET['venta_id'])) {
    die('ID de venta no especificado');
}

$venta_id = $_GET['venta_id'];
$db = new Database();
$pdo = $db->getPDO();

try {
    // Consultar el tipo de factura
    $stmtConfig = $pdo->query("SELECT tipo_factura FROM configuracion LIMIT 1");
    $config = $stmtConfig->fetch(PDO::FETCH_ASSOC);
    
    // Verificar el tipo de factura y redirigir si es necesario
    if ($config['tipo_factura'] === '7.5') {
        header("Location: imprimir_ticket.php?venta_id=" . urlencode($venta_id));
        exit();
    }
    
    // Consulta más simple y directa
    $stmt = $pdo->prepare("
        SELECT 
            vi.*,
            p.titulo as producto_nombre,
            p.codigo as producto_codigo,
            c.nombre as cliente_nombre,
            c.apellidos as cliente_apellidos,
            c.tipo_documento,
            c.numero_documento
        FROM venta_items vi
        LEFT JOIN productos p ON vi.producto_id = p.id
        LEFT JOIN clientes c ON vi.cliente_id = c.id_cliente
        WHERE vi.venta_id = :venta_id
    ");
    
    $stmt->execute(['venta_id' => $venta_id]);
    $items = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Debug
    if (empty($items)) {
        // Consulta de verificación
        $stmt = $pdo->prepare("SELECT venta_id FROM venta_items WHERE venta_id = :venta_id");
        $stmt->execute(['venta_id' => $venta_id]);
        $check = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$check) {
            die("No existe ninguna venta con el ID: " . htmlspecialchars($venta_id));
        }
    }

    // Obtener configuración de la empresa
    $stmtConfig = $pdo->query("SELECT * FROM configuracion LIMIT 1");
    $config = $stmtConfig->fetch(PDO::FETCH_ASSOC);

    // Configuración de decimales
    $decimales = isset($config['con_decimales']) ? (int)$config['con_decimales'] : 1;
    $num_decimales = ($decimales === 1) ? 2 : 0;

    // Configuración de moneda
    $moneda = $config['moneda'] ?? 'USD.'; // Si no hay valor en la BD, usa S/ por defecto

    // Calcular totales
    $total = 0;
    $total_contado = 0;
    $total_credito = 0;
    foreach ($items as $item) {
        $subtotal = floatval($item['subtotal']);
        $total += $subtotal;
        
        if ($item['tipo_venta'] === 'contado') {
            $total_contado += $subtotal;
        } else {
            $total_credito += $subtotal;
        }
    }

    // Obtener el primer item para información general
    $firstItem = $items[0] ?? null;
    if (!$firstItem) {
        die('No se encontraron detalles de la venta');
    }

    $cliente = ($firstItem['cliente_nombre'] ?? '') . ' ' . ($firstItem['cliente_apellidos'] ?? '');
    $documento = ($firstItem['tipo_documento'] ?? '') . ': ' . ($firstItem['numero_documento'] ?? '');
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Boleta de Venta <?php echo htmlspecialchars($venta_id); ?></title>
    <?php
    // Verificar si existe favicon en la configuración
    if (!empty($config['favicon'])) {
        $faviconPath = 'uploads/config/' . htmlspecialchars($config['favicon']);
        if (file_exists($faviconPath)) {
            echo '<link rel="icon" type="image/x-icon" href="' . $faviconPath . '">';
        }
    }
    ?>
    <style>
        @media print {
            @page {
                size: A4;
                margin: 1cm;
            }
        }
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 20px;
        }
        .header {
            text-align: center;
            margin-bottom: 30px;
            border-bottom: 2px solid #000;
            padding-bottom: 10px;
        }
        .header .venta-info {
            font-size: 12px;
            margin: 5px 0;
            font-weight: normal;
        }
        .venta-info {
            font-style: italic;
        }
        .info-empresa {
            margin-bottom: 20px;
        }
        .info-cliente {
            margin-bottom: 10px;
            border: 1px solid #999;
            padding: 0;
        }
        .info-cliente h3 {
            margin: 0;
            font-size: 14px;
            background-color: #c0c0c0;
            padding: 4px 6px;
            border-bottom: 1px solid #999;
        }
        .info-cliente p {
            margin: 0;
            font-size: 12px;
            padding: 4px 6px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 15px;
        }
        th, td {
            border: 1px solid #999;
            padding: 4px 6px;
            text-align: left;
            font-size: 12px;
        }
        th {
            background-color:rgb(129, 125, 125); /* Cambiado de #ddd a un gris más oscuro */
            font-weight: bold;
        }
        .totales {
            text-align: right;
            margin-top: 20px;
            border-top: 2px solid #000;
            padding-top: 10px;
        }
        .totales-linea {
            display: inline;
            margin-right: 15px;
        }
        .totales-linea:last-child {
            margin-right: 0;
        }
        .print-button {
            display: block;
            margin: 20px auto;
            padding: 10px 20px;
            background-color: #007bff;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        @media print {
            /* Forzar impresión de colores de fondo */
            * {
                -webkit-print-color-adjust: exact !important;
                print-color-adjust: exact !important;
                color-adjust: exact !important;
            }
            
            /* Mantener los colores de fondo en la impresión */
            th, .info-cliente h3 {
                background-color: #c0c0c0 !important;
                -webkit-print-color-adjust: exact !important;
                print-color-adjust: exact !important;
            }
            
            .print-button {
                display: none;
            }
        }
    </style>
</head>
<body>
    <div class="header">
        <h2><?php echo htmlspecialchars($config['nombre_comercio'] ?? '[NOMBRE DEL COMERCIO]'); ?></h2>
        <p><?php echo htmlspecialchars($config['direccion'] ?? ''); ?></p>
        <p class="venta-info">VENTA N° <?php echo htmlspecialchars($venta_id); ?> - No es contable - Al pagar pida su factura</p>
    </div>

    <div class="info-empresa">
        <p><strong>Fecha:</strong> <?php echo date('d/m/Y H:i:s'); ?></p>
    </div>

    <div class="info-cliente">
        <h3>Datos del Cliente</h3>
        <p><strong>Nombre:</strong> <?php echo htmlspecialchars($cliente); ?> &nbsp;&nbsp;&nbsp; <strong>Documento:</strong> <?php echo htmlspecialchars($documento); ?></p>
    </div>

    <table>
        <thead>
            <tr>
                <th>Código</th>
                <th>Producto</th>
                <th>Can</th>
                <th>P.Unit.</th>
                <th>Subtotal</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($items as $item): ?>
            <tr>
                <td><?php echo htmlspecialchars($item['producto_codigo'] ?? ''); ?></td>
                <td><?php echo htmlspecialchars($item['producto_nombre'] ?? ''); ?></td>
                <td><?php echo htmlspecialchars($item['cantidad'] ?? ''); ?></td>
                <td><?php echo number_format(floatval($item['precio_unitario'] ?? 0), $num_decimales); ?></td>
                <td><?php echo number_format(floatval($item['subtotal'] ?? 0), $num_decimales); ?></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

    <div class="totales">
        <p class="totales-linea"><strong>Contado:</strong> <?php echo $moneda; ?> <?php echo number_format($total_contado, $num_decimales); ?></p>
        <p class="totales-linea"><strong>Crédito:</strong> <?php echo $moneda; ?> <?php echo number_format($total_credito, $num_decimales); ?></p>
        <p class="totales-linea"><strong>Total:</strong> <?php echo $moneda; ?> <?php echo number_format($total, $num_decimales); ?></p>
    </div>

    <button class="print-button" onclick="window.print()">Imprimir</button>

    <script>
        // Auto imprimir después de cargar
        window.onload = function() {
            setTimeout(function() {
                window.print();
            }, 1000);
        };
    </script>
</body>
</html>
<?php
} catch (Exception $e) {
    error_log("Error en imprimir_boleta.php: " . $e->getMessage());
    die('Error al generar la boleta: ' . $e->getMessage());
}
?>