# Template Business Rules - Session Memo Date: 2026-04-08 Scope: templates Relatorio + ponts `report_*` Python. ## 1) Regles metier confirmees - `insurance.fodt`: - "This is to certify that we have insured for account of" doit afficher la compagnie courante (`shipment.company.party`), pas le client. - "Amount insured" suit la regle 110% de la valeur incoming. - Base incoming: montant des incoming moves lies au shipment, derive des lots et de la source achat (`purchase.line.unit_price * current_quantity_converted`). - `sale bill`: - La 2eme date attendue est une maturity date (echeance), pas le libelle de condition de paiement. - Le montant en toutes lettres doit correspondre au montant du bill (montant facture/total), pas au prix unitaire d'une ligne. ## 2) Pratiques templates Relatorio - Preferer des proprietes Python `report_*` stables sur le modele plutot que des expressions Genshi complexes. - Pour `stock.shipment.in`, privilegier `records[0].report_*` dans le template. - Si un placeholder s'affiche en brut dans le PDF: - verifier que c'est un vrai `text:placeholder` ODF et pas du texte simple. - verifier le scope de variable (`records[0]` vs variable locale non definie). - Dans les placeholders XML: - utiliser `"` et `'` dans les expressions XML. - eviter les echappements de type `\'`. ## 3) Decisions de conception appliquees - `insurance.fodt`: - ajout d'un champ shipment `surveyor` (party.party) via onglet "Surveyor". - ajout d'une propriete `report_insurance_contact_surveyor` pour la zone "Contact the following surveyor". - `payment_order.fodt`: - migration des tags `<...>` legacy vers la syntaxe template habituelle du projet. - ajout de la section de config template, et exposition depuis `account.invoice` comme pour CN/DN/Invoice/Prepayment. - `packing_list.fodt`: - date en haut droite basee sur la date du jour. - unites Net/Gross alignees sur l'unite de `purchase.line`. - `bill.fodt`: - suppression du report `sale_final.fodt` du menu sale. - ajout de ponts Python cote sale pour: - montant bill numerique, - montant bill en lettres, - maturity date issue de `invoice.lines_to_pay.maturity_date` (avec fallback metier). ## 4) Check-list rapide avant validation d'un template - Les placeholders sont-ils tous resolus (aucun `` brut)? - Le scope est-il correct (`records[0]` / `sale` / `invoice`) partout, y compris header/footer? - La source metier est-elle correcte (compagnie vs client, total vs unit_price, maturity date vs payment term)? - Les formats sont-ils conformes (date, devise, montant en lettres)? - Le template est-il bien expose dans la config + menu d'impression de la forme cible?