From 3856cba709e9a9d3e77a014e6779d0e005ebc854 Mon Sep 17 00:00:00 2001 From: "atp (Open ERP)" Date: Mon, 15 Mar 2010 19:23:41 +0530 Subject: [PATCH] [IMP]: delivery: Converted wizards to osv_memory wizards bzr revid: atp@tinyerp.co.in-20100315135341-rp86g0cna380b2ef --- addons/delivery/__terp__.py | 1 + addons/delivery/delivery_wizard.xml | 2 +- addons/delivery/wizard/delivery_sale_order.py | 123 ++++++++---------- .../wizard/delivery_sale_order_view.xml | 38 ++++++ 4 files changed, 97 insertions(+), 67 deletions(-) create mode 100644 addons/delivery/wizard/delivery_sale_order_view.xml diff --git a/addons/delivery/__terp__.py b/addons/delivery/__terp__.py index 5897cdb2f99..fcceebe1560 100644 --- a/addons/delivery/__terp__.py +++ b/addons/delivery/__terp__.py @@ -30,6 +30,7 @@ 'init_xml': ['delivery_data.xml'], 'update_xml': [ 'security/ir.model.access.csv', + 'wizard/delivery_sale_order_view.xml', 'delivery_view.xml', 'delivery_wizard.xml', 'partner_view.xml' diff --git a/addons/delivery/delivery_wizard.xml b/addons/delivery/delivery_wizard.xml index b497e6144d9..69f20aa6498 100644 --- a/addons/delivery/delivery_wizard.xml +++ b/addons/delivery/delivery_wizard.xml @@ -2,7 +2,7 @@ - + diff --git a/addons/delivery/wizard/delivery_sale_order.py b/addons/delivery/wizard/delivery_sale_order.py index c7870e43d85..d483d642a6d 100644 --- a/addons/delivery/wizard/delivery_sale_order.py +++ b/addons/delivery/wizard/delivery_sale_order.py @@ -19,78 +19,69 @@ # ############################################################################## -import time -import wizard -import ir -import pooler +from osv import fields, osv from tools.translate import _ +import time -from tools.misc import UpdateableStr +class delivery_sale_order(osv.osv_memory): + """ + Sale order Delivery. + """ + def _delivery_default(self, cr, uid, context): + """ + Get Default value for carrier_id field. + """ + order_obj = self.pool.get('sale.order') + order = order_obj.browse(cr, uid, context['active_ids'])[0] + 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 + return carrier_id -delivery_form = UpdateableStr() + def delivery_set(self, cr, uid, ids, context): + """ + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of delivery set order’s IDs + @return: dictionary {}. + """ + for data in self.read(cr, uid, ids): + order_obj = self.pool.get('sale.order') + line_obj = self.pool.get('sale.order.line') + order_objs = order_obj.browse(cr, uid, context['active_ids'], context) -delivery_fields = { - 'carrier_id' : {'string':'Delivery Method', 'type':'many2one', 'relation': 'delivery.carrier','required':True} -} + for order in order_objs: + grid_id = self.pool.get('delivery.carrier').grid_get(cr, uid, [data['carrier_id']], order.partner_shipping_id.id) + if not grid_id: + raise osv.except_osv(_('No grid avaible !'), _('No grid matching for this carrier !')) + grid_obj = self.pool.get('delivery.grid') + grid = grid_obj.browse(cr, uid, [grid_id])[0] -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'],) + taxes = grid.carrier_id.product_id.taxes_id + fpos = order.fiscal_position or False + taxes_ids = self.pool.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 {} - - 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'} - }, - } -make_delivery("delivery.sale.order") + _name = "delivery.sale.order" + _description = "Delivery sale order" + _columns = { + 'carrier_id':fields.many2one('delivery.carrier', 'Delivery Method', required=True, ondelete='cascade'), + } + _defaults = { + 'carrier_id':_delivery_default + } + +delivery_sale_order() # 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..9e3ab13a329 --- /dev/null +++ b/addons/delivery/wizard/delivery_sale_order_view.xml @@ -0,0 +1,38 @@ + + + + + delivery.sale.order.form + delivery.sale.order + form + +
+ + + + + + +