diff --git a/account_banking/banking_import_transaction.py b/account_banking/banking_import_transaction.py index 5c0cd1faf..857e3c86a 100644 --- a/account_banking/banking_import_transaction.py +++ b/account_banking/banking_import_transaction.py @@ -72,7 +72,7 @@ class banking_import_transaction(orm.Model): invoice_ids = invoice_obj.search(cr, uid, [ '&', ('type', '=', 'in_invoice'), - ('partner_id', '=', account_info.bank_partner_id.id), + ('partner_id', 'child_of', account_info.bank_partner_id.id), ('company_id', '=', account_info.company_id.id), ('date_invoice', '=', trans.effective_date), ('reference', '=', reference), diff --git a/account_banking/wizard/banking_transaction_wizard.py b/account_banking/wizard/banking_transaction_wizard.py index 255d7979c..00b13cc38 100644 --- a/account_banking/wizard/banking_transaction_wizard.py +++ b/account_banking/wizard/banking_transaction_wizard.py @@ -131,7 +131,7 @@ class banking_transaction_wizard(orm.TransientModel): { 'move_line_id': move_line.id, }, context=context) statement_line_obj.write( cr, uid, wiz.import_transaction_id.statement_line_id.id, - { 'partner_id': move_line.invoice.partner_id.id, + { 'partner_id': move_line.partner_id.id or False, 'account_id': move_line.account_id.id, }, context=context) found = True @@ -226,9 +226,9 @@ class banking_transaction_wizard(orm.TransientModel): } if todo_entry[0]: - st_line_vals['partner_id'] = invoice_obj.read( - cr, uid, todo_entry[0], - ['partner_id'], context=context)['partner_id'][0] + st_line_vals['partner_id'] = invoice_obj.browse( + cr, uid, todo_entry[0], context=context + ).partner_id.commercial_partner_id.id statement_line_obj.write( cr, uid, statement_line_id, diff --git a/account_banking/wizard/banktools.py b/account_banking/wizard/banktools.py index 94f0cd70c..0afdfcadf 100644 --- a/account_banking/wizard/banktools.py +++ b/account_banking/wizard/banktools.py @@ -97,8 +97,11 @@ def get_partner(pool, cr, uid, name, address, postal_code, city, TODO: revive the search by lines from the address argument ''' partner_obj = pool.get('res.partner') - partner_ids = partner_obj.search(cr, uid, [('name', 'ilike', name)], - context=context) + partner_ids = partner_obj.search( + cr, uid, [ + '|', ('is_company', '=', True), ('parent_id', '=', False), + ('name', 'ilike', name), + ], context=context) if not partner_ids: # Try brute search on address and then match reverse criteria = [] @@ -118,11 +121,11 @@ def get_partner(pool, cr, uid, name, address, postal_code, city, key = name.lower() partners = [] for partner in partner_obj.read( - cr, uid, partner_search_ids, ['name'], context=context): + cr, uid, partner_search_ids, ['name', 'commercial_partner_id'], 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] + partner_ids = [x['commercial_partner_id'][0] for x in partners] if len(partner_ids) > 1: log.append( _('More than one possible match found for partner with ' diff --git a/account_banking/wizard/link_partner.py b/account_banking/wizard/link_partner.py index fc4f83acd..903d6a16c 100644 --- a/account_banking/wizard/link_partner.py +++ b/account_banking/wizard/link_partner.py @@ -34,7 +34,10 @@ class link_partner(orm.TransientModel): 'supplier': fields.boolean('Supplier'), 'customer': fields.boolean('Customer'), 'partner_id': fields.many2one( - 'res.partner', 'or link existing partner'), + 'res.partner', 'or link existing partner', + domain=['|', ('is_company', '=', True), + ('partner_id', '=', False)], + ), 'statement_line_id': fields.many2one( 'account.bank.statement.line', 'Statement line', required=True),