business rules
This commit is contained in:
46
modules/purchase_trade/docs/business/INDEX.md
Normal file
46
modules/purchase_trade/docs/business/INDEX.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Index thematique des regles business
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## Comment chercher une regle
|
||||
|
||||
- Contrats, dates, lieux, banques: [contracts.md](contracts.md)
|
||||
- Lots virtuels, lots physiques, `lot.qt`, weighing: [lots-and-quantities.md](lots-and-quantities.md)
|
||||
- Matching, Create Contracts, back-to-back: [matching.md](matching.md)
|
||||
- Shipments, controllers, SLA, weight reports: [shipments-execution.md](shipments-execution.md)
|
||||
- Pricing manuel, basis, premium, linked currency: [pricing.md](pricing.md)
|
||||
- Fees, freight, lots effectifs, `% rate`: [fees.md](fees.md)
|
||||
- Valuation, PnL, MTM, derivatives: [valuation-pnl-mtm.md](valuation-pnl-mtm.md)
|
||||
- Factures provisoires/finales, padding: [invoicing.md](invoicing.md)
|
||||
- Impacts `account.move`, validate/post: [accounting-bridge.md](accounting-bridge.md)
|
||||
- Comptes bancaires, payment terms, payment orders: [payments-banking.md](payments-banking.md)
|
||||
- Relatorio, `.fodt`, proprietes `report_*`: [reports-templates.md](reports-templates.md)
|
||||
- Risque, credit, forex: [risk-credit-forex.md](risk-credit-forex.md)
|
||||
- Rapport Lots Management: [lots-management.md](lots-management.md)
|
||||
|
||||
## Regles migrees dans cette premiere passe
|
||||
|
||||
- `BR-PT-CON-001`: texte par defaut de pricing rule.
|
||||
- `BR-PT-CON-002`: delivery period coherent.
|
||||
- `BR-PT-CON-003`: lieux stock propages dans Create Contracts.
|
||||
- `BR-PT-LOT-001`: lot physique comme pont metier.
|
||||
- `BR-PT-LOT-002`: solde ouvert `lot.qt`.
|
||||
- `BR-PT-LOT-003`: remove physical lot.
|
||||
- `BR-PT-MAT-001`: Create Contracts multi-lots.
|
||||
- `BR-PT-SHP-001`: affectation controller.
|
||||
- `BR-PT-SHP-002`: couts SLA controller.
|
||||
- `BR-PT-SHP-003`: weight reports distants.
|
||||
- `BR-PT-PRI-001`: premium dans priced et basis.
|
||||
- `BR-PT-PRI-002`: linked currency.
|
||||
- `BR-PT-PRI-003`: pricing manuel.
|
||||
- `BR-PT-FEE-001`: maritime freight depuis fee shipment.
|
||||
- `BR-PT-FEE-002`: lots effectifs des fees.
|
||||
- `BR-PT-FEE-003`: `% rate` via delta de financement.
|
||||
- `BR-PT-VAL-001`: valuation achat/vente et sale-first.
|
||||
- `BR-PT-VAL-002`: references de valuation.
|
||||
- `BR-PT-VAL-003`: MTM hors fees.
|
||||
- `BR-PT-INV-001`: padding facture provisoire vente.
|
||||
- `BR-PT-ACC-001`: Validate facture client attribue le numero.
|
||||
- `BR-PT-PAY-001`: comptes bancaires tiers vs compagnie.
|
||||
- `BR-PT-RPT-001`: templates trade via proprietes Python.
|
||||
- `BR-PT-LOTMGT-001`: filtres Lots Management.
|
||||
51
modules/purchase_trade/docs/business/README.md
Normal file
51
modules/purchase_trade/docs/business/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Guide de lecture des regles business
|
||||
|
||||
Statut: `migration partielle`
|
||||
Derniere mise a jour: `2026-05-13`
|
||||
|
||||
Ce dossier devient la source de lecture thematique pour les regles business du
|
||||
module `purchase_trade`.
|
||||
|
||||
Chaque page doit rester lisible par deux publics:
|
||||
|
||||
- les consultants, qui ont besoin d'une regle fonctionnelle stable sans detail
|
||||
de code inutile;
|
||||
- les developpeurs, qui ont besoin des champs, modeles, fichiers et tests
|
||||
concernes pour appliquer la regle sans l'interpreter.
|
||||
|
||||
## Convention de redaction
|
||||
|
||||
Pour chaque regle durable, utiliser autant que possible ce format:
|
||||
|
||||
```md
|
||||
### BR-PT-THEME-001 - Titre court
|
||||
|
||||
Statut: active
|
||||
Source: business-rules.md / note de session / decision projet
|
||||
|
||||
#### Regle consultant
|
||||
|
||||
Texte fonctionnel, sans nom de champ si ce n'est pas necessaire.
|
||||
|
||||
#### Notes developpeur
|
||||
|
||||
- Modeles/champs:
|
||||
- Fichiers:
|
||||
- Tests:
|
||||
- Points de vigilance:
|
||||
```
|
||||
|
||||
## Sources pendant la migration
|
||||
|
||||
Les anciennes pages ne sont pas supprimees a cette etape. Elles restent des
|
||||
sources de verification jusqu'a ce que chaque decision soit promue dans une
|
||||
page thematique:
|
||||
|
||||
- `modules/purchase_trade/docs/business-rules.md`
|
||||
- `modules/purchase_trade/docs/fees.md`
|
||||
- `modules/purchase_trade/docs/padding-invoice-accounting.md`
|
||||
- `modules/purchase_trade/docs/template-rules.md`
|
||||
- `modules/purchase_trade/docs/template-properties.md`
|
||||
- `notes/business_rules.md`
|
||||
- `notes/template_business_rules.md`
|
||||
|
||||
25
modules/purchase_trade/docs/business/accounting-bridge.md
Normal file
25
modules/purchase_trade/docs/business/accounting-bridge.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Pont comptable
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-ACC-001 - Validate facture client attribue aussi le numero
|
||||
|
||||
Source: `BR-PT-017`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Une facture client doit recevoir son mouvement comptable et son numero des la
|
||||
validation, comme une facture fournisseur.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Cible: `account.invoice` avec `type = out`.
|
||||
- Workflow `Validate`: creer `account.move` et attribuer `number`.
|
||||
- Workflow `Post`: ne doit pas reintroduire une session fraiche specifique au
|
||||
flux client.
|
||||
|
||||
## Notes de migration
|
||||
|
||||
Les notes comptables detaillees restent dans `notes/accounting/` tant qu'elles
|
||||
n'ont pas ete promues ici.
|
||||
|
||||
50
modules/purchase_trade/docs/business/contracts.md
Normal file
50
modules/purchase_trade/docs/business/contracts.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Contrats achat / vente
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-CON-001 - Texte par defaut de pricing rule
|
||||
|
||||
Source: `BR-PT-013`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le texte de regle de pricing recurrent doit etre configure une seule fois et
|
||||
repris automatiquement sur les nouvelles lignes achat et vente.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Configuration: `purchase_trade.configuration.pricing_rule`.
|
||||
- Cibles: `purchase.line.pricing_rule`, `sale.line.pricing_rule`.
|
||||
- Les lignes existantes ne sont pas modifiees retroactivement.
|
||||
|
||||
## BR-PT-CON-002 - Delivery period coherent
|
||||
|
||||
Source: `BR-PT-014` historique, doublon de numerotation a corriger
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Une periode de livraison ne peut pas commencer apres sa date de fin. Une seule
|
||||
borne renseignee reste acceptee.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Champs: `purchase.line.from_del`, `purchase.line.to_del`,
|
||||
`sale.line.from_del`, `sale.line.to_del`.
|
||||
- Validation attendue: bloquer si `from_del > to_del`.
|
||||
|
||||
## BR-PT-CON-003 - Propagation des lieux stock dans Create Contracts
|
||||
|
||||
Source: `BR-PT-024`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Quand un contrat miroir est cree depuis une quantite ouverte, les lieux
|
||||
logistiques doivent etre proposes selon le flux source pour eviter la ressaisie.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Champs: `from_location`, `to_location`.
|
||||
- Flux fournisseur vers client: recopier le couple source.
|
||||
- Achat vers stock puis vente: `sale.from_location = purchase.to_location`.
|
||||
- Vente depuis stock puis achat: `purchase.to_location = sale.from_location`.
|
||||
|
||||
55
modules/purchase_trade/docs/business/fees.md
Normal file
55
modules/purchase_trade/docs/business/fees.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Fees
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
Voir aussi la page technique historique: `../fees.md`.
|
||||
|
||||
## BR-PT-FEE-001 - Freight value depuis fee shipment
|
||||
|
||||
Source: `BR-PT-003`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
La valeur de fret affichee sur les documents facture vient du fee maritime du
|
||||
shipment, pas d'un champ direct de la facture.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Retrouver le lot physique depuis la facture.
|
||||
- Retrouver son `shipment_in`.
|
||||
- Chercher le `fee.fee` avec `product.name = 'Maritime freight'`.
|
||||
- Utiliser `fee.get_amount()`.
|
||||
|
||||
## BR-PT-FEE-002 - Les fees lies aux lots privilegient les physiques
|
||||
|
||||
Source: `BR-PT-021`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un fee suit le lot virtuel tant qu'aucun lot physique n'est lie. Des qu'un lot
|
||||
physique est lie, les lots physiques deviennent la base de calcul du fee.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Ne pas supprimer le lien virtuel: il reste le fallback.
|
||||
- Quantite `ppack`: somme de `lot.lot_qt` des physiques.
|
||||
- Modes quantitatifs: quantites courantes converties des physiques.
|
||||
- La meme selection s'applique au PnL fee.
|
||||
- Points de synchronisation: creation fee, lien `fee.lots`, changement de
|
||||
`quantity_theorical`, weighing, suppression de physique.
|
||||
|
||||
## BR-PT-FEE-003 - Fees `% rate` via delta de financement
|
||||
|
||||
Source: `BR-PT-016` historique et notes `2026-04-30`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Les frais financiers en pourcentage se calculent avec le delta de financement
|
||||
de la ligne d'estimation `BL date`, pas avec la date du jour.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Formule: `amount = unit_price * quantity * (price / 100) * fin_int_delta / 360`.
|
||||
- Source du delta: ligne `Estimated date` avec `trigger = bldate`.
|
||||
- Si aucune ligne `bldate` n'existe, ne pas calculer de montant `% rate`.
|
||||
|
||||
22
modules/purchase_trade/docs/business/glossary.md
Normal file
22
modules/purchase_trade/docs/business/glossary.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Glossaire purchase_trade
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
- `Purchase Line`: ligne d'achat.
|
||||
- `Sale Line`: ligne de vente.
|
||||
- `quantity_theorical`: quantite contractuelle theorique d'une ligne.
|
||||
- `Virtual Lot`: lot de type `virtual`, representant un reliquat ouvert.
|
||||
- `Physical Lot`: lot de type `physic`, representant une quantite executee.
|
||||
- `lot.qt`: ligne de quantite ouverte, matchee ou rattachee a un shipment.
|
||||
- `lot.qt ouvert`: `lot.qt` libre, sans lot oppose et sans shipment.
|
||||
- `Shipment In`: shipment entrant utilise aussi pour les flux dropship dans ce module.
|
||||
- `Dropship`: flux fournisseur vers client, sans passage par stock interne.
|
||||
- `Inbound`: flux entrant classique qui ne correspond pas au dropship.
|
||||
- `Basis`: mode de prix construit a partir d'un prix de marche et d'un premium.
|
||||
- `Premium`: prime ou discount commercial ajoute au prix economique.
|
||||
- `Linked currency`: saisie d'un prix dans une devise/unite liee, par exemple `USC/LB`.
|
||||
- `Valuation`: lignes de PnL generees pour prix, fees, derivatives et MTM.
|
||||
- `MTM`: mark-to-market applique aux lignes valorisables au marche.
|
||||
- `Fee`: frais commercial ou logistique rattache a une ligne, un lot ou un shipment.
|
||||
- `Report property`: propriete Python exposee pour simplifier un template Relatorio.
|
||||
|
||||
66
modules/purchase_trade/docs/business/invariants.md
Normal file
66
modules/purchase_trade/docs/business/invariants.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Invariants structurants
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
Ces invariants doivent etre relus avant de modifier des flux `purchase_trade`
|
||||
touchant lots, quantites, fees, PnL, factures ou templates.
|
||||
|
||||
## INV-PT-001 - Le lot physique est le pont metier stable
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Quand une information doit relier achat, vente, shipment et facture, le chemin
|
||||
fonctionnel de reference passe par le lot physique. Il porte le lien entre les
|
||||
contrats et l'execution logistique.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Source historique: `BR-PT-002`.
|
||||
- Voir aussi: [lots-and-quantities.md](lots-and-quantities.md),
|
||||
[matching.md](matching.md), [reports-templates.md](reports-templates.md).
|
||||
- Champs frequents: `lot.line`, `lot.sale_line`, `lot_shipment_in`,
|
||||
`lot_shipment_internal`, `lot_shipment_out`.
|
||||
|
||||
## INV-PT-002 - Le reliquat ouvert ne doit pas doubler les lots physiques
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Une quantite deja executee physiquement ne doit pas rester disponible comme
|
||||
quantite ouverte. Le reliquat ouvert represente seulement ce qui reste a
|
||||
executer.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Source historique: `BR-PT-020`.
|
||||
- Le calcul doit tenir compte de la quantite contractuelle, des lots physiques
|
||||
existants et des `lot.qt` deja matches ou shippes.
|
||||
|
||||
## INV-PT-003 - Les fees utilisent leurs lots effectifs
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un fee ouvert suit le lot virtuel tant qu'il n'y a pas de lot physique. Des
|
||||
qu'un ou plusieurs lots physiques sont lies au fee, ils deviennent la base
|
||||
effective de calcul.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Source historique: `BR-PT-021`.
|
||||
- Ne pas supprimer le lien virtuel: il reste le fallback si les physiques sont
|
||||
retires.
|
||||
- Voir [fees.md](fees.md).
|
||||
|
||||
## INV-PT-004 - Les templates doivent rester simples
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Les documents doivent afficher des informations metier stables, meme si le
|
||||
chemin technique pour les retrouver est complexe.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Preferer des proprietes Python `report_*` aux expressions Genshi complexes.
|
||||
- Ne pas supposer qu'une variable locale comme `shipment` existe partout dans
|
||||
un `.fodt`.
|
||||
- Voir [reports-templates.md](reports-templates.md).
|
||||
|
||||
24
modules/purchase_trade/docs/business/invoicing.md
Normal file
24
modules/purchase_trade/docs/business/invoicing.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Facturation trade
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-INV-001 - Padding facture provisoire vente
|
||||
|
||||
Source: `BR-PT-019` et `../padding-invoice-accounting.md`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le padding d'une facture provisoire vente augmente la quantite facturee pour
|
||||
constituer une provision, sans modifier la quantite physique du lot.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Le padding global du wizard `lot.invoice` est reparti entre les lots
|
||||
selectionnes.
|
||||
- La ligne facture expose `Inc. padding`.
|
||||
- Le lot conserve sa part dans `sale_invoice_padding`.
|
||||
- La facture finale retire le padding de la quantite provisoire avant de
|
||||
calculer le delta.
|
||||
- Les ecritures d'extourne doivent relire la provisoire depuis
|
||||
`lot.sale_invoice_line_prov`.
|
||||
|
||||
56
modules/purchase_trade/docs/business/lots-and-quantities.md
Normal file
56
modules/purchase_trade/docs/business/lots-and-quantities.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Lots et quantites
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-LOT-001 - Le lot physique est le pont metier
|
||||
|
||||
Source: `BR-PT-002`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le lot physique est la reference pour relier une quantite executee a son achat,
|
||||
sa vente, son shipment et ses documents.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Champs: `lot.line`, `lot.sale_line`, `lot_shipment_in`,
|
||||
`lot_shipment_internal`, `lot_shipment_out`.
|
||||
- Utiliser ce chemin avant de creer un raccourci facture -> shipment.
|
||||
|
||||
## BR-PT-LOT-002 - Le solde ouvert suit les lots physiques existants
|
||||
|
||||
Source: `BR-PT-020`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Quand la quantite contractuelle change, le systeme recalcule le reliquat ouvert
|
||||
en tenant compte des lots physiques deja crees. Il ne doit pas ajouter un delta
|
||||
qui ferait apparaitre deux fois la meme quantite.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Cibles: `purchase.line.quantity_theorical`, `sale.line.quantity_theorical`.
|
||||
- Quantite virtuelle cible =
|
||||
`quantity_theorical - somme(lots physiques convertis dans l'unite ligne)`.
|
||||
- `lot.qt` libre =
|
||||
`quantite virtuelle cible - somme(lot.qt deja matches ou shippes)`.
|
||||
- Bloquer avec `Please unlink or unmatch lot` si le solde devient negatif.
|
||||
- Les fees de la ligne doivent etre resynchronises apres modification.
|
||||
|
||||
## BR-PT-LOT-003 - Remove physical lot restaure le contexte ouvert
|
||||
|
||||
Source: `BR-PT-022`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un lot physique cree par erreur peut etre retire tant que son mouvement stock
|
||||
n'est pas finalise. Si le lot etait deja shippe ou matche, l'utilisateur doit
|
||||
confirmer car le contexte est sensible.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Autorise seulement si le `stock.move` lie est encore en `draft`.
|
||||
- Restaurer la quantite dans `lot.qt` avec le shipment et/ou le lot oppose
|
||||
d'origine.
|
||||
- Agreger avec une ligne compatible si elle existe deja.
|
||||
|
||||
27
modules/purchase_trade/docs/business/lots-management.md
Normal file
27
modules/purchase_trade/docs/business/lots-management.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Lots Management
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-LOTMGT-001 - Separations matching, side et shipping status
|
||||
|
||||
Source: `BR-PT-023` et notes `2026-05-09`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le rapport Lots Management doit permettre de lire separement le matching
|
||||
commercial, le sens achat/vente et l'avancement logistique.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Filtres: `Matching status`, `Side`, `Shipping status`, `Dimension`,
|
||||
`Strategy`.
|
||||
- Dates `As of` / `To`: `purchase.purchase_date` et `sale.sale_date`.
|
||||
- `Unshipped`: aucun `shipment_in`.
|
||||
- `Scheduled`: shipment `draft`.
|
||||
- `Shipped`: shipment `started`.
|
||||
- `Received`: shipment `received` ou `done`.
|
||||
- `Shipment Type = Dropship` si `from_location.type = supplier` et
|
||||
`to_location.type = customer`, sinon `Inbound`.
|
||||
- `Mark as finished` masque seulement les reliquats ouverts / virtuels, pas
|
||||
les lots physiques.
|
||||
|
||||
27
modules/purchase_trade/docs/business/matching.md
Normal file
27
modules/purchase_trade/docs/business/matching.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Matching achat / vente
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-MAT-001 - Create Contracts multi-lots conserve le matching source
|
||||
|
||||
Source: `BR-PT-012` et doublon historique `BR-PT-013`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le wizard `Create contracts` peut creer un seul contrat miroir depuis plusieurs
|
||||
quantites ouvertes selectionnees. Chaque ligne creee doit rester reliee a son
|
||||
lot source.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- La quantite du wizard doit correspondre a la somme des quantites ouvertes
|
||||
selectionnees.
|
||||
- Creer une ligne par `lot.qt` source.
|
||||
- Conserver `created_by_code = True` pour eviter les creations automatiques
|
||||
parasites lors des validations.
|
||||
|
||||
## Notes de migration
|
||||
|
||||
Les regles sur `Apply matching` presentes dans les notes de session du
|
||||
`2026-05-09` doivent encore etre promues ici.
|
||||
|
||||
21
modules/purchase_trade/docs/business/payments-banking.md
Normal file
21
modules/purchase_trade/docs/business/payments-banking.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Paiements et banques
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-PAY-001 - Distinguer banque tiers et banque compagnie
|
||||
|
||||
Source: `BR-PT-018`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un contrat distingue le compte bancaire du client ou fournisseur du compte
|
||||
bancaire utilise par la compagnie courante pour encaisser ou payer.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Contrats: `sale.sale`, `purchase.purchase`.
|
||||
- `bank_account`: compte de la party du contrat.
|
||||
- `our_bank_account`: compte de la compagnie courante, selectionnable parmi
|
||||
les comptes disponibles.
|
||||
- La devise du contrat est prioritaire pour proposer un compte par defaut.
|
||||
|
||||
53
modules/purchase_trade/docs/business/pricing.md
Normal file
53
modules/purchase_trade/docs/business/pricing.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Pricing, basis, premium
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-PRI-001 - Le premium fait partie du prix economique
|
||||
|
||||
Source: `BR-PT-008`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le premium ou discount saisi sur une ligne fait partie du prix economique, que
|
||||
la ligne soit en prix fixe ou en basis.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- `unit_price` reste le prix de base hors premium.
|
||||
- Montant economique: `unit_price + premium converti si necessaire`.
|
||||
- En basis, le premium s'applique aussi aux blocs valorises.
|
||||
|
||||
## BR-PT-PRI-002 - Linked currency
|
||||
|
||||
Source: `BR-PT-009` et `BR-PT-010`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Quand le prix est saisi dans une devise ou unite liee, le premium est exprime
|
||||
dans ce meme repere puis converti pour les calculs internes.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Champs obligatoires si active: `linked_price`, `linked_currency`,
|
||||
`linked_unit`.
|
||||
- En `basis + linked currency`, `linked_price` represente le basis brut hors
|
||||
premium.
|
||||
- `amount` ajoute le premium converti.
|
||||
|
||||
## BR-PT-PRI-003 - Pricing manuel
|
||||
|
||||
Source: `BR-PT-016` et doublon historique `BR-PT-015`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
En pricing manuel, l'utilisateur saisit uniquement la quantite fixee du jour et
|
||||
le prix de marche. Les cumuls et prix moyens sont calcules automatiquement.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Champs saisis: `quantity`, `settl_price`.
|
||||
- Champs derives: `fixed_qt`, `fixed_qt_price`, `unfixed_qt`,
|
||||
`unfixed_qt_price`, `eod_price`, `last`.
|
||||
- Groupe metier: `line + component` ou `sale_line + component`.
|
||||
- Le composant choisi doit appartenir a la ligne courante.
|
||||
|
||||
39
modules/purchase_trade/docs/business/reports-templates.md
Normal file
39
modules/purchase_trade/docs/business/reports-templates.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Reports et templates
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
Voir aussi:
|
||||
|
||||
- `../template-rules.md`
|
||||
- `../template-properties.md`
|
||||
- `../../../../notes/template_business_rules.md`
|
||||
|
||||
## BR-PT-RPT-001 - Templates trade via proprietes Python
|
||||
|
||||
Source: `template-rules.md`, `template-properties.md`, notes AGENTS
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un document trade doit afficher des informations metier fiables, sans dependre
|
||||
d'expressions fragiles dans le fichier bureautique.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Preferer des proprietes Python simples, souvent prefixees `report_*`.
|
||||
- Dans les placeholders XML, utiliser `"` et `'` plutot que des
|
||||
antislashs.
|
||||
- Pour les factures liees a vente/achat/shipment, privilegier le lot physique
|
||||
comme pont.
|
||||
- Verifier le cache `invoice_report_cache` avant de conclure qu'une action
|
||||
report pointe vers le mauvais `.fodt`.
|
||||
- Pour les templates shipment, preferer `records[0]...` ou des proprietes sur
|
||||
`stock.shipment.in` plutot qu'une variable locale supposee.
|
||||
|
||||
## Decisions deja documentees a migrer ensuite
|
||||
|
||||
- `insurance.fodt`: compagnie courante, amount insured a 110%, surveyor.
|
||||
- `packing_list.fodt`: date du jour, unites depuis `purchase.line`.
|
||||
- `bill.fodt`: maturity date reelle et montant en lettres depuis le total.
|
||||
- `invoice_ict.fodt` / `invoice_ict_final.fodt`: poids, shipments et lots.
|
||||
- `sale_ict.fodt`: priorite lots et unite reelle.
|
||||
|
||||
15
modules/purchase_trade/docs/business/risk-credit-forex.md
Normal file
15
modules/purchase_trade/docs/business/risk-credit-forex.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Risque, credit, forex
|
||||
|
||||
Statut: `placeholder`
|
||||
|
||||
Cette page est reservee aux regles business sur le risque, le credit et les
|
||||
ecarts de change.
|
||||
|
||||
Aucune regle canonique `purchase_trade` n'a ete promue ici dans cette premiere
|
||||
passe. Les notes comptables et forex existantes doivent etre relues avant toute
|
||||
migration:
|
||||
|
||||
- `notes/accounting/README.md`
|
||||
- `notes/accounting/business_rules.md`
|
||||
- `notes/accounting/reporting.md`
|
||||
|
||||
26
modules/purchase_trade/docs/business/sessions.md
Normal file
26
modules/purchase_trade/docs/business/sessions.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Journal de migration et sessions
|
||||
|
||||
Statut: `non canonique`
|
||||
|
||||
Cette page sert de routeur vers les notes historiques. Une note devient
|
||||
canonique seulement quand elle est reprise dans une page thematique.
|
||||
|
||||
## Sources historiques
|
||||
|
||||
- `modules/purchase_trade/docs/business-rules.md`
|
||||
- `modules/purchase_trade/docs/business-rules-architecture-proposal.md`
|
||||
- `notes/business_rules.md`
|
||||
- `notes/template_business_rules.md`
|
||||
|
||||
## Notes deja partiellement promues
|
||||
|
||||
- Session `2026-04-30`: PnL fees ouverts et `% rate`, promue dans
|
||||
[fees.md](fees.md) et [valuation-pnl-mtm.md](valuation-pnl-mtm.md).
|
||||
- Session `2026-05-01`: solde ouvert apres lots physiques et lots effectifs
|
||||
des fees, promue dans [lots-and-quantities.md](lots-and-quantities.md) et
|
||||
[fees.md](fees.md).
|
||||
- Session `2026-05-06`: Remove physical lot, promue dans
|
||||
[lots-and-quantities.md](lots-and-quantities.md).
|
||||
- Session `2026-05-09`: Lots Management, promue partiellement dans
|
||||
[lots-management.md](lots-management.md).
|
||||
|
||||
49
modules/purchase_trade/docs/business/shipments-execution.md
Normal file
49
modules/purchase_trade/docs/business/shipments-execution.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Shipments et execution
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-SHP-001 - Affectation controller par ecart a l'objectif
|
||||
|
||||
Source: `BR-PT-014`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le controller propose automatiquement est celui dont la zone a le plus grand
|
||||
retard par rapport a son objectif.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Configuration: onglet `Execution` de `party.party`.
|
||||
- La zone du shipment vient de `shipment.to_location.country`.
|
||||
- Une region parente couvre ses sous-regions.
|
||||
- `% achieved` compte seulement les shipments deja affectes a un controller.
|
||||
|
||||
## BR-PT-SHP-002 - Couts SLA controller par pays et/ou lieu
|
||||
|
||||
Source: `BR-PT-014-bis`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Un cout controller peut etre defini pour un pays, un lieu, ou le couple pays +
|
||||
lieu. Le couple est le cas le plus specifique.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Matching: `country + location`, puis `location`, puis `country`.
|
||||
- Le pays vient de `shipment.to_location.country`.
|
||||
|
||||
## BR-PT-SHP-003 - Weight reports distants par lot
|
||||
|
||||
Source: `BR-PT-015`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
L'export distant par lot part du weight report global choisi par l'utilisateur
|
||||
sur le shipment.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Exporter seulement les lots physiques des `incoming_moves`.
|
||||
- Exiger au minimum `controller` et `returned_id` sur le shipment.
|
||||
- Conserver les cles distantes et la date d'envoi sur le `weight.report`.
|
||||
|
||||
51
modules/purchase_trade/docs/business/valuation-pnl-mtm.md
Normal file
51
modules/purchase_trade/docs/business/valuation-pnl-mtm.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Valuation, PnL, MTM
|
||||
|
||||
Statut: `migration partielle`
|
||||
|
||||
## BR-PT-VAL-001 - La valuation couvre achat, vente et sale-first
|
||||
|
||||
Source: `BR-PT-004`, `BR-PT-006`, `BR-PT-011`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le PnL doit exister pour les achats et pour les ventes, meme quand une vente
|
||||
n'est pas encore matchee a un achat.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- Une `sale.line` non matchee doit generer au minimum `sale priced`, `sale fee`
|
||||
et `derivative` si applicable.
|
||||
- Une sale basis sans detail de prix doit quand meme produire une ligne a zero
|
||||
ou au prix economique fallback selon la regle applicable.
|
||||
- Ne pas attacher arbitrairement une sale unique si plusieurs sales sont
|
||||
matchees au meme ouvert.
|
||||
|
||||
## BR-PT-VAL-002 - References de valuation
|
||||
|
||||
Source: `BR-PT-005`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
La reference de PnL doit decrire la nature de la ligne valorisee: achat ou
|
||||
vente, ouverte ou physique.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- References autorisees: `Purchase/Open`, `Purchase/Physic`, `Sale/Open`,
|
||||
`Sale/Physic`.
|
||||
- Un lot virtuel ne doit pas sortir avec une reference physique.
|
||||
|
||||
## BR-PT-VAL-003 - MTM hors fees
|
||||
|
||||
Source: `BR-PT-007`
|
||||
|
||||
### Regle consultant
|
||||
|
||||
Le mark-to-market s'applique aux prix et aux derives, pas aux frais.
|
||||
|
||||
### Notes developpeur
|
||||
|
||||
- MTM autorise pour `pur. priced`, `sale priced`, `derivative`.
|
||||
- Fees hors MTM: `pur. fee`, `sale fee`, `shipment fee`, `line fee`.
|
||||
- Pour les fees: `mtm_price`, `mtm`, `strategy` doivent rester vides.
|
||||
|
||||
@@ -1,12 +1,39 @@
|
||||
# Purchase Trade - Business Rules
|
||||
# Purchase Trade - Documentation metier
|
||||
|
||||
Bienvenue dans la documentation métier du module Purchase Trade.
|
||||
Bienvenue dans la documentation metier et technique du module `purchase_trade`.
|
||||
|
||||
## Pages disponibles
|
||||
Ce fichier reste le point d'entree du wiki. Le decoupage ci-dessous separe les
|
||||
regles lisibles par les consultants des notes utiles aux developpeurs.
|
||||
|
||||
- [Business Rules](business-rules.md)
|
||||
- [Fees](fees.md)
|
||||
## Menu principal
|
||||
|
||||
- [Guide de lecture](business/README.md)
|
||||
- [Index thematique des regles business](business/INDEX.md)
|
||||
- [Glossaire](business/glossary.md)
|
||||
- [Invariants structurants](business/invariants.md)
|
||||
- [Journal de migration et sessions](business/sessions.md)
|
||||
|
||||
## Regles par domaine
|
||||
|
||||
- [Contrats achat / vente](business/contracts.md)
|
||||
- [Lots et quantites](business/lots-and-quantities.md)
|
||||
- [Matching achat / vente](business/matching.md)
|
||||
- [Shipments et execution](business/shipments-execution.md)
|
||||
- [Pricing, basis, premium](business/pricing.md)
|
||||
- [Fees](business/fees.md)
|
||||
- [Valuation, PnL, MTM](business/valuation-pnl-mtm.md)
|
||||
- [Facturation trade](business/invoicing.md)
|
||||
- [Pont comptable](business/accounting-bridge.md)
|
||||
- [Paiements et banques](business/payments-banking.md)
|
||||
- [Reports et templates](business/reports-templates.md)
|
||||
- [Risque, credit, forex](business/risk-credit-forex.md)
|
||||
- [Lots Management](business/lots-management.md)
|
||||
|
||||
## Anciennes pages conservees pendant la migration
|
||||
|
||||
- [Business Rules historiques](business-rules.md)
|
||||
- [Fees - notes techniques existantes](fees.md)
|
||||
- [Padding Invoice Accounting](padding-invoice-accounting.md)
|
||||
- [Template Properties](template-properties.md)
|
||||
- [Template Rules](template-rules.md)
|
||||
- [Architecture Proposal](business-rules-architecture-proposal.md)
|
||||
- [Architecture Proposal](business-rules-architecture-proposal.md)
|
||||
|
||||
Reference in New Issue
Block a user