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

64 lines
2.0 KiB
Markdown

# 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.