<?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;
 $slug_tienda = isset($input['slug_tienda']) ? trim($input['slug_tienda']) : '';
 $cajero = isset($input['cajero']) ? trim($input['cajero']) : '';

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

try {
    // --- VERIFICAMOS QUE EL GASTO PERTENECE A UN TURNO ABIERTO ---
    $sql_verificacion = "
        SELECT g.id 
        FROM gastos g
        JOIN cierres_de_caja cc ON g.apertura_id = cc.id
        WHERE g.id = ? AND cc.slug_tienda = ? AND cc.estado = 'abierto'
    ";
    $stmt_verif = $mysqli->prepare($sql_verificacion);
    $stmt_verif->bind_param('is', $gasto_id, $slug_tienda);
    $stmt_verif->execute();
    $result_verif = $stmt_verif->get_result();

    if ($result_verif->num_rows === 0) {
        echo json_encode(['success' => false, 'message' => 'No se puede eliminar este gasto. El turno de caja ya está cerrado.']);
        exit;
    }
    $stmt_verif->close();

    // --- ELIMINAMOS EL GASTO ---
    $sql = "DELETE FROM gastos WHERE id = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('i', $gasto_id);
    
    if (!$stmt->execute()) {
        throw new Exception("Error al eliminar el gasto: " . $stmt->error);
    }
    
    $stmt->close();
    
    echo json_encode([
        'success' => true, 
        'message' => 'Gasto eliminado correctamente.'
    ]);

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