# General Ledger Gap Analysis Date: 2026-05-05 Comparison scope: - Ideal target: `C:/DataS/OpenSquared/Tradon/Source/Accounting_report/accounting_report/Reports/GL/GL_001_general_ledger.md` - Standards: `Docs/reporting_standards.md`, `Docs/reporting_parameters.md`, `Docs/reporting_fields_catalog.md` - Current Tryton/Tradon source: - `modules/account/account.py` - `modules/account/account.xml` - `modules/account/view/general_ledger_account_list.xml` - `modules/account/view/general_ledger_line_list.xml` - `notes/accounting/reporting.md` ## 1. Executive Summary Tryton already has a strong General Ledger foundation: - account-level opening, movement and closing balances; - date or period filtering; - journal filtering; - posted-only option; - drill-down from accounts to detailed move lines; - running balance at line level; - party drill-down for party-required accounts. The main gap is that the ideal `GL-001` is specified as a complete detail report, grouped by account and transaction currency, with explicit opening and closing rows and a rich audit column set. Tryton's current standard General Ledger is split between: - an account summary view/report (`account.general_ledger.account`); - a line drill-down view (`account.general_ledger.line`). It does not expose the ideal output as one flat, export-ready report. ## 2. Parameters ### Covered by Tryton Ideal parameter | Tryton current support --- | --- `date_from` | supported as `from_date` `date_to` | supported as `to_date` `journal` | supported in `account.general_ledger.account.context` `entity` | supported through current `company` context ### Partial or missing Ideal parameter | Gap --- | --- `account` | Tryton opens all non-closed typed accounts in the GL account view; account selection is possible via UI/domain/drill-down, but not a first-class explicit report parameter in the context model. `currency` | missing as an explicit GL parameter. Tryton exposes company currency and line `second_currency`, but the GL context has no transaction-currency filter. `entity` | supported as current company, but no explicit multi-entity selector. This may be acceptable because the ideal spec says current entity unless ERP supports more. `document number or voucher number` | not a first-class filter in the General Ledger context. Out-of-scope ideal parameters (`counterparty`, `analytic_account`, `profit_center`) are also not part of the current Tryton GL context. That aligns with the ideal scope, except party drill-down exists as an extra Tryton feature. ## 3. Filtering Gaps Ideal filter | Tryton status --- | --- Posting date between `date_from` and `date_to` | covered via `from_date` / `to_date`, though Tryton also supports period range. Account or account range | partial. Account range is not visible as a standard context parameter. Currency | gap. No explicit transaction-currency filter. Journal | covered. Entity | covered by company context, not explicit user-facing parameter. Document/voucher number | gap in context; can likely be searched on line/move fields, but not a report parameter. Posted/non-posted scope | Tryton supports `posted` boolean; ideal treats `posting_status` as output information, not default filter. ## 4. Sorting Gaps Ideal default sorting: 1. account 2. transaction currency 3. posting date 4. document number Tryton current behavior: - `account.general_ledger.account` sorts by account. - `account.general_ledger.line` sorts by date ascending. - running balance window orders by `move.date`, then line id. Gaps: - no primary transaction-currency sort; - no document-number sort in default GL line ordering; - account grouping happens one level above the line view, not as a single flat ordered export; - document number is not clearly mapped to `move.number` vs `move.post_number`. ## 5. Grouping and Balance Presentation Ideal: - group by account and transaction currency; - display opening balance row per account/currency; - display detailed movement lines; - display closing balance row per account/currency; - show balances in both transaction currency and base currency; - calculate running balances line by line. Tryton: - account summary has `start_balance`, `debit`, `credit`, `end_balance`; - line view has `debit`, `credit`, `amount_second_currency`, `balance`; - line running balance exists in base currency via `internal_balance` plus start balance; - no explicit opening/closing rows in the line report; - no grouped transaction-currency balance presentation; - second currency amount is a single signed amount, not split debit/credit and running balance. Gaps: - missing account/currency opening and closing rows; - missing transaction-currency running balance; - missing debit/credit split in transaction currency; - missing transaction-currency totals; - current printable General Ledger is account-driven, not the full ideal detailed layout. ## 6. Output Column Gaps ### Covered or mostly mappable Ideal column | Tryton source candidate --- | --- `entity` | `company` `account` | `account.account.code` via ledger account `account_name` | `account.account.name` `base_currency` | company currency `posting_date` | `account.move.date` / line date `journal` | `account.move.journal` `journal_entry_number` | likely `account.move.number` or `post_number` `document_number` | likely `account.move.number` or invoice number depending definition `posting_status` | `account.move.state` `counterparty` | `account.move.line.party` `description` | line `description_used` / move description `reference` | move `origin`, `ext_ref`, invoice reference depending mapping `debit_base_currency` | line `debit` `credit_base_currency` | line `credit` `balance_base_currency` | line `balance` `entered_date` | line/move `create_date` `modified_date` | line/move `write_date` ### Gaps or mapping questions Ideal column | Gap --- | --- `transaction_currency` | Tryton has `second_currency`, but base-currency lines may have no transaction currency. Need convention: use `second_currency` else company currency? `document_date` | not exposed in current GL line view. Could map to invoice date for invoice origins, move date otherwise. `document_type` | not exposed. Needs mapping from origin model or journal/type. `supplier_invoice_number` | not exposed. Could map to supplier invoice `reference` for AP invoice origins, but requires origin-specific logic. `voucher_number` | not exposed; need decide whether `move.number`, `post_number`, `ext_ref` or another internal ref is voucher. `payable_qty` | not in standard GL. Tradon may map from lot/invoice/fee/trade links on move lines, but requires custom logic. `uom` | same as payable quantity. `debit_transaction_currency` | missing as explicit split; Tryton stores signed `amount_second_currency`. `credit_transaction_currency` | missing as explicit split. `balance_transaction_currency` | missing as running balance. `entered_by` | not exposed in GL view; can be mapped from `create_uid`. `modified_by` | not exposed in GL view; can be mapped from `write_uid`. ## 7. Sign Convention Gaps Ideal GL convention: - debit amounts positive; - credit amounts negative; - running balances use debit-positive and credit-negative convention. Tryton: - base debit and credit are stored/displayed as positive numeric columns; - balance uses `debit - credit`; - second currency is signed in `amount_second_currency`. Gaps: - ideal asks `credit_transaction_currency` and `credit_base_currency` as negative amounts, but Tryton displays credit column as positive amount; - need decide whether exports should preserve Tryton UI convention or transform credits to negative for the ideal GL layout. ## 8. Audit Trail Gaps Ideal requires enough audit references to trace: - accounting document; - source document; - AP supplier invoice number when available; - creation/modification user and dates. Tryton has the raw ingredients: - move; - line origin; - move origin; - invoice origin in many generated flows; - `create_uid`, `create_date`, `write_uid`, `write_date`. But current GL output does not expose: - source document number/date/type in normalized columns; - supplier invoice number; - entered/modified user labels; - voucher/reference mapping; - payable quantity/uom for commodity postings. ## 9. Export Gaps Ideal: - CSV; - XLSX; - PDF including all detail columns. Tryton: - standard UI list export may cover CSV-like exports depending client; - printable report is `.fodt` -> usually PDF/ODT; - the standard PDF is not designed to include all ideal detail columns; - no dedicated XLSX export is identified for General Ledger. Gaps: - dedicated XLSX export; - wide detailed PDF; - one export-ready flat GL dataset. ## 10. Controls and Reconciliation Ideal controls: - debit/credit reconcile by selected period, account and transaction currency; - opening + movements = closing by account/currency; - base total reconciles with trial balance; - line audit references preserved. Tryton: - move posting enforces balanced moves in company currency; - GL account start/debit/credit/end balances support reconciliation in base currency; - Trial Balance reuses the same account model, which helps base-currency reconciliation. Gaps: - transaction-currency reconciliation by account/currency is not explicit; - opening/movement/closing by transaction currency not implemented in current GL model; - audit reference completeness depends on origin mapping not present in GL report. ## 11. Prioritized Gaps Priority | Gap --- | --- High | Build or expose a flat detailed GL dataset matching `GL-001`, not only account summary + drill-down. High | Add transaction currency grouping/filtering and running balances. High | Add opening and closing rows by account and transaction currency. High | Define mapping for `document_number`, `journal_entry_number`, `voucher_number`, `reference`. High | Normalize source document metadata: document type, document date, supplier invoice number. Medium | Split `amount_second_currency` into debit/credit transaction-currency columns. Medium | Decide and implement GL sign convention transformation for credit columns. Medium | Add audit columns `entered_by`, `entered_date`, `modified_by`, `modified_date`. Medium | Add dedicated CSV/XLSX export target. Low/Trade-specific | Add `payable_qty` and `uom` for commodity-related postings, probably using Tradon lot/invoice/fee links. ## 12. Open Questions - In Tryton mapping, should `document_number` be `account.move.number`, `account.move.post_number`, invoice `number`, or a context-dependent value? - Should `journal_entry_number` be `move.number` and `document_number` be the business document number? - Is `voucher_number` distinct in Tradon, or should it remain blank? - Should `transaction_currency` default to company currency when `second_currency` is empty? - Should credit columns be exported as negative values to match the ideal GL, even though Tryton UI displays credit as positive? - Which origin models should feed `document_date` and `document_type` in the first implementation? - Can payable quantity/uom be derived reliably from `account.move.line.lot`, `fee`, or invoice line origin for all commodity postings?