<?php
/**
 * SAC 2025 - DELETE FEE ENGINE
 * Elimina una cuota mensual y revierte todas las deudas y pagos asociados.
 */
require_once 'config.php';

// Verificaci¨®n de seguridad: Solo admin o programador
checkAccess(['admin', 'programmer']);

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

if (!isset($data['id'])) {
    response(["error" => "ID de cuota no proporcionado"], 400);
}

$feeId = $data['id'];

try {
    $pdo->beginTransaction();

    // 1. Obtener los IDs de las deudas (property_debts) vinculadas a esta cuota
    $stmtDebts = $pdo->prepare("SELECT id FROM property_debts WHERE fee_id = ?");
    $stmtDebts->execute([$feeId]);
    $debtIds = $stmtDebts->fetchAll(PDO::FETCH_COLUMN);

    if (!empty($debtIds)) {
        // 2. Eliminar todos los pagos asociados a esas deudas
        $placeholders = implode(',', array_fill(0, count($debtIds), '?'));
        $stmtPay = $pdo->prepare("DELETE FROM payments WHERE debt_id IN ($placeholders)");
        $stmtPay->execute($debtIds);
        
        // 3. Eliminar los registros de deuda de las propiedades
        $stmtDelDebts = $pdo->prepare("DELETE FROM property_debts WHERE id IN ($placeholders)");
        $stmtDelDebts->execute($debtIds);
    }

    // 4. Eliminar los ¨ªtems de gasto (fixed, variable, other)
    $stmtItems = $pdo->prepare("DELETE FROM monthly_fee_items WHERE fee_id = ?");
    $stmtItems->execute([$feeId]);

    // 5. Eliminar la cabecera de la cuota mensual
    $stmtFee = $pdo->prepare("DELETE FROM monthly_fees WHERE id = ?");
    $stmtFee->execute([$feeId]);

    $pdo->commit();
    response(["success" => true, "message" => "Facturaci¨®n eliminada y balance de propiedades restaurado."]);

} catch (PDOException $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    response(["error" => "Error cr¨ªtico de Base de Datos: " . $e->getMessage()], 500);
}
?>