Files
accounting_report/Tradon/general_ledger_gap_analysis.md

11 KiB

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?