diff --git a/modules/budget/views/recap.php b/modules/budget/views/recap.php index 236b4cd..e6c434c 100644 --- a/modules/budget/views/recap.php +++ b/modules/budget/views/recap.php @@ -5,13 +5,14 @@ $stmt = $pdo->query("SELECT * FROM pf_budget_items ORDER BY category DESC, sort_order ASC, name ASC"); $items = $stmt->fetchAll(); -// 2. Récupération des Dépenses Réelles du mois (Pour le matching auto) +// 2. Récupération des Dépenses Réelles du mois $currentMonth = date('m'); $currentYear = date('Y'); -$stmtExp = $pdo->prepare("SELECT label FROM pf_expenses WHERE MONTH(date_exp) = ? AND YEAR(date_exp) = ?"); + +// On récupère TOUTES les dépenses du mois pour faire le calcul en PHP +$stmtExp = $pdo->prepare("SELECT amount, label, budget_item_id FROM pf_expenses WHERE MONTH(date_exp) = ? AND YEAR(date_exp) = ?"); $stmtExp->execute([$currentMonth, $currentYear]); -// On stocke tous les libellés réels dans un tableau simple -$realExpensesLabels = $stmtExp->fetchAll(PDO::FETCH_COLUMN); +$allExpenses = $stmtExp->fetchAll(PDO::FETCH_ASSOC); $totalDepenses = 0; $totalRevenus = 0; @@ -28,42 +29,60 @@ $totalRevenus = 0; Nom - Montant + Montant Prévu Type Jour - État prélèvement + État Régularisation Actions = ($item['amount'] - 0.10))) { + $isAutoChecked = true; } - // L'état final est : Soit coché manuellement (BDD), soit détecté auto $isPaid = $item['is_checked'] || $isAutoChecked; // Styles @@ -75,21 +94,40 @@ $totalRevenus = 0; (Est.)' : '' ?> - 🔗 + 🔗 + € - + + + 0.05): ?> +
+ Dépassement : + € +
+ +
+ Reste : € +
+ +
+ Montant exact ✓ +
+ + +
Soit /mois
+ +
@@ -101,10 +139,17 @@ $totalRevenus = 0; onclick="toggleItemCheck(, this.checked)" title="Marquer comme payé" style="width:18px; height:18px; cursor:pointer;"> - Payé' : ' Attente' ?> + + Payé + + Partiel + + Attente +
+ @@ -138,7 +183,7 @@ $totalRevenus = 0;
-

* Les lignes marquées Auto ✅ ont été détectées automatiquement dans les dépenses réelles du mois.

+

* Les lignes Auto ✅ sont validées quand la somme des transactions atteint le montant prévu.

@@ -252,9 +297,7 @@ function editRecapItem(item) { document.getElementById("recapModalTitle").innerText = "Modifier : " + data.name; document.getElementById("item_id").value = data.id; document.getElementById("item_name").value = data.name; - // Remplissage du nouveau champ Keywords document.getElementById("item_keywords").value = data.mapping_keywords || ''; - document.getElementById("item_amount").value = data.amount; document.getElementById("item_category").value = data.category; document.getElementById("item_type").value = data.type;