From ca2b6f11a1c716c71bd52f0aeb6fa8ff3cd68aad Mon Sep 17 00:00:00 2001 From: Frank Cools Date: Wed, 8 Oct 2025 12:45:38 +0200 Subject: [PATCH] v2.5.10: Fixed footer implementation using custom PDF class - Fixed TCPDF footer implementation using proper Footer() method override - Created DeclarationTVA_CustomPDF class extending TCPDF - Removed incorrect setFooterCallback() calls that don't exist in TCPDF - Company name and page numbering now work correctly on all pages - Fixed 'Call to undefined method TCPDF::setFooterCallback()' error - Updated module version to 2.5.10 --- ChangeLog.md | 8 +++ core/class/declarationtva_pdf.class.php | 83 ++++++++++++------------ core/modules/modDeclarationTVA.class.php | 2 +- 3 files changed, 52 insertions(+), 41 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 697e92f..df1d533 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,13 @@ # CHANGELOG MODULE DECLARATIONTVA FOR [DOLIBARR ERP CRM](https://www.dolibarr.org) +## 2.5.10 + +### Bug Fixes +- **Fixed Footer Implementation**: Corrected TCPDF footer implementation using custom PDF class +- **Proper Footer Method**: Used TCPDF's built-in Footer() method override instead of non-existent callback +- **Stable Footer**: Company name and page numbering now work correctly on all pages +- **Error Resolution**: Fixed "Call to undefined method TCPDF::setFooterCallback()" error + ## 2.5.9 ### UI/UX Improvements diff --git a/core/class/declarationtva_pdf.class.php b/core/class/declarationtva_pdf.class.php index df239d9..97dd2bd 100644 --- a/core/class/declarationtva_pdf.class.php +++ b/core/class/declarationtva_pdf.class.php @@ -15,6 +15,41 @@ * along with this program. If not, see . */ +/** + * Custom PDF class with footer functionality + */ +class DeclarationTVA_CustomPDF extends TCPDF +{ + private $company_name = ''; + + public function setCompanyName($company_name) + { + $this->company_name = $company_name; + } + + public function Footer() + { + // Set font size 7 (same as summary information) + $this->SetFont('helvetica', '', 7); + + // Get current page number + $page_number = $this->getPage(); + + // Get page width for positioning + $page_width = $this->getPageWidth(); + $margin_left = $this->getMargins()['left']; + $margin_right = $this->getMargins()['right']; + + // Company name on the left + $this->SetXY($margin_left, $this->GetY()); + $this->Cell(0, 6, $this->company_name, 0, 0, 'L'); + + // Page number on the right + $this->SetXY($page_width - $margin_right - 20, $this->GetY()); + $this->Cell(20, 6, 'Page ' . $page_number, 0, 0, 'R'); + } +} + /** * \file core/class/declarationtva_pdf.class.php * \ingroup declarationtva @@ -809,7 +844,10 @@ class DeclarationTVA_PDF { try { // Create a new PDF document - $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + $pdf = new DeclarationTVA_CustomPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + + // Set company name for footer + $pdf->setCompanyName($company->name); // Set document information $pdf->SetCreator('DeclarationTVA Module'); @@ -825,9 +863,6 @@ class DeclarationTVA_PDF // Set thin borders for all elements $pdf->SetLineWidth(0.1); - // Set custom footer - $pdf->setFooterCallback(array($this, 'customFooter')); - // Add a page $pdf->AddPage(); @@ -1396,7 +1431,10 @@ class DeclarationTVA_PDF { try { // Create a new PDF document - $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + $pdf = new DeclarationTVA_CustomPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + + // Set company name for footer + $pdf->setCompanyName($company->name); // Set document information $pdf->SetCreator('DeclarationTVA Module'); @@ -1412,9 +1450,6 @@ class DeclarationTVA_PDF // Set thin borders for all elements $pdf->SetLineWidth(0.1); - // Set custom footer - $pdf->setFooterCallback(array($this, 'customFooter')); - // Add title page $pdf->AddPage(); $pdf->SetFont('helvetica', 'B', 16); @@ -2582,37 +2617,5 @@ class DeclarationTVA_PDF return 'Compte ' . $account_code; } - /** - * Custom footer callback for PDF - * - * @param TCPDF $pdf PDF object - */ - public function customFooter($pdf) - { - global $conf; - - // Get company information - $company = new Societe($this->db); - $company->fetch($conf->entity); - - // Set font size 7 (same as summary information) - $pdf->SetFont('helvetica', '', 7); - - // Get current page number - $page_number = $pdf->getPage(); - - // Get page width for positioning - $page_width = $pdf->getPageWidth(); - $margin_left = $pdf->getMargins()['left']; - $margin_right = $pdf->getMargins()['right']; - - // Company name on the left - $pdf->SetXY($margin_left, $pdf->GetY()); - $pdf->Cell(0, 6, $company->name, 0, 0, 'L'); - - // Page number on the right - $pdf->SetXY($page_width - $margin_right - 20, $pdf->GetY()); - $pdf->Cell(20, 6, 'Page ' . $page_number, 0, 0, 'R'); - } } diff --git a/core/modules/modDeclarationTVA.class.php b/core/modules/modDeclarationTVA.class.php index 7acf109..b266819 100644 --- a/core/modules/modDeclarationTVA.class.php +++ b/core/modules/modDeclarationTVA.class.php @@ -76,7 +76,7 @@ class modDeclarationTVA extends DolibarrModules $this->editor_squarred_logo = ''; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@declarationtva' // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z' - $this->version = '2.5.9'; + $this->version = '2.5.10'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt';