diff --git a/account_statement_bankaccount_completion/res_partner_bank.py b/account_statement_bankaccount_completion/res_partner_bank.py index 4af45adb..ea826f96 100644 --- a/account_statement_bankaccount_completion/res_partner_bank.py +++ b/account_statement_bankaccount_completion/res_partner_bank.py @@ -18,7 +18,6 @@ # # from openerp.osv.orm import Model -from openerp.addons.base_iban import base_iban class res_partner_bank(Model): @@ -26,14 +25,14 @@ class res_partner_bank(Model): def search_by_acc_number(self, cr, uid, acc_number, context=None): ''' - Try to find the Account Number using a 'like' operator to avoid problems with the input mask - used to store the value. + Try to find the Account Number using a 'like' operator to avoid + problems with the input mask used to store the value. ''' # first try with an exact match ids = self.search(cr, - uid, - [('acc_number', '=', acc_number)], - context=context) + uid, + [('acc_number', '=', acc_number)], + context=context) if ids: return ids @@ -43,7 +42,11 @@ class res_partner_bank(Model): FROM res_partner_bank WHERE - regexp_replace(acc_number,'([^[:alnum:]])', '','g') ilike regexp_replace(%s,'([^[:alnum:]])', '','g') """, - (acc_number,)) - #apply security constraints by using the orm - return self.search(cr, uid, [('id', 'in', [r[0] for r in cr.fetchall()])]) + regexp_replace(acc_number,'([^[:alnum:]])', '','g') + ilike + regexp_replace(%s,'([^[:alnum:]])', '','g') + """, (acc_number,)) + # apply security constraints by using the orm + return self.search(cr, uid, + [('id', 'in', [r[0] for r in cr.fetchall()])], + context=context) diff --git a/account_statement_bankaccount_completion/statement.py b/account_statement_bankaccount_completion/statement.py index 6f6cdb74..07895a29 100644 --- a/account_statement_bankaccount_completion/statement.py +++ b/account_statement_bankaccount_completion/statement.py @@ -23,7 +23,8 @@ from openerp.tools.translate import _ from openerp.osv.orm import Model from openerp.osv import fields -from openerp.addons.account_statement_base_completion.statement import ErrorTooManyPartner +from openerp.addons.account_statement_base_completion.statement \ + import ErrorTooManyPartner class AccountStatementCompletionRule(Model): @@ -57,22 +58,34 @@ class AccountStatementCompletionRule(Model): res = {} res_bank_obj = self.pool.get('res.partner.bank') ids = res_bank_obj.search_by_acc_number(cr, - uid, - partner_acc_number, - context=context) + uid, + partner_acc_number, + context=context) if len(ids) > 1: - raise ErrorTooManyPartner(_('Line named "%s" (Ref:%s) was matched by more than ' - 'one partner for account number "%s".') % (st_line['name'], st_line['ref'], partner_acc_number)) + raise ErrorTooManyPartner(_('Line named "%s" (Ref:%s) was matched ' + 'by more than one partner for account ' + 'number "%s".') % + (st_line['name'], + st_line['ref'], + partner_acc_number)) if len(ids) == 1: - partner = res_bank_obj.browse(cr, uid, ids[0], context=context).partner_id + partner = res_bank_obj.browse(cr, + uid, + ids[0], + context=context).partner_id res['partner_id'] = partner.id + profile_id = st_line['profile_id'] + m_acc_id = st_line['master_account_id'] + partner_id = res.get('partner_id', False) + line_type = st_line['type'] + amout = st_line['amount'] if st_line['amount'] else 0.0 st_vals = st_obj.get_values_for_line(cr, uid, - profile_id=st_line['profile_id'], - master_account_id=st_line['master_account_id'], - partner_id=res.get('partner_id', False), - line_type=st_line['type'], - amount=st_line['amount'] if st_line['amount'] else 0.0, + profile_id=profile_id, + master_account_id=m_acc_id, + partner_id=partner_id, + line_type=line_type, + amount=amout, context=context) res.update(st_vals) return res @@ -82,7 +95,8 @@ class AccountStatementLine(Model): _inherit = "account.bank.statement.line" _columns = { - # 'additional_bank_fields' : fields.serialized('Additional infos from bank', help="Used by completion and import system."), + # 'additional_bank_fields' : fields.serialized('Additional infos from + # bank', help="Used by completion and import system."), 'partner_acc_number': fields.sparse( type='char', string='Account Number', diff --git a/account_statement_bankaccount_completion/tests/test_bankaccount_completion.py b/account_statement_bankaccount_completion/tests/test_bankaccount_completion.py index e9fb7331..9ed5c06b 100644 --- a/account_statement_bankaccount_completion/tests/test_bankaccount_completion.py +++ b/account_statement_bankaccount_completion/tests/test_bankaccount_completion.py @@ -31,9 +31,12 @@ class bankaccount_completion(common.TransactionCase): super(bankaccount_completion, self).setUp() self.company_a = self.browse_ref('base.main_company') self.profile_obj = self.registry("account.statement.profile") - self.account_bank_statement_obj = self.registry("account.bank.statement") - self.account_bank_statement_line_obj = self.registry("account.bank.statement.line") - self.completion_rule_id = self.ref('account_statement_bankaccount_completion.bank_statement_completion_rule_10') + self.acc_bk_stmt = self.registry("account.bank.statement") + self.acc_bk_stmt_line_obj = \ + self.registry("account.bank.statement.line") + self.completion_rule_id = \ + self.ref('account_statement_bankaccount_completion.' + 'bank_statement_completion_rule_10') self.journal_id = self.ref("account.bank_journal") self.partner_id = self.ref('base.main_partner') self.account_id = self.ref("account.a_recv") @@ -45,61 +48,85 @@ class bankaccount_completion(common.TransactionCase): "journal_id": self.journal_id, "rule_ids": [(6, 0, [self.completion_rule_id])]}) # Create a bank statement - self.statement_id = self.account_bank_statement_obj.create(self.cr, self.uid, { - "balance_end_real": 0.0, - "balance_start": 0.0, - "date": time.strftime('%Y-%m-%d'), - "journal_id": self.journal_id, - "profile_id": self.profile_id - - }) + vals = {"balance_end_real": 0.0, + "balance_start": 0.0, + "date": time.strftime('%Y-%m-%d'), + "journal_id": self.journal_id, + "profile_id": self.profile_id, + } + self.statement_id = self.acc_bk_stmt.create(self.cr, + self.uid, + vals) # Add a bank account number to the partner self.res_partner_bank_obj = self.registry('res.partner.bank') - self.res_partner_bank_id = self.res_partner_bank_obj.create(self.cr, self.uid, { - "state": "bank", - "company_id": self.company_a.id, - "partner_id": self.partner_id, - "acc_number": ACC_NUMBER, - "footer": True, - "bank_name": "Reserve" - }) + vals = {"state": "bank", + "company_id": self.company_a.id, + "partner_id": self.partner_id, + "acc_number": ACC_NUMBER, + "footer": True, + "bank_name": "Reserve", + } + self.res_partner_bank_id = self.res_partner_bank_obj.create(self.cr, + self.uid, + vals) def test_00(self): """Test complete partner_id from bank account number - Test the automatic completion of the partner_id based on the account number associated to the - statement line + Test the automatic completion of the partner_id based on the accoun + t number associated to the statement line """ - for bank_acc_number in [ACC_NUMBER, ACC_NUMBER.replace(" ", ""), ACC_NUMBER.replace(" ", "-")]: - # check the completion for well formatted and not well formatted account number - self.res_partner_bank_obj.write(self.cr, self.uid, self.res_partner_bank_id, { - "acc_number": bank_acc_number, - }) - for acc_number in [ACC_NUMBER, ACC_NUMBER.replace(" ", ""), ACC_NUMBER.replace(" ", "-"), " BE38-7330 4038-5372 "]: - statement_line_id = self.account_bank_statement_line_obj.create(self.cr, self.uid, { - 'amount': 1000.0, - 'name': 'EXT001', - 'ref': 'My ref', - 'statement_id': self.statement_id, - 'partner_acc_number': acc_number - }) - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) - self.assertFalse(statement_line.partner_id, "Partner_id must be blank before completion") - statement_obj = self.account_bank_statement_obj.browse(self.cr, self.uid, self.statement_id) + for bank_acc_number in [ACC_NUMBER, ACC_NUMBER.replace(" ", ""), + ACC_NUMBER.replace(" ", "-")]: + # check the completion for well formatted and not well + # formatted account number + self.res_partner_bank_obj.write(self.cr, + self.uid, + self.res_partner_bank_id, + {"acc_number": bank_acc_number} + ) + for acc_number in [ACC_NUMBER, ACC_NUMBER.replace(" ", ""), + ACC_NUMBER.replace(" ", "-"), + " BE38-7330 4038-5372 "]: + vals = {'amount': 1000.0, + 'name': 'EXT001', + 'ref': 'My ref', + 'statement_id': self.statement_id, + 'partner_acc_number': acc_number + } + line_id = self.acc_bk_stmt_line_obj.create(self.cr, + self.uid, + vals) + line = self.acc_bk_stmt_line_obj.browse(self.cr, + self.uid, + line_id) + self.assertFalse(line.partner_id, + 'Partner_id must be blank before completion') + statement_obj = self.acc_bk_stmt.browse(self.cr, + self.uid, + self.statement_id) statement_obj.button_auto_completion() - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) - self.assertEquals(self.partner_id, statement_line.partner_id['id'], "Missing expected partner id after completion") - - statement_line_id = self.account_bank_statement_line_obj.create(self.cr, self.uid, { - 'amount': 1000.0, + line = self.acc_bk_stmt_line_obj.browse(self.cr, + self.uid, + line_id) + self.assertEquals(self.partner_id, line.partner_id['id'], + 'Missing expected partner id after ' + 'completion') + vals = {'amount': 1000.0, 'name': 'EXT001', 'ref': 'My ref', 'statement_id': self.statement_id, - 'partner_acc_number': 'BE38a7330.4038-5372.' - }) - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) - self.assertFalse(statement_line.partner_id, "Partner_id must be blank before completion") - statement_obj = self.account_bank_statement_obj.browse(self.cr, self.uid, self.statement_id) + 'partner_acc_number': 'BE38a7330.4038-5372.', + } + line_id = self.acc_bk_stmt_line_obj.create(self.cr, + self.uid, + vals) + line = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, line_id) + self.assertFalse(line.partner_id, + 'Partner_id must be blank before completion') + statement_obj = self.acc_bk_stmt.browse(self.cr, + self.uid, + self.statement_id) statement_obj.button_auto_completion() - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) - self.assertFalse(statement_line.partner_id.id) + line = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, line_id) + self.assertFalse(line.partner_id.id) diff --git a/account_statement_base_completion/tests/test_base_completion.py b/account_statement_base_completion/tests/test_base_completion.py index 6e2d8d3e..19319567 100644 --- a/account_statement_base_completion/tests/test_base_completion.py +++ b/account_statement_base_completion/tests/test_base_completion.py @@ -49,7 +49,7 @@ class base_completion(common.TransactionCase): self.profile_obj = self.registry("account.statement.profile") self.partner_obj = self.registry("res.partner") self.account_bank_statement_obj = self.registry("account.bank.statement") - self.account_bank_statement_line_obj = self.registry("account.bank.statement.line") + self.acc_bk_stmt_line_obj = self.registry("account.bank.statement.line") self.journal_id = self.ref("account.bank_journal") self.partner_id = self.ref('base.main_partner') self.account_id = self.ref("account.a_recv") @@ -78,17 +78,17 @@ class base_completion(common.TransactionCase): for case in NAMES_COMPLETION_CASES: self.partner_obj.write(self.cr, self.uid, self.partner_id, {'name': case.partner_name}) - statement_line_id = self.account_bank_statement_line_obj.create(self.cr, self.uid, { + statement_line_id = self.acc_bk_stmt_line_obj.create(self.cr, self.uid, { 'amount': 1000.0, 'name': case.line_label, 'ref': 'My ref', 'statement_id': self.statement_id, }) - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) + statement_line = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, statement_line_id) self.assertFalse(statement_line.partner_id, "Partner_id must be blank before completion") statement_obj = self.account_bank_statement_obj.browse(self.cr, self.uid, self.statement_id) statement_obj.button_auto_completion() - statement_line = self.account_bank_statement_line_obj.browse(self.cr, self.uid, statement_line_id) + statement_line = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, statement_line_id) if case.should_match: self.assertEquals(self.partner_id, statement_line.partner_id['id'], "Missing expected partner id after completion (partner_name: %s, line_name: %s)" % (case.partner_name, case.line_label)) diff --git a/account_statement_regex_account_completion/tests/test_regex_account_completion.py b/account_statement_regex_account_completion/tests/test_regex_account_completion.py index 64958844..cfe66848 100644 --- a/account_statement_regex_account_completion/tests/test_regex_account_completion.py +++ b/account_statement_regex_account_completion/tests/test_regex_account_completion.py @@ -37,7 +37,7 @@ class test_regex_account_completion(common.TransactionCase): def prepare(self): self.account_bank_statement_obj = self.registry("account.bank.statement") - self.account_bank_statement_line_obj = self.registry("account.bank.statement.line") + self.acc_bk_stmt_line_obj = self.registry("account.bank.statement.line") self.account_id = self.ref('account.a_expense') # create the completion rule rule_vals = {'function_to_call': 'set_account', @@ -63,7 +63,7 @@ class test_regex_account_completion(common.TransactionCase): }) # Create two bank statement lines - self.statement_line1_id = self.account_bank_statement_line_obj.create(self.cr, self.uid, { + self.statement_line1_id = self.acc_bk_stmt_line_obj.create(self.cr, self.uid, { 'amount': 1000.0, 'name': 'My statement', 'ref': 'My ref', @@ -71,7 +71,7 @@ class test_regex_account_completion(common.TransactionCase): 'partner_acc_number': ACC_NUMBER }) - self.statement_line2_id = self.account_bank_statement_line_obj.create(self.cr, self.uid, { + self.statement_line2_id = self.acc_bk_stmt_line_obj.create(self.cr, self.uid, { 'amount': 2000.0, 'name': 'My second statement', 'ref': 'My second ref', @@ -85,7 +85,7 @@ class test_regex_account_completion(common.TransactionCase): self.prepare() statement_obj = self.account_bank_statement_obj.browse(self.cr, self.uid, self.statement_id) statement_obj.button_auto_completion() - statement_line1 = self.account_bank_statement_line_obj.browse(self.cr, self.uid, self.statement_line1_id) + statement_line1 = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, self.statement_line1_id) self.assertEquals(self.account_id, statement_line1.account_id.id, "The account should be the account of the completion") - statement_line2 = self.account_bank_statement_line_obj.browse(self.cr, self.uid, self.statement_line2_id) + statement_line2 = self.acc_bk_stmt_line_obj.browse(self.cr, self.uid, self.statement_line2_id) self.assertNotEqual(self.account_id, statement_line2.account_id.id, "The account should be not the account of the completion")