Odometer field function for vehicle
authorDenis Ledoux dle@openerp.com <>
Fri, 28 Sep 2012 10:22:11 +0000 (12:22 +0200)
committerDenis Ledoux dle@openerp.com <>
Fri, 28 Sep 2012 10:22:11 +0000 (12:22 +0200)
bzr revid: dle@openerp.com-20120928102211-3els60kev6sv0ah4

addons/fleet/fleet.py
addons/fleet/fleet_view.xml

index cbeab5d..9a2cede 100644 (file)
@@ -120,6 +120,25 @@ class fleet_vehicle(osv.Model):
         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='date 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)
+
     _name = 'fleet.vehicle'
     _description = 'Fleet Vehicle'
 
@@ -142,6 +161,8 @@ class fleet_vehicle(osv.Model):
         'doors' : fields.integer('Doors Number', help='Number of doors of the vehicle'),
         'tag_ids' :fields.many2many('fleet.vehicle.tag','vehicle_vehicle_tag_rel','vehicle_tag_id','tag_id','Tags'),
 
+        'odometer' : fields.function(_vehicle_odometer_get_fnc, type="float", string='Odometer', store=False),
+
         'transmission' : fields.selection([('manual', 'Manual'),('automatic','Automatic')], 'Transmission', help='Transmission Used by the vehicle',required=False),
         'fuel_type' : fields.selection([('gasoline', 'Gasoline'),('diesel','Diesel'),('electric','Electric'),('hybrid','Hybrid')], 'Fuel Type', help='Fuel Used by the vehicle',required=False),
         'horsepower' : fields.integer('Horsepower',required=False),
@@ -206,6 +227,8 @@ class fleet_vehicle_odometer(osv.Model):
     _name='fleet.vehicle.odometer'
     _description='Odometer log for a vehicle'
 
+    _order='date desc'
+
     def name_get(self, cr, uid, ids, context=None):
         if context is None:
             context = {}
index 81bb441..7a48fc9 100644 (file)
                     <header>
                         <field name="state"  widget="statusbar" clickable="True" />
                     </header>
-                    <sheet>
-                       <div class="oe_right oe_button_box">
-                        <button name="act_show_log_insurance" type="object" string="Insurances" help="show the insurance for this vehicle" />
-                        <button name="act_show_log_fuel" type="object" string="Fuel Logs" help="show the fuel logs for this vehicle" />
-                        
-                        <button name="act_show_log_services" type="object" string="Services Logs" help="show the services logs for this vehicle" />
-
+                    <sheet> 
+                        <field name="image" widget='image' class="oe_left oe_avatar"/> 
+                        <div class="oe_title">
+                            <label for="model_id" class="oe_edit_only"/>
+                            <h1>
+                                <field name="model_id" class="oe_inline"/>
+                            </h1>
+                            <label for="license_plate" class="oe_edit_only"/>
+                            <h2>
+                                <field name="license_plate" class="oe_inline"/>
+                            </h2>
+                            
+                            <label for="tag_ids" class="oe_edit_only"/>
+                            <field name="tag_ids" widget="many2many_tags" />
+                            
                         </div>
-                        <field name="image" widget='image'/>
+                        <div class="oe_right oe_button_box">
+                            <button name="act_show_log_insurance" type="object" string="Insurances" help="show the insurance for this vehicle" />
+                            <button name="act_show_log_fuel" type="object" string="Fuel Logs" help="show the fuel logs for this vehicle" /> 
+                            <button name="act_show_log_services" type="object" string="Services Logs" help="show the services logs for this vehicle" />
+                        </div> 
                         <group col ="2">
                             <group string="General Properties">
-                                <field name="model_id" />
-                                <field name="license_plate" />
                                 <field name="vin_sn" />
-                                 <field name="driver" />
-                                 <field name="location" />
+                                <field name="driver" />
+                                <field name="location" />
                                 <field name="company_id" groups="base.group_multi_company"/>
                             </group>
                             <group string="Additional Properties">
-                                <field name="tag_ids" widget="many2many_tags" />
+                                <field name="odometer" />
                                 <field name="acquisition_date" />
                                 <field name="acquisition_price" />
                             </group>
                     <field name="vin_sn" />
                     <field name="acquisition_date" />
                     <field name="state" />
+                    <field name="odometer" />
                 </tree>
             </field>
         </record>