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

168 lines
4.2 KiB
Markdown

# Purchase Trade Accounting Extensions
Date: 2026-05-05
## 1. Extensions de `account.invoice`
Source: `modules/purchase_trade/invoice.py`.
### Padding comptable
- `do_lot_invoicing()` appelle `_create_sale_padding_moves()`.
- `_post()` poste aussi les additional moves de padding.
- Deux descriptions identifient les moves:
- `Sale padding accrual`;
- `Sale padding reversal`.
- Les comptes viennent de `account.configuration`:
- `default_sale_padding_account`;
- `default_accrual_padding_account`.
- Provisoire vente:
- debit sale padding;
- credit accrual padding.
- Finale vente:
- debit accrual padding;
- credit sale padding.
- Montant:
- `lot.sale_invoice_padding * provisional_invoice_line.unit_price`;
- conversion devise via `invoice.rate` si present, sinon `Currency.compute`.
- Les move lines portent:
- `lot`;
- `origin = invoice_line`;
- `description = Padding`;
- party si le compte l'exige.
### Proprietes `report_*`
Le module expose un pont facture -> vente/achat/lot/shipment:
- parties/adresses;
- contrat;
- produit;
- quantites, poids, bales;
- prix et prix en lettres;
- BL, vessel, ports, controller, S/I;
- pro forma liee au lot;
- freight amount depuis fee shipment `Maritime freight`;
- payment order.
Regle de conception:
- la logique business reste en Python;
- les `.fodt` consomment des proprietes simples.
## 2. Extensions de `account.invoice.line`
Sources: `modules/purchase_trade/invoice.py`, `stock.py`.
- Champ `lot` sur `account.invoice.line`.
- Champ `fee` sur `account.invoice.line`.
- Champ fonctionnel `included_padding`, affiche `lot.sale_invoice_padding`.
- Proprietes `report_*` au niveau ligne:
- product name/description;
- rate currency/value/unit;
- crop/attributes;
- net/lbs.
## 3. Extensions de `account.move` et `account.move.line`
Source: `modules/purchase_trade/stock.py`.
### Move Line
- `revaluate`: lien vers ligne revaluee;
- `lot`: rattachement lot;
- `fee`: rattachement fee.
Utilite:
- audit par lot/fee;
- revaluation FX detaillee;
- reporting PnL et couts.
### Move
- `IsBankMove()` detecte un move bancaire si une ligne utilise un compte de
payment method debit/credit.
## 4. Extensions de `account.account`
Source: `modules/purchase_trade/stock.py`.
- Detection des devises secondes ouvertes par compte.
- Recuperation des lignes par devise.
- Revaluation FX par compte:
- detaillee ligne par ligne si `fx_eval_detail`;
- globale par devise sinon.
Source standard modifiee observee: `modules/account/account.py`.
- Champs:
- `fx_eval`;
- `fx_eval_detail`;
- `currency_exchange_credit_account`;
- `currency_exchange_debit_account`.
## 5. Extensions de configuration comptable
Source: `modules/purchase_trade/configuration.py`.
Ajouts sur `account.configuration`:
- `default_sale_padding_account`;
- `default_accrual_padding_account`;
- templates de documents facture/vente/achat/shipment;
- resolution dynamique des templates via `purchase_trade.configuration`.
## 6. Fees et comptabilite
Source: `modules/purchase_trade/fee.py`.
- `fee.fee` peut retrouver son invoice.
- Les fees calculent quantity/amount selon mode:
- lumpsum;
- per quantity;
- percent price/cost;
- rate selon regle ACT/360.
- `_get_account_move_fee()` cree des moves de fee lies a un lot.
- Les comptes utilises viennent du produit fee:
- stock/COGS/stock in/stock out selon flux.
- Les move lines peuvent porter lot et fee.
Regles recentes:
- `% rate` utilise `fin_int_delta`, pas la date du jour.
- Les fees suivent les lots effectifs:
- virtuel si aucun physique;
- physiques des qu'ils existent.
## 7. Forex
Source: `modules/purchase_trade/forex.py`.
- `forex.forex` porte achat/vente devise, montant, rate, bank, maturity.
- Peut creer:
- facture fournisseur de frais;
- move comptable;
- lignes de couverture achat/vente physique.
- Reporting BI via `forex.bi`.
## 8. Payment terms
Source: `modules/purchase_trade/payment_term.py`.
Extensions:
- `account.invoice.payment_term.is_mixed`;
- lignes de term avec:
- `trigger_event`;
- `term_type`;
- `trigger_offset`;
- unite d'offset;
- EOM flag/mode;
- risk classification.
Impact:
- utile pour credit risk, maturity date, bills et conditions trade.