From a722db2cc744783d3f400880b020eee130b1983b Mon Sep 17 00:00:00 2001 From: "ksa (Open ERP)" Date: Tue, 4 Jan 2011 16:00:48 +0530 Subject: [PATCH] [IMP]:bug 690700 Wrong Partner used when invoicing from picking coming from a puchase with sent_to_address bzr revid: ksa@tinyerp.co.in-20110104103048-2gwkh19mmac5e9y6 --- addons/purchase/stock.py | 13 +++++++++++++ addons/sale/stock.py | 13 +++++++++++++ addons/stock/stock.py | 7 ++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 0d82baa96aa..4fc154a3de8 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -58,6 +58,19 @@ class stock_picking(osv.osv): 'purchase_id': False, } + def _get_address_invoice(self, cr, uid, picking): + """ Gets invoice address of a partner + @return {'contact': address, 'invoice': address} for invoice + """ + res = super(stock_picking, self)._get_address_invoice(cr, uid, picking) + if picking.purchase_id: + partner_obj = self.pool.get('res.partner') + partner = (picking.purchase_id and picking.purchase_id.partner_id) or picking.address_id.partner_id + data = partner_obj.address_get(cr, uid, [partner.id], + ['contact', 'invoice']) + res.update(data) + return res + def get_currency_id(self, cursor, user, picking): if picking.purchase_id: return picking.purchase_id.pricelist_id.currency_id.id diff --git a/addons/sale/stock.py b/addons/sale/stock.py index f7c5d81ae57..573f019274c 100644 --- a/addons/sale/stock.py +++ b/addons/sale/stock.py @@ -43,6 +43,19 @@ class stock_picking(osv.osv): 'sale_id': False } + def _get_address_invoice(self, cr, uid, picking): + """ Gets invoice address of a partner + @return {'contact': address, 'invoice': address} for invoice + """ + res = super(stock_picking, self)._get_address_invoice(cr, uid, picking) + if picking.sale_id: + partner_obj = self.pool.get('res.partner') + partner = (picking.sale_id and picking.sale_id.partner_id) or picking.address_id.partner_id + data = partner_obj.address_get(cr, uid, [partner.id], + ['contact', 'invoice']) + res.update(data) + return res + def get_currency_id(self, cursor, user, picking): if picking.sale_id: return picking.sale_id.pricelist_id.currency_id.id diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 97d5f9a0270..3e24886cf69 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -874,8 +874,7 @@ class stock_picking(osv.osv): @return {'contact': address, 'invoice': address} for invoice """ partner_obj = self.pool.get('res.partner') - partner = (picking.purchase_id and picking.purchase_id.partner_id) or (picking.sale_id and picking.sale_id.partner_id) or picking.address_id.partner_id - + partner = picking.address_id.partner_id return partner_obj.address_get(cr, uid, [partner.id], ['contact', 'invoice']) @@ -970,6 +969,7 @@ class stock_picking(osv.osv): invoice_obj = self.pool.get('account.invoice') invoice_line_obj = self.pool.get('account.invoice.line') + address_obj = self.pool.get('res.partner.address') invoices_group = {} res = {} inv_type = type @@ -993,6 +993,7 @@ class stock_picking(osv.osv): address_contact_id, address_invoice_id = \ self._get_address_invoice(cr, uid, picking).values() + partner_id = address_obj.browse(cr, uid, address_contact_id) comment = self._get_comment_invoice(cr, uid, picking) if group and partner.id in invoices_group: @@ -1012,7 +1013,7 @@ class stock_picking(osv.osv): 'origin': (picking.name or '') + (picking.origin and (':' + picking.origin) or ''), 'type': inv_type, 'account_id': account_id, - 'partner_id': partner.id, + 'partner_id': partner_id.partner_id.id, 'address_invoice_id': address_invoice_id, 'address_contact_id': address_contact_id, 'comment': comment,