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 @@
This module is maintained by the OCA.
-
+
+
+
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 @@
+