mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
[ADD] account_banking_nl_ing_mt940
This commit is contained in:
21
account_banking_nl_ing_mt940/__init__.py
Normal file
21
account_banking_nl_ing_mt940/__init__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2014 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import account_banking_nl_ing_mt940
|
||||
47
account_banking_nl_ing_mt940/__openerp__.py
Normal file
47
account_banking_nl_ing_mt940/__openerp__.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2014 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
"name" : "MT940 import for Dutch ING",
|
||||
"version" : "1.0",
|
||||
"author" : "Therp BV",
|
||||
"complexity": "normal",
|
||||
"description": """
|
||||
This addons import the scructured MT940 format as offered by Dutch ING
|
||||
""",
|
||||
"category" : "Account Banking",
|
||||
"depends" : [
|
||||
'account_banking_mt940',
|
||||
],
|
||||
"data" : [
|
||||
],
|
||||
"js": [
|
||||
],
|
||||
"css": [
|
||||
],
|
||||
"qweb": [
|
||||
],
|
||||
"auto_install": False,
|
||||
"installable": True,
|
||||
"application": False,
|
||||
"external_dependencies" : {
|
||||
'python' : [],
|
||||
},
|
||||
}
|
||||
88
account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py
Normal file
88
account_banking_nl_ing_mt940/account_banking_nl_ing_mt940.py
Normal file
@@ -0,0 +1,88 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2014 Therp BV (<http://therp.nl>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
import re
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.account_banking.parsers.models import parser
|
||||
from openerp.addons.account_banking_mt940.mt940 import MT940, str2float
|
||||
|
||||
|
||||
class IngMT940Parser(MT940, parser):
|
||||
name = _('ING MT940 (structured)')
|
||||
country_code = 'NL'
|
||||
code = 'INT_MT940_STRUC'
|
||||
|
||||
tag_61_regex = re.compile(
|
||||
'^(?P<date>\d{6})(?P<sign>[CD])(?P<amount>\d+,\d{2})N(?P<type>\d{3})'
|
||||
'(?P<reference>\w{1,16})')
|
||||
|
||||
def handle_tag_60F(self, cr, data):
|
||||
super(IngMT940Parser, self).handle_tag_60F(cr, data)
|
||||
self.current_statement.id = '%s-%s' % (
|
||||
self.get_unique_account_identifier(
|
||||
cr, self.current_statement.local_account),
|
||||
self.current_statement.id)
|
||||
|
||||
def handle_tag_61(self, cr, data):
|
||||
super(IngMT940Parser, self).handle_tag_61(cr, data)
|
||||
parsed_data = self.tag_61_regex.match(data).groupdict()
|
||||
self.current_transaction.transferred_amount = \
|
||||
(-1 if parsed_data['sign'] == 'D' else 1) * str2float(
|
||||
parsed_data['amount'])
|
||||
self.current_transaction.reference = parsed_data['reference']
|
||||
|
||||
def handle_tag_86(self, cr, data):
|
||||
if not self.current_transaction:
|
||||
return
|
||||
super(IngMT940Parser, self).handle_tag_86(cr, data)
|
||||
codewords = ['RTRN', 'BENM', 'ORDP', 'CSID', 'BUSP', 'MARF', 'EREF',
|
||||
'PREF', 'REMI', 'ID', 'PURP', 'ULTB', 'ULTD']
|
||||
subfields = {}
|
||||
current_codeword = None
|
||||
for word in data.split('/'):
|
||||
if not word and not current_codeword:
|
||||
continue
|
||||
if word in codewords:
|
||||
current_codeword = word
|
||||
subfields[current_codeword] = []
|
||||
continue
|
||||
subfields[current_codeword].append(word)
|
||||
|
||||
if 'BENM' in subfields:
|
||||
self.current_transaction.remote_account = subfields['BENM'][0]
|
||||
self.current_transaction.remote_bank_bic = subfields['BENM'][1]
|
||||
self.current_transaction.remote_owner = subfields['BENM'][2]
|
||||
self.current_transaction.remote_owner_city = subfields['BENM'][3]
|
||||
|
||||
if 'ORDP' in subfields:
|
||||
self.current_transaction.remote_account = subfields['ORDP'][0]
|
||||
self.current_transaction.remote_bank_bic = subfields['ORDP'][1]
|
||||
self.current_transaction.remote_owner = subfields['ORDP'][2]
|
||||
self.current_transaction.remote_owner_city = subfields['ORDP'][3]
|
||||
|
||||
if 'REMI' in subfields:
|
||||
self.current_transaction.message = '/'.join(
|
||||
filter(lambda x: bool(x), subfields['REMI']))
|
||||
|
||||
if self.current_transaction.reference in subfields:
|
||||
self.current_transaction.reference = ''.join(
|
||||
subfields[self.current_transaction.reference])
|
||||
|
||||
self.current_transaction = None
|
||||
BIN
account_banking_nl_ing_mt940/static/src/img/icon.png
Normal file
BIN
account_banking_nl_ing_mt940/static/src/img/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user