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

4.2 KiB

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.