<?php
// ? Errores (quitar en produccion)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// ? CORS y Headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

// ? Conexion
require_once(__DIR__ . '/../../config.php');
 $mysqli->set_charset("utf8mb4");

// ? JSON
 $input = json_decode(file_get_contents('php://input'), true);
if (!$input) {
    echo json_encode(['success'=>false,'message'=>'JSON inválido']);
    exit;
}

// --- VALIDACION DE PARAMETROS ---
 $gasto_id = isset($input['gasto_id']) ? (int)$input['gasto_id'] : 0;

if (!$gasto_id) {
    echo json_encode(['success' => false, 'message' => 'El ID del gasto es requerido.']);
    exit;
}

try {
    // --- CONSTRUCCION DE LA CONSULTA CON JOIN ---
    $sql = "
        SELECT 
            g.id, 
            g.descripcion, 
            g.monto, 
            g.cajero, 
            g.fecha_gasto,
            cc.turno,
            cc.fecha_apertura,
            cc.monto_inicial,
            cc.monto_final_esperado,
            cc.monto_final_real,
            cc.diferencia
        FROM gastos g
        LEFT JOIN cierres_de_caja cc ON g.apertura_id = cc.id
        WHERE g.id = ?
    ";
    
    $stmt = $mysqli->prepare($sql);
    
    if (!$stmt) {
        throw new Exception("Error al preparar la consulta de detalle: " . $mysqli->error);
    }
    
    $stmt->bind_param('i', $gasto_id);
    
    if (!$stmt->execute()) {
        throw new Exception("Error al ejecutar la consulta de detalle: " . $stmt->error);
    }
    
    $result = $stmt->get_result();
    $detalle = $result->fetch_assoc();
    $stmt->close();
    
    echo json_encode([
        'success' => true, 
        'detalle' => $detalle
    ]);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
} finally {
    if (isset($mysqli) && $mysqli) { $mysqli->close(); }
}
?>