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

4.9 KiB

Accounting Business Rules

Date: 2026-05-05

1. Ecritures comptables

Source principale: modules/account/move.py.

Move

  • account.move porte un numero interne number, un post_number, une societe, une periode, un journal, une date effective, une date de post et des lignes.
  • Un move draft peut etre modifie; un move posted ne doit pas etre modifie hors champs explicitement toleres.
  • A la creation, le numero est tire de la sequence du journal si absent.
  • La date ajuste la periode si la date sort de la periode courante.
  • Le posting refuse:
    • un move sans ligne;
    • un move non equilibre dans la devise societe.
  • Au post, le move recoit state = posted, post_date et post_number.
  • Les lignes a zero sur comptes reconciliables peuvent etre letrees automatiquement.

Move Line

  • account.move.line porte debit, credit, compte, party, devise seconde, montant devise seconde, taxes, maturity date et reconciliation.
  • La validite des lignes suit l'equilibre du move.
  • Le lettrage groupe compte, party et devise.
  • Si une devise seconde est presente, le solde de reconciliation peut etre lu dans cette devise plutot que dans la devise societe.

2. Comptes

Source principale: modules/account/account.py.

  • Les comptes sont rattaches a une societe et a un type de compte.
  • Les types de compte portent les categories structurantes: assets, receivable, payable, debt, revenue, expense, stock.
  • Les comptes peuvent etre fermes, reconciliables, ou exiger une party.
  • Les comptes portent aussi des indicateurs Tradon ajoutes: fx_eval, fx_eval_detail, comptes de gain/perte de change.
  • Les soldes sont calcules par contexte: societe, periodes, dates, posted only.

3. Factures

Source principale: modules/account_invoice/invoice.py.

Workflow

Etats:

  • draft
  • validated
  • posted
  • paid
  • cancelled

Regles:

  • Une facture fournisseur exige une date de facture des Validate.
  • Une facture client standard exige la date au Post, mais ce repository a modifie le flux pour creer aussi le move et le numero client au Validate.
  • posted represente le posting comptable.
  • paid depend du lettrage des lignes a payer.
  • cancelled cree ou reference les moves d'annulation selon le contexte.

Montants et taxes

  • untaxed_amount, tax_amount, total_amount sont caches et recalcules.
  • Les taxes de lignes alimentent les taxes calculees de facture.
  • Les taxes manuelles sont preservees lors de update_taxes.
  • Une ligne produit genere des account.tax.line de type base.
  • Une ligne de taxe facture genere une move line avec account.tax.line de type tax; si la taxe est manuelle, une ligne base complementaire peut etre ajoutee.
  • La devise seconde est portee par account.move.line, pas par account.tax.line.

Paiements

  • lines_to_pay expose les lignes comptables ouvertes a payer.
  • payment_lines rattache les lignes de paiement a la facture.
  • Le wizard account.invoice.pay cree/reconcilie les paiements selon la methode de paiement.
  • Les wizards de reschedule/delegate agissent sur les lignes a payer.

4. Devises

Regles notees dans notes/business_rules.md et vues dans le code:

  • account.move.line.rate est un champ stocke/editable dans ce repository.
  • Le sens du taux suit Tryton: devise seconde / devise societe.
  • Montant societe = amount_second_currency / rate quand la devise societe a une base a 1.
  • Les lignes facture generees doivent renseigner rate quand elles portent amount_second_currency.
  • Un fallback central sur account.move.line.create calcule le taux manquant depuis les montants.
  • La revaluation FX Tradon cree des moves de revaluation sur comptes marques fx_eval.

5. Reconciliation

Source principale: modules/account/move.py.

  • Les comptes reconciliables peuvent etre letres automatiquement ou via wizard.
  • Le wizard de reconciliation cherche les comptes avec lignes ouvertes, puis les parties, puis les devises.
  • Il peut proposer uniquement les combinaisons balancees, ou creer un write-off si un ecart reste.
  • La devise de reconciliation est la devise seconde si elle existe, sinon la devise du compte/societe.

6. Statements

Source principale: modules/account_statement/statement.py.

  • Un statement a des lignes, origines, solde de depart/fin, devise et journal.
  • La validation controle solde, montants et nombre de lignes selon la configuration.
  • Le posting cree les moves des lignes.
  • La reconciliation des lignes relie les lignes statement aux lignes comptables.

7. Stock et couts

Source principale: modules account_stock_*.

  • Les modules stock comptables generent des moves depuis les mouvements stock selon methode continental/anglo-saxon.
  • Les landed costs et shipment costs creent des objets dedies, allocation sur mouvements/shipments, puis posting comptable.
  • Dans purchase_trade, les fees peuvent creer des mouvements de stock/cout supplementaires lies aux lots.