From f319243b720f4b088445f783a87d91f28019865e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 30 Apr 2016 01:46:34 +0200 Subject: [PATCH] Start to port bank-payment to v9 (with a lot of improvements) during the Sorrento Code sprint 2016 Improvements include: - full re-organisation of modules and big re-organisation of the code - simplification of the code related to the fact that support for direct debit is now in t he base module, not added by an optional module account_direct_debit (module was removed) - new design of the wizard to select move lines to pay - support for non-SEPA file transfer- - support for German direct debit SEPA files (fixes bug #129) - remove workflow of payment.order This port to v9 is not finished... there is still a lot of work: - finish the code of account_payment_order/wizard/account_payment_line_create.py - port account_banking_payment_transfer and integrate it inside account_payment_order - fix bugs - clean-up code, remove dead code - test in several complex scenarios --- account_banking_pain_base/__openerp__.py | 14 +-- account_banking_pain_base/models/__init__.py | 8 +- .../models/account_payment_line.py | 23 ++++ .../models/account_payment_method.py | 19 ++++ ...ayment_mode.py => account_payment_mode.py} | 31 +++--- .../models/account_payment_order.py | 55 ++++++++++ .../models/bank_payment_line.py | 5 +- .../models/banking_export_pain.py | 100 ++++++------------ .../models/payment_line.py | 26 ----- account_banking_pain_base/post_install.py | 2 +- .../views/account_payment_line.xml | 22 ++++ .../views/account_payment_method.xml | 30 ++++++ .../views/account_payment_mode.xml | 30 ++++++ .../views/account_payment_order.xml | 24 +++++ .../views/bank_payment_line_view.xml | 9 +- .../views/payment_line_view.xml | 26 ----- .../views/payment_mode_view.xml | 33 ------ 17 files changed, 268 insertions(+), 189 deletions(-) create mode 100644 account_banking_pain_base/models/account_payment_line.py create mode 100644 account_banking_pain_base/models/account_payment_method.py rename account_banking_pain_base/models/{payment_mode.py => account_payment_mode.py} (69%) create mode 100644 account_banking_pain_base/models/account_payment_order.py delete mode 100644 account_banking_pain_base/models/payment_line.py create mode 100644 account_banking_pain_base/views/account_payment_line.xml create mode 100644 account_banking_pain_base/views/account_payment_method.xml create mode 100644 account_banking_pain_base/views/account_payment_mode.xml create mode 100644 account_banking_pain_base/views/account_payment_order.xml delete mode 100644 account_banking_pain_base/views/payment_line_view.xml delete mode 100644 account_banking_pain_base/views/payment_mode_view.xml diff --git a/account_banking_pain_base/__openerp__.py b/account_banking_pain_base/__openerp__.py index 1e129f554..809182e29 100644 --- a/account_banking_pain_base/__openerp__.py +++ b/account_banking_pain_base/__openerp__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# © 2013-2015 Akretion - Alexis de Lattre +# © 2013-2016 Akretion - Alexis de Lattre # © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza # © 2016 Antiun Ingenieria S.L. - Antonio Espinosa # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -7,7 +7,7 @@ { 'name': 'Account Banking PAIN Base Module', 'summary': 'Base module for PAIN file generation', - 'version': '8.0.0.4.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'author': "Akretion, " "Noviat, " @@ -17,16 +17,18 @@ 'website': 'https://github.com/OCA/bank-payment', 'contributors': ['Pedro M. Baeza '], 'category': 'Hidden', - 'depends': ['account_banking_payment_export'], + 'depends': ['account_payment_order'], 'external_dependencies': { 'python': ['unidecode', 'lxml'], }, 'data': [ - 'views/payment_line_view.xml', + 'views/account_payment_line.xml', + 'views/account_payment_order.xml', 'views/bank_payment_line_view.xml', - 'views/payment_mode_view.xml', + 'views/account_payment_mode.xml', 'views/res_company_view.xml', + 'views/account_payment_method.xml', ], 'post_init_hook': 'set_default_initiating_party', - 'installable': False, + 'installable': True, } diff --git a/account_banking_pain_base/models/__init__.py b/account_banking_pain_base/models/__init__.py index ffc2334f3..caf442d40 100644 --- a/account_banking_pain_base/models/__init__.py +++ b/account_banking_pain_base/models/__init__.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- -# © 2013 Akretion - Alexis de Lattre +# © 2013-2016 Akretion - Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import payment_line +from . import account_payment_line +from . import account_payment_order from . import bank_payment_line -from . import payment_mode +from . import account_payment_mode from . import res_company from . import banking_export_pain from . import res_partner_bank +from . import account_payment_method diff --git a/account_banking_pain_base/models/account_payment_line.py b/account_banking_pain_base/models/account_payment_line.py new file mode 100644 index 000000000..da183051c --- /dev/null +++ b/account_banking_pain_base/models/account_payment_line.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountPaymentLine(models.Model): + _inherit = 'account.payment.line' + + priority = fields.Selection([ + ('NORM', 'Normal'), + ('HIGH', 'High')], + string='Priority', default='NORM', + help="This field will be used as the 'Instruction Priority' in " + "the generated PAIN file.") + # PAIN allows 140 caracters + communication = fields.Char(size=140) + # The field struct_communication_type has been dropped in v9 + # We now use communication_type ; you should add an option + # in communication_type with selection_add=[] + communication_type = fields.Selection(selection_add=[('ISO', 'ISO')]) diff --git a/account_banking_pain_base/models/account_payment_method.py b/account_banking_pain_base/models/account_payment_method.py new file mode 100644 index 000000000..90b485fa0 --- /dev/null +++ b/account_banking_pain_base/models/account_payment_method.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + pain_version = fields.Selection([], string='PAIN Version') + + @api.multi + def get_xsd_file_path(self): + """This method is designed to be inherited in the SEPA modules""" + self.ensure_one() + raise UserError(_( + "No XSD file path found for payment method '%s'") % self.name) diff --git a/account_banking_pain_base/models/payment_mode.py b/account_banking_pain_base/models/account_payment_mode.py similarity index 69% rename from account_banking_pain_base/models/payment_mode.py rename to account_banking_pain_base/models/account_payment_mode.py index 832ff2bc9..48febc536 100644 --- a/account_banking_pain_base/models/payment_mode.py +++ b/account_banking_pain_base/models/account_payment_mode.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# © 2013-2015 Akretion - Alexis de Lattre +# © 2013-2016 Akretion - Alexis de Lattre # © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza # © 2016 Antiun Ingenieria S.L. - Antonio Espinosa # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -7,8 +7,8 @@ from openerp import models, fields, api -class PaymentMode(models.Model): - _inherit = 'payment.mode' +class AccountPaymentMode(models.Model): + _inherit = 'account.payment.mode' convert_to_ascii = fields.Boolean( string='Convert to ASCII', default=True, @@ -33,17 +33,18 @@ class PaymentMode(models.Model): "- Country code (2, optional)\n" "- Company idenfier (N, VAT)\n" "- Service suffix (N, issued by bank)") - sepa_type = fields.Char(compute="_compute_sepa_type") + # I plan to change this -- Alexis + #sepa_type = fields.Char(compute="_compute_sepa_type") - def _sepa_type_get(self): - """Defined to be inherited by child addons, for instance: - - account_banking_sepa_credit_transfer - - account_banking_sepa_direct_debit - """ - return False + #def _sepa_type_get(self): + # """Defined to be inherited by child addons, for instance: + # - account_banking_sepa_credit_transfer + # - account_banking_sepa_direct_debit + # """ + # return False - @api.multi - @api.depends('type') - def _compute_sepa_type(self): - for mode in self: - mode.sepa_type = mode._sepa_type_get() + #@api.multi + #@api.depends('type') + #def _compute_sepa_type(self): + # for mode in self: + # mode.sepa_type = mode._sepa_type_get() diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py new file mode 100644 index 000000000..a7e7106b9 --- /dev/null +++ b/account_banking_pain_base/models/account_payment_order.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' + + sepa = fields.Boolean( + compute='compute_sepa', readonly=True, + string="SEPA Payment") + charge_bearer = fields.Selection([ + ('SLEV', 'Following Service Level'), + ('SHAR', 'Shared'), + ('CRED', 'Borne by Creditor'), + ('DEBT', 'Borne by Debtor')], string='Charge Bearer', + default='SLEV', + help="Following service level : transaction charges are to be " + "applied following the rules agreed in the service level " + "and/or scheme (SEPA Core messages must use this). Shared : " + "transaction charges on the debtor side are to be borne by " + "the debtor, transaction charges on the creditor side are to " + "be borne by the creditor. Borne by creditor : all " + "transaction charges are to be borne by the creditor. Borne " + "by debtor : all transaction charges are to be borne by the " + "debtor.") + batch_booking = fields.Boolean( + string='Batch Booking', + help="If true, the bank statement will display only one debit " + "line for all the wire transfers of the SEPA XML file ; if " + "false, the bank statement will display one debit line per wire " + "transfer of the SEPA XML file.") + + @api.multi + @api.depends( + 'company_partner_bank_id.acc_type', + 'payment_line_ids.currency_id', + 'payment_line_ids.partner_bank_id.acc_type') + def compute_sepa(self): + eur = self.env.ref('base.EUR') + for order in self: + sepa = True + if order.company_partner_bank_id.acc_type != 'iban': + 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 = False + break + self.sepa = sepa diff --git a/account_banking_pain_base/models/bank_payment_line.py b/account_banking_pain_base/models/bank_payment_line.py index e67a46be6..7885d701a 100644 --- a/account_banking_pain_base/models/bank_payment_line.py +++ b/account_banking_pain_base/models/bank_payment_line.py @@ -10,13 +10,10 @@ class BankPaymentLine(models.Model): priority = fields.Selection( related='payment_line_ids.priority', string='Priority') - struct_communication_type = fields.Selection( - related='payment_line_ids.struct_communication_type', - string='Structured Communication Type') @api.model def same_fields_payment_line_and_bank_payment_line(self): res = super(BankPaymentLine, self).\ same_fields_payment_line_and_bank_payment_line() - res += ['priority', 'struct_communication_type'] + res += ['priority'] return res diff --git a/account_banking_pain_base/models/banking_export_pain.py b/account_banking_pain_base/models/banking_export_pain.py index c25229c42..af178327d 100644 --- a/account_banking_pain_base/models/banking_export_pain.py +++ b/account_banking_pain_base/models/banking_export_pain.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- -# © 2013-2015 Akretion - Alexis de Lattre +# © 2013-2016 Akretion - Alexis de Lattre # © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza # © 2016 Antiun Ingenieria S.L. - Antonio Espinosa # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import models, api, _ -from openerp.exceptions import Warning +from openerp.exceptions import UserError from openerp.tools.safe_eval import safe_eval from datetime import datetime from lxml import etree from openerp import tools import logging -import base64 try: @@ -22,17 +21,8 @@ except ImportError: logger = logging.getLogger(__name__) -class BankingExportPain(models.AbstractModel): - _name = 'banking.export.pain' - - @api.model - def _validate_iban(self, iban): - """if IBAN is valid, returns IBAN - if IBAN is NOT valid, raises an error message""" - if self.env['res.partner.bank'].is_iban_valid(iban): - return iban.replace(' ', '') - else: - raise Warning(_("This IBAN is not valid : %s") % iban) +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' @api.model def _prepare_field(self, field_name, field_value, eval_ctx, @@ -58,20 +48,20 @@ class BankingExportPain(models.AbstractModel): except: line = eval_ctx.get('line') if line: - raise Warning( + raise UserError( _("Cannot compute the '%s' of the Payment Line with " "reference '%s'.") % (field_name, line.name)) else: - raise Warning( + raise UserError( _("Cannot compute the '%s'.") % field_name) if not isinstance(value, (str, unicode)): - raise Warning( + raise UserError( _("The type of the field '%s' is %s. It should be a string " "or unicode.") % (field_name, type(value))) if not value: - raise Warning( + raise UserError( _("The '%s' is empty or 0. It should have a non-null value.") % field_name) if max_size and len(value) > max_size: @@ -92,7 +82,7 @@ class BankingExportPain(models.AbstractModel): "The XML file is invalid against the XML Schema Definition") logger.warning(xml_string) logger.warning(e) - raise Warning( + raise UserError( _("The generated XML file is not valid against the official " "XML Schema Definition. The generated XML file and the " "full error have been written in the server logs. Here " @@ -102,8 +92,7 @@ class BankingExportPain(models.AbstractModel): return True @api.multi - def finalize_sepa_file_creation( - self, xml_root, total_amount, transactions_count, gen_args): + def finalize_sepa_file_creation(self, xml_root, gen_args): xml_string = etree.tostring( xml_root, pretty_print=True, encoding='UTF-8', xml_declaration=True) @@ -113,30 +102,8 @@ class BankingExportPain(models.AbstractModel): logger.debug(xml_string) self._validate_xml(xml_string, gen_args) - order_ref = [] - for order in self.payment_order_ids: - if order.reference: - order_ref.append(order.reference.replace('/', '-')) - filename = '%s%s.xml' % (gen_args['file_prefix'], '-'.join(order_ref)) - - self.write({ - 'nb_transactions': transactions_count, - 'total_amount': total_amount, - 'filename': filename, - 'file': base64.encodestring(xml_string), - 'state': 'finish', - }) - - action = { - 'name': _('SEPA File'), - 'type': 'ir.actions.act_window', - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': self._name, - 'res_id': self.ids[0], - 'target': 'new', - } - return action + filename = '%s%s.xml' % (gen_args['file_prefix'], self.name) + return (xml_string, filename) @api.model def generate_group_header_block(self, parent_node, gen_args): @@ -145,7 +112,7 @@ class BankingExportPain(models.AbstractModel): group_header_1_0, 'MsgId') message_identification_1_1.text = self._prepare_field( 'Message Identification', - 'self.payment_order_ids[0].reference', + 'self.name', {'self': self}, 35, gen_args=gen_args) creation_date_time_1_2 = etree.SubElement(group_header_1_0, 'CreDtTm') creation_date_time_1_2.text = datetime.strftime( @@ -196,10 +163,11 @@ class BankingExportPain(models.AbstractModel): instruction_priority_2_7 = etree.SubElement( payment_type_info_2_6, 'InstrPrty') instruction_priority_2_7.text = priority - service_level_2_8 = etree.SubElement( - payment_type_info_2_6, 'SvcLvl') - service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd') - service_level_code_2_9.text = 'SEPA' + if self.sepa: + service_level_2_8 = etree.SubElement( + payment_type_info_2_6, 'SvcLvl') + service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd') + service_level_code_2_9.text = 'SEPA' if local_instrument: local_instrument_2_11 = etree.SubElement( payment_type_info_2_6, 'LclInstrm') @@ -230,18 +198,17 @@ class BankingExportPain(models.AbstractModel): def generate_initiating_party_block(self, parent_node, gen_args): my_company_name = self._prepare_field( 'Company Name', - 'self.payment_order_ids[0].mode.bank_id.partner_id.name', + 'self.company_partner_bank_id.partner_id.name', {'self': self}, gen_args.get('name_maxsize'), gen_args=gen_args) initiating_party_1_8 = etree.SubElement(parent_node, 'InitgPty') initiating_party_name = etree.SubElement(initiating_party_1_8, 'Nm') initiating_party_name.text = my_company_name - payment = self.payment_order_ids[0] initiating_party_identifier = ( - payment.mode.initiating_party_identifier or - payment.company_id.initiating_party_identifier) + self.payment_mode_id.initiating_party_identifier or + self.payment_mode_id.company_id.initiating_party_identifier) initiating_party_issuer = ( - payment.mode.initiating_party_issuer or - payment.company_id.initiating_party_issuer) + self.payment_mode_id.initiating_party_issuer or + self.payment_mode_id.company_id.initiating_party_issuer) if initiating_party_identifier and initiating_party_issuer: iniparty_id = etree.SubElement(initiating_party_1_8, 'Id') iniparty_org_id = etree.SubElement(iniparty_id, 'OrgId') @@ -252,11 +219,11 @@ class BankingExportPain(models.AbstractModel): iniparty_org_other, 'Issr') iniparty_org_other_issuer.text = initiating_party_issuer elif self._must_have_initiating_party(gen_args): - raise Warning( + raise UserError( _("Missing 'Initiating Party Issuer' and/or " "'Initiating Party Identifier' for the company '%s'. " "Both fields must have a value.") - % payment.company_id.name) + % self.company_id.name) return True @api.model @@ -275,11 +242,10 @@ class BankingExportPain(models.AbstractModel): party_agent_bic = etree.SubElement( party_agent_institution, gen_args.get('bic_xml_tag')) party_agent_bic.text = bic - except Warning: + except UserError: if order == 'C': if iban[0:2] != gen_args['initiating_party_country_code']: - raise Warning( - _('Error:'), + raise UserError( _("The bank account with IBAN '%s' of partner '%s' " "must have an associated BIC because it is a " "cross-border SEPA operation.") @@ -314,9 +280,10 @@ class BankingExportPain(models.AbstractModel): party_name = self._prepare_field( '%s Name' % party_type_label, name, eval_ctx, gen_args.get('name_maxsize'), gen_args=gen_args) - piban = self._prepare_field( + viban = self._prepare_field( '%s IBAN' % party_type_label, iban, eval_ctx, gen_args=gen_args) - viban = self._validate_iban(piban) + # TODO : add support for bank accounts other than IBAN + #viban = self._validate_iban(piban) # At C level, the order is : BIC, Name, IBAN # At B level, the order is : Name, IBAN, BIC if order == 'B': @@ -353,11 +320,6 @@ class BankingExportPain(models.AbstractModel): 'line.communication', {'line': line}, 140, gen_args=gen_args) else: - if not line.struct_communication_type: - raise Warning( - _("Missing 'Structured Communication Type' on payment " - "line with reference '%s'.") - % line.name) remittance_info_structured_2_100 = etree.SubElement( remittance_info_2_91, 'Strd') creditor_ref_information_2_120 = etree.SubElement( @@ -385,7 +347,7 @@ class BankingExportPain(models.AbstractModel): creditor_ref_info_type_code_2_123.text = 'SCOR' creditor_ref_info_type_issuer_2_125.text = \ - line.struct_communication_type + line.communication_type creditor_reference_2_126.text = \ self._prepare_field( 'Creditor Structured Reference', diff --git a/account_banking_pain_base/models/payment_line.py b/account_banking_pain_base/models/payment_line.py deleted file mode 100644 index 70f214721..000000000 --- a/account_banking_pain_base/models/payment_line.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2013-2015 Akretion - Alexis de Lattre -# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openerp import models, fields, api - - -class PaymentLine(models.Model): - _inherit = 'payment.line' - - @api.model - def _get_struct_communication_types(self): - return [('ISO', 'ISO')] - - priority = fields.Selection([ - ('NORM', 'Normal'), - ('HIGH', 'High')], - string='Priority', default='NORM', - help="This field will be used as the 'Instruction Priority' in " - "the generated PAIN file.") - # Update size from 64 to 140, because PAIN allows 140 caracters - communication = fields.Char(size=140) - struct_communication_type = fields.Selection( - '_get_struct_communication_types', - string='Structured Communication Type', default='ISO') diff --git a/account_banking_pain_base/post_install.py b/account_banking_pain_base/post_install.py index 90e46fec2..14a9259f9 100644 --- a/account_banking_pain_base/post_install.py +++ b/account_banking_pain_base/post_install.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# © 2015 Akretion - Alexis de Lattre +# © 2015-2016 Akretion - Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/account_banking_pain_base/views/account_payment_line.xml b/account_banking_pain_base/views/account_payment_line.xml new file mode 100644 index 000000000..6adab6916 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_line.xml @@ -0,0 +1,22 @@ + + + + + + + pain.base.account.payment.line + account.payment.line + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_method.xml b/account_banking_pain_base/views/account_payment_method.xml new file mode 100644 index 000000000..7a9e65982 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_method.xml @@ -0,0 +1,30 @@ + + + + + + + pain_base.account_payment_method.form + account.payment.method + + + + + + + + + + pain_base.account_payment_method.tree + account.payment.method + + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_mode.xml b/account_banking_pain_base/views/account_payment_mode.xml new file mode 100644 index 000000000..d92a5e786 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_mode.xml @@ -0,0 +1,30 @@ + + + + + + + + pain_base.account.payment.mode.form + account.payment.mode + + + + + + + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_order.xml b/account_banking_pain_base/views/account_payment_order.xml new file mode 100644 index 000000000..e99928637 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_order.xml @@ -0,0 +1,24 @@ + + + + + + + pain.base.account.payment.order.form + account.payment.order + + + + + + + + + + + + diff --git a/account_banking_pain_base/views/bank_payment_line_view.xml b/account_banking_pain_base/views/bank_payment_line_view.xml index 65e993ad6..17d4e3049 100644 --- a/account_banking_pain_base/views/bank_payment_line_view.xml +++ b/account_banking_pain_base/views/bank_payment_line_view.xml @@ -1,6 +1,6 @@ @@ -10,14 +10,11 @@ pain.base.bank.payment.line.form bank.payment.line - + - + - - - diff --git a/account_banking_pain_base/views/payment_line_view.xml b/account_banking_pain_base/views/payment_line_view.xml deleted file mode 100644 index 03759b568..000000000 --- a/account_banking_pain_base/views/payment_line_view.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - pain.base.payment.line.inside.order.form - payment.order - - - - - - - - - - - - - - diff --git a/account_banking_pain_base/views/payment_mode_view.xml b/account_banking_pain_base/views/payment_mode_view.xml deleted file mode 100644 index 3ab148671..000000000 --- a/account_banking_pain_base/views/payment_mode_view.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - add.convert_to_ascii.in.payment.mode.form - payment.mode - - - - - - - - - - - - - - - - - - -