<?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'); // Asegúrate que la ruta sea correcta
 $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 ---
 $slug_tienda = isset($input['slug_tienda']) ? trim($input['slug_tienda']) : '';
 $descripcion = isset($input['descripcion']) ? trim($input['descripcion']) : '';
 $monto = isset($input['monto']) ? floatval($input['monto']) : 0;
 $cajero = isset($input['cajero']) ? trim($input['cajero']) : '';

if (!$slug_tienda || !$descripcion || !$monto || !$cajero) {
    echo json_encode(['success' => false, 'message' => 'Faltan parámetros requeridos.']);
    exit;
}

try {
    // --- NUEVO: BUSCAR EL TURNO ABIERTO PARA ESTE CAJERO Y TIENDA ---
    $sql_busqueda = "SELECT id FROM cierres_de_caja WHERE slug_tienda = ? AND cajero = ? AND estado = 'abierto'";
    $stmt_busqueda = $mysqli->prepare($sql_busqueda);
    $stmt_busqueda->bind_param('ss', $slug_tienda, $cajero);
    $stmt_busqueda->execute();
    $result_busqueda = $stmt_busqueda->get_result();
    
    if ($result_busqueda->num_rows === 0) {
        echo json_encode(['success' => false, 'message' => 'No se puede registrar el gasto. No tienes un turno abierto en este momento.']);
        exit;
    }
    
    // Obtenemos el ID del turno abierto
    $turno_abierto = $result_busqueda->fetch_assoc();
    $apertura_id = $turno_abierto['id'];
    $stmt_busqueda->close();

    // --- INSERTAR EL GASTO USANDO EL ID ENCONTRADO ---
    $sql = "INSERT INTO gastos (apertura_id, slug_tienda, descripcion, monto, cajero) VALUES (?, ?, ?, ?, ?)";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('issds', $apertura_id, $slug_tienda, $descripcion, $monto, $cajero);
    
    if (!$stmt->execute()) {
        throw new Exception("Error al registrar el gasto: " . $stmt->error);
    }
    
    $stmt->close();
    
    echo json_encode([
        'success' => true, 
        'message' => 'Gasto registrado correctamente.'
    ]);

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