mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Improve computation of sepa on account.payment.order: check IBAN is in SEPA zone
Update move line generation to get transfer account from bank journal Update payment mode configuration accordingly (3 fields removed) Several improvements in payment order tree and form view
This commit is contained in:
committed by
Pedro M. Baeza
parent
20b4db3e27
commit
61c22ea8ea
@@ -58,17 +58,66 @@ class AccountPaymentOrder(models.Model):
|
||||
"transfer of the SEPA XML file.",
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _sepa_iban_prefix_list(self):
|
||||
# List of IBAN prefixes (not country codes !)
|
||||
# Source: https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2020-10/EPC409-09%20EPC%20List%20of%20SEPA%20Scheme%20Countries%20v3.0_1.pdf # noqa: B950
|
||||
# Some countries use IBAN but are not part of the SEPA zone
|
||||
# example: Turkey, Madagascar, Tunisia, etc.
|
||||
return [
|
||||
"BE",
|
||||
"BG",
|
||||
"ES",
|
||||
"HR",
|
||||
"CY",
|
||||
"CZ",
|
||||
"DK",
|
||||
"EE",
|
||||
"FI",
|
||||
"FR",
|
||||
"DE",
|
||||
"GI",
|
||||
"GR",
|
||||
"GB",
|
||||
"HU",
|
||||
"IS",
|
||||
"IE",
|
||||
"IT",
|
||||
"LV",
|
||||
"LI",
|
||||
"LT",
|
||||
"LU",
|
||||
"PT",
|
||||
"MT",
|
||||
"MC",
|
||||
"NL",
|
||||
"NO",
|
||||
"PL",
|
||||
"RO",
|
||||
"SM",
|
||||
"SK",
|
||||
"SI",
|
||||
"SE",
|
||||
"CH",
|
||||
"VA",
|
||||
]
|
||||
|
||||
@api.depends(
|
||||
"company_partner_bank_id.acc_type",
|
||||
"company_partner_bank_id.sanitized_acc_number",
|
||||
"payment_line_ids.currency_id",
|
||||
"payment_line_ids.partner_bank_id.acc_type",
|
||||
"payment_line_ids.partner_bank_id.sanitized_acc_number",
|
||||
)
|
||||
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
|
||||
@@ -76,6 +125,9 @@ class AccountPaymentOrder(models.Model):
|
||||
if 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)
|
||||
self.sepa = sepa
|
||||
|
||||
|
||||
@@ -20,4 +20,18 @@
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="account_payment_line_tree" model="ir.ui.view">
|
||||
<field name="name">pain.base.account.payment.tree</field>
|
||||
<field name="model">account.payment.line</field>
|
||||
<field
|
||||
name="inherit_id"
|
||||
ref="account_payment_order.account_payment_line_tree"
|
||||
/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="communication" position="after">
|
||||
<field name="priority" optional="hide" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -21,5 +21,19 @@
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
<record id="account_payment_order_tree" model="ir.ui.view">
|
||||
<field name="name">pain.base.account.payment.order.tree</field>
|
||||
<field name="model">account.payment.order</field>
|
||||
<field
|
||||
name="inherit_id"
|
||||
ref="account_payment_order.account_payment_order_tree"
|
||||
/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="description" position="after">
|
||||
<field name="sepa" optional="hide" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -17,4 +17,15 @@
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="bank_payment_line_tree" model="ir.ui.view">
|
||||
<field name="name">pain.base.bank.payment.line.tree</field>
|
||||
<field name="model">bank.payment.line</field>
|
||||
<field name="inherit_id" ref="account_payment_order.bank_payment_line_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="communication" position="after">
|
||||
<field name="priority" optional="hide" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user