Files
tradon/notes/accounting/reporting.md
2026-05-05 20:14:42 +02:00

14 KiB

Accounting Reporting Map

Date: 2026-05-05

1. Typologie du reporting

Le repository contient quatre familles de reporting comptable:

  1. Reports imprimables standards:
    • ir.action.report;
    • classe Python Report;
    • template .fodt.
  2. Reporting UI SQL:
    • modeles ModelSQL, ModelView;
    • table_query();
    • ir.action.act_window avec context_model.
  3. Documents business lies a la comptabilite:
    • factures, prepayments, CN/DN, payment order, packing list;
    • resolution dynamique des templates via purchase_trade.configuration.
  4. Reporting de gestion Tradon:
    • PnL, valuation, fees, credit risk, forex, invoice padding, dashboards.

Pour une comparaison avec un standard, il faut donc comparer a la fois les rapports imprimables et les vues SQL qui servent de reporting operationnel.

2. Reporting standard account

Statement par type de compte

  • Action: report_account_type_statement
  • Model: account.account.type
  • Report name: account.account.type.statement
  • Template: account/type_statement.fodt
  • Source Python: AccountTypeStatement

But:

  • imprimer un etat par type de compte;
  • utilise les montants calcules des account types.

General Ledger

  • Action report: report_general_ledger
  • Model report: account.general_ledger.account
  • Report name: account.general_ledger
  • Template: account/general_ledger.fodt
  • Action UI: act_general_ledger_account_form
  • Context model: account.general_ledger.account.context
  • Lignes: account.general_ledger.line

Filtres/contexte:

  • fiscal year obligatoire;
  • start/end period ou from/to date, mutuellement exclusifs;
  • company;
  • posted only;
  • journal optionnel.

Regles de calcul:

  • account.general_ledger.account part des comptes non fermes avec type;
  • les montants de debut utilisent les periodes/dates avant la borne de debut;
  • les mouvements de la periode sont calcules par difference entre debut et fin;
  • line_count != 0 filtre les comptes affiches dans l'action principale;
  • une vue par party existe via account.general_ledger.account.party;
  • le drill-down ouvre account.general_ledger.line.

Points de comparaison standard:

  • presence des colonnes start debit/credit, debit/credit, end debit/credit, start/end balance;
  • support du filtre journal;
  • support posted only;
  • drill-down compte -> party -> lignes.

Trial Balance

  • Action report: report_trial_balance
  • Model report: account.general_ledger.account
  • Report name: account.trial_balance
  • Template: account/trial_balance.fodt
  • Source Python: TrialBalance

Regles:

  • reutilise le modele de Grand Livre;
  • expose les cumuls via fonctions sum;
  • depend du meme contexte que le Grand Livre.

Points de comparaison standard:

  • verifier les totaux debit/credit;
  • verifier traitement des comptes sans mouvement;
  • verifier posted only et bornes periode/date.

Balance Sheet

  • Action UI: act_account_balance_sheet_tree
  • Model: account.account.type
  • Context: account.balance_sheet.comparison.context
  • Pas de ir.action.report dedie dans le XML standard observe.

Filtres/contexte:

  • date;
  • company;
  • posted only;
  • option comparison;
  • date comparaison par defaut = date - 1 an.

Regles:

  • affiche les account types selon leur categorie de bilan;
  • montants calcules a la date;
  • comparaison optionnelle.

Point important:

  • c'est une vue UI analytique, pas un report FODT standard dans ce module.

Income Statement

  • Action UI: act_account_income_statement_tree
  • Model: account.account.type
  • Context: account.income_statement.context

Filtres/contexte:

  • fiscal year;
  • start/end period ou from/to date;
  • company;
  • posted only;
  • comparison optionnelle avec fiscal year/periodes/dates de comparaison.

Regles:

  • affiche les account types de resultat;
  • calcule sur intervalle, pas seulement a date;
  • comparaison optionnelle.

Aged Balance

  • Action UI: act_aged_balance_list
  • Action report: report_aged_balance
  • Model: account.aged_balance
  • Context: account.aged_balance.context
  • Report name: account.aged_balance
  • Template: account/aged_balance.fodt

Filtres/contexte:

  • type: customers, suppliers, customers and suppliers;
  • date;
  • termes 1/2/3;
  • unite: day, week, month, year;
  • company;
  • posted only;
  • currency;
  • detail.

Regles de calcul:

  • source: account.move.line joint a account.move, account.account, account.account.type, reconciliation et company;
  • inclut les lignes avec party;
  • inclut les comptes receivable/payable selon type demande;
  • exclut les lignes reconciliees avant ou a la date, garde celles non reconciliees ou reconciliees apres la date;
  • utilise maturity_date, sinon move.date;
  • en mode detail, groupe par move.origin;
  • calcule balance en devise societe et balance_curr en devise seconde;
  • peut filtrer par devise.

Points de comparaison standard:

  • definition des buckets;
  • traitement de reconciliation apres date;
  • source maturity date vs move date;
  • detail par origine;
  • devise seconde.

3. Reporting standard account_invoice

Invoice

  • Action: report_invoice
  • Model: account.invoice
  • Report name: account.invoice
  • Template: account_invoice/invoice.fodt
  • Classe: InvoiceReport

Regles:

  • report single;
  • rendu en contexte address_with_party=True;
  • cache possible via invoice_report_cache uniquement pour le template standard account_invoice/invoice.fodt;
  • revisions conservees dans account.invoice.report.revision;
  • contexte expose invoice, record, today.

Prepayment

  • Action: report_prepayment
  • Model: account.invoice
  • Report name: account.invoice
  • Template: account_invoice/prepayment.fodt

Point important:

  • utilise le meme report name que la facture; dans ce repository, purchase_trade evite que le cache standard masque le template alternatif.

CN/DN

  • Action: report_invoice_ict_final
  • Model: account.invoice
  • Report name: account.invoice
  • Template: account_invoice/invoice_ict_final.fodt

Regles locales:

  • cote sale/out: montant negatif = Credit Note, montant positif = Debit Note;
  • cote purchase/in: logique inverse conservee;
  • les quantites et poids suivent les regles purchase_trade documentees.

4. Reporting standard account_statement

  • Report class: StatementReport
  • Report name: account.statement
  • Source: modules/account_statement/statement.py

Fonction:

  • impression d'un statement bancaire/caisse;
  • base operationnelle: statements, lignes, origines, moves generes.

Points de comparaison:

  • formats d'import supportes par modules account_statement_*;
  • validations solde/montant/nombre de lignes;
  • reconciliation apres posting.

5. Reporting fiscal/localisation

Modules pertinents:

  • account_es: reporting_tax.xml, SII via account_es_sii;
  • account_fr_chorus: e-document Chorus;
  • account_eu: taxes/operations UE;
  • account_tax_cash: cash basis tax groups;
  • account_export, account_export_winbooks: exports comptables.

Comparaison:

  • ces modules doivent etre compares pays par pays;
  • ne pas les melanger avec le reporting financier general.

6. Reporting comptable purchase_trade

Dynamic Document Templates

Source: modules/purchase_trade/invoice.py, configuration.py.

Mecanisme:

  • ReportTemplateMixin intercepte _execute;
  • le chemin du template est resolu depuis purchase_trade.configuration;
  • si le champ est vide, erreur explicite No template found;
  • si le champ ne contient pas /, prefixe automatique: account_invoice/, sale/, purchase/, stock/.

Facture:

  • Invoice standard -> invoice_report_template;
  • Prepayment -> invoice_prepayment_report_template;
  • CN/DN -> invoice_cndn_report_template;
  • Payment Order -> invoice_payment_order_report_template;
  • Packing List -> invoice_packing_list_report_template.

Vente:

  • Sale -> sale_report_template;
  • Bill -> sale_bill_report_template;
  • Sale final -> sale_final_report_template.

Achat:

  • Purchase -> purchase_report_template.

Shipment:

  • Shipping -> shipment_shipping_report_template;
  • Insurance -> shipment_insurance_report_template;
  • Packing List -> shipment_packing_list_report_template;
  • COO -> shipment_coo_report_template.

Point de comparaison standard:

  • un standard Tryton a des actions report statiques; Tradon a une resolution de template configurable par action.

Documents facture ajoutes

Actions:

  • report_invoice_packing_list
    • model account.invoice;
    • report name account.invoice;
    • template account_invoice/packing_list.fodt.
  • report_payment_order
    • model account.invoice;
    • report name account.invoice;
    • template account_invoice/payment_order.fodt.

Regles:

  • les deux passent par le meme moteur account.invoice;
  • ils doivent bypasser le cache standard de facture;
  • ils utilisent des proprietes Python report_*.

Invoice Padding Report

  • Model: invoice.padding.report
  • Context: invoice.padding.context
  • Source: modules/purchase_trade/invoice.py

Champs:

  • party, sale, sale line, lot, product, currency, unit;
  • padding quantity, unit price, padding amount;
  • provisional invoice/date/state;
  • final invoice/date/state;
  • padding status: active/reversed.

Regles de calcul:

  • source principale: lot.lot.sale_invoice_padding;
  • joint sale line, sale, invoice lines provisoire/finale et factures;
  • ne retient que les lots avec padding > 0 et facture provisoire;
  • statut reversed si facture finale existe et n'est ni draft ni cancelled;
  • filtres: date, party, currency, status, sale, lot.

Utilite:

  • audit comptable des provisions de padding et de leur extourne.

Fee Report

  • Model: fee.report
  • Context: fee.context
  • Source: modules/purchase_trade/fee.py
  • Action UI: Fee report

Champs:

  • purchase line, sale line, shipment in/out/internal;
  • type de fee, counterparty;
  • type ordered/budgeted/actual;
  • pay status PAY/REC;
  • mode;
  • quantity/unit/amount calcules depuis fee.fee;
  • invoice liee;
  • state invoiced/not invoiced;
  • currency/price.

Regles:

  • vue SQL sur fee.fee, join purchase line/purchase;
  • filtres par counterparty, fee type, purchase, sale, shipment, dates;
  • quantity et amount recalcules par les methodes metier du fee.

Point de comparaison:

  • ce n'est pas un rapport Tryton comptable standard; c'est un reporting de charges/produits attendus et factures par contrats/lots/shipments.

Valuation / PnL

  • Models: valuation.valuation, valuation.report, valuation.report.context;
  • Action UI: Valuation;
  • Source: modules/purchase_trade/valuation.py.

Regles metier importantes:

  • couvre purchase et sale;
  • une sale non matchee doit avoir une valuation sale-first;
  • types stockes: pur. priced, sale priced, pur. fee, sale fee, derivative, etc.;
  • MTM uniquement sur prix et derivatives, jamais sur fees;
  • lots ouverts finis ignores selon Mark as finished, mais lots physiques et derivatives restent valorises;
  • PnL fees suit les lots effectifs: virtuel tant qu'il n'y a que lui, puis physiques.

Point de comparaison:

  • reporting de gestion/IFRS metier, pas reporting comptable general Tryton.

Invoicing Report

  • Model: purchase.invoice.report dans purchase_trade.purchase;
  • Action UI: Invoicing Report;
  • Lie aux factures, lignes de facture, paiements et moves.

Utilite:

  • vue metier achat/facturation/paiements;
  • a comparer plutot a un reporting AP/AR operationnel qu'a un Grand Livre.

Credit Risk Overview

  • Model UI: party.credit_risk_report;
  • Report: account_credit_risk.credit_risk_overview;
  • Template: credit_risk_templates.xml;
  • Source: modules/purchase_trade/credit_risk.py.

Regles:

  • calcule l'exposition via lignes account.move.line receivable/payable selon logique metier;
  • croise limites internes, limites assurance, devises et conditions de paiement.

Forex Report / FX Revaluation

  • Models: forex.forex, forex.bi;
  • Wizard/action: forex.report;
  • Source: modules/purchase_trade/forex.py;
  • Revaluation wizard: account.revaluate dans purchase_trade.stock.

Regles:

  • les contrats forex peuvent creer une facture fournisseur de frais et/ou un move comptable;
  • les comptes avec fx_eval sont revalues;
  • mode detail: revaluation ligne par ligne avec lien account.move.line.revaluate;
  • mode global: revaluation par devise;
  • comptes de change et journal depuis account.configuration.

Physical Trade IFRS Adjustment

  • Model: account.physical_trade_ifrs;
  • Action: Physical Trade - IFRS Adjustment;
  • Source: modules/purchase_trade/account.py.

Champs:

  • date, comment, currency, amount.

Utilite:

  • saisie/reporting d'ajustements IFRS physiques.

Dashboard comptable

Source: modules/purchase_trade/dashboard.py, dashboard.xml.

Actions:

  • Invoices not validated -> account.invoice;
  • Invoices not paid -> account.invoice;
  • Payments not received -> account.payment;
  • Payments not done -> account.payment.

Utilite:

  • reporting operationnel temps reel, non imprimable.

7. Ecarts structurants vs standard

  • account.invoice est fortement enrichi par des proprietes report_* pour documents trade.
  • Plusieurs actions de facture partagent report_name = account.invoice; le cache standard doit donc etre controle.
  • Les templates ne sont pas seulement statiques: ils sont parametrables par Document Templates.
  • Des reports de gestion metier utilisent des vues SQL (fee.report, invoice.padding.report, valuation.report) et non des reports FODT.
  • La devise seconde et le taux stocke sont plus presents que dans un standard Tryton pur.
  • Le reporting comptable standard doit etre compare separement du reporting PnL/valuation/frais, qui est propre au negoce physique.