diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index a269f66d525..75cb99c0325 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -119,12 +119,33 @@ class stock_partial_picking(osv.osv_memory): for pick in pick_obj.browse(cr, uid, context.get('active_ids', [])): for m in pick.move_lines: if (m.product_id.cost_method == 'average'): - if pick.type == 'in' and pick.purchase_id: - if m.sale_line_id: - res['move%s_product_price'%(m.id)] = m.purchase_line_id.price_unit - if pick.sale_id: - res['move%s_product_currency'%(m.id)] = pick.purchase_line_id.pricelist_id.currency_id.id + if pick.type == 'in' and m.purchase_line_id: + res['move%s_product_price'%(m.id)] = m.purchase_line_id.price_unit + if pick.purchase_id: + res['move%s_product_currency'%(m.id)] = pick.purchase_line_id.pricelist_id.currency_id.id return res -stock_partial_picking() +stock_partial_picking() + +class stock_partial_move(osv.osv_memory): + _inherit = "stock.partial.move" + def default_get(self, cr, uid, fields, context=None): + """ To get default values for the object. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + @return: A dictionary which of fields with values. + """ + res = super(stock_partial_move, self).default_get(cr, uid, fields, context=context) + move_obj = self.pool.get('stock.move') + for m in move_obj.browse(cr, uid, context.get('active_ids', [])): + if (m.product_id.cost_method == 'average'): + if m.picking_id.type == 'out' and m.purchase_line_id: + res['move%s_product_price'%(m.id)] = m.purchase_line_id.price_unit + if m.picking_id.purchase_id: + res['move%s_product_currency'%(m.id)] = m.picking_id.purchase_id.pricelist_id.currency_id.id + return res +stock_partial_move() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/stock.py b/addons/sale/stock.py index 1d53b8b8754..ed9a6098386 100644 --- a/addons/sale/stock.py +++ b/addons/sale/stock.py @@ -232,5 +232,27 @@ class stock_partial_picking(osv.osv_memory): if pick.sale_id: res['move%s_product_currency'%(m.id)] = pick.sale_id.pricelist_id.currency_id.id return res -stock_partial_picking() +stock_partial_picking() + +class stock_partial_move(osv.osv_memory): + _inherit = "stock.partial.move" + def default_get(self, cr, uid, fields, context=None): + """ To get default values for the object. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + @return: A dictionary which of fields with values. + """ + res = super(stock_partial_move, self).default_get(cr, uid, fields, context=context) + move_obj = self.pool.get('stock.move') + for m in move_obj.browse(cr, uid, context.get('active_ids', [])): + if (m.product_id.cost_method == 'average'): + if m.picking_id.type == 'in' and m.sale_id: + res['move%s_product_price'%(m.id)] = m.sale_line_id.price_unit + if m.picking_id.sale_id: + res['move%s_product_currency'%(m.id)] = m.picking_id.sale_id.pricelist_id.currency_id.id or False + return res +stock_partial_move() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py index 17515f86252..d0cb04cba08 100644 --- a/addons/stock/wizard/stock_partial_move.py +++ b/addons/stock/wizard/stock_partial_move.py @@ -164,29 +164,9 @@ class stock_partial_move(osv.osv_memory): res['move%s_product_qty'%(m.id)] = m.product_qty if 'move%s_product_uom'%(m.id) in fields: res['move%s_product_uom'%(m.id)] = m.product_uom.id - if (m.picking_id.type == 'out') and (m.product_id.cost_method == 'average') and 'sale_id' in m.picking_id._columns.keys(): - price = 0 - if hasattr(m, 'sale_line_id') and m.sale_line_id: - price = m.sale_line_id.price_unit - + if m.product_id.cost_method == 'average' : + price = m.product_id.standard_price currency = False - if hasattr(m.picking_id, 'sale_id') and m.picking_id.sale_id: - currency = m.picking_id.sale_id.pricelist_id.currency_id.id - - if 'move%s_product_price'%(m.id) in fields: - res['move%s_product_price'%(m.id)] = price - if 'move%s_product_currency'%(m.id) in fields: - res['move%s_product_currency'%(m.id)] = currency - - if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average') and 'purchase_id' in m.picking_id._columns.keys(): - price = 0 - if hasattr(m, 'purchase_line_id') and m.purchase_line_id: - price = m.purchase_line_id.price_unit - - currency = False - if hasattr(m.picking_id, 'purchase_id') and m.picking_id.purchase_id: - currency = m.picking_id.purchase_id.pricelist_id.currency_id.id - if 'move%s_product_price'%(m.id) in fields: res['move%s_product_price'%(m.id)] = price if 'move%s_product_currency'%(m.id) in fields: