[IMP] code improvement in delivery

bzr revid: qdp-launchpad@openerp.com-20110610091137-brspfkkk5l1dn1x3
This commit is contained in:
Quentin (OpenERP) 2011-06-10 11:11:37 +02:00
parent 77f68a7e8d
commit b95ff688da
1 changed files with 9 additions and 18 deletions

View File

@ -40,6 +40,7 @@ class delivery_carrier(osv.osv):
currency = order.pricelist_id.currency_id.name or '' currency = order.pricelist_id.currency_id.name or ''
res = [(r['id'], r['name']+' ('+(str(r['price']))+' '+currency+')') for r in self.read(cr, uid, ids, ['name', 'price'], context)] res = [(r['id'], r['name']+' ('+(str(r['price']))+' '+currency+')') for r in self.read(cr, uid, ids, ['name', 'price'], context)]
return res return res
def get_price(self, cr, uid, ids, field_name, arg=None, context=None): def get_price(self, cr, uid, ids, field_name, arg=None, context=None):
res={} res={}
if context is None: if context is None:
@ -58,6 +59,7 @@ class delivery_carrier(osv.osv):
price = 0.0 price = 0.0
res[carrier.id]=price res[carrier.id]=price
return res return res
_columns = { _columns = {
'name': fields.char('Carrier', size=64, required=True), 'name': fields.char('Carrier', size=64, required=True),
'partner_id': fields.many2one('res.partner', 'Carrier Partner', required=True), 'partner_id': fields.many2one('res.partner', 'Carrier Partner', required=True),
@ -74,8 +76,8 @@ class delivery_carrier(osv.osv):
} }
_defaults = { _defaults = {
'active': lambda *args:1, 'active': 1,
'free_if_more_than': lambda *args: False 'free_if_more_than': False,
} }
def grid_get(self, cr, uid, ids, contact_id, context=None): def grid_get(self, cr, uid, ids, contact_id, context=None):
@ -112,12 +114,12 @@ class delivery_carrier(osv.osv):
new_grid_id = grid_pool.create(cr, uid, record_data, context=context) new_grid_id = grid_pool.create(cr, uid, record_data, context=context)
grid_id = [new_grid_id] grid_id = [new_grid_id]
#delete all existing grid lines
grid_lines = [line.id for line in grid_pool.browse(cr, uid, grid_id[0]).line_ids if line.type == 'price']
grid_line_pool.unlink(cr, uid, grid_lines, context=context)
#create the grid lines
if record.free_if_more_than: if record.free_if_more_than:
grid_lines = []
for line in grid_pool.browse(cr, uid, grid_id[0]).line_ids:
if line.type == 'price':
grid_lines.append(line.id)
grid_line_pool.unlink(cr, uid, grid_lines, context=context)
data = { data = {
'grid_id': grid_id and grid_id[0], 'grid_id': grid_id and grid_id[0],
'name': _('Free if more than %d') % record.amount, 'name': _('Free if more than %d') % record.amount,
@ -128,12 +130,6 @@ class delivery_carrier(osv.osv):
'list_price': 0.0, 'list_price': 0.0,
} }
grid_line_pool.create(cr, uid, data, context=context) grid_line_pool.create(cr, uid, data, context=context)
else:
_lines = []
for line in grid_pool.browse(cr, uid, grid_id[0], context=context).line_ids:
if line.type == 'price':
_lines.append(line.id)
grid_line_pool.unlink(cr, uid, _lines, context=context)
if record.normal_price: if record.normal_price:
default_data = { default_data = {
@ -146,19 +142,14 @@ class delivery_carrier(osv.osv):
'list_price': record.normal_price, 'list_price': record.normal_price,
} }
grid_line_pool.create(cr, uid, default_data, context=context) grid_line_pool.create(cr, uid, default_data, context=context)
return True return True
def write(self, cr, uid, ids, vals, context=None): def write(self, cr, uid, ids, vals, context=None):
if context == None:
context = {}
res_id = super(delivery_carrier, self).write(cr, uid, ids, vals, context=context) res_id = super(delivery_carrier, self).write(cr, uid, ids, vals, context=context)
self.create_grid_lines(cr, uid, ids, vals, context=context) self.create_grid_lines(cr, uid, ids, vals, context=context)
return res_id return res_id
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
if context == None:
context = {}
res_id = super(delivery_carrier, self).create(cr, uid, vals, context=context) res_id = super(delivery_carrier, self).create(cr, uid, vals, context=context)
self.create_grid_lines(cr, uid, [res_id], vals, context=context) self.create_grid_lines(cr, uid, [res_id], vals, context=context)
return res_id return res_id