Skip to content
Snippets Groups Projects
Commit 1b05d9df authored by Arthur Maniet's avatar Arthur Maniet
Browse files

Revert "[FIX] Use unique accounts and improved bank search in base."

This reverts commit b3a9422187a484f09d224dcb1f2cd9687fee0142.

Many ORM tests rely on res.partner.bank, making it cumbersome to change.
parent 2d9569cc
No related branches found
No related tags found
No related merge requests found
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
# #
############################################################################## ##############################################################################
import re
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.exceptions import UserError from openerp.exceptions import UserError
...@@ -115,51 +113,8 @@ class res_partner_bank(osv.osv): ...@@ -115,51 +113,8 @@ class res_partner_bank(osv.osv):
value = address.get(field, value) value = address.get(field, value)
return value return value
# Courtesy of lmignon (acsone)
def _sanitize_account_number(self, acc_number):
if acc_number:
return re.sub(r'\W+', '', acc_number).upper()
return False
def _get_sanitized_account_number(
self, cr, uid, ids, field_name, arg, context):
"""Compute sanitized version off account number.
This is needed for reliable search and uniqueness test."""
res = {}
for this_obj in self.browse(cr, uid, ids, context = context):
res[this_obj.id] = (
self._sanitize_account_number(this_obj.acc_number))
return res
def search(self, cr, user, args, offset=0, limit=None, order=None,
context=None, count=False):
pos = 0
while pos < len(args):
if args[pos][0] == 'acc_number':
op = args[pos][1]
value = args[pos][2]
if hasattr(value, '__iter__'):
value = [self._sanitize_account_number(i) for i in value]
else:
value = self._sanitize_account_number(value)
if 'like' in op:
value = '%' + value + '%'
args[pos] = ('sanitized_acc_number', op, value)
pos += 1
return super(res_partner_bank, self).search(
cr, user, args, offset=0, limit=None, order=None, context=None,
count=False)
_columns = { _columns = {
'acc_number': fields.char('Account Number', required=True), 'acc_number': fields.char('Account Number', required=True),
'sanitized_acc_number': fields.function(
_get_sanitized_account_number,
string='Sanitized Account Number',
type='char', size=64, readonly=True,
store=True,
),
'bank': fields.many2one('res.bank', 'Bank'), 'bank': fields.many2one('res.bank', 'Bank'),
'bank_bic': fields.char('Bank Identifier Code'), 'bank_bic': fields.char('Bank Identifier Code'),
'bank_name': fields.char('Bank Name'), 'bank_name': fields.char('Bank Name'),
...@@ -180,10 +135,6 @@ class res_partner_bank(osv.osv): ...@@ -180,10 +135,6 @@ class res_partner_bank(osv.osv):
'footer': fields.boolean("Display on Reports", help="Display this bank account on the footer of printed documents like invoices and sales orders."), 'footer': fields.boolean("Display on Reports", help="Display this bank account on the footer of printed documents like invoices and sales orders."),
'currency_id': fields.many2one('res.currency', string='Currency', help="Currency of the bank account and its related journal."), 'currency_id': fields.many2one('res.currency', string='Currency', help="Currency of the bank account and its related journal."),
} }
_sql_constraints = [
('unique_number', 'unique(sanitized_acc_number)',
'Account Number must be unique'),
]
_defaults = { _defaults = {
'owner_name': lambda obj, cursor, user, context: obj._default_value( 'owner_name': lambda obj, cursor, user, context: obj._default_value(
......
...@@ -25,4 +25,3 @@ import test_translate ...@@ -25,4 +25,3 @@ import test_translate
import test_view_validation import test_view_validation
import test_views import test_views
import test_xmlrpc import test_xmlrpc
import test_res_partner_bank
# -*- coding: utf-8 -*-
##############################################################################
#
# This file is part of account_bank_statement_import,
# an Odoo module.
#
# Copyright (c) 2015 ACSONE SA/NV (<http://acsone.eu>)
#
# account_bank_statement_import 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.
#
# account_bank_statement_import 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 account_bank_statement_import_coda.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.tests.common import TransactionCase
class TestResPartnerBank(TransactionCase):
"""Tests acc_number
"""
def test_sanitized_acc_number(self):
partner_bank_model = self.env['res.partner.bank']
acc_number = " BE-001 2518823 03 "
vals = partner_bank_model.search([('acc_number', '=', acc_number)])
self.assertEquals(0, len(vals))
partner_bank = partner_bank_model.create({
'acc_number': acc_number,
'partner_id': self.ref('base.res_partner_2'),
'state': 'bank',
})
vals = partner_bank_model.search([('acc_number', '=', acc_number)])
self.assertEquals(1, len(vals))
self.assertEquals(partner_bank, vals[0])
vals = partner_bank_model.search([('acc_number', 'in', [acc_number])])
self.assertEquals(1, len(vals))
self.assertEquals(partner_bank, vals[0])
self.assertEqual(partner_bank.acc_number, acc_number)
# sanitaze the acc_number
sanitized_acc_number = 'BE001251882303'
vals = partner_bank_model.search(
[('acc_number', '=', sanitized_acc_number)])
self.assertEquals(1, len(vals))
self.assertEquals(partner_bank, vals[0])
vals = partner_bank_model.search(
[('acc_number', 'in', [sanitized_acc_number])])
self.assertEquals(1, len(vals))
self.assertEquals(partner_bank, vals[0])
self.assertEqual(partner_bank.sanitized_acc_number,
sanitized_acc_number)
# search is case insensitive
vals = partner_bank_model.search(
[('acc_number', '=', sanitized_acc_number.lower())])
self.assertEquals(1, len(vals))
vals = partner_bank_model.search(
[('acc_number', '=', acc_number.lower())])
self.assertEquals(1, len(vals))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment