Files
tradon/modules/purchase_trade/docs/template-properties.md
2026-04-07 13:42:17 +02:00

13 KiB

Template Properties - Purchase Trade

Statut: draft Version: v0.2 Derniere mise a jour: 2026-04-07

1) Objectif

  • Lister les proprietes Python exposees pour alimenter les templates Relatorio.
  • Donner un point d'entree rapide aux createurs de templates.
  • Eviter de reparser tout modules/purchase_trade/invoice.py, sale.py ou purchase.py.

2) Fichiers sources

  • Bridge facture:
    • modules/purchase_trade/invoice.py
  • Proprietes de vente reutilisables:
    • modules/purchase_trade/sale.py
  • Proprietes d'achat reutilisables:
    • modules/purchase_trade/purchase.py

3) Principes de lecture

  • Pour une facture:
    • preferer les proprietes report_* exposees sur account.invoice
    • pour une facture finale detaillee, utiliser aussi les proprietes report_* exposees sur account.invoice.line
  • Pour une vente:
    • reutiliser si possible les proprietes report_* deja presentes sur sale.sale
  • Pour un achat:
    • reutiliser si possible les proprietes report_* deja presentes sur purchase.purchase
  • Pour un shipment entrant:
    • reutiliser si possible les proprietes report_* exposees sur stock.shipment.in

4) Propriete disponibles sur account.invoice

Source code: modules/purchase_trade/invoice.py

Identite du document / parties

  • report_address

    • Usage: adresse d'affichage de la facture
    • Source de verite: sale.report_address ou purchase.report_address, fallback invoice.invoice_address.full_address
  • report_contract_number

    • Usage: numero de contrat
    • Source de verite: sale.full_number ou purchase.full_number
  • report_trader_initial

    • Usage: initiales trader dans les templates
    • Source de verite: contrat lie
  • report_operator_initial

    • Usage: initiales operator dans les templates
    • Source de verite: contrat lie

Produit / contrat / quantites

  • report_origin

    • Usage: origine produit
    • Source de verite: sale.product_origin ou purchase.product_origin
  • report_product_description

    • Usage: description produit principale
    • Source de verite: premiere ligne metier liee a la facture
  • report_product_name

    • Usage: nom produit principal
    • Source de verite: premiere ligne metier liee a la facture
  • report_description_upper

    • Usage: description de ligne en majuscules
    • Source de verite: premiere account.invoice.line
  • report_crop_name

    • Usage: campagne / crop
    • Source de verite: contrat lie
  • report_attributes_name

    • Usage: attributs produit
    • Source de verite: premiere ligne metier liee a la facture
  • report_price

    • Usage: prix en toutes lettres
    • Source de verite: sale.report_price ou purchase.report_price
  • report_nb_bale

    • Usage: nombre de balles
    • Source de verite: sale.report_nb_bale ou recalcul sur les lots physiques
  • report_gross

    • Usage: poids brut
    • Source de verite: sale.report_gross ou recalcul sur les lots physiques
  • report_net

    • Usage: poids net
    • Source de verite: sale.report_net ou purchase.report_net ou recalcul sur les lots physiques
  • report_lbs

    • Usage: poids net converti en LBS
    • Source de verite: conversion de report_net
  • report_quantity_lines

    • Usage: detail quantite multi-lignes pour les templates facture
    • Source de verite: sale.report_quantity_lines si vente source, sinon aggregation des account.invoice.line

Bloc prix type sale_ict

  • report_rate_currency_upper

    • Usage: devise du bloc At ... PER ...
    • Source de verite: premiere account.invoice.line de type line
  • report_rate_value

    • Usage: prix numerique du bloc At ... PER ...
    • Source de verite: premiere account.invoice.line de type line
  • report_rate_unit_upper

    • Usage: unite du bloc At ... PER ...
    • Source de verite: premiere account.invoice.line de type line
  • report_rate_price_words

    • Usage: prix en toutes lettres dans le bloc At ... PER ...
    • Source de verite: premiere account.invoice.line de type line, fallback report_price
  • report_rate_pricing_text

    • Usage: texte de pricing additionnel
    • Source de verite: premiere account.invoice.line de type line
  • report_rate_lines

    • Usage: detail multi-lignes du bloc At ... PER ...
    • Source de verite: sale.report_price_lines si vente source, sinon aggregation des account.invoice.line

Logistique / shipment

  • report_shipment

    • Usage: resume vessel / BL / shipment
    • Source de verite: contrat lie
  • report_bl_date

    • Usage: date de BL
    • Source de verite: shipment du lot physique
  • report_bl_nb

    • Usage: numero de BL
    • Source de verite: shipment du lot physique
  • report_vessel

    • Usage: nom du vessel
    • Source de verite: shipment du lot physique
  • report_loading_port

    • Usage: port of loading
    • Source de verite: shipment du lot physique
  • report_discharge_port

    • Usage: port of discharge
    • Source de verite: shipment du lot physique
  • report_controller_name

    • Usage: nom du controller
    • Source de verite: shipment du lot physique
  • report_si_number

    • Usage: S/I number
    • Source de verite: shipment du lot physique

Conditions commerciales

  • report_incoterm

    • Usage: incoterm + location
    • Source de verite: contrat lie
  • report_payment_date

    • Usage: date de paiement
    • Source de verite: contrat lie
  • report_payment_description

    • Usage: description des conditions de paiement
    • Source de verite: payment term du contrat ou de la facture

Pro forma / freight

  • report_proforma_invoice_number

    • Usage: numero de facture provisoire
    • Source de verite: lot physique via invoice_line_prov ou sale_invoice_line_prov
  • report_proforma_invoice_date

    • Usage: date de facture provisoire
    • Source de verite: lot physique via invoice_line_prov ou sale_invoice_line_prov
  • report_freight_amount

    • Usage: FREIGHT VALUE
    • Source de verite:
      • lot physique
      • shipment du lot
      • fee.fee avec product.name = 'Maritime freight'
      • montant = fee.get_amount()
  • report_freight_currency_symbol

    • Usage: devise du FREIGHT VALUE
    • Source de verite: devise du fee Maritime freight, fallback devise facture

Payment order

  • report_payment_order_short_name

    • Usage: nom court emetteur du payment order
    • Source de verite: invoice.company.party.rec_name
  • report_payment_order_document_reference

    • Usage: reference du document payment order
    • Source de verite: invoice.number, fallback invoice.reference
  • report_payment_order_from_account_nb

    • Usage: compte bancaire emetteur
    • Source de verite: premier bank.account de la societe
  • report_payment_order_to_bank_name

    • Usage: banque destinataire
    • Source de verite: banque du premier compte bancaire du partenaire facture
  • report_payment_order_to_bank_city

    • Usage: ville banque destinataire
    • Source de verite: adresse de la banque destinataire
  • report_payment_order_amount

    • Usage: montant payment order
    • Source de verite: invoice.total_amount
  • report_payment_order_currency_code

    • Usage: devise payment order
    • Source de verite: invoice.currency (code, fallback rec_name/symbol)
  • report_payment_order_amount_text

    • Usage: montant en lettres
    • Source de verite: conversion amount_to_currency_words(invoice.total_amount)
  • report_payment_order_value_date

    • Usage: date valeur
    • Source de verite: invoice.payment_term_date, fallback invoice.invoice_date
  • report_payment_order_company_address

    • Usage: bloc beneficiaire
    • Source de verite: invoice.invoice_address.full_address, fallback invoice.report_address
  • report_payment_order_beneficiary_account_nb

    • Usage: compte beneficiaire
    • Source de verite: premier compte bancaire du invoice.party
  • report_payment_order_beneficiary_bank_name

    • Usage: banque beneficiaire
    • Source de verite: banque du compte beneficiaire
  • report_payment_order_beneficiary_bank_city

    • Usage: ville banque beneficiaire
    • Source de verite: adresse banque beneficiaire
  • report_payment_order_swift_code

    • Usage: swift/bic beneficiaire
    • Source de verite: bank.bic
  • report_payment_order_other_instructions

    • Usage: instructions complementaires
    • Source de verite: invoice.description
  • report_payment_order_reference

    • Usage: reference business de paiement
    • Source de verite: invoice.reference, fallback invoice.number
  • report_payment_order_current_user

    • Usage: signataire payment order
    • Source de verite: utilisateur courant (res.user)
  • report_payment_order_current_user_email

    • Usage: email retour swift
    • Source de verite: contact email du party utilisateur, fallback user.email

5) Proprietes disponibles sur account.invoice.line

Source code: modules/purchase_trade/invoice.py

  • report_product_description

    • Usage: description produit de la ligne
    • Source de verite: invoice_line.product ou origin.product
  • report_description_upper

    • Usage: description de ligne en uppercase
    • Source de verite: invoice_line.description
  • report_crop_name

    • Usage: crop de la ligne
    • Source de verite: contrat relie via origin
  • report_attributes_name

    • Usage: attributs de la ligne
    • Source de verite: origin.attributes_name
  • report_net

    • Usage: quantite nette de la ligne
    • Source de verite: invoice_line.quantity
  • report_lbs

    • Usage: quantite convertie en LBS
    • Source de verite: conversion de report_net
  • report_rate_currency_upper

    • Usage: devise de prix de la ligne
    • Source de verite: origin.linked_currency ou invoice_line.currency
  • report_rate_value

    • Usage: prix numerique de la ligne
    • Source de verite: invoice_line.unit_price
  • report_rate_unit_upper

    • Usage: unite de prix de la ligne
    • Source de verite: origin.linked_unit ou invoice_line.unit
  • report_rate_price_words

    • Usage: prix en toutes lettres de la ligne
    • Source de verite: contrat relie via trade.report_price
  • report_rate_pricing_text

    • Usage: texte de pricing de la ligne
    • Source de verite: origin.get_pricing_text

6) Proprietes utiles deja presentes sur sale.sale

Source code: modules/purchase_trade/sale.py

  • report_terms
  • report_crop_name
  • report_gross
  • report_net
  • report_qt
  • report_total_quantity
  • report_quantity_unit_upper
  • report_quantity_lines
  • report_nb_bale
  • report_deal
  • report_packing
  • report_price
  • report_price_lines
  • report_delivery
  • report_payment_date
  • report_shipment
  • report_shipment_periods
  • report_product_name
  • report_product_description

Usage typique:

  • base de travail pour les templates de type sale_ict.fodt
  • source de verite de plusieurs proprietes du bridge facture

7) Proprietes utiles deja presentes sur purchase.purchase

Source code: modules/purchase_trade/purchase.py

  • report_terms
  • report_qt
  • report_price
  • report_delivery
  • report_payment_date
  • report_shipment

Usage typique:

  • templates et bridges pour facturation fournisseur
  • fallback achat quand une facture n'est pas liee a une vente

8) Templates connus qui utilisent ces proprietes

  • modules/account_invoice/invoice_ict.fodt
  • modules/account_invoice/invoice_ict_final.fodt
  • modules/sale/sale_ict.fodt
  • modules/stock/insurance.fodt

9) Proprietes utiles deja presentes sur stock.shipment.in

Source code: modules/purchase_trade/stock.py

  • report_product_name
  • report_product_description
  • report_insurance_footer_ref
  • report_insurance_certificate_number
  • report_insurance_account_of
  • report_insurance_goods_description
  • report_insurance_loading_port
  • report_insurance_discharge_port
  • report_insurance_transport
  • report_insurance_amount
  • report_insurance_incoming_amount
  • report_insurance_amount_insured
  • report_insurance_surveyor
  • report_insurance_contact_surveyor
  • report_insurance_issue_place_and_date

Usage typique:

  • templates shipment relies a l'assurance
  • report_insurance_amount: montant affiche dans Amount insured (priorite a 110% du total incoming, fallback fee Insurance)
  • report_insurance_incoming_amount: somme incoming_moves de quantity * unit_price, avec fallback lot (lot.line.unit_price * lot.get_current_quantity_converted())
  • report_insurance_amount_insured: 110% de report_insurance_incoming_amount
  • report_insurance_contact_surveyor: surveyor affiche sous Contact the following surveyor (priorite au champ shipment surveyor, puis fallback controller / fee Insurance)
  • base de travail pour un certificat d'assurance lie a un shipment

10) Recommandations

  • Avant d'ajouter une nouvelle expression dans un .fodt, verifier si une propriete report_* existe deja ici.
  • Si une nouvelle propriete est ajoutee pour un template, la documenter dans ce fichier.
  • Pour les donnees logistiques facture, privilegier toujours:
    • facture -> ligne metier -> lot physique -> shipment / fee