* 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
This commit is contained in:
Harshad Modi 2008-09-20 14:20:20 +05:30
parent 6e950e92ed
commit 4f1a35dd18
4 changed files with 31 additions and 8 deletions

View File

@ -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:

View File

@ -12,6 +12,7 @@
<tree string="Carrier">
<field name="name"/>
<field name="partner_id"/>
<field name="price"/>
</tree>
</field>
</record>
@ -125,7 +126,7 @@
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<separator string="Notes" position="before">
<field name="carrier_id"/>
<field name="carrier_id" context="{'order_id':active_id}"/>
</separator>
</field>
</record>
@ -176,7 +177,7 @@
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('invoice_state','=','2binvoiced'),('state','=','done'),('type','=','out')]</field>
</record>
<menuitem action="action_picking_tree4" id="menu_action_picking_tree3" parent="stock.menu_action_picking_tree"/>

View File

@ -37,7 +37,7 @@ from tools.translate import _
delivery_form = """<?xml version="1.0"?>
<form string="Create deliveries">
<separator colspan="4" string="Delivery Method" />
<field name="carrier_id" />
<field name="carrier_id" context="{'order_id':active_id}"/>
</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}

View File

@ -231,6 +231,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem action="action_order_tree" id="menu_action_order_tree" parent="sale.menu_sale_order"/>