* 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:
parent
6e950e92ed
commit
4f1a35dd18
|
@ -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:
|
||||
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
|
@ -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"/>
|
||||
|
||||
|
|
Loading…
Reference in New Issue