<?php
/**
 * API: Obtener Detalle de Venta para Facturación FEL
 * Adaptado para RENOVADO2026 (MySQLi + sucursal_config)
 */

header('Content-Type: application/json; charset=utf-8');
date_default_timezone_set('America/Guatemala');

require_once __DIR__ . '/../../config/db_connection.php';
require_once __DIR__ . '/../../config/sucursal_config.php';

try {
    $venta_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
    
    if ($venta_id <= 0) {
        throw new Exception('ID de venta inválido');
    }

    // 1. Obtener datos de la venta (incluyendo cliente y cajero si aplican)
    $sqlVenta = "SELECT 
                    v.id,
                    v.fecha_y_hora,
                    v.total,
                    v.monto_efectivo,
                    c.nombre as cliente_nombre,
                    c.nit as cliente_nit,
                    u.nombre as usuario_nombre
                FROM ventas v
                LEFT JOIN clientes c ON v.cliente_id = c.id
                LEFT JOIN usuarios u ON v.usuario_id = u.id
                WHERE v.id = ? AND v.sucursal_id = ?";
    
    $stmtVenta = $conn->prepare($sqlVenta);
    $stmtVenta->bind_param("ii", $venta_id, $sucursal_id);
    $stmtVenta->execute();
    $resVenta = $stmtVenta->get_result();
    $venta = $resVenta->fetch_assoc();
    $stmtVenta->close();

    if (!$venta) {
        throw new Exception('Venta no encontrada en esta sucursal');
    }

    // 2. Obtener detalles de la venta (unión con productos para obtener exento_iva y nombres)
    $sqlDetalles = "SELECT 
                        dv.id,
                        dv.producto_id,
                        dv.cantidad,
                        dv.precio,
                        dv.subtotal,
                        dv.facturado,
                        dv.estado_factura,
                        p.NombreComercial as producto_nombre,
                        p.CodigoInterno as producto_codigo,
                        p.laboratorio as producto_laboratorio,
                        p.exento_iva
                    FROM detalle_ventas dv
                    INNER JOIN productos p ON dv.producto_id = p.id
                    WHERE dv.venta_id = ?
                    ORDER BY dv.id";
    
    $stmtDetalles = $conn->prepare($sqlDetalles);
    $stmtDetalles->bind_param("i", $venta_id);
    $stmtDetalles->execute();
    $resDetalles = $stmtDetalles->get_result();
    
    $detalles = [];
    while ($row = $resDetalles->fetch_assoc()) {
        $detalles[] = [
            'id' => (int)$row['id'],
            'producto_id' => (int)$row['producto_id'],
            'producto_nombre' => $row['producto_nombre'],
            'producto_codigo' => $row['producto_codigo'],
            'laboratorio' => $row['producto_laboratorio'] ?? '',
            'cantidad' => (int)$row['cantidad'],
            'precio' => (float)$row['precio'],
            'subtotal' => (float)$row['subtotal'],
            'facturado' => (bool)$row['facturado'],
            'exento_iva' => (int)$row['exento_iva'],
            'estado_factura' => $row['estado_factura']
        ];
    }
    $stmtDetalles->close();

    echo json_encode([
        'success' => true,
        'venta' => [
            'id' => (int)$venta['id'],
            'fecha' => $venta['fecha_y_hora'],
            'total' => (float)$venta['total'],
            'monto_efectivo' => (float)$venta['monto_efectivo'],
            'cliente_nombre' => $venta['cliente_nombre'] ?? 'Consumidor Final',
            'cliente_nit' => $venta['cliente_nit'] ?? 'C/F',
            'usuario_nombre' => $venta['usuario_nombre'] ?? 'Sistema'
        ],
        'detalles' => $detalles
    ], JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'error' => $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}

$conn->close();
?>
