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 ''>