diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml
index fdef01e2ef2..22ed5ef6eab 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 @@
+
@@ -230,7 +236,8 @@
-
+
+
@@ -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..49d0364086b 100644
--- a/addons/delivery/stock.py
+++ b/addons/delivery/stock.py
@@ -32,10 +32,19 @@ 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,
+ }
+
+ total_weight
+
return res
@@ -48,7 +57,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,7 +142,7 @@ 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
@@ -136,14 +150,27 @@ class stock_move(osv.osv):
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, 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),
+ 'stock.move': (lambda self, cr, uid, ids, c={}: ids, ['product_id', 'product_qty', 'product_uom'], 10),
}),
+ 'weight_net': fields.function(_cal_move_weight, method=True, 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'], 10),
+ }),
+
}
stock_move()