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