From fea225dc3d53540023539a7fdd49584d65e9599e Mon Sep 17 00:00:00 2001 From: Frank Cools Date: Wed, 8 Oct 2025 15:16:03 +0200 Subject: [PATCH] Fix declaration list to use CA-3 line values (line 32 for VAT due, lines 26/27 for refund) instead of main table values --- declarationtvaindex.php | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/declarationtvaindex.php b/declarationtvaindex.php index ec488a0..4a86a0b 100644 --- a/declarationtvaindex.php +++ b/declarationtvaindex.php @@ -141,14 +141,33 @@ if (empty($declarations)) { } print '' . $langs->trans("Status" . ucfirst($d['status'])) . $status_icon . ''; - // Show VAT amount with proper label - // Check if there's a VAT credit (refund) or net VAT due - if ($d['vat_credit'] > 0) { - // VAT refund case - print '' . price($d['vat_credit']) . '
' . $langs->trans("VATToReceive") . ''; - } elseif ($d['net_vat_due'] > 0) { - // VAT due case - DEBUG: Show raw value - print '' . price($d['net_vat_due']) . '
' . $langs->trans("NetVATDue") . ' (DB: ' . $d['net_vat_due'] . ')'; + // Show VAT amount with proper label - use CA-3 line values instead of main table + $declarationtva = new DeclarationTVA($db, $conf->entity); + $ca3_lines = $declarationtva->getCA3Lines($d['rowid']); + + // Get line 32 (net VAT due) and lines 26/27 (VAT credit) + $line_32_amount = 0; + $line_26_amount = 0; + $line_27_amount = 0; + + foreach ($ca3_lines as $line) { + if ($line['ca3_line'] == '32') { + $line_32_amount = $line['vat_amount']; + } elseif ($line['ca3_line'] == '26') { + $line_26_amount = $line['vat_amount']; + } elseif ($line['ca3_line'] == '27') { + $line_27_amount = $line['vat_amount']; + } + } + + // Determine which value to show based on CA-3 lines + if ($line_32_amount > 0) { + // VAT due case - use line 32 + print '' . price($line_32_amount) . '
' . $langs->trans("NetVATDue") . ''; + } elseif ($line_26_amount > 0 || $line_27_amount > 0) { + // VAT refund case - use line 26 or 27 (whichever is not 0) + $refund_amount = $line_26_amount > 0 ? $line_26_amount : $line_27_amount; + print '' . price($refund_amount) . '
' . $langs->trans("VATToReceive") . ''; } else { // Balanced case print '' . price(0) . '
' . $langs->trans("VATBalanced") . '';