diff --git a/modules/purchase/view/purchase_form.xml b/modules/purchase/view/purchase_form.xml
index c5c69ee..9c44243 100755
--- a/modules/purchase/view/purchase_form.xml
+++ b/modules/purchase/view/purchase_form.xml
@@ -85,7 +85,7 @@ this repository contains the full copyright notices and license terms. -->
-
+
diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py
index fbee101..ee931a4 100755
--- a/modules/purchase_trade/sale.py
+++ b/modules/purchase_trade/sale.py
@@ -889,6 +889,86 @@ class Sale(metaclass=PoolMeta):
parts.append(self.incoterm_location.country.name)
return ' '.join(parts)
+ @staticmethod
+ def _get_report_bank_account_number(account):
+ if not account:
+ return ''
+ numbers = list(getattr(account, 'numbers', []) or [])
+ for number in numbers:
+ if getattr(number, 'type', None) == 'iban' and getattr(number, 'number', None):
+ return number.number or ''
+ for number in numbers:
+ if getattr(number, 'number', None):
+ return number.number or ''
+ return ''
+
+ @staticmethod
+ def _get_report_bank_swift(account):
+ bank = getattr(account, 'bank', None) if account else None
+ return getattr(bank, 'bic', None) or ''
+
+ @staticmethod
+ def _get_report_bank_address(account):
+ bank = getattr(account, 'bank', None) if account else None
+ party = getattr(bank, 'party', None) if bank else None
+ address_get = getattr(party, 'address_get', None) if party else None
+ if callable(address_get):
+ return address_get()
+ return None
+
+ @staticmethod
+ def _get_report_bank_party_name(account):
+ bank = getattr(account, 'bank', None) if account else None
+ party = getattr(bank, 'party', None) if bank else None
+ address = Sale._get_report_bank_address(account)
+ return (
+ getattr(address, 'party_full_name', None)
+ or getattr(address, 'party_name', None)
+ or getattr(party, 'rec_name', None)
+ or getattr(bank, 'rec_name', None)
+ or '')
+
+ @staticmethod
+ def _get_report_bank_address_line(account):
+ address = Sale._get_report_bank_address(account)
+ if not address:
+ return ''
+ city_line = ' '.join(filter(None, [
+ getattr(address, 'postal_code', None),
+ getattr(address, 'city', None),
+ ]))
+ lines = [
+ getattr(address, 'name', None),
+ getattr(address, 'street', None),
+ city_line,
+ ]
+ return ' '.join(line.strip() for line in lines if line and line.strip())
+
+ @property
+ def report_melya_bank_name(self):
+ return self._get_report_bank_party_name(self.our_bank_account)
+
+ @property
+ def report_melya_bank_address(self):
+ return self._get_report_bank_address_line(self.our_bank_account)
+
+ @property
+ def report_melya_bank_iban(self):
+ return self._get_report_bank_account_number(self.our_bank_account)
+
+ @property
+ def report_melya_bank_swift(self):
+ return self._get_report_bank_swift(self.our_bank_account)
+
+ @property
+ def report_melya_bank_account_line(self):
+ parts = []
+ if self.report_melya_bank_iban:
+ parts.append('IBAN : %s' % self.report_melya_bank_iban)
+ if self.report_melya_bank_swift:
+ parts.append('Swift Code: %s' % self.report_melya_bank_swift)
+ return ', '.join(parts)
+
@property
def report_packing(self):
nb_packing = 0
diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py
index 6fd7cc1..fe79a53 100644
--- a/modules/purchase_trade/tests/test_module.py
+++ b/modules/purchase_trade/tests/test_module.py
@@ -4465,6 +4465,42 @@ class PurchaseTradeTestCase(ModuleTestCase):
invoice.report_melya_bank_account_line,
'IBAN : CH36 0021 5215 2487 7461 D, Swift Code: UBSWCHZH80A')
+ def test_sale_melya_bank_uses_our_bank_account(self):
+ 'sale_melya bank block uses the sale company bank account'
+ Sale = Pool().get('sale.sale')
+
+ address = Mock(
+ party_full_name='UBS SWITZERLAND AG',
+ name='Case Postale',
+ street='',
+ postal_code='CH-1211 Geneve 2',
+ city='',
+ )
+ party = Mock(
+ rec_name='UBS SWITZERLAND AG',
+ address_get=Mock(return_value=address),
+ )
+ bank = Mock(party=party, bic='UBSWCHZH80A')
+ account = Mock(
+ bank=bank,
+ numbers=[Mock(type='iban', number='CH36 0021 5215 2487 7461 D')],
+ )
+
+ sale = Sale()
+ sale.our_bank_account = account
+
+ self.assertEqual(sale.report_melya_bank_name, 'UBS SWITZERLAND AG')
+ self.assertEqual(
+ sale.report_melya_bank_address,
+ 'Case Postale CH-1211 Geneve 2')
+ self.assertEqual(
+ sale.report_melya_bank_iban,
+ 'CH36 0021 5215 2487 7461 D')
+ self.assertEqual(sale.report_melya_bank_swift, 'UBSWCHZH80A')
+ self.assertEqual(
+ sale.report_melya_bank_account_line,
+ 'IBAN : CH36 0021 5215 2487 7461 D, Swift Code: UBSWCHZH80A')
+
def test_invoice_melya_maturity_date_uses_lines_to_pay(self):
'invoice_melya maturity date uses the earliest line to pay maturity'
Invoice = Pool().get('account.invoice')
diff --git a/modules/purchase_trade/view/purchase_form2.xml b/modules/purchase_trade/view/purchase_form2.xml
index a52a47e..3b76725 100755
--- a/modules/purchase_trade/view/purchase_form2.xml
+++ b/modules/purchase_trade/view/purchase_form2.xml
@@ -82,7 +82,7 @@ this repository contains the full copyright notices and license terms. -->
-
+
diff --git a/modules/sale/sale_melya.fodt b/modules/sale/sale_melya.fodt
index ecdbc9f..b8c792a 100644
--- a/modules/sale/sale_melya.fodt
+++ b/modules/sale/sale_melya.fodt
@@ -878,7 +878,7 @@
VAT NR. – NOT SUBJECT TO VAT IN SWITZERLAND
- We certify this invoice authentic and definitivePage 2/2
+ We certify this invoice authentic and definitivePage 1/3
@@ -1849,9 +1849,9 @@
PAYMENT TERMS:<sale.payment_term.description if sale.payment_term else ''>
- BANK DETAILS:UBS SWITZERLAND AG
- Case Postale CH-1211 Geneve 2
- IBAN : CH36 0021 5215 2487 7461 D, Swift Code: UBSWCHZH80A
+ BANK DETAILS:<sale.report_melya_bank_name>
+ <sale.report_melya_bank_address>
+ <sale.report_melya_bank_account_line>
DELIVERY IS SUBJECT TO THE DELIVERY BY OUR SUPPLIER.
@@ -1868,4 +1868,4 @@
</for>
-
\ No newline at end of file
+
diff --git a/modules/sale/view/sale_form.xml b/modules/sale/view/sale_form.xml
index bd32c5e..eb2c151 100755
--- a/modules/sale/view/sale_form.xml
+++ b/modules/sale/view/sale_form.xml
@@ -99,7 +99,7 @@ this repository contains the full copyright notices and license terms. -->
-
+