From d416492259f08cff03004e8679bf63afde260ab2 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Wed, 18 Feb 2015 18:24:03 +0100 Subject: [PATCH] [IMP] To determine the invoice we put extra moves in, it is better to take the values from the sale order / purchase order if we can find it through the picking [IMP] Add comments [IMP] Simplify code --- addons/purchase/stock.py | 8 +++++++- addons/sale_stock/sale_stock.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 2b415f0115f..c4d3ffe4b65 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -89,7 +89,13 @@ class stock_move(osv.osv): if 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 - else: + elif 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: + purchase_order = purchase_move.purchase_line_id.order_id + return purchase_order.partner_id, purchase_order.create_uid.id, purchase_order.currency_id.id + partner = move.picking_id and move.picking_id.partner_id or False code = self.get_code_from_locs(cr, uid, move, context=context) if partner and partner.property_product_pricelist_purchase and code == 'incoming': diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py index b6250abdfe8..cbac47c8e59 100644 --- a/addons/sale_stock/sale_stock.py +++ b/addons/sale_stock/sale_stock.py @@ -381,6 +381,10 @@ class stock_move(osv.osv): if 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: + # In case of extra move, it is better to use the same data as the original moves + sale_order = move.picking_id.sale_id + return sale_order.partner_invoice_id, sale_order.user_id.id, sale_order.pricelist_id.currency_id.id return super(stock_move, self)._get_master_data(cr, uid, move, company, context=context) def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):