diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index fdef01e2ef2..0955174b209 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -144,6 +144,7 @@ + @@ -156,6 +157,7 @@ + @@ -168,6 +170,7 @@ + @@ -183,6 +186,7 @@ + @@ -207,6 +211,7 @@ + @@ -219,6 +224,7 @@ + @@ -231,6 +237,7 @@ + @@ -243,6 +250,7 @@ + @@ -255,6 +263,7 @@ + @@ -267,6 +276,7 @@ + diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py index 76897d46e58..c9fd50986f7 100644 --- a/addons/delivery/stock.py +++ b/addons/delivery/stock.py @@ -32,10 +32,16 @@ class stock_picking(osv.osv): res = {} uom_obj = self.pool.get('product.uom') for picking in self.browse(cr, uid, ids, context): - total_weight = 0.00 + total_weight = total_weight_net = 0.00 + for move in picking.move_lines: total_weight += move.weight - res[picking.id] = total_weight + total_weight_net += move.weight_net + + res[picking.id] = { + 'weight': total_weight, + 'weight_net': total_weight_net, + } return res @@ -48,7 +54,12 @@ class stock_picking(osv.osv): _columns = { 'carrier_id':fields.many2one("delivery.carrier","Carrier"), 'volume': fields.float('Volume'), - 'weight': fields.function(_cal_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), + 'weight': fields.function(_cal_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight', + store={ + 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20), + 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20), + }), + 'weight_net': fields.function(_cal_weight, method=True, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight', store={ 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20), 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20), @@ -128,22 +139,34 @@ class stock_move(osv.osv): res = {} uom_obj = self.pool.get('product.uom') for move in self.browse(cr, uid, ids, context): - weight = 0.00 + weight = weight_net = 0.00 if move.product_id.weight > 0.00: converted_qty = move.product_qty - + if move.product_uom.id <> move.product_id.uom_id.id: converted_qty = uom_obj._compute_qty(cr, uid, move.product_uom.id, move.product_qty, move.product_id.uom_id.id) weight = (converted_qty * move.product_id.weight) - res[move.id] = weight + + if move.product_id.weight_net > 0.00: + weight_net = (converted_qty * move.product_id.weight_net) + + res[move.id] = { + 'weight': weight, + 'weight_net': weight_net, + } return res - + _columns = { - 'weight': fields.function(_cal_move_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), + 'weight': fields.function(_cal_move_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight', store={ 'stock.move': (lambda self, cr, uid, ids, c={}: ids, ['product_id', 'product_qty', 'product_uom'], 20), }), + 'weight_net': fields.function(_cal_move_weight, method=True, type='float', string='Net weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight', + store={ + 'stock.move': (lambda self, cr, uid, ids, c={}: ids, ['product_id', 'product_qty', 'product_uom'], 20), + }), + } stock_move()