2.9 KiB
2.9 KiB
BR-PT-001 - Ajustement de la quantite theorique apres creation du contrat
Intent
Conserver la coherence entre la quantite theorique de la ligne d'achat, le lot virtuel associe et les quantites ouvertes stockees dans lot.qt.
Scope
- Domaine:
purchase_trade - Flux: modification de
purchase.line.quantity_theoricalapres creation du contrat - Priorite:
bloquante
Inputs
- Une
purchase.lineexiste deja. - Son champ
quantity_theoricalest modifie viawrite. - Un lot unique de type
virtualest rattache a la ligne.
Expected Behavior
Quand purchase.line.quantity_theorical est modifiee apres creation du contrat, le systeme doit recalculer le delta entre l'ancienne et la nouvelle valeur.
La regle s'applique au lot unique de type virtual rattache a la purchase.line.
Si delta > 0:
- augmenter la quantite courante du lot
virtualviaset_current_quantitypour conserver l'historiquelot.qt.hist - augmenter le
lot.qtouvert existant - si aucun
lot.qtouvert n'existe, en creer un nouveau avec le delta
Si delta < 0:
- diminuer le
lot.qtouvert uniquement si la quantite ouverte disponible est suffisante - diminuer la quantite courante du lot
virtualdu meme delta - si aucun
lot.qtouvert n'existe ou si sa quantite est insuffisante, bloquer avec l'erreurPlease unlink or unmatch lot
Definition du lot.qt ouvert:
lot_p = virtual lotlot_s = Nonelot_shipment_in = Nonelot_shipment_internal = Nonelot_shipment_out = None
Edge Cases
- Si aucun lot
virtualn'est trouve sur la ligne, la regle ne fait rien.
Examples
Exemple E1 - Augmentation simple
- Donnees:
ancienne quantity_theorical = 100nouvelle quantity_theorical = 120lot.qt ouvert = 40
- Attendu:
- lot
virtualaugmente de20 lot.qt ouvertpasse de40a60
- lot
Exemple E2 - Augmentation sans lot.qt ouvert
- Donnees:
ancienne quantity_theorical = 100nouvelle quantity_theorical = 110- aucun
lot.qtouvert
- Attendu:
- lot
virtualaugmente de10 - creation d'un
lot.qtouvert a10
- lot
Exemple E3 - Diminution possible
- Donnees:
ancienne quantity_theorical = 100nouvelle quantity_theorical = 90lot.qt ouvert = 25
- Attendu:
- lot
virtualdiminue de10 lot.qt ouvertpasse de25a15
- lot
Exemple E4 - Diminution impossible
- Donnees:
ancienne quantity_theorical = 100nouvelle quantity_theorical = 80lot.qt ouvert = 5
- Attendu:
- blocage avec
Please unlink or unmatch lot
- blocage avec
Impacted Files
modules/purchase_trade/purchase.pymodules/purchase_trade/lot.py
Tests
Couvrir au minimum:
- augmentation avec
lot.qtouvert existant - augmentation sans
lot.qtouvert - diminution possible
- diminution impossible avec erreur
Source
- Decision metier documentee dans les commentaires de
purchase_trade.purchase.Line.write.