diff --git a/addons/caldav/caldav_node.py b/addons/caldav/caldav_node.py index 1f5a2352b5f..64ee27b751a 100644 --- a/addons/caldav/caldav_node.py +++ b/addons/caldav/caldav_node.py @@ -64,6 +64,9 @@ class node_calendar(object): def _get_ttag(self,cr): return 'calendar-%d' % self.calendar_id + + def get_dav_eprop(self,cr,ns,prop): + return None class Calendar(osv.osv): _inherit = 'basic.calendar' diff --git a/addons/delivery/__terp__.py b/addons/delivery/__terp__.py index 5897cdb2f99..05e13c0b1aa 100644 --- a/addons/delivery/__terp__.py +++ b/addons/delivery/__terp__.py @@ -30,8 +30,8 @@ 'init_xml': ['delivery_data.xml'], 'update_xml': [ 'security/ir.model.access.csv', - 'delivery_view.xml', - 'delivery_wizard.xml', + 'wizard/delivery_sale_order_view.xml', + 'delivery_view.xml', 'partner_view.xml' ], 'demo_xml': ['delivery_demo.xml'], diff --git a/addons/delivery/delivery_wizard.xml b/addons/delivery/delivery_wizard.xml deleted file mode 100644 index b497e6144d9..00000000000 --- a/addons/delivery/delivery_wizard.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/addons/delivery/wizard/delivery_sale_order.py b/addons/delivery/wizard/delivery_sale_order.py index c7870e43d85..c1896e6d851 100644 --- a/addons/delivery/wizard/delivery_sale_order.py +++ b/addons/delivery/wizard/delivery_sale_order.py @@ -20,77 +20,93 @@ ############################################################################## import time -import wizard import ir -import pooler from tools.translate import _ -from tools.misc import UpdateableStr +from osv import osv, fields -delivery_form = UpdateableStr() +class make_delivery(osv.osv_memory): + _name = "delivery.sale.order" + _description = 'Make Delievery' -delivery_fields = { - 'carrier_id' : {'string':'Delivery Method', 'type':'many2one', 'relation': 'delivery.carrier','required':True} -} - -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] - delivery_form.string=""" -
- - - - """ % (data['id'],) - - - 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} - -def _delivery_set(self, cr, uid, data, context): - order_obj = pooler.get_pool(cr.dbname).get('sale.order') - line_obj = pooler.get_pool(cr.dbname).get('sale.order.line') - order_objs = order_obj.browse(cr, uid, data['ids'], context) - - for order in order_objs: - grid_id = pooler.get_pool(cr.dbname).get('delivery.carrier').grid_get(cr, uid, [data['form']['carrier_id']],order.partner_shipping_id.id) - if not grid_id: - raise wizard.except_wizard(_('No grid avaible !'), _('No grid matching for this carrier !')) - grid_obj=pooler.get_pool(cr.dbname).get('delivery.grid') - grid = grid_obj.browse(cr, uid, [grid_id])[0] - - taxes = grid.carrier_id.product_id.taxes_id - fpos = order.fiscal_position or False - taxes_ids = pooler.get_pool(cr.dbname).get('account.fiscal.position').map_tax(cr, uid, fpos, taxes) - line_obj.create(cr, uid, { - 'order_id': order.id, - 'name': grid.carrier_id.name, - 'product_uom_qty': 1, - 'product_uom': grid.carrier_id.product_id.uom_id.id, - 'product_id': grid.carrier_id.product_id.id, - 'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context), - 'tax_id': [(6,0,taxes_ids)], - 'type': 'make_to_stock' - }) - - return {} - -class make_delivery(wizard.interface): - states = { - 'init' : { - 'actions' : [_delivery_default], - 'result' : {'type' : 'form', 'arch' : delivery_form, 'fields' : delivery_fields, 'state' : [('end', 'Cancel', 'gtk-cancel'),('delivery', 'Add Delivery Costs', 'gtk-ok') ]} - }, - 'delivery' : { - 'actions' : [_delivery_set], - 'result' : {'type' : 'state', 'state' : 'end'} - }, + _columns = { + 'carrier_id': fields.many2one('delivery.carrier','Delivery Method', required=True), } -make_delivery("delivery.sale.order") + + + def default_get(self, cr, uid, fields, context): + """ + @summary: To get default values for the object. + + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + + @return: A dictionary which of fields with values. + + """ + rec_id = context and context.get('active_id',False) + res = {} + order_obj = self.pool.get('sale.order') + order = order_obj.browse(cr, uid, rec_id) + + if not order.state in ('draft'): + raise osv.except_osv(_('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 + res['carrier_id'] = carrier_id + return res + + def delivery_set(self, cr, uid, ids, context): + """ + @summary: Adds delivery costs to Sale Order Line. + + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param ids: List of IDs selected + @param context: A standard dictionary + + @return: + + """ + rec_ids = context and context.get('active_ids',[]) + order_obj = self.pool.get('sale.order') + line_obj = self.pool.get('sale.order.line') + grid_obj = self.pool.get('delivery.grid') + carrier_obj = self.pool.get('delivery.carrier') + acc_fp_obj = self.pool.get('account.fiscal.position') + order_objs = order_obj.browse(cr, uid, rec_ids, context) + for datas in self.browse(cr, uid, ids): + for order in order_objs: + grid_id = carrier_obj.grid_get(cr, uid, [datas.carrier_id.id],order.partner_shipping_id.id) + if not grid_id: + raise osv.except_osv(_('No grid available !'), _('No grid matching for this carrier !')) + + if not order.state in ('draft'): + raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.')) + + grid = grid_obj.browse(cr, uid, grid_id) + + taxes = grid.carrier_id.product_id.taxes_id + fpos = order.fiscal_position or False + taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes) + line_obj.create(cr, uid, { + 'order_id': order.id, + 'name': grid.carrier_id.name, + 'product_uom_qty': 1, + 'product_uom': grid.carrier_id.product_id.uom_id.id, + 'product_id': grid.carrier_id.product_id.id, + 'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context), + 'tax_id': [(6,0,taxes_ids)], + 'type': 'make_to_stock' + }) + + return {} + +make_delivery() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/delivery/wizard/delivery_sale_order_view.xml b/addons/delivery/wizard/delivery_sale_order_view.xml new file mode 100644 index 00000000000..c2609bc3923 --- /dev/null +++ b/addons/delivery/wizard/delivery_sale_order_view.xml @@ -0,0 +1,36 @@ + + + + + + + + Delivery Costs + delivery.sale.order + form + +
+ + + + +