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 b03af725..cdf363b4 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 + ( @@ -61,6 +62,18 @@ 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 ! + # The field TRNTYPE is a required field in OFX + if not 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: