From c9028f1590ff22427ccfbbe0c844e20998408ecd Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Thu, 28 May 2026 13:59:36 +0200 Subject: [PATCH] Add maturity date --- modules/account_invoice/invoice_melya.fodt | 1 + modules/purchase_trade/invoice.py | 8 ++++++++ modules/purchase_trade/tests/test_module.py | 15 +++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/modules/account_invoice/invoice_melya.fodt b/modules/account_invoice/invoice_melya.fodt index b806fa5..dc1151e 100644 --- a/modules/account_invoice/invoice_melya.fodt +++ b/modules/account_invoice/invoice_melya.fodt @@ -1583,6 +1583,7 @@ Payment terms: <invoice.report_payment_description or ''>  + <if test="invoice.report_melya_maturity_date">Maturity date: <format_date(invoice.report_melya_maturity_date, invoice.party.lang)></if> <if test="invoice.report_melya_bank_name">Bank: <invoice.report_melya_bank_name></if> <for each="line in invoice.report_melya_bank_address.splitlines()"> diff --git a/modules/purchase_trade/invoice.py b/modules/purchase_trade/invoice.py index c551254..85ade7d 100644 --- a/modules/purchase_trade/invoice.py +++ b/modules/purchase_trade/invoice.py @@ -712,6 +712,14 @@ class Invoice(metaclass=PoolMeta): return self._get_report_bank_swift( self._get_report_melya_bank_account()) + @property + def report_melya_maturity_date(self): + maturity_dates = [ + line.maturity_date for line in (self.lines_to_pay or []) + if getattr(line, 'maturity_date', None)] + if maturity_dates: + return min(maturity_dates) + @property def _report_payment_order_company_account(self): return self._get_report_bank_account(getattr(self.company, 'party', None)) diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py index d394ec0..c80fd6c 100644 --- a/modules/purchase_trade/tests/test_module.py +++ b/modules/purchase_trade/tests/test_module.py @@ -3293,6 +3293,21 @@ class PurchaseTradeTestCase(ModuleTestCase): 'CH36 0021 5215 2487 7461 D') self.assertEqual(invoice.report_melya_bank_swift, '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') + + invoice = Invoice() + invoice.lines_to_pay = [ + Mock(maturity_date=datetime.date(2026, 9, 9)), + Mock(maturity_date=datetime.date(2026, 8, 9)), + Mock(maturity_date=None), + ] + + self.assertEqual( + invoice.report_melya_maturity_date, + datetime.date(2026, 8, 9)) + def test_sale_report_deal_uses_purchase_and_sale_numbers(self): 'sale deal number includes the linked purchase number' Sale = Pool().get('sale.sale')