485 lines
14 KiB
Markdown
485 lines
14 KiB
Markdown
# 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.
|
|
|