[FIX]get & set odometer for fleet.vehicle object

bzr revid: dle@openerp.com-20121005143559-w3darxs5gzcrx492
This commit is contained in:
Denis Ledoux dle@openerp.com 2012-10-05 16:35:59 +02:00
parent 42bb06029a
commit abfc2c8e43
2 changed files with 41 additions and 20 deletions

View File

@ -249,26 +249,32 @@ class fleet_vehicle(osv.Model):
'default_vehicle_id': ids[0]
}
res['domain']=[('vehicle_id','=', ids[0])]
return res
def get_odometer(self, cr, uid, ids, context=None):
if context is None:
context = {}
if not ids:
return []
reads = self.browse(cr, uid, ids, context=context)
res = []
for record in reads:
#odometers = self.pool.get('fleet.vehicle.odometer').search(cr,uid,[('vehicle_id','=',record.id)], order='value desc')
#if len(odometers) > 0:
# res.append((record.id,self.pool.get('fleet.vehicle.odometer').browse(cr, uid, odometers[0], context=context).value))
#else :
res.append((record.id,0))
return res
def _vehicle_odometer_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
res = self.get_odometer(cr, uid, ids, context=context)
return dict(res)
def _get_odometer(self, cr, uid, ids, odometer_id, arg, context):
res = dict.fromkeys(ids, False)
for record in self.browse(cr,uid,ids,context=context):
ids = self.pool.get('fleet.vehicle.odometer').search(cr,uid,[('vehicle_id','=',record.id)],limit=1, order='value desc')
if len(ids) > 0:
res[record.id] = str(self.pool.get('fleet.vehicle.odometer').browse(cr,uid,ids[0],context=context).value)
else:
res[record.id] = str(0)
return res
def _set_odometer(self, cr, uid, id, name, value, args=None, context=None):
if value:
try:
value = float(value)
except ValueError:
#_logger.exception(value+' is not a correct odometer value. Please, fill a float for this field')
raise except_orm(_('Error!'), value+' is not a correct odometer value. Please, fill a float for this field')
date = time.strftime('%Y-%m-%d')
data = {'value' : value,'date' : date,'vehicle_id' : id}
odometer_id = self.pool.get('fleet.vehicle.odometer').create(cr, uid, data, context=context)
return value
self.write(cr, uid, id, {'odometer_id': ''})
return False
def str_to_date(self,strdate):
return datetime.datetime(int(strdate[:4]),int(strdate[5:7]),int(strdate[8:]))
@ -342,7 +348,6 @@ class fleet_vehicle(osv.Model):
nexts = self.get_next_contract_reminder_fnc(cr,uid,ids,context=context)
overdues = self.get_overdue_contract_reminder_fnc(cr,uid,ids,context=context)
for key,value in nexts.items():
print str(key) + ' : ' + str(value)
if value > 0 and overdues[key] > 0:
self.message_post(cr, uid, [key], body=str(value) + ' contract(s) has to be renewed soon and '+str(overdues[key])+' contract(s) is (are) overdued', context=context)
elif value > 0:
@ -373,7 +378,7 @@ class fleet_vehicle(osv.Model):
'doors' : fields.integer('Doors Number', help='Number of doors of the vehicle'),
'tag_ids' :fields.many2many('fleet.vehicle.tag','fleet_vehicle_vehicle_tag_rel','vehicle_tag_id','tag_id','Tags'),
'odometer' : fields.function(_vehicle_odometer_get_fnc, type="float", string='Odometer', store=False),
'odometer' : fields.function(_get_odometer,fnct_inv=_set_odometer,type='char',string='Odometer Value',store=False,help='Odometer measure of the vehicle at the moment of this log'),
'odometer_unit': fields.selection([('kilometers', 'Kilometers'),('miles','Miles')], 'Odometer Unit', help='Unit of the odometer ',required=False),
'transmission' : fields.selection([('manual', 'Manual'),('automatic','Automatic')], 'Transmission', help='Transmission Used by the vehicle',required=False),

View File

@ -504,6 +504,21 @@
</tree>
</field>
</record>
<!--
<record model='ir.ui.view' id='fleet_vehicle_odometer_search'>
<field name="name">fleet.vehicle.odometer.search</field>
<field name="model">fleet.vehicle.odometer</field>
<field name="arch" type="xml">
<search string="Vehicles odometers" >
<field name="vehicle_id" />
<field name="value"/>
<field name="unit"/>
<field name="date"/>
<filter name="groupby_vehicle" context="{'group_by' : 'vehicle_id'}" string="Vehicle"/>
</search>
</field>
</record>
-->
<record model="ir.ui.view" id="fleet_vehicle_odometer_graph">
<field name="name">fleet.vehicle.odometer.graph</field>
@ -523,6 +538,7 @@
<field name="res_model">fleet.vehicle.odometer</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="context">{"search_default_groupby_vehicle" : True}</field>
<field name="help" type="html">
<p>
Here you can add various odometer entries for all vehicles.