From 1beb4db6c0e8c80f36817c35397d97cfeec914bf Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Fri, 22 May 2015 16:09:55 +0200 Subject: [PATCH] [FIX] purchase, sale_stock: make sure to avoid mixing between in and out invoices When SO/PO invoices are generated on delivery, there might be a mix between sale and purchase data on the invoice. opw-634898 --- addons/purchase/stock.py | 6 +++--- addons/sale_stock/sale_stock.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index ae13925a5c5..b67e24fe40a 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -93,10 +93,10 @@ class stock_move(osv.osv): return invoice_line_id def _get_master_data(self, cr, uid, move, company, context=None): - if move.purchase_line_id: + if context.get('inv_type') in ('in_invoice', 'in_refund') and move.purchase_line_id: purchase_order = move.purchase_line_id.order_id return purchase_order.partner_id, purchase_order.create_uid.id, purchase_order.currency_id.id - elif move.picking_id: + elif context.get('inv_type') in ('in_invoice', 'in_refund') and move.picking_id: # In case of an extra move, it is better to use the data from the original moves for purchase_move in move.picking_id.move_lines: if purchase_move.purchase_line_id: @@ -113,7 +113,7 @@ class stock_move(osv.osv): def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None): res = super(stock_move, self)._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context) - if move.purchase_line_id: + if inv_type in ('in_invoice', 'in_refund') and move.purchase_line_id: purchase_line = move.purchase_line_id res['invoice_line_tax_id'] = [(6, 0, [x.id for x in purchase_line.taxes_id])] res['price_unit'] = purchase_line.price_unit diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py index d4342c36dab..48f11ed316e 100644 --- a/addons/sale_stock/sale_stock.py +++ b/addons/sale_stock/sale_stock.py @@ -368,7 +368,7 @@ class stock_move(osv.osv): def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None): invoice_line_id = super(stock_move, self)._create_invoice_line_from_vals(cr, uid, move, invoice_line_vals, context=context) - if move.procurement_id and move.procurement_id.sale_line_id: + if context.get('inv_type') in ('out_invoice', 'out_refund') and move.procurement_id and move.procurement_id.sale_line_id: sale_line = move.procurement_id.sale_line_id self.pool.get('sale.order.line').write(cr, uid, [sale_line.id], { 'invoice_lines': [(4, invoice_line_id)] @@ -386,7 +386,7 @@ class stock_move(osv.osv): return invoice_line_id def _get_master_data(self, cr, uid, move, company, context=None): - if move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.order_policy == 'picking': + if context.get('inv_type') in ('out_invoice', 'out_refund') and move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.order_policy == 'picking': sale_order = move.procurement_id.sale_line_id.order_id return sale_order.partner_invoice_id, sale_order.user_id.id, sale_order.pricelist_id.currency_id.id elif move.picking_id.sale_id and context.get('inv_type') in ('out_invoice', 'out_refund'):