From 4dc2495ac2f8a70f542e19be7ab4c05193a1f46f Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 7 Jan 2016 20:08:14 +0100 Subject: [PATCH 1/3] Add support for OFX files without inside all Add a comment in the code to explain it all ! --- .../account_bank_statement_import_ofx.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py index b03af72..81a21c8 100644 --- a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py +++ b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py @@ -61,6 +61,15 @@ class AccountBankStatementImport(models.TransientModel): 'bank_account_id': bank_account_id, 'partner_id': partner_id, } + # Memo () and payee () are not required + # field in OFX statement, cf section 11.4.3 Statement + # Transaction of the OFX specs: the required + # elements are in bold, cf 1.5 Conventions and these 2 + # fields are not in bold. + # But the 'name' field of account.bank.statement.line is + # required=True, so we must always have a value ! + if not vals_line['name']: + vals_line['name'] = '-' total_amt += float(transaction.amount) transactions.append(vals_line) except Exception, e: From 48869f2aca48d9ab294a4c739fdfcc0ed0d2d5ef Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 11 Jan 2016 11:42:15 +0100 Subject: [PATCH 2/3] Better fix: fallback on (required in OFX) and also if we have it --- .../account_bank_statement_import_ofx.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py index 81a21c8..09f00d3 100644 --- a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py +++ b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py @@ -68,8 +68,11 @@ class AccountBankStatementImport(models.TransientModel): # fields are not in bold. # But the 'name' field of account.bank.statement.line is # required=True, so we must always have a value ! + # The field TRNTYPE is a required field in OFX if not vals_line['name']: - vals_line['name'] = '-' + vals_line['name'] = transaction.type.capitalize() + if transaction.checknum: + vals_line['name'] += ' %s' % transaction.checknum total_amt += float(transaction.amount) transactions.append(vals_line) except Exception, e: From 606e32c6ad7d0336f254453e5052a11b4652df21 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 11 Jan 2016 13:32:18 +0100 Subject: [PATCH 3/3] FIX when transaction.payee is not set: don't detect wrong bank_account/partner (it used to match that res.partner.bank that have an empty 'owner_name') --- .../account_bank_statement_import_ofx.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py index 09f00d3..cdf363b 100644 --- a/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py +++ b/account_bank_statement_import_ofx/account_bank_statement_import_ofx.py @@ -45,12 +45,13 @@ class AccountBankStatementImport(models.TransientModel): # (normal behavious is to provide 'account_number', which the # generic module uses to find partner/bank) bank_account_id = partner_id = False - banks = self.env['res.partner.bank'].search( - [('owner_name', '=', transaction.payee)], limit=1) - if banks: - bank_account = banks[0] - bank_account_id = bank_account.id - partner_id = bank_account.partner_id.id + if transaction.payee: + banks = self.env['res.partner.bank'].search( + [('owner_name', '=', transaction.payee)], limit=1) + if banks: + bank_account = banks[0] + bank_account_id = bank_account.id + partner_id = bank_account.partner_id.id vals_line = { 'date': transaction.date, 'name': transaction.payee + (