From 7933d3f649207bd05c01e23fdb0d01fb240ce98b Mon Sep 17 00:00:00 2001 From: Frank Cools Date: Thu, 2 Oct 2025 22:44:35 +0200 Subject: [PATCH] Add line TD for absolute VAT due calculation Fixed: - Line 25: TVA brute due (Total VAT collected) - always positive - Line TD: TVA due (absolute value) - never negative, shows abs(net_vat_due) - Line TD appears between lines 26 and 28 in Section D - Line TD shows 'TVA due (valeur absolue)' as description - This ensures VAT due is never negative, even with VAT credits --- core/class/declarationtva.class.php | 10 +++++++++- declarationtva_view.php | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/core/class/declarationtva.class.php b/core/class/declarationtva.class.php index 0e3983e..31867c4 100644 --- a/core/class/declarationtva.class.php +++ b/core/class/declarationtva.class.php @@ -379,7 +379,7 @@ class DeclarationTVA */ private function calculateDSectionLines($declaration_id, $total_vat_collected, $total_vat_deductible) { - // Line 25: TVA brute due (Total VAT due) + // Line 25: TVA brute due (Total VAT due) - always positive $line_25_amount = $total_vat_collected; $this->createCA3Line($declaration_id, '25', 'Calculated from sections A and B', array( 'base_amount' => 0, @@ -398,6 +398,14 @@ class DeclarationTVA // Calculate net VAT due $net_vat_due = $total_vat_collected - $total_vat_deductible; + // Line TD: TVA due (VAT due) - absolute value, never negative + $line_td_amount = abs($net_vat_due); + $this->createCA3Line($declaration_id, 'TD', 'TVA due (absolute value)', array( + 'base_amount' => 0, + 'vat_amount' => $line_td_amount, + 'total_amount' => $line_td_amount + )); + // Line 28: TVA nette due (Net VAT due) - if positive if ($net_vat_due > 0) { $this->createCA3Line($declaration_id, '28', 'Calculated: 25 - 26', array( diff --git a/declarationtva_view.php b/declarationtva_view.php index 0a92a83..f7c24f1 100644 --- a/declarationtva_view.php +++ b/declarationtva_view.php @@ -262,10 +262,17 @@ print '' . $langs->trans("Description") . ''; print '' . $langs->trans("Amount") . ''; print ''; -$section_d_lines = array('25', '26', '28', '29'); +$section_d_lines = array('25', '26', 'TD', '28', '29'); foreach ($section_d_lines as $line) { $data = isset($ca3_data[$line]) ? $ca3_data[$line] : array('line_label' => '', 'vat_amount' => 0); - $description = isset($ca3_definitions[$line]) ? $ca3_definitions[$line]['label'] : $data['line_label']; + + // Special handling for line TD + if ($line == 'TD') { + $description = 'TVA due (valeur absolue)'; + } else { + $description = isset($ca3_definitions[$line]) ? $ca3_definitions[$line]['label'] : $data['line_label']; + } + print ''; print '' . $line . ''; print '' . $description . '';