168 lines
4.2 KiB
Markdown
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.
|
|
|