From 4f1a35dd18f077855b2654c055a245393bc7ee2b Mon Sep 17 00:00:00 2001 From: Harshad Modi Date: Sat, 20 Sep 2008 14:20:20 +0530 Subject: [PATCH] * see the price if we select carrier from a sale order (wizard add delivery, or form in second tab) : for that pass active order id in context bzr revid: hmo@tinyerp.com-20080920085020-d6bxrk5ogjfc0wny --- addons/delivery/delivery.py | 29 +++++++++++++++---- addons/delivery/delivery_view.xml | 5 ++-- addons/delivery/wizard/delivery_sale_order.py | 4 ++- addons/sale/sale_view.xml | 1 + 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py index da4bd854b10..8be5887eb2b 100644 --- a/addons/delivery/delivery.py +++ b/addons/delivery/delivery.py @@ -27,7 +27,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## - +import time import netsvc from osv import fields,osv,orm from tools.translate import _ @@ -35,11 +35,32 @@ from tools.translate import _ class delivery_carrier(osv.osv): _name = "delivery.carrier" _description = "Carrier and delivery grids" + + def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False): + res = super(delivery_carrier,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar) + if not context.get('order_id',False) and view_type=='tree': + res['fields']['price'].update({'invisible':"True"}) + return res + + def get_price(self, cr, uid, ids, field_name, arg=None, context={}): + res={} + sale_obj=self.pool.get('sale.order') + grid_obj=self.pool.get('delivery.grid') + for carrier in self.browse(cr,uid,ids,context): + order_id=context.get('order_id',False) + price=False + if order_id: + order = sale_obj.browse(cr, uid, [order_id])[0] + carrier_grid=self.grid_get(cr,uid,[carrier.id],order.partner_shipping_id.id,context) + price=grid_obj.get_price(cr, uid, carrier_grid, order, time.strftime('%Y-%m-%d'), context) + res[carrier.id]=price + return res _columns = { 'name': fields.char('Carrier', size=64, required=True), 'partner_id': fields.many2one('res.partner', 'Carrier Partner', required=True), 'product_id': fields.many2one('product.product', 'Delivery Product', required=True), 'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'), + 'price' : fields.function(get_price, method=True,string='Price'), 'active': fields.boolean('Active') } _defaults = { @@ -89,9 +110,8 @@ class delivery_grid(osv.osv): total = 0 weight = 0 - volume = 0 - - for line in order.order_line: + volume = 0 + for line in order.order_line: if not line.product_id: continue total += line.price_subtotal or 0.0 @@ -151,6 +171,5 @@ class delivery_grid_line(osv.osv): delivery_grid_line() - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index 282c33b8921..5de932018a4 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -12,6 +12,7 @@ + @@ -125,7 +126,7 @@ - + @@ -176,7 +177,7 @@ stock.picking ir.actions.act_window form - tree,form + tree,form [('invoice_state','=','2binvoiced'),('state','=','done'),('type','=','out')] diff --git a/addons/delivery/wizard/delivery_sale_order.py b/addons/delivery/wizard/delivery_sale_order.py index 4a8dcaa6d38..8dbf7b8f658 100644 --- a/addons/delivery/wizard/delivery_sale_order.py +++ b/addons/delivery/wizard/delivery_sale_order.py @@ -37,7 +37,7 @@ from tools.translate import _ delivery_form = """
- + """ @@ -48,9 +48,11 @@ delivery_fields = { def _delivery_default(self, cr, uid, data, context): order_obj = pooler.get_pool(cr.dbname).get('sale.order') order = order_obj.browse(cr, uid, data['ids'])[0] + if not order.state in ('draft'): raise wizard.except_wizard(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.')) + carrier_id = order.partner_id.property_delivery_carrier.id return {'carrier_id': carrier_id} diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index d4b6f973de8..68cf27bddf5 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -231,6 +231,7 @@ form tree,form,calendar,graph [('user_id','=',uid)] +