Files
tradon/notes/template_business_rules.md
2026-04-08 17:15:11 +02:00

2.7 KiB

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 <records[...]...> 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?