diff --git a/core/class/declarationtva.class.php b/core/class/declarationtva.class.php index af4f17e..38dfcb9 100644 --- a/core/class/declarationtva.class.php +++ b/core/class/declarationtva.class.php @@ -1116,28 +1116,30 @@ class DeclarationTVA $threshold_enabled = $threshold_config['refund_threshold_enabled']; if ($threshold_enabled && $vat_credit < $refund_threshold) { - // Use carry-forward account - $vat_account = $journal_config['vat_to_receive']; + // Carry-forward case - NO bank entries needed + // Only create accounting entries for carry-forward (no bank transaction) + error_log("DEBUG: VAT credit below threshold (" . $vat_credit . " < " . $refund_threshold . ") - skipping bank entries, using carry-forward"); + return array(); // Return empty array - no bank entries for carry-forward } else { - // Use immediate refund account - $vat_account = $journal_config['vat_refund']; + // Immediate refund case - create bank entries + error_log("DEBUG: VAT credit above threshold (" . $vat_credit . " >= " . $refund_threshold . ") - creating bank entries for immediate refund"); + + $entries[] = array( + 'account_code' => $bank_account['account_code'], + 'account_label' => $bank_account['account_label'], + 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, + 'debit' => $vat_credit, + 'credit' => '' + ); + + $entries[] = array( + 'account_code' => $journal_config['vat_refund'], + 'account_label' => $this->getAccountLabel($journal_config['vat_refund']), + 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, + 'debit' => '', + 'credit' => $vat_credit + ); } - - $entries[] = array( - 'account_code' => $bank_account['account_code'], - 'account_label' => $bank_account['account_label'], - 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, - 'debit' => $vat_credit, - 'credit' => '' - ); - - $entries[] = array( - 'account_code' => $vat_account, - 'account_label' => $this->getAccountLabel($vat_account), - 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, - 'debit' => '', - 'credit' => $vat_credit - ); } // Get bank journal code from bank account diff --git a/core/class/declarationtva_pdf.class.php b/core/class/declarationtva_pdf.class.php index 4b04366..9730af8 100644 --- a/core/class/declarationtva_pdf.class.php +++ b/core/class/declarationtva_pdf.class.php @@ -2054,7 +2054,28 @@ class DeclarationTVA_PDF if (empty($bank_entries)) { $pdf->SetFont('helvetica', '', 12); - $pdf->Cell(0, 8, 'Aucune écriture bancaire à générer.', 0, 1); + + // Check if this is a carry-forward case + $line_16_amount = $this->getLineAmount($declaration, '16'); + $line_23_amount = $this->getLineAmount($declaration, '23'); + $td_amount = $line_16_amount - $line_23_amount; + + if ($td_amount < 0) { + // VAT credit case - check if below threshold + $vat_credit = abs($td_amount); + $threshold_config = $this->getVATRefundThresholdConfiguration(); + $refund_threshold = $threshold_config['refund_threshold']; + $threshold_enabled = $threshold_config['refund_threshold_enabled']; + + if ($threshold_enabled && $vat_credit < $refund_threshold) { + $pdf->Cell(0, 8, 'Aucune écriture bancaire - Crédit TVA reporté au mois suivant', 0, 1); + $pdf->Cell(0, 8, '(Montant: ' . $this->formatAmountReal($vat_credit) . ' € < Seuil: ' . $this->formatAmountReal($refund_threshold) . ' €)', 0, 1); + } else { + $pdf->Cell(0, 8, 'Aucune écriture bancaire à générer.', 0, 1); + } + } else { + $pdf->Cell(0, 8, 'Aucune écriture bancaire à générer.', 0, 1); + } return; } @@ -2161,24 +2182,34 @@ class DeclarationTVA_PDF ); } elseif ($vat_credit > 0) { - // VAT refund case - money coming in - // 1. Bank account (debit - money coming in) - $entries[] = array( - 'account_code' => $bank_account['account_code'], - 'account_label' => $bank_account['account_label'], - 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, - 'debit' => $this->formatAmountReal($vat_credit), - 'credit' => '' - ); + // VAT refund case - check threshold for carry-forward + $threshold_config = $this->getVATRefundThresholdConfiguration(); + $refund_threshold = $threshold_config['refund_threshold']; + $threshold_enabled = $threshold_config['refund_threshold_enabled']; - // 2. VAT account (credit - VAT being received) - $entries[] = array( - 'account_code' => $journal_config['vat_to_receive'], - 'account_label' => $this->getAccountLabel($journal_config['vat_to_receive']), - 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, - 'debit' => '', - 'credit' => $this->formatAmountReal($vat_credit) - ); + if ($threshold_enabled && $vat_credit < $refund_threshold) { + // Carry-forward case - NO bank entries for PDF + return $entries; // Return empty array - no bank entries for carry-forward + } else { + // Immediate refund case - create bank entries + // 1. Bank account (debit - money coming in) + $entries[] = array( + 'account_code' => $bank_account['account_code'], + 'account_label' => $bank_account['account_label'], + 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, + 'debit' => $this->formatAmountReal($vat_credit), + 'credit' => '' + ); + + // 2. VAT account (credit - VAT being received) + $entries[] = array( + 'account_code' => $journal_config['vat_to_receive'], + 'account_label' => $this->getAccountLabel($journal_config['vat_to_receive']), + 'entry_label' => 'Remboursement TVA - ' . $declaration->declaration_name, + 'debit' => '', + 'credit' => $this->formatAmountReal($vat_credit) + ); + } } return $entries;