diff --git a/account_banking_pain_base/models/account_payment_method.py b/account_banking_pain_base/models/account_payment_method.py index 067468c813cf..1172dd16c4ed 100644 --- a/account_banking_pain_base/models/account_payment_method.py +++ b/account_banking_pain_base/models/account_payment_method.py @@ -16,6 +16,7 @@ class AccountPaymentMethod(models.Model): "the corresponding unaccented character, so that only ASCII " "characters are used in the generated PAIN file.", ) + warn_not_sepa = fields.Boolean(string="Warn If Not SEPA") def get_xsd_file_path(self): """This method is designed to be inherited in the SEPA modules""" diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py index 854fb409fd52..b472507b1c68 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -24,7 +24,12 @@ class AccountPaymentOrder(models.Model): _inherit = "account.payment.order" - sepa = fields.Boolean(compute="_compute_sepa", readonly=True, string="SEPA Payment") + sepa = fields.Boolean(compute="_compute_sepa", string="SEPA Payment") + sepa_payment_method = fields.Boolean( + compute="_compute_sepa", + string="SEPA Payment Method", + ) + show_warning_not_sepa = fields.Boolean(compute="_compute_sepa") charge_bearer = fields.Selection( [ ("SLEV", "Following Service Level"), @@ -105,6 +110,7 @@ def _sepa_iban_prefix_list(self): ] @api.depends( + "payment_mode_id", "company_partner_bank_id.acc_type", "company_partner_bank_id.sanitized_acc_number", "payment_line_ids.currency_id", @@ -115,30 +121,47 @@ def _compute_sepa(self): eur = self.env.ref("base.EUR") sepa_list = self._sepa_iban_prefix_list() for order in self: - sepa = True - if order.company_partner_bank_id.acc_type != "iban": - sepa = False - if ( - order.company_partner_bank_id - and order.company_partner_bank_id.sanitized_acc_number[:2] - not in sepa_list - ): - sepa = False - for pline in order.payment_line_ids: - if pline.currency_id != eur: - sepa = False - break - if pline.partner_bank_id.acc_type != "iban": + sepa_payment_method = False + sepa = False + warn_not_sepa = False + payment_method = order.payment_mode_id.payment_method_id + if payment_method.pain_version: + sepa_payment_method = True + sepa = True + if ( + order.company_partner_bank_id + and order.company_partner_bank_id.acc_type != "iban" + ): sepa = False - break if ( - pline.partner_bank_id - and pline.partner_bank_id.sanitized_acc_number[:2] not in sepa_list + order.company_partner_bank_id + and order.company_partner_bank_id.sanitized_acc_number[:2] + not in sepa_list ): sepa = False - break - sepa = order.compute_sepa_final_hook(sepa) - self.sepa = sepa + for pline in order.payment_line_ids: + if pline.currency_id != eur: + sepa = False + break + if ( + pline.partner_bank_id + and pline.partner_bank_id.acc_type != "iban" + ): + sepa = False + break + if ( + pline.partner_bank_id + and pline.partner_bank_id.sanitized_acc_number[:2] + not in sepa_list + ): + sepa = False + break + sepa = order.compute_sepa_final_hook(sepa) + if not sepa and payment_method.warn_not_sepa: + warn_not_sepa = True + order.sepa = sepa + order.sepa_payment_method = sepa_payment_method + order.show_warning_not_sepa = warn_not_sepa def compute_sepa_final_hook(self, sepa): self.ensure_one() diff --git a/account_banking_pain_base/static/description/index.html b/account_banking_pain_base/static/description/index.html index 35c209333b34..d2ae85607ec4 100644 --- a/account_banking_pain_base/static/description/index.html +++ b/account_banking_pain_base/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -458,12 +458,16 @@

Contributors

  • Carlos Roca
  • +
  • Ooops404: +* Eduard Brahas <eduard@ooops404.com>
  • Maintainers

    This module is maintained by the OCA.

    -Odoo Community Association + +Odoo Community Association +

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    diff --git a/account_banking_pain_base/views/account_payment_method.xml b/account_banking_pain_base/views/account_payment_method.xml index 266d9ff6145d..de0fd0127324 100644 --- a/account_banking_pain_base/views/account_payment_method.xml +++ b/account_banking_pain_base/views/account_payment_method.xml @@ -10,10 +10,15 @@ + + diff --git a/account_banking_pain_base/views/account_payment_order.xml b/account_banking_pain_base/views/account_payment_order.xml index b06fdcacb999..ff88a22b57d8 100644 --- a/account_banking_pain_base/views/account_payment_order.xml +++ b/account_banking_pain_base/views/account_payment_order.xml @@ -13,26 +13,31 @@ /> - + + + - - - - pain.base.account.payment.order.tree - account.payment.order - - - - - +
    + +
    diff --git a/account_banking_sepa_credit_transfer/__manifest__.py b/account_banking_sepa_credit_transfer/__manifest__.py index bafa6dbd6588..bf82b6c18e38 100644 --- a/account_banking_sepa_credit_transfer/__manifest__.py +++ b/account_banking_sepa_credit_transfer/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Account Banking SEPA Credit Transfer", "summary": "Create SEPA XML files for Credit Transfers", - "version": "14.0.2.0.2", + "version": "14.0.2.0.3", "license": "AGPL-3", "author": "Akretion, Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-payment", diff --git a/account_banking_sepa_credit_transfer/data/account_payment_method.xml b/account_banking_sepa_credit_transfer/data/account_payment_method.xml index 01b08910ac57..2d16c170a028 100644 --- a/account_banking_sepa_credit_transfer/data/account_payment_method.xml +++ b/account_banking_sepa_credit_transfer/data/account_payment_method.xml @@ -6,5 +6,6 @@ outbound pain.001.001.03 + diff --git a/account_banking_sepa_credit_transfer/migrations/14.0.2.0.3/post-migration.py b/account_banking_sepa_credit_transfer/migrations/14.0.2.0.3/post-migration.py new file mode 100644 index 000000000000..c41e4b7746cd --- /dev/null +++ b/account_banking_sepa_credit_transfer/migrations/14.0.2.0.3/post-migration.py @@ -0,0 +1,11 @@ +# Copyright 2023 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + sct_method = env.ref("account_banking_sepa_credit_transfer.sepa_credit_transfer") + sct_method.write({"warn_not_sepa": True}) diff --git a/account_banking_sepa_credit_transfer/tests/test_sct.py b/account_banking_sepa_credit_transfer/tests/test_sct.py index 49a1addb341e..668c4841d725 100644 --- a/account_banking_sepa_credit_transfer/tests/test_sct.py +++ b/account_banking_sepa_credit_transfer/tests/test_sct.py @@ -192,7 +192,10 @@ def check_eur_currency_sct(self): self.assertEqual(agrolait_pay_line1.communication, "F1341") self.payment_order.draft2open() self.assertEqual(self.payment_order.state, "open") - self.assertEqual(self.payment_order.sepa, True) + if self.payment_mode.payment_method_id.pain_version: + self.assertTrue(self.payment_order.sepa) + else: + self.assertFalse(self.payment_order.sepa) self.assertTrue(self.payment_order.payment_ids) agrolait_bank_line = self.payment_order.payment_ids[0] self.assertEqual(agrolait_bank_line.currency_id, self.eur_currency) diff --git a/account_banking_sepa_direct_debit/__manifest__.py b/account_banking_sepa_direct_debit/__manifest__.py index 823a4d82023b..829755be9b63 100644 --- a/account_banking_sepa_direct_debit/__manifest__.py +++ b/account_banking_sepa_direct_debit/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Account Banking SEPA Direct Debit", "summary": "Create SEPA files for Direct Debit", - "version": "14.0.2.1.1", + "version": "14.0.2.1.2", "license": "AGPL-3", "author": "Akretion, Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-payment", diff --git a/account_banking_sepa_direct_debit/data/account_payment_method.xml b/account_banking_sepa_direct_debit/data/account_payment_method.xml index 16463e91731d..eb83d1b0b306 100644 --- a/account_banking_sepa_direct_debit/data/account_payment_method.xml +++ b/account_banking_sepa_direct_debit/data/account_payment_method.xml @@ -7,5 +7,6 @@ pain.008.001.02 + diff --git a/account_banking_sepa_direct_debit/migrations/14.0.2.1.2/post-migration.py b/account_banking_sepa_direct_debit/migrations/14.0.2.1.2/post-migration.py new file mode 100644 index 000000000000..292df1868125 --- /dev/null +++ b/account_banking_sepa_direct_debit/migrations/14.0.2.1.2/post-migration.py @@ -0,0 +1,11 @@ +# Copyright 2023 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + sct_method = env.ref("account_banking_sepa_direct_debit.sepa_direct_debit") + sct_method.write({"warn_not_sepa": True}) diff --git a/account_payment_order/models/account_payment_line.py b/account_payment_order/models/account_payment_line.py index eac8cb93387b..24a3efa8d588 100644 --- a/account_payment_order/models/account_payment_line.py +++ b/account_payment_order/models/account_payment_line.py @@ -66,6 +66,9 @@ class AccountPaymentLine(models.Model): ondelete="restrict", check_company=True, ) + partner_bank_acc_type = fields.Selection( + related="partner_bank_id.acc_type", string="Bank Account Type" + ) date = fields.Date(string="Payment Date") # communication field is required=False because we don't want to block # the creation of lines from move/invoices when communication is empty diff --git a/account_payment_order/views/account_payment_line.xml b/account_payment_order/views/account_payment_line.xml index 1c2c72a065fc..0e9ec5c61319 100644 --- a/account_payment_order/views/account_payment_line.xml +++ b/account_payment_order/views/account_payment_line.xml @@ -59,6 +59,7 @@ +