diff --git a/modules/purchase_trade/docs/template-properties.md b/modules/purchase_trade/docs/template-properties.md
index e25154a..826bdde 100644
--- a/modules/purchase_trade/docs/template-properties.md
+++ b/modules/purchase_trade/docs/template-properties.md
@@ -1,8 +1,8 @@
# Template Properties - Purchase Trade
Statut: `draft`
-Version: `v0.2`
-Derniere mise a jour: `2026-04-07`
+Version: `v0.3`
+Derniere mise a jour: `2026-04-23`
## 1) Objectif
@@ -351,6 +351,21 @@ Usage typique:
- base de travail pour les templates de type `sale_ict.fodt`
- source de verite de plusieurs proprietes du bridge facture
+### Proprietes specifiques `sale_melya.fodt`
+
+- `report_melya_proforma_number`
+ - Usage: valeur affichee dans `Proforma Nr`
+ - Source de verite: deal lie via `report_deal`, fallback numero de vente
+
+- `report_melya_buyer_address`
+ - Usage: bloc buyer avec nom long et adresse
+ - Source de verite: `sale.invoice_address.full_address` avec le contexte
+ `address_with_party`
+
+- `report_melya_incoterm`
+ - Usage: ligne `DELIVERY TERMS`
+ - Source de verite: incoterm code + lieu incoterm + pays du lieu incoterm
+
## 7) Proprietes utiles deja presentes sur `purchase.purchase`
Source code: `modules/purchase_trade/purchase.py`
diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py
index 17ebf0e..3ff73a7 100755
--- a/modules/purchase_trade/purchase.py
+++ b/modules/purchase_trade/purchase.py
@@ -348,8 +348,7 @@ class Purchase(metaclass=PoolMeta):
return [account.id for account in self.party.bank_accounts]
return []
- @fields.depends('company', '_parent_company.party',
- '_parent_company.party.bank_accounts')
+ @fields.depends('company', '_parent_company.party')
def on_change_with_our_bank_accounts(self, name=None):
if (self.company and self.company.party
and self.company.party.bank_accounts):
@@ -359,7 +358,7 @@ class Purchase(metaclass=PoolMeta):
@fields.depends(
'company', 'party', 'invoice_party', 'payment_term', 'lines',
'bank_account', 'our_bank_account', '_parent_party.bank_accounts',
- '_parent_company.party', '_parent_company.party.bank_accounts')
+ '_parent_company.party')
def on_change_party(self):
super().on_change_party()
self.bank_account = self._get_default_bank_account()
@@ -367,13 +366,13 @@ class Purchase(metaclass=PoolMeta):
@fields.depends(
'party', 'company', 'currency', '_parent_party.bank_accounts',
- '_parent_company.party', '_parent_company.party.bank_accounts')
+ '_parent_company.party')
def on_change_currency(self):
self.bank_account = self._get_default_bank_account()
self.our_bank_account = self._get_default_our_bank_account()
@fields.depends('company', 'currency', 'our_bank_account',
- '_parent_company.party', '_parent_company.party.bank_accounts')
+ '_parent_company.party')
def on_change_company(self):
super().on_change_company()
self.our_bank_account = self._get_default_our_bank_account()
diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py
index c52b246..6392960 100755
--- a/modules/purchase_trade/sale.py
+++ b/modules/purchase_trade/sale.py
@@ -312,8 +312,7 @@ class Sale(metaclass=PoolMeta):
return [account.id for account in self.party.bank_accounts]
return []
- @fields.depends('company', '_parent_company.party',
- '_parent_company.party.bank_accounts')
+ @fields.depends('company', '_parent_company.party')
def on_change_with_our_bank_accounts(self, name=None):
if (self.company and self.company.party
and self.company.party.bank_accounts):
@@ -323,8 +322,7 @@ class Sale(metaclass=PoolMeta):
@fields.depends(
'company', 'party', 'invoice_party', 'shipment_party', 'warehouse',
'payment_term', 'lines', 'bank_account', 'our_bank_account',
- '_parent_party.bank_accounts', '_parent_company.party',
- '_parent_company.party.bank_accounts')
+ '_parent_party.bank_accounts', '_parent_company.party')
def on_change_party(self):
super().on_change_party()
self.bank_account = self._get_default_bank_account()
@@ -332,13 +330,13 @@ class Sale(metaclass=PoolMeta):
@fields.depends(
'party', 'company', 'currency', '_parent_party.bank_accounts',
- '_parent_company.party', '_parent_company.party.bank_accounts')
+ '_parent_company.party')
def on_change_currency(self):
self.bank_account = self._get_default_bank_account()
self.our_bank_account = self._get_default_our_bank_account()
@fields.depends('company', 'currency', 'our_bank_account',
- '_parent_company.party', '_parent_company.party.bank_accounts')
+ '_parent_company.party')
def on_change_company(self):
super().on_change_company()
self.our_bank_account = self._get_default_our_bank_account()
@@ -719,12 +717,39 @@ class Sale(metaclass=PoolMeta):
@property
def report_deal(self):
- if self.lines and self.lines[0].lots and len(self.lines[0].lots)>1:
- return self.lines[0].lots[1].line.purchase.number + ' ' + self.number
- else:
- ''
-
- @property
+ if self.lines and self.lines[0].lots and len(self.lines[0].lots) > 1:
+ purchase = getattr(getattr(self.lines[0].lots[1], 'line', None),
+ 'purchase', None)
+ purchase_number = getattr(purchase, 'number', None)
+ if purchase_number and self.number:
+ return purchase_number + ' ' + self.number
+ return purchase_number or self.number or ''
+ return ''
+
+ @property
+ def report_melya_proforma_number(self):
+ return self.report_deal or self.full_number or ''
+
+ @property
+ def report_melya_buyer_address(self):
+ if not self.invoice_address:
+ return ''
+ with Transaction().set_context(address_with_party=True):
+ return self.invoice_address.full_address
+
+ @property
+ def report_melya_incoterm(self):
+ parts = []
+ if self.incoterm and self.incoterm.code:
+ parts.append(self.incoterm.code)
+ if self.incoterm_location:
+ if self.incoterm_location.party_name:
+ parts.append(self.incoterm_location.party_name)
+ if self.incoterm_location.country:
+ parts.append(self.incoterm_location.country.name)
+ return ' '.join(parts)
+
+ @property
def report_packing(self):
nb_packing = 0
unit = ''
diff --git a/modules/purchase_trade/tryton.cfg b/modules/purchase_trade/tryton.cfg
index 78eec8a..1828ee0 100755
--- a/modules/purchase_trade/tryton.cfg
+++ b/modules/purchase_trade/tryton.cfg
@@ -9,8 +9,9 @@ depends:
stock
res
lot
- document_incoming
- incoterm
+ document_incoming
+ incoterm
+ bank
xml:
purchase.xml
sale.xml
diff --git a/modules/sale/sale_melya.fodt b/modules/sale/sale_melya.fodt
index 15e235c..237c6b1 100644
--- a/modules/sale/sale_melya.fodt
+++ b/modules/sale/sale_melya.fodt
@@ -1721,12 +1721,11 @@
PROFORMA INVOICE
Proforma Nr:Date:
- <sale.report_deal><format_date(sale.sale_date, sale.party.lang) if sale.sale_date else ''>
+ <sale.report_melya_proforma_number><format_date(sale.sale_date, sale.party.lang) if sale.sale_date else ''>
Buyer:
- <sale.party.rec_name>
- <for each="line in sale.report_address.splitlines()">
+ <for each="line in sale.report_melya_buyer_address.splitlines()">
<line>
</for>
@@ -1763,8 +1762,8 @@
- <sale.report_product_name or ''>
- <sale.report_product_description or ''>
+ <sale.report_product_name or ''>
+ <sale.report_product_description or ''>
@@ -1799,7 +1798,7 @@
TRANSPORTATION BY:VESSEL
- DELIVERY TERMS:<sale.incoterm.code if sale.incoterm else ''> <sale.incoterm_location.party_name if sale.incoterm_location else ''>
+ DELIVERY TERMS:<sale.report_melya_incoterm>
PAYMENT TERMS:<sale.payment_term.description if sale.payment_term else ''>