137 lines
4.9 KiB
Markdown
137 lines
4.9 KiB
Markdown
# 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.
|
|
|