clearcorp team mailing list archive
-
clearcorp team
-
Mailing list archive
-
Message #00652
[Branch ~banking-addons-team/banking-addons/6.1] Rev 161: [FIX] Multi-company safe partner search
Merge authors:
Stefan Rijnhart (Therp) (stefan-therp)
Related merge proposals:
https://code.launchpad.net/~therp-nl/banking-addons/ba61-multicompany_safe_partner_search/+merge/146795
proposed by: Stefan Rijnhart (Therp) (stefan-therp)
review: Approve - Alexandre Fayolle - camptocamp (alexandre-fayolle-c2c)
review: Approve - Guewen Baconnier @ Camptocamp (gbaconnier-c2c)
review: Approve - Ronald Portier (Therp) (rportier1962)
------------------------------------------------------------
revno: 161 [merge]
author: Stefan Rijnhart <stefan@xxxxxxxx>
committer: Guewen Baconnier <guewen.baconnier@xxxxxxxxxxxxxx>
branch nick: banking-addons
timestamp: Mon 2013-02-18 08:54:39 +0100
message:
[FIX] Multi-company safe partner search
modified:
account_banking/banking_import_transaction.py
account_banking/wizard/banktools.py
--
lp:banking-addons
https://code.launchpad.net/~banking-addons-team/banking-addons/6.1
Your team CLEARCORP development team is subscribed to branch lp:banking-addons.
To unsubscribe from this branch go to https://code.launchpad.net/~banking-addons-team/banking-addons/6.1/+edit-subscription
=== modified file 'account_banking/banking_import_transaction.py'
--- account_banking/banking_import_transaction.py 2012-12-18 14:42:08 +0000
+++ account_banking/banking_import_transaction.py 2013-02-07 09:56:06 +0000
@@ -1314,8 +1314,7 @@
transaction.remote_owner_address,
transaction.remote_owner_postalcode,
transaction.remote_owner_city,
- country_code, results['log']
- )
+ country_code, results['log'], context=context)
if transaction.remote_account:
partner_bank_id = create_bank_account(
self.pool, cr, uid, partner_id,
=== modified file 'account_banking/wizard/banktools.py'
--- account_banking/wizard/banktools.py 2012-12-18 14:41:15 +0000
+++ account_banking/wizard/banktools.py 2013-02-07 09:38:41 +0000
@@ -19,14 +19,11 @@
#
##############################################################################
-import sys
import datetime
-import re
from tools.translate import _
from account_banking.parsers import convert
from account_banking import sepa
from account_banking.struct import struct
-import unicodedata
__all__ = [
'get_period',
@@ -121,71 +118,67 @@
except KeyError:
return False
-def get_or_create_partner(pool, cursor, uid, name, address, postal_code, city,
- country_code, log):
+def get_or_create_partner(pool, cr, uid, name, address, postal_code, city,
+ country_code, log, context=None):
'''
Get or create the partner belonging to the account holders name <name>
If multiple partners are found with the same name, select the first and
add a warning to the import log.
+
+ TODO: revive the search by lines from the address argument
'''
partner_obj = pool.get('res.partner')
- partner_ids = partner_obj.search(cursor, uid, [('name', 'ilike', name)])
+ partner_ids = partner_obj.search(cr, uid, [('name', 'ilike', name)],
+ context=context)
+ country_id = False
if not partner_ids:
# Try brute search on address and then match reverse
- address_obj = pool.get('res.partner.address')
- filter = [('partner_id', '<>', None)]
+ criteria = []
if country_code:
country_obj = pool.get('res.country')
country_ids = country_obj.search(
- cursor, uid, [('code','=',country_code.upper())]
- )
+ cr, uid, [('code', '=', country_code.upper())],
+ context=context)
country_id = country_ids and country_ids[0] or False
- filter.append(('country_id', '=', country_id))
- # disable for now. Apparently, address is an array of lines.
- if address and False:
- if len(address) >= 1:
- filter.append(('street', 'ilike', address[0]))
- if len(address) > 1:
- filter.append(('street2', 'ilike', address[1]))
+ criteria.append(('address.country_id', '=', country_id))
if city:
- filter.append(('city', 'ilike', city))
+ criteria.append(('address.city', 'ilike', city))
if postal_code:
- filter.append(('zip', 'ilike', postal_code))
- address_ids = address_obj.search(cursor, uid, filter)
+ criteria.append(('address.zip', 'ilike', postal_code))
+ partner_search_ids = partner_obj.search(
+ cr, uid, criteria, context=context)
key = name.lower()
-
- # Make sure to get a unique list
- partner_ids = list(set([x.partner_id.id
- for x in address_obj.browse(cursor, uid, address_ids)
- # Beware for dangling addresses
- if _has_attr(x.partner_id, 'name') and
- x.partner_id.name.lower() in key
- ]))
+ partners = []
+ for partner in partner_obj.read(
+ cr, uid, partner_search_ids, ['name'], context=context):
+ if (len(partner['name']) > 3 and partner['name'].lower() in key):
+ partners.append(partner)
+ partners.sort(key=lambda x: len(x['name']), reverse=True)
+ partner_ids = [x['id'] for x in partners]
if not partner_ids:
- if (not country_code) or not country_id:
- user = pool.get('res.user').browse(cursor, uid, uid)
+ if not country_id:
+ user = pool.get('res.user').browse(cr, uid, uid, context=context)
country_id = (
user.company_id.partner_id.country and
user.company_id.partner_id.country.id or
False
)
- partner_id = partner_obj.create(cursor, uid, dict(
- name=name, active=True, comment='Generated from Bank Statements Import',
+ partner_id = partner_obj.create(cr, uid, dict(
+ name=name, active=True,
+ comment='Generated from Bank Statements Import',
address=[(0,0,{
'street': address and address[0] or '',
'street2': len(address) > 1 and address[1] or '',
'city': city,
'zip': postal_code or '',
'country_id': country_id,
- })],
- ))
+ })]), context=context)
else:
if len(partner_ids) > 1:
log.append(
- _('More than one possible match found for partner with name %(name)s')
- % {'name': name}
- )
+ _('More than one possible match found for partner with '
+ 'name %(name)s') % {'name': name})
partner_id = partner_ids[0]
return partner_id