- Changed PDF generation path from /documents/declarationtva/validated/ to /declarationtva/validated/
- Updated hasValidatedDocument() to look in /declarationtva/validated/
- Updated getValidatedPDFPath() to look in /declarationtva/validated/
- This removes the duplicate /documents in the file path
- Files will now be saved in /var/lib/dolibarr/declarationtva/validated/
- URLs will be /dolibarr/documents/declarationtva/validated/ (single /documents)
- Updated generateDetailedCA3PDF to save PDFs in /documents/declarationtva/validated/
- Updated hasValidatedDocument to look in /documents/declarationtva/validated/
- Updated getValidatedPDFPath to look in /documents/declarationtva/validated/
- Removed year/month directory structure
- Should now match the actual file location where PDFs are saved
- URLs should now work correctly
- Removed all error_log debug statements from production code
- Cleaned up hasValidatedDocument method
- Cleaned up declaration list processing
- Code is now production-ready
- PDF detection and generation are working correctly
- Added comprehensive error_log statements to track PDF detection
- Logs declaration ID, number, directory paths, and search patterns
- Shows all PDF files found in the directory
- Will help identify why PDF detection is failing
- Debug info will appear in PHP error logs
- Updated hasValidatedDocument() to use flexible file pattern matching
- Updated getValidatedPDFPath() with same flexible pattern
- First tries exact pattern: CA3_[declaration_number]_*.pdf
- Falls back to flexible pattern: CA3_*[declaration_number]*.pdf
- Should now detect PDFs with complex filenames like CA3_CA3-2025-05-20251002184011_2025-10-06.pdf
- Declaration list should now show green PDF icons for validated declarations
- Modified generateDetailedCA3PDF to save PDFs directly to /documents/declarationtva/YYYY/MM/
- Updated saveValidatedPDF to handle PDFs already in correct location
- Added debugging messages to show PDF generation success/failure
- Fixed path mismatch between PDF generation and document detection
- PDFs should now be properly generated and detected in declaration list
- Modified hasValidatedDocument() to check file system instead of database
- Added getValidatedPDFPath() method to get PDF file path
- Updated declaration list to show clickable PDF download links
- Added DownloadPDF translation in French and English
- PDF icons now link directly to downloadable PDF files
- Fixed issue where validated declarations didn't show PDF availability
- Added ECM integration toggle for easy enable/disable
- Temporarily disabled ECM integration to prevent fatal errors
- Added debugging logs to track ECM files path resolution
- PDF saving to disk still works without ECM integration
- Declaration validation will work without document management
- Can be re-enabled once ECM files path is properly resolved
- Create dedicated VAT declarations folder structure under Dolibarr documents
- Organize by year and month: /documents/declarationtva/YYYY/MM/
- Updated PDF saving to use proper directory structure
- Enhanced ECM file records with proper filepath and descriptions
- Added helper methods for directory management
- Better document organization following Dolibarr conventions
- VAT declarations now have their own dedicated space
- Updated paths to include correct ECM files location
- Added multiple fallback paths for ecmfiles.class.php
- Prioritized /ecm/class/ path over /core/class/ path
- Enhanced error logging to show all attempted paths
- Should resolve the 'Failed opening required' error
- ECM files integration should now work properly
- Added unvalidateDeclaration() method to DeclarationTVA class
- Added unvalidate action handler in declarationtva_view.php
- Added red 'Unvalidate' button for validated declarations
- Added confirmation dialog for unvalidate action
- Added French and English language strings
- Allows reverting validated declarations back to draft status
- Useful for testing validation process multiple times
- Made ECM files integration optional and graceful
- Added file existence check before requiring ecmfiles.class.php
- Wrapped ECM file creation in try-catch to prevent fatal errors
- PDF is still saved to disk even if ECM integration fails
- Added detailed error logging for troubleshooting
- System now works regardless of ECM files availability
- Enhanced validateDeclaration() to check for column existence
- Falls back to basic validation if enhanced columns don't exist
- Updated migration script with proper column existence checks
- Uses dynamic SQL to avoid errors on existing columns
- System now works with or without the additional columns
- Graceful degradation for different database states
- Removed all error_log debug statements from PDF generation
- Removed debug logging from CA-3 data processing
- Removed debug logging from account amount calculations
- Cleaned up merge methods debug output
- Production-ready code without debug noise
- Added comprehensive PDF export combining CA-3 form with detailed breakdown pages
- Implemented pdftk-based PDF merging that preserves form fields
- Added support for new CA-3 lines (25, 26, 27, TD, 28, 32) with conditional visibility
- Fixed multi-select configuration saving issues
- Enhanced error handling and debugging for PDF generation
- Added French status translation for detailed PDFs
- Optimized page breaks to reduce paper usage
- Improved form field preservation during PDF merging
Technical improvements:
- Better error handling with comprehensive logging
- Modular PDF generation with fallback options
- Fixed pdftk filename conflicts
- Enhanced debugging capabilities
- Status translation without external dependencies
- Removed debug logging that was added to troubleshoot line 08 display issues
- The issue was identified as database field length limit (varchar(255) vs TEXT)
- Calculation is working correctly - line 08 shows base=1410.57, vat=186.34, total=1596.91
- User needs to run the database migration to fix the line_label field length
- Added debug logging to see how many BASE and VAT mappings are found
- Added logging to show which accounts are being processed and their amounts
- Added logging to show available mappings when none are found for a line
- This will help identify why line 08 base amounts are not displaying in the main view
- Created migration to change line_label from varchar(255) to TEXT
- Added truncation logic to prevent future line_label length issues (1000 char limit)
- This fixes the issue where 11 accounts mapped to line 08 base caused display problems
- The calculation should now work correctly with any number of account mappings
- Added comprehensive field naming documentation (CA3_FIELD_NAMING.md)
- Implemented PDFTK-based PDF form filling with FDF generation
- Added PDFTK installation guide for Linux/Mac/Windows
- Enhanced PDF generation with company data integration
- Added new CA-3 lines: F1, F2 (intracom acquisitions), E1-E6, F6-F8, line 18
- Updated section structure: merged Section C into Section B as sub-section
- Added lines 19, 20 to TVA DÉDUCTIBLE sub-section
- Updated all field descriptions to match official CA-3 form
- Improved visual hierarchy with dark blue section headers
- Enhanced calculation logic for VAT deductible amounts
- Added comprehensive language translations
- Updated database schema with new fields
- Fixed font settings to use Courier New 9pt for official documents
Fixed:
- Removed old getAccountMappings() method on line 615
- Kept the new version that joins with chart of accounts
- This fixes the 'Cannot redeclare' PHP Fatal error
The new method properly retrieves account labels from Dolibarr's accounting_account table.
Fixed:
- Added missing getAccountMappings() method to DeclarationTVA class
- Joins with Dolibarr's accounting_account table to get labels
- Retrieves account labels from chart of accounts (llx_accounting_account)
- Falls back to stored label if chart of accounts label not available
- Returns array with rowid, ca3_line, account_code, account_label, vat_rate, is_active
This fixes the issue where account labels were not showing in dropdown panels.
Fixed:
- Grouped BASE and VAT accounts separately for lines 08, 09, 9B
- Added clear section headers: 'Base Accounts (Sales)' and 'VAT Accounts'
- Improved visual organization of account breakdown
- Removed debugging code
- Added translations for new section headers
This ensures users can clearly see which accounts contribute to base amounts vs VAT amounts for the special lines.
Fixed:
- Updated getCA3LineDetails() to handle special cases for lines 08, 09, 9B
- These lines have _BASE and _VAT suffixes in the database
- Added proper matching logic for both normal lines and special cases
- Added debugging to AJAX endpoint and backend method
- Added error logging to trace mapping issues
This should fix the issue where only A1 works but other lines show no accounts.
Features added:
- New getCA3LineDetails() method in DeclarationTVA class
- New declarationtva_line_details.php page for detailed view
- All CA-3 line codes are now clickable in declaration view
- Detailed breakdown shows:
* Account codes and labels
* Base amounts, VAT amounts, total amounts
* Mapping types (A1, 08_BASE, 08_VAT, etc.)
* Calculated totals vs account totals
- Added comprehensive translations for detailed view
- Navigation breadcrumbs and back buttons
- Professional styling with Dolibarr UI components
This provides complete transparency into which accounts contribute to each CA-3 line without touching the calculation logic.
Fixed:
- Store original amounts in line_label with special format
- Parse original amounts in view page helper function
- Display original amounts in brackets: 124 (123.67)
- Handle both base and VAT amounts separately
- Original amounts now visible in amount columns
- Clear transparency for rounding decisions
Added:
- Round all VAT amounts to whole numbers using round() function
- Store original amounts in line_label with brackets [Original: X.XX]
- Round totals in updateDeclarationTotals() method
- Round amounts in createCA3Line() method
- This ensures VAT declarations only show whole numbers as required
- Original amounts are visible for transparency
Fixed:
- Line 25: Only shows value if net_vat_due < 0 (VAT credit - we receive money)
- Line TD: Only shows value if net_vat_due > 0 (VAT due - we pay money)
- Clear separation between payment (TD) and receipt (25) scenarios
- Line TD description: 'TVA due (montant à payer)'
- This clearly separates when we need to pay vs receive VAT
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
Added:
- Line 23: Subtotal of lines 20, 21, 22 (for user reference)
- calculateLine23() method that sums VAT amounts from lines 20, 21, 22
- Line 23 display in Section C between lines 22 and Section D
- Line 23 shows as 'Sous-total TVA déductible (20 + 21 + 22)' with bold formatting
- Provides subtotal for Section C just like line 16 for Section B
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)
Fixed:
- Line 17 is for manual entry only (paper form)
- Removed line 17 from automatic totals calculation
- Only lines 08, 09, 9B contribute to total_vat_collected
- This should give the correct value for line 25
Fixed:
- Only sections B and C VAT amounts are summed for totals
- Section A lines (A1-A5) are excluded from totals calculation
- Only VAT amounts (not base amounts) are included in totals
- This should fix line 25 showing correct value (406.28)
Added:
- Debug logging for total VAT collected and deductible amounts
- This will help identify why line 25 shows wrong value (should be 406.28)
- Will show what values are being summed for the totals
Enhanced:
- D-section lines are now calculated automatically from other sections
- Line 25: TVA brute due (sum of sections A and B)
- Line 26: TVA déductible totale (sum of section C)
- Line 28: TVA nette due (25 - 26, if positive)
- Line 29: Crédit de TVA (26 - 25, if negative)
- Configuration page skips D-section as it's calculated
- Added explanatory note in configuration
- Result lines show 'Calculated from...' labels
Enhanced:
- Configuration form now shows separate fields for base and VAT accounts for lines 08, 09, 9B
- 'Comptes de base (ventes)' for sales accounts (7xxxx)
- 'Comptes de TVA' for VAT accounts (4457xx)
- Form processing handles both base_account_codes and vat_account_codes
- Calculation logic separates base and VAT amounts for these lines
- Base accounts contribute to base_amount, VAT accounts to vat_amount
- Account labels show (base) and (VAT) suffixes for clarity
Enhanced:
- Updated CA-3 line definitions for 08, 09, 9B to show both base and VAT
- Changed type from 'vat' to 'base_vat' for these fields
- Updated view table to show 5 columns: Line, Description, Base HT, VAT, Total
- Added language translations for new columns
- Fields 08, 09, 9B now display both base amounts and VAT amounts
- Enhanced debugging to show final amounts for each line
Fixed:
- When debit = credit (balanced account), use credit amount (VAT collected)
- When debit != credit (imbalanced), use absolute difference
- This handles the case where VAT accounts are balanced out
- Now shows 391.51 instead of 0.00 for field 08
Added:
- Log which CA-3 lines have mappings
- Log account codes being processed
- Log amounts found for each account
- Log when no mappings found for a line
- This will help identify why field 08 isn't working
Fixed:
- Process ALL CA-3 lines (A1-A5, 08, 09, 9B, 17, 20-22, 25-26, 28-29)
- Create records for all lines, even if no accounts mapped
- Show 'No accounts mapped' for lines without configuration
- Now all CA-3 lines will appear in the table with proper amounts
- Lines with mapped accounts will show calculated amounts
- Lines without mappings will show 0.00 but still be visible
Fixed:
- Use abs() for VAT account calculations
- VAT accounts typically have credit side amounts
- Now shows positive values: -1957.57 -> 1957.57
- Enhanced logging to show debit/credit breakdown
Fixed:
- Group account mappings by CA-3 line before processing
- Sum all accounts for the same CA-3 line (e.g. A1 = 7061330 + 7061320)
- Create single CA-3 line record with combined amounts
- Combined account labels for better visibility
- Now correctly calculates: A1 = 904.12 + 1053.45 = 1957.57
Fixed:
- Use correct table: llx_accounting_bookkeeping
- Use correct column: numero_compte (not account_number)
- Use correct date column: doc_date
- Removed unnecessary table discovery
- Queries now match actual Dolibarr database structure