diff --git a/modules/budget/includes/api/manage-item.php b/modules/budget/includes/api/manage-item.php index 7565a16..af790db 100644 --- a/modules/budget/includes/api/manage-item.php +++ b/modules/budget/includes/api/manage-item.php @@ -10,18 +10,26 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($action === 'save') { $id = $_POST['id'] ?? ''; $name = $_POST['name']; - $amount = $_POST['amount']; $category = $_POST['category']; $type = $_POST['type']; - $payment_day = $_POST['payment_day']; + $payment_day = empty($_POST['payment_day']) ? null : (int)$_POST['payment_day']; $is_estimate = $_POST['is_estimate']; $reg_month = $_POST['reg_month']; - $keywords = $_POST['mapping_keywords'] ?? ''; - - // NOUVEAU : Récupération de l'ID des vacances $holiday_id = !empty($_POST['holiday_id']) ? (int)$_POST['holiday_id'] : null; + // ========================================== + // NOUVELLE NORME COMPTABLE : Dépense = Négatif + // ========================================== + // On récupère le montant en valeur absolue (pour éviter les erreurs si l'utilisateur a tapé un '-') + $amount = abs((float)$_POST['amount']); + + // Si c'est un frais, on l'enregistre en négatif + if ($category === 'expense') { + $amount = -$amount; + } + // ========================================== + if ($id) { // UPDATE $stmt = $pdo->prepare("UPDATE pf_budget_items SET name=?, amount=?, category=?, type=?, payment_day=?, is_estimate=?, reg_month=?, mapping_keywords=?, holiday_id=? WHERE id=?"); @@ -31,6 +39,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $stmt = $pdo->prepare("INSERT INTO pf_budget_items (name, amount, category, type, payment_day, is_estimate, reg_month, mapping_keywords, holiday_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([$name, $amount, $category, $type, $payment_day, $is_estimate, $reg_month, $keywords, $holiday_id]); } + + // Redirection header('Location: /budget.php?tab=recap'); exit; } diff --git a/modules/budget/views/epargne.php b/modules/budget/views/epargne.php index 4e768d1..4b52cd5 100644 --- a/modules/budget/views/epargne.php +++ b/modules/budget/views/epargne.php @@ -123,7 +123,7 @@ input[type="number"].no-spinners {
- - +
@@ -799,7 +818,6 @@ function handleModalCatChange(select) { const selectFrais = document.getElementById('fraisSelect'); const selectIncome = document.getElementById('incomeSelect'); - // Reset visibility blockText.style.display = 'none'; blockSelect.style.display = 'none'; blockFrais.style.display = 'none'; @@ -810,11 +828,10 @@ function handleModalCatChange(select) { selectFrais.required = false; selectIncome.required = false; - // Affichage conditionnel des Vacances (Si Epargne/LivretA OU si la catégorie contient le mot vacance) if (catKey === 'LivretA' || catText.includes('vacance')) { blockHoliday.style.display = 'block'; } else { - document.getElementById('modalHolidayId').value = ''; // On reset si on cache + document.getElementById('modalHolidayId').value = ''; } if (catKey === 'School') { @@ -869,14 +886,15 @@ function openAddModal(catKey, catLabel) { // Ouvre la modale pour MODIFIER function openEditModal(expenseData) { openSuiviModal('manualExpenseModal'); - document.getElementById('modalTitle').innerText = "Modifier la dépense"; + document.getElementById('modalTitle').innerText = "Modifier la transaction"; document.getElementById('modalExpenseId').value = expenseData.id; document.getElementById('modalDate').value = expenseData.date_exp; document.getElementById('modalLabelInput').value = expenseData.label; const rawAmount = parseFloat(expenseData.amount); - document.getElementById('modalIsCredit').value = rawAmount < 0 ? "1" : "0"; + // LOGIQUE INVERSÉE POUR L'INTERFACE : Si > 0 c'est un crédit + document.getElementById('modalIsCredit').value = rawAmount > 0 ? "1" : "0"; document.getElementById('modalAmount').value = Math.abs(rawAmount); document.getElementById('modalHolidayId').value = expenseData.holiday_id || ""; @@ -918,7 +936,6 @@ function handleLineCatChange(select) { const catKey = select.value; const catText = select.options[select.selectedIndex].text.toLowerCase(); - // Reset fraisSelect.style.display = 'none'; incomeSelect.style.display = 'none'; holidaySelect.style.display = 'none'; @@ -926,7 +943,6 @@ function handleLineCatChange(select) { fraisSelect.value = ''; incomeSelect.value = ''; - // Condition d'affichage pour les vacances if (catKey === 'LivretA' || catText.includes('vacance')) { holidaySelect.style.display = 'block'; } else {