# Business Rules Template - Purchase Statut: `draft` | `reviewed` | `approved` Version: `v0.1` Derniere mise a jour: `YYYY-MM-DD` Owner metier: `Nom / Equipe` Owner technique: `Nom / Equipe` ## 1) Scope - Domaine: `ex: achats fournisseur` - Hors scope: `ex: achats intercompany` - Modules impactes: - `purchase` - `stock` (si applicable) - `account_invoice` (si applicable) ## 2) Glossaire - `Purchase`: commande d'achat fournisseur. - `Line`: ligne de commande. - `Invoice State`: etat facture calcule. - `Shipment State`: etat reception calcule. - Ajouter ici les termes metier propres a ton contexte. ## 3) Regles metier (source de verite) ### BR-001 - [Titre court] - Intent: `Pourquoi cette regle existe` - Description: - `Enonce clair et testable` - Conditions d'entree: - `Etat` - `Type de ligne (goods/service)` - `Contexte (societe, devise, fournisseur, lot, etc.)` - Resultat attendu: - `Etat/valeur/action attendue` - Exceptions: - `Cas ou la regle ne s'applique pas` - Priorite: - `bloquante | importante | informative` - Source: - `Ticket / spec / decision metier` ### BR-002 - [Titre court] - Intent: - Description: - Conditions d'entree: - Resultat attendu: - Exceptions: - Priorite: - Source: ## 4) Matrice d'etats (optionnel mais recommande) | Regle | Etat initial | Evenement | Etat attendu | Notes | |---|---|---|---|---| | BR-001 | `draft` | `quote` | `quotation` | | | BR-002 | `quotation` | `confirm` | `confirmed/processing` | | ## 5) Exemples concrets ### Exemple E1 - Cas nominal - Donnees: - `fournisseur = X` - `produit = Y` - `quantite = 10` - Attendu: - `invoice_state = pending` - `shipment_state = waiting` ### Exemple E2 - Cas limite - Donnees: - Attendu: ## 6) Impact code attendu - Fichiers Python potentiellement concernes: - `modules/purchase/purchase.py` - `modules/purchase/stock.py` - `modules/purchase/invoice.py` - `modules/purchase/product.py` - Fichiers XML potentiellement concernes: - `modules/purchase/purchase.xml` - `modules/purchase/stock.xml` - `modules/purchase/invoice.xml` ## 7) Strategie de tests - Unitaires: - `modules/purchase/tests/test_module.py` - Scenarios: - `modules/purchase/tests/scenario_purchase.rst` - `modules/purchase/tests/scenario_purchase_manual_invoice.rst` - `modules/purchase/tests/scenario_purchase_return_wizard.rst` Pour chaque regle BR-xxx, lister le test associe: | Regle | Test existant | Nouveau test a ajouter | Statut | |---|---|---|---| | BR-001 | `...` | `...` | `todo` | ## 8) Compatibilite et migration - Effet retroactif sur commandes existantes: `oui/non` - Migration necessaire: `oui/non` - Plan de rollback: - `comment revenir en arriere sans corruption metier` ## 9) Validation - Valide par metier: - `Nom` - `date` - Valide par technique: - `Nom` - `date` - Decision finale: - `approved / rejected / needs update`