mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
[14.0][FIX]camt import
This commit is contained in:
@@ -65,7 +65,7 @@ class CamtParser(models.AbstractModel):
|
|||||||
"./ns:Refs/ns:InstrId",
|
"./ns:Refs/ns:InstrId",
|
||||||
],
|
],
|
||||||
transaction,
|
transaction,
|
||||||
"name",
|
"payment_ref",
|
||||||
join_str="\n",
|
join_str="\n",
|
||||||
)
|
)
|
||||||
# name
|
# name
|
||||||
@@ -130,12 +130,14 @@ class CamtParser(models.AbstractModel):
|
|||||||
|
|
||||||
def parse_entry(self, ns, node):
|
def parse_entry(self, ns, node):
|
||||||
"""Parse an Ntry node and yield transactions"""
|
"""Parse an Ntry node and yield transactions"""
|
||||||
transaction = {"name": "/", "amount": 0} # fallback defaults
|
transaction = {"payment_ref": "/", "amount": 0} # fallback defaults
|
||||||
self.add_value_from_node(ns, node, "./ns:BookgDt/ns:Dt", transaction, "date")
|
self.add_value_from_node(ns, node, "./ns:BookgDt/ns:Dt", transaction, "date")
|
||||||
amount = self.parse_amount(ns, node)
|
amount = self.parse_amount(ns, node)
|
||||||
if amount != 0.0:
|
if amount != 0.0:
|
||||||
transaction["amount"] = amount
|
transaction["amount"] = amount
|
||||||
self.add_value_from_node(ns, node, "./ns:AddtlNtryInf", transaction, "name")
|
self.add_value_from_node(
|
||||||
|
ns, node, "./ns:AddtlNtryInf", transaction, "narration"
|
||||||
|
)
|
||||||
self.add_value_from_node(
|
self.add_value_from_node(
|
||||||
ns,
|
ns,
|
||||||
node,
|
node,
|
||||||
@@ -217,6 +219,8 @@ class CamtParser(models.AbstractModel):
|
|||||||
result["date"] = sorted(
|
result["date"] = sorted(
|
||||||
transactions, key=lambda x: x["date"], reverse=True
|
transactions, key=lambda x: x["date"], reverse=True
|
||||||
)[0]["date"]
|
)[0]["date"]
|
||||||
|
for seq, vals in enumerate(transactions, start=1):
|
||||||
|
vals["sequence"] = seq
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def check_version(self, ns, root):
|
def check_version(self, ns, root):
|
||||||
|
|||||||
@@ -7,12 +7,16 @@
|
|||||||
'transactions': [{'account_number': 'CH2222000000123456789',
|
'transactions': [{'account_number': 'CH2222000000123456789',
|
||||||
'amount': 2187.0,
|
'amount': 2187.0,
|
||||||
'date': '2017-03-22',
|
'date': '2017-03-22',
|
||||||
'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE',
|
'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE',
|
||||||
'partner_name': 'Banque Cantonale Vaudoise',
|
'partner_name': 'Banque Cantonale Vaudoise',
|
||||||
'ref': '302388292000011111111111111'},
|
'payment_ref': '/',
|
||||||
|
'ref': '302388292000011111111111111',
|
||||||
|
'sequence': 1},
|
||||||
{'account_number': 'CH3333000000123456789',
|
{'account_number': 'CH3333000000123456789',
|
||||||
'amount': 1296.0,
|
'amount': 1296.0,
|
||||||
'date': '2017-03-22',
|
'date': '2017-03-22',
|
||||||
'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE',
|
'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE',
|
||||||
'partner_name': 'Banque Cantonale Vaudoise',
|
'partner_name': 'Banque Cantonale Vaudoise',
|
||||||
'ref': '302388292000022222222222222'}]}])
|
'payment_ref': '/',
|
||||||
|
'ref': '302388292000022222222222222',
|
||||||
|
'sequence': 2}]}])
|
||||||
|
|||||||
@@ -7,28 +7,28 @@
|
|||||||
'transactions': [{'account_number': 'NL46ABNA0499998748',
|
'transactions': [{'account_number': 'NL46ABNA0499998748',
|
||||||
'amount': -754.25,
|
'amount': -754.25,
|
||||||
'date': '2014-01-05',
|
'date': '2014-01-05',
|
||||||
'name': 'Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014',
|
|
||||||
'partner_name': 'INSURANCE COMPANY TESTX',
|
'partner_name': 'INSURANCE COMPANY TESTX',
|
||||||
'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014',
|
'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014',
|
||||||
'ref': '435005714488-ABNO33052620'},
|
'ref': '435005714488-ABNO33052620',
|
||||||
|
'sequence': 1},
|
||||||
{'account_number': 'NL46ABNA0499998748',
|
{'account_number': 'NL46ABNA0499998748',
|
||||||
'amount': -564.05,
|
'amount': -564.05,
|
||||||
'date': '2014-01-05',
|
'date': '2014-01-05',
|
||||||
'name': 'Direct Debit S14 0410',
|
|
||||||
'partner_name': 'Test Customer',
|
'partner_name': 'Test Customer',
|
||||||
'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408',
|
'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408',
|
||||||
'ref': 'TESTBANK/NL/20141229/01206408'},
|
'ref': 'TESTBANK/NL/20141229/01206408',
|
||||||
|
'sequence': 2},
|
||||||
{'account_number': 'NL46ABNA0499998748',
|
{'account_number': 'NL46ABNA0499998748',
|
||||||
'amount': -100.0,
|
'amount': -100.0,
|
||||||
'date': '2014-01-05',
|
'date': '2014-01-05',
|
||||||
'name': 'Direct Debit S14 0410',
|
|
||||||
'partner_name': 'Test Customer',
|
'partner_name': 'Test Customer',
|
||||||
'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408',
|
'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408',
|
||||||
'ref': 'TESTBANK/NL/20141229/01206407'},
|
'ref': 'TESTBANK/NL/20141229/01206407',
|
||||||
|
'sequence': 3},
|
||||||
{'account_number': 'NL69ABNA0522123643',
|
{'account_number': 'NL69ABNA0522123643',
|
||||||
'amount': 1405.31,
|
'amount': 1405.31,
|
||||||
'date': '2014-01-05',
|
'date': '2014-01-05',
|
||||||
'name': 'INNDNL2U20140105000217200000708',
|
|
||||||
'partner_name': '3rd party Media',
|
'partner_name': '3rd party Media',
|
||||||
'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773',
|
'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773',
|
||||||
'ref': '115'}]}])
|
'ref': '115',
|
||||||
|
'sequence': 4}]}])
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ import pprint
|
|||||||
import tempfile
|
import tempfile
|
||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
import mock
|
|
||||||
|
|
||||||
from odoo.modules.module import get_module_resource
|
from odoo.modules.module import get_module_resource
|
||||||
from odoo.tests.common import TransactionCase
|
from odoo.tests.common import TransactionCase
|
||||||
|
|
||||||
@@ -113,19 +111,13 @@ class TestImport(TransactionCase):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch(
|
def test_statement_import(self):
|
||||||
"odoo.addons.account.models.sequence_mixin."
|
|
||||||
"SequenceMixin._constrains_date_sequence",
|
|
||||||
side_effect=False,
|
|
||||||
)
|
|
||||||
def test_statement_import(self, constraint):
|
|
||||||
"""Test correct creation of single statement."""
|
"""Test correct creation of single statement."""
|
||||||
testfile = get_module_resource(
|
testfile = get_module_resource(
|
||||||
"account_statement_import_camt", "test_files", "test-camt053"
|
"account_statement_import_camt", "test_files", "test-camt053"
|
||||||
)
|
)
|
||||||
with open(testfile, "rb") as datafile:
|
with open(testfile, "rb") as datafile:
|
||||||
camt_file = base64.b64encode(datafile.read())
|
camt_file = base64.b64encode(datafile.read())
|
||||||
|
|
||||||
self.env["account.statement.import"].create(
|
self.env["account.statement.import"].create(
|
||||||
{
|
{
|
||||||
"statement_filename": "test import",
|
"statement_filename": "test import",
|
||||||
@@ -150,12 +142,7 @@ class TestImport(TransactionCase):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch(
|
def test_zip_import(self):
|
||||||
"odoo.addons.account.models.sequence_mixin."
|
|
||||||
"SequenceMixin._constrains_date_sequence",
|
|
||||||
side_effect=False,
|
|
||||||
)
|
|
||||||
def test_zip_import(self, constraint):
|
|
||||||
"""Test import of multiple statements from zip file."""
|
"""Test import of multiple statements from zip file."""
|
||||||
testfile = get_module_resource(
|
testfile = get_module_resource(
|
||||||
"account_statement_import_camt", "test_files", "test-camt053.zip"
|
"account_statement_import_camt", "test_files", "test-camt053.zip"
|
||||||
|
|||||||
Reference in New Issue
Block a user