Commit Graph

53 Commits

Author SHA1 Message Date
673a2e4fda Remove ALL rounding from difference calculation
- Completely removed rounding logic
- Now uses real difference values only (formatAmountReal)
- No more rounded amounts or complex rounding logic
- Simple: real difference goes to 4455100/4456700 with real value
- Should show 4455100 with 0.90 instead of 1.00
2025-10-07 14:51:31 +02:00
c00894db2d Fix small difference handling for proper rounding
- Added special handling for differences < 1.0 (like -0.90)
- Small differences now create rounding-only entries (758000/658000)
- No main balancing entry (4455100/4456700) for small differences
- Should show 758000 with 0.90 instead of 4455100 with 1.00
2025-10-07 14:50:59 +02:00
23aa6cccb8 Fix rounding logic for small differences
- Added handling for cases where rounded difference is 0 but real difference is not 0
- Now creates rounding-only entry when difference is small (like -0.90)
- Should show 758000 with 0.90 instead of 1.00
- Handles edge cases where difference rounds to 0 but real value is significant
2025-10-07 14:48:42 +02:00
7b633b99c5 Add debugging to trace account selection logic
- Added debug logging to show which account is being created
- Added logging for difference calculation and condition evaluation
- Should help identify why example 1 shows 4456700 instead of 4455100
- Will help trace the source of duplicate 4455100 entries
2025-10-07 14:46:02 +02:00
6f742bda84 Fix reversed account selection logic
- Debit difference: now uses 4455100 credit (not 4456700)
- Credit difference: now uses 4456700 debit (not 4455100)
- Rounding accounts also corrected: 758000 for debit diff, 658000 for credit diff
- Should now match user examples correctly
2025-10-07 14:43:21 +02:00
43e4072a67 Fix rounding entry side for proper balancing
- Debit difference: 758000 credit (not debit) for rounding
- Credit difference: 658000 debit for rounding
- Now matches user examples where debit difference uses 758000 credit
- Should show correct rounding entries in journal table
2025-10-07 14:16:24 +02:00
ad4fbc17a5 Fix difference calculation to match user examples
- Changed difference calculation from (debits - credits) to (credits - debits)
- Now matches user examples where credit difference uses 4455100
- Should eliminate the unwanted 4456700 line in credit scenarios
- 4455100 and 4456700 will never appear together now
2025-10-07 14:12:38 +02:00
34b9864a4e Fix balancing logic to create only one main entry
- Removed duplicate 4455100 entry creation
- Now creates either 4455100 (credit) OR 4456700 (debit), not both
- Added debug logging for total debits/credits to trace calculation
- Should eliminate the unwanted 4455100 line in journal table
2025-10-07 14:07:29 +02:00
240360a393 Fix balancing logic according to user specifications
- Calculate difference between debits and credits
- Main entry: rounded amount on 4455100 (credit) or 4456700 (debit)
- Rounding entry: real difference on 758000 (credit diff) or 658000 (debit diff)
- Simplified logic by removing TD line dependency
- Both VAT debit and credit scenarios now work correctly
2025-10-07 13:21:03 +02:00
ffe8a960e2 Fix VAT credit scenario balancing logic
- Main balancing entry now uses rounded amount (formatAmount) for proper accounting
- Rounding difference goes to 658000/758000 with real value (formatAmountReal)
- Fixed fallback logic to handle both VAT debit and credit scenarios correctly
- VAT credit: rounded amount on 4456700, real difference on 658000
- VAT debit: rounded amount on 4455100, real difference on 758000
2025-10-07 12:44:19 +02:00
ff314d043e Fix rounding calculation to use real values instead of rounded
- Added debugging to TD line query to see why VAT amount is 0
- Fixed fallback logic to use formatAmountReal() instead of formatAmount()
- When TD line has 0 VAT amount, now uses real difference (0.90) instead of rounded (1.00)
- Added logging to track TD line query and results
- Should now show 0.90 instead of 1.00 in rounding entry
2025-10-07 12:35:19 +02:00
c7cfd3e52d Add debugging to rounding calculation to identify why 1.00 instead of 0.90
- Added error_log statements to track total difference and VAT TD amount
- Added logging for remaining difference calculation
- Will help identify why rounding entry shows 1.00 instead of 0.90
- Check error logs after generating PDF to see calculation values
2025-10-07 12:33:05 +02:00
e4a940a1b4 Clarify that rounding entries use real values (not rounded)
- Rounding entries (658000/758000) already use formatAmountReal() for real values
- Added comment to clarify this behavior
- Main balancing entry uses rounded VAT amount from TD line
- Rounding entry uses real difference with decimals
- Ensures proper accounting precision for rounding differences
2025-10-07 12:31:24 +02:00
8054e03026 Fix balancing calculation to use VAT amount from line TD
- Main balancing entry now uses VAT amount from line TD (69 in example)
- Remaining difference (0.90) goes to rounding entry on 758000
- Added getVATAmountFromLineTD method to fetch VAT amount from TD line
- Proper accounting: 69.00 credit on 4455100 + 0.90 credit on 758000
- Fallback to original logic if no TD line found
2025-10-07 12:27:28 +02:00
295f264090 Fix balancing structure to create correct journal entries
- Combined balancing and rounding logic into single method
- Main balancing entry uses correct account: 4456700 for debit, 4455100 for credit
- Separate rounding entry uses 658000/758000 for rounding differences
- Eliminates duplicate entries and ensures proper accounting structure
- Example: 69.00 credit on 4455100 + 0.90 on 758000 instead of two separate lines
2025-10-07 12:14:46 +02:00
4fd0e13198 Clarify balancing entry account selection logic
- Debit balancing entries use 4456700 (TVA à payer)
- Credit balancing entries use 4455100 (TVA à recevoir)
- Account selection based on whether the balancing entry is debit or credit
- Proper French VAT accounting for balancing entries
2025-10-07 12:07:40 +02:00
ea624ba3cb Fix balancing entry account codes for proper VAT accounting
- If difference < 0 (more credits): Use 4456700 (TVA à payer) on debit side
- If difference > 0 (more debits): Use 4455100 (TVA à recevoir) on credit side
- Each account gets its real label from chart of accounts
- Proper French VAT accounting logic for balancing entries
2025-10-07 12:03:31 +02:00
009ad50d65 Improve getAccountLabel with multiple query approaches to find account names
- Added multiple query strategies to handle different database configurations
- Tries with entity filter, without entity filter, and without active filter
- Enhanced debugging to show which query succeeds
- Based on successful patterns from other methods in the codebase
- Should now properly retrieve account names from Dolibarr chart of accounts
2025-10-07 11:59:43 +02:00
61bc28597b Add debugging to getAccountLabel method to diagnose account name issue
- Added error_log statements to track account lookup process
- Removed entity filtering temporarily to test if that's the issue
- Will help identify why account names are not showing from chart of accounts
- Check error logs after generating PDF to see what's happening
2025-10-07 11:59:00 +02:00
8336fff139 Fix getAccountLabel to fetch real account names from Dolibarr chart of accounts
- Removed hardcoded fallback labels that were made up
- Now properly queries accounting_account table for real account labels
- Uses entity filtering and active account filtering
- Falls back to generic 'Compte XXXX' only if account not found
- Journal table now shows actual account names from your chart of accounts
2025-10-07 11:56:59 +02:00
4f82e24e29 Improve balancing entry with real account descriptions and separate rounding
- Added getAccountLabel method to fetch real account descriptions from chart of accounts
- Balancing entry now uses real account description for 4456700
- Balancing amounts are now rounded (no decimals)
- Added getBalancingRoundingEntry method for separate rounding line
- Rounding difference goes to 658000 (debit) or 758000 (credit) with real descriptions
- Improved double-entry bookkeeping with proper account labels and rounding
2025-10-07 11:49:40 +02:00
1a9e610823 Add balancing entry to journal table to ensure debits equal credits
- Added getBalancingEntry method to calculate balancing entry
- Sums all debit amounts and subtracts all credit amounts
- If result < 0: adds debit to 4456700 account
- If result > 0: adds credit to 4456700 account
- Added parseAmount helper method to convert formatted amounts back to floats
- Journal table now automatically balances with calculated entry
- Ensures proper double-entry bookkeeping in OD journal
2025-10-07 11:44:52 +02:00
9a14ab2318 Use declaration_name instead of declaration_number for journal entry labels
- Changed all journal entry labels to use declaration_name field
- Updated getLine8VATAccounts to use declaration_name
- Updated getLine20Accounts to use declaration_name
- Updated getVATResultEntry to use declaration_name
- Updated getRoundingEntry to use declaration_name
- Journal entries now show user-defined names like 'MAI 2025', 'JUIN 2025'
2025-10-07 11:38:28 +02:00
4fc50a32fa Use declaration name as libellé écriture in journal table
- Changed entry labels to use declaration number instead of generic labels
- Updated getLine8VATAccounts to use declaration name
- Updated getLine20Accounts to use declaration name
- Updated getVATResultEntry to use declaration name
- Updated getRoundingEntry to use declaration name
- All journal entries now show the declaration name as the entry label
2025-10-07 11:37:05 +02:00
ee62f2ea13 Filter journal table to show only 445 accounts with real values
- Added filter to show only 445 accounts (VAT accounts) in journal table
- Created formatAmountReal method to display amounts with decimals
- Updated getLine8VATAccounts to filter for 445 accounts and use real values
- Updated getLine20Accounts to filter for 445 accounts and use real values
- Updated VAT result and rounding entries to use real values
- Journal table now shows only VAT accounts with precise amounts
2025-10-07 11:33:17 +02:00
bc953bf5a6 Fix missing account numbers in journal table
- Changed account_number to account_code in getLine8VATAccounts method
- Changed account_number to account_code in getLine20Accounts method
- Account numbers should now display correctly in the journal entry table
- Fixes issue where account codes were showing as empty in the PDF
2025-10-07 11:30:58 +02:00
2debac1ef3 Reorder PDF pages: journal table on page 1, line details on page 2
- Moved journal entry table to page 1 after declaration info
- Line details (Détail de la ligne A1) now start on page 2
- Removed duplicate AddPage() call from addJournalEntryTable
- Added explicit AddPage() call in addDetailPages for page 2 start
- Improved PDF structure for better readability
2025-10-07 11:28:56 +02:00
5256d21389 Add journal entry table to PDF with OD journal entries
- Added addJournalEntryTable method to generate journal entries table
- Table includes columns: Code compte, Libellé compte, Libellé écriture, Débit, Crédit
- Extracts VAT accounts from line 8 (debit side, non-zero only)
- Extracts accounts from line 20 (credit side, non-zero only)
- Adds VAT result on account 4456700 (debit if < 0, credit if >= 0)
- Adds rounding difference on 658000 (if < 0) or 758000 (if > 0)
- Journal table starts on page 2 of the detailed PDF
- Uses proper French accounting terminology and formatting
2025-10-07 11:26:38 +02:00
15d4fb34b6 Fix PDF file paths to remove duplicate /documents
- 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)
2025-10-06 18:01:37 +02:00
c1aa501898 Fix PDF generation to include CA-3 form with details
- Changed generateDetailedCA3PDF to call generateCA3PDF instead of generateDetailedPDF
- generateCA3PDF creates complete PDF with CA-3 form + detailed breakdown pages
- generateDetailedPDF only creates detailed pages without the CA-3 form
- Now generates complete PDF with both CA-3 form and account details
- Copies generated PDF to correct validated directory location
2025-10-06 17:54:53 +02:00
d6de5c6c0b Fix PDF file paths to use /documents/declarationtva/validated/ directory
- 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
2025-10-06 17:52:22 +02:00
943f5e6659 Add detailed debugging for PDF generation during validation
- Added step-by-step debug messages to track validation process
- Added file existence verification in generateDetailedCA3PDF
- Added detailed error reporting for PDF generation failures
- Will help identify exactly where PDF generation is failing
- Debug messages will show: validation start, PDF generator load, PDF generation, file existence check
2025-10-06 17:34:16 +02:00
7a3cfd1237 Fix PDF generation and saving path issues
- 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
2025-10-06 17:32:08 +02:00
91ebf73866 Clean up debug logging statements
- 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
2025-10-06 16:50:46 +02:00
9255a39d42 Version 2.1.0: Enhanced PDF Export with Detailed Breakdown Pages
- 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
2025-10-06 16:47:02 +02:00
c896cfab7f Fix getCA3LineAmount to prioritize calculated entries over 'No accounts mapped'
- Updated getCA3LineAmount method to handle duplicate CA-3 line entries
- Prioritizes 'Calculated' entries over 'No accounts mapped' entries
- This fixes lines 28 and 29 not displaying in PDF (they were showing 0 instead of calculated values)
- The method now correctly extracts calculated values: D28=357, D29=0
2025-10-03 15:12:10 +02:00
2ee7e67a43 Add comprehensive debug logging for D-section fields
- Added debug logging for DTD_amount, D28_amount, D29_amount values
- Added debug logging for all D-section field values being sent to PDF
- This will help identify why lines 28 and 29 are not displaying in PDF
- Debug will show if the values are being extracted correctly and what's being sent to PDF
2025-10-03 15:08:56 +02:00
07843dcf31 Add debug logging for lines 28 and 29
- Added debug logging to see D28_amount and D29_amount values
- This will help identify why lines 28 and 29 are not displaying in PDF
- Debug will show if the values are being extracted correctly from ca3_data
2025-10-03 14:58:59 +02:00
e43cd7ed91 Fix VAT number formatting spacing
- Changed from 3 spaces after first 2 chars to 2 extra spaces
- Changed from 43 spaces after first 4 chars to 2 extra spaces
- Updated method documentation to reflect correct spacing
- Example: FR85489417469 → F R  8 5  4 8 9 4 1 7 4 6 9 (with 2 extra spaces after positions 1 and 3)
2025-10-03 14:34:30 +02:00
1d709ca6f0 Add special VAT number formatting with custom spacing
- Added formatVatNumber() method for special VAT number formatting
- Space between every character
- 3 extra spaces after first 2 characters
- 43 extra spaces after first 4 characters
- Example: FR85489417469 → F R   8 5                                           4 8 9 4 1 7 4 6 9
- Handles edge cases like empty or short VAT numbers
- Cleans input by removing non-alphanumeric characters and converting to uppercase
2025-10-03 14:32:02 +02:00
7300aa7122 Update SIRET formatting to use 3 spaces before last 5 numbers
- Changed from 4 total spaces to 3 spaces before last 5 characters
- Updated method documentation to reflect the change
- Example: 48941746900033 → 4 8 9 4 1 7 4 6 9     0 0 0 3 3 (with 3 spaces before last 5)
2025-10-03 14:13:45 +02:00
2bfdac964e Update SIRET formatting to use 4 total spaces before last 5 numbers
- Changed from 2 extra spaces to 4 total spaces before last 5 characters
- Updated method documentation to reflect the change
- Example: 48941746900033 → 4 8 9 4 1 7 4 6 9      0 0 0 3 3 (with 4 spaces before last 5)
2025-10-03 14:11:24 +02:00
22fffa1d0a Update SIRET formatting to use 2 extra spaces before last 5 numbers
- Changed from 1 extra space to 2 extra spaces before last 5 characters
- Updated method documentation to reflect the change
- Example: 48941746900033 → 4 8 9 4 1 7 4 6 9    0 0 0 3 3 (with 2 spaces before last 5)
2025-10-03 13:56:13 +02:00
83cc9016ea Add special SIRET formatting with spaces
- Added formatSiret() method for special SIRET formatting
- Spaces between every character in main part
- Extra space before last 5 characters
- Example: 48941746900033 → 4 8 9 4 1 7 4 6 9  0 0 0 3 3
- Handles edge cases like SIRET_NOT_CONFIGURED
- Cleans input by removing non-numeric characters
2025-10-03 13:54:19 +02:00
3155ec7078 Fix duplicate field mappings causing F2 to show 0,00
- Removed duplicate F1/F2 field mappings that were overwriting correct values
- Updated all remaining fields to use getCA3LineAmount() helper method
- Fixed D25, D26, DTD, D28, D29, subtotal_B16, subtotal_C23 fields
- All fields now consistently use the correct array structure lookup
- F2 should now display correct amount instead of 0,00
2025-10-03 13:45:12 +02:00
909a309fe1 Format PDF numbers without decimals
- Updated formatAmount() method to use 0 decimal places instead of 2
- All amounts in PDF will now display as whole numbers (e.g., 1 958 instead of 1 958,00)
- Maintains French number formatting with comma as decimal separator and space as thousands separator
2025-10-03 13:37:57 +02:00
6f0f348d5a Fix PDF field mapping to handle numeric array structure
- Added getCA3LineAmount() helper method to search through numeric array
- Updated all field mappings to use the new helper method
- Fixed A1_amount and other fields to correctly extract from ca3_data array
- The data structure is numeric array with ca3_line field, not associative
- Now correctly extracts A1 amount (1958.00) from the data structure
2025-10-03 13:35:34 +02:00
d93c0818f4 Add debug logging for A1 field data structure
- Added detailed logging to see what's actually in ca3_data['A1']
- This will help identify why A1_amount shows 0,00 in PDF
- Debug will show if A1 exists and what data it contains
2025-10-03 13:32:57 +02:00
72c0fe8616 Restore all view fields to PDF export
- Every field that shows on the view page should also show on the PDF
- Restored A1-A5 field mapping with proper amount extraction
- Added all Section A additional fields: E1-E6, F1-F2, F6-F8
- Updated debug logging to show actual field values
- Enhanced manual data file generation to include all fields
- PDF now mirrors the complete view page structure
2025-10-03 13:31:55 +02:00
ae764b76ce Fix PDF amount fields: A1-A5 are reference only
- A1-A5 fields are reference only and don't have actual amounts
- Real amounts come from B section calculation fields (B08, B09, 9B, etc.)
- Updated field mapping to correctly show 0,00 for reference fields
- Enhanced debug logging to reflect correct data structure
- Updated manual data file generation with proper field descriptions
2025-10-03 13:29:09 +02:00