This commit is contained in:
2026-03-27 14:08:07 +01:00
parent f67e5d8ccc
commit 984b2ba56f
4 changed files with 81 additions and 7 deletions

View File

@@ -1,8 +1,8 @@
# Template Rules - Purchase Trade
Statut: `draft`
Version: `v0.1`
Derniere mise a jour: `2026-03-26`
Version: `v0.2`
Derniere mise a jour: `2026-03-27`
## 1) Scope
@@ -93,6 +93,33 @@ Derniere mise a jour: `2026-03-26`
- pour un report alternatif, ne pas reutiliser le cache du report standard `account_invoice/invoice.fodt`
- si besoin, bypasser la lecture/ecriture du cache pour les templates alternatifs
### TR-007 - Pour une facture trade, privilegier le lot physique comme chemin de navigation
- Pour remonter d'une facture vers des donnees logistiques ou metier, ne pas dupliquer de chemins differents selon achat/vente.
- Regle pratique:
- partir de la ligne metier (`purchase.line` ou `sale.line`)
- retrouver le lot physique associe
- utiliser ce lot comme pont vers le shipment et les autres objets lies
- Ce chemin doit etre privilegie pour exposer des proprietes `report_*` comme:
- `report_bl_date`
- `report_loading_port`
- `report_discharge_port`
- `report_controller_name`
- `report_si_number`
- `report_proforma_invoice_number`
- `report_proforma_invoice_date`
### TR-008 - Le freight amount d'un template facture vient du fee de shipment
- Ne pas lire le fret directement sur `account.invoice`.
- Pour les templates `invoice_ict*`, le `FREIGHT VALUE` doit etre expose par une propriete Python du type `invoice.report_freight_amount`.
- La logique attendue est:
- retrouver le lot physique pertinent
- retrouver son shipment
- chercher le `fee.fee` du shipment avec `product.name = 'Maritime freight'`
- utiliser `fee.get_amount()`
- Si le fee a sa propre devise, preferer aussi exposer le symbole de devise depuis le fee plutot que depuis la facture.
## 4) Workflow recommande pour corriger un template en erreur
1. Identifier le placeholder exact qui provoque l'erreur Relatorio.
@@ -110,8 +137,9 @@ Derniere mise a jour: `2026-03-26`
- Fichier: `modules/account_invoice/invoice_ict.fodt`
- Strategie retenue:
- aligner la syntaxe sur `modules/account_invoice/invoice.fodt`
- reutiliser au maximum les proprietes de `sale.sale`
- exposer dans `modules/purchase_trade/invoice.py` des proprietes de pont `account.invoice -> sale`
- reutiliser au maximum les proprietes metier deja exposees
- exposer dans `modules/purchase_trade/invoice.py` des proprietes de pont `account.invoice -> sale/purchase`
- pour les donnees shipment et freight, passer par le lot physique comme pont achat/vente
### Sale ICT