Files
tradon/modules/purchase_trade/docs/fees.md
2026-06-22 17:16:27 +02:00

2.0 KiB

Fees - regles de synchronisation PnL

PnL apres ajout ou modification d'un fee

Un changement sur un fee.fee doit relancer le PnL des lignes commerciales impactees, limite aux types de valuation fees:

  • pur. fee
  • sale fee
  • shipment fee
  • line fee

Le recalcul utilise valuation_type = 'fees' pour ne pas reecrire les lignes de prix, derives ou MTM.

Lignes impactees

Les lignes a recalculer sont retrouvees depuis les lots lies au fee:

  • lot.line pour la purchase.line
  • lot.sale_line pour la sale.line

Pour un fee de stock.shipment.in, si le lien direct par fee.lots ne suffit pas, le shipment sert de fallback:

  • shipment.incoming_moves[].lot
  • shipment.lotqt[].lot_p
  • shipment.lotqt[].lot_s

Ce fallback couvre les shipments encore ouverts ou le fee est pose sur des lot.qt avant creation de lots physiques.

Lots effectifs du fee

Le PnL des fees suit la regle BR-PT-021:

  • tant qu'il n'existe que des lots virtuels, le fee valorise l'ouvert;
  • des qu'un lot physique est lie au fee, les lots physiques deviennent la base effective;
  • le lien virtuel peut rester present comme fallback.

Points de declenchement

Le recalcul est declenche apres:

  • creation, modification ou suppression d'un fee.fee;
  • creation, modification ou suppression d'un lien fee.lots.

stock.shipment.in.validate() recalcule deja le PnL depuis les lots du shipment, mais ce workflow ne couvre pas les changements de fee saisis apres coup dans l'onglet Fees.

Fee Report

La colonne Purchase du Fee Report vient exclusivement du lot lie au fee (fee.lots -> lot.line -> purchase.line.purchase). Le purchase technique stocke sur fee.fee.purchase, cree pour facturer le service, ne doit jamais etre presente comme le contrat d'achat metier.

Les statuts d'invoicing et de paiement des lots suivent les lots effectifs du fee. Le statut de paiement du fee consolide sa facture et son eventuelle DN/CN; il est Paid seulement si tous les documents concernes sont payes et Partially paid des qu'au moins un paiement existe sans paiement complet.