Add line 16 subtotal calculation

Added:
- Line 16: Subtotal of lines 08, 09, 9B (for user reference)
- calculateLine16() method that sums VAT amounts from lines 08, 09, 9B
- Line 16 definition in CA-3 line definitions
- Line 16 will appear automatically in the view page
- This provides a subtotal for the user before line 17 (manual entry)
This commit is contained in:
Frank Cools 2025-10-02 22:32:28 +02:00
parent 01a944fbfc
commit c638ce5233
2 changed files with 44 additions and 0 deletions

View File

@ -281,6 +281,9 @@ class DeclarationTVA
// Debug totals // Debug totals
error_log("DeclarationTVA: Total VAT collected: $total_vat_collected, Total VAT deductible: $total_vat_deductible"); error_log("DeclarationTVA: Total VAT collected: $total_vat_collected, Total VAT deductible: $total_vat_deductible");
// Calculate line 16: Subtotal of lines 08, 09, 9B (for user reference)
$this->calculateLine16($declaration_id);
// Calculate D-section result lines (25, 26, 28, 29) // Calculate D-section result lines (25, 26, 28, 29)
$this->calculateDSectionLines($declaration_id, $total_vat_collected, $total_vat_deductible); $this->calculateDSectionLines($declaration_id, $total_vat_collected, $total_vat_deductible);
@ -295,6 +298,40 @@ class DeclarationTVA
return true; return true;
} }
/**
* Calculate line 16: Subtotal of lines 08, 09, 9B (for user reference)
*
* @param int $declaration_id Declaration ID
* @return bool Success
*/
private function calculateLine16($declaration_id)
{
// Get the amounts from lines 08, 09, 9B
$sql = "SELECT ca3_line, vat_amount FROM " . MAIN_DB_PREFIX . "declarationtva_ca3_lines
WHERE declaration_id = " . (int)$declaration_id . "
AND ca3_line IN ('08', '09', '9B')";
$result = $this->db->query($sql);
$line_16_total = 0;
$account_labels = array();
if ($result) {
while ($obj = $this->db->fetch_object($result)) {
$line_16_total += $obj->vat_amount;
$account_labels[] = "Line " . $obj->ca3_line . ": " . number_format($obj->vat_amount, 2);
}
}
// Create line 16 record
$this->createCA3Line($declaration_id, '16', 'Subtotal: ' . implode(', ', $account_labels), array(
'base_amount' => 0,
'vat_amount' => $line_16_total,
'total_amount' => $line_16_total
));
return true;
}
/** /**
* Calculate D-section result lines (25, 26, 28, 29) * Calculate D-section result lines (25, 26, 28, 29)
* *

View File

@ -291,6 +291,13 @@ class DeclarationTVA_Config
'description' => 'Base HT and VAT amounts due at reduced rates (5,5% and 2,1%)', 'description' => 'Base HT and VAT amounts due at reduced rates (5,5% and 2,1%)',
'pcg_accounts' => 'Base: 7xxxx (Sales); VAT: 44573x (5,5%) / 44574x (2,1%)' 'pcg_accounts' => 'Base: 7xxxx (Sales); VAT: 44573x (5,5%) / 44574x (2,1%)'
), ),
'16' => array(
'label' => 'Sous-total TVA due (08 + 09 + 9B)',
'type' => 'calculated',
'section' => 'B',
'description' => 'Subtotal of VAT due (calculated from lines 08, 09, 9B)',
'pcg_accounts' => 'Calculated automatically'
),
'17' => array( '17' => array(
'label' => 'TVA due au titre des acquisitions intracommunautaires (autoliquidation)', 'label' => 'TVA due au titre des acquisitions intracommunautaires (autoliquidation)',
'type' => 'vat', 'type' => 'vat',