From 0c7c47db187c5d054140d82907200cead8a6ce91 Mon Sep 17 00:00:00 2001 From: Renato Lima Date: Fri, 3 Sep 2010 19:38:14 -0300 Subject: [PATCH] Added in delivery module new field net weight in stock.move and stock.picking, because in some delivery documents you need specific the gross weight and net weight. Update methods calculate using multi parameter bzr revid: renato@renato-laptop-20100903223814-w22ajtb2dvoazn2p --- addons/delivery/delivery_view.xml | 12 ++++++++- addons/delivery/stock.py | 41 +++++++++++++++++++++++++------ 2 files changed, 45 insertions(+), 8 deletions(-) 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()