<?php ob_start();
require_once '../files/guardiankey.php'; ?>
<?php
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/../logs/php_errors.log');
error_reporting(E_ALL);

include_once 'db_connection.php';

$response = [];

try {
    // Decodifica el cuerpo de la solicitud JSON<?php 
ob_start();
header('Content-Type: application/json');
$response = ['success' => false, 'message' => 'ERROR DESCONOCIDO'];

try {
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    ini_set('error_log', __DIR__ . '/../logs/php_errors.log');
    error_reporting(E_ALL);

    include_once 'db_connection.php';
    require_once '../files/guardiankey.php';

    $data = json_decode(file_get_contents('php://input'), true);

    if (json_last_error() !== JSON_ERROR_NONE) {
        error_log("Error al decodificar JSON en invoice-delete.php: " . json_last_error_msg());
        throw new Exception('ERROR AL PROCESAR DATOS');
    }
    if (empty($data['id'])) {
        throw new Exception('ID REQUERIDO');
    }

    $invoice_db_id = filter_var($data['id'], FILTER_VALIDATE_INT);
    if ($invoice_db_id === false) {
        throw new Exception('ID INVALIDO');
    }

    $pdo->beginTransaction();

    $stmt = $pdo->prepare("DELETE FROM invoices WHERE id = ?");
    $stmt->execute([$invoice_db_id]);

    if ($stmt->rowCount() > 0) {
        $pdo->commit();
        $response = ['success' => true, 'message' => 'FACTURA ELIMINADA'];
    } else {
        $pdo->rollBack();
        $response = ['success' => false, 'message' => 'NO ENCONTRADA'];
    }

} catch (PDOException $e) {
    if (isset($pdo) && $pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log("PDO Error en invoice-delete.php: " . $e->getMessage());
    $response = ['success' => false, 'message' => 'ERROR DE BASE DE DATOS'];
} catch (Exception $e) {
    if (isset($pdo) && $pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log("General Error en invoice-delete.php: " . $e->getMessage());
    $response = ['success' => false, 'message' => strtoupper($e->getMessage())];
}

if (ob_get_level() > 0) {
    ob_end_clean();
}
echo json_encode($response);
exit;
?>
    $data = json_decode(file_get_contents('php://input'), true);

    // Valida si el JSON es correcto
    if (json_last_error() !== JSON_ERROR_NONE) {
        error_log("Error al decodificar JSON en invoice-delete.php: " . json_last_error_msg());
        throw new Exception('Error al procesar los datos enviados.');
    }
    // Valida si el ID fue proporcionado
    if (empty($data['id'])) {
        throw new Exception('ID de la factura no proporcionado para la eliminación.');
    }

    // ✅ CORRECCIÓN: Validar que el ID sea un entero
    $invoice_db_id = filter_var($data['id'], FILTER_VALIDATE_INT);
    if ($invoice_db_id === false) {
        throw new Exception('ID de factura inválido.');
    }

    $pdo->beginTransaction();

    // Eliminar la factura de la tabla 'invoices'
    // La eliminación en cascada de 'invoice_items' se manejará automáticamente por la FK si está bien configurada.
    $stmt = $pdo->prepare("DELETE FROM invoices WHERE id = ?");
    $stmt->execute([$invoice_db_id]);

    // Verificar si se eliminó alguna fila
    if ($stmt->rowCount() > 0) {
        $pdo->commit();
        $response = ['success' => true, 'message' => 'Factura eliminada con éxito.'];
    } else {
        $pdo->rollBack(); // No se eliminó nada, hacer rollback
        $response = ['success' => false, 'message' => 'La factura no fue encontrada o ya ha sido eliminada.'];
    }

} catch (PDOException $e) {
    // Captura errores específicos de la base de datos
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log("PDO Error en invoice-delete.php: " . $e->getMessage());
    $response = ['success' => false, 'message' => 'Error de Base de Datos al eliminar factura. Por favor, inténtalo de nuevo más tarde.'];
} catch (Exception $e) {
    // Captura otros errores generales
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log("General Error en invoice-delete.php: " . $e->getMessage());
    $response = ['success' => false, 'message' => $e->getMessage()];
}

ob_end_clean();
header('Content-Type: application/json');
echo json_encode($response);
exit;