[IMP]Odometer not inherited anymore, many2one with function field
bzr revid: dle@openerp.com-20121003145757-9fbmbbnkb33nf7lk
This commit is contained in:
parent
7a8b30aeba
commit
656fef712b
|
@ -3,7 +3,13 @@ from osv import osv, fields
|
|||
import time
|
||||
import tools
|
||||
import datetime
|
||||
|
||||
from osv.orm import except_orm
|
||||
from tools.translate import _
|
||||
############################
|
||||
############################
|
||||
#Vehicle.cost class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_cost(osv.Model):
|
||||
_name = 'fleet.vehicle.cost'
|
||||
|
@ -14,12 +20,11 @@ class fleet_vehicle_cost(osv.Model):
|
|||
'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this cost'),
|
||||
}
|
||||
|
||||
class fleet_vehicle_model_type(osv.Model):
|
||||
_name = 'fleet.vehicle.type'
|
||||
_description = 'Type of the vehicle'
|
||||
_columns = {
|
||||
'name' : fields.char('Name', size=32, required=True),
|
||||
}
|
||||
############################
|
||||
############################
|
||||
#Vehicle.tag class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_tag(osv.Model):
|
||||
_name = 'fleet.vehicle.tag'
|
||||
|
@ -27,6 +32,12 @@ class fleet_vehicle_tag(osv.Model):
|
|||
'name': fields.char('Name', required=True, translate=True),
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.state class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_state(osv.Model):
|
||||
_name = 'fleet.vehicle.state'
|
||||
_columns = {
|
||||
|
@ -35,6 +46,12 @@ class fleet_vehicle_state(osv.Model):
|
|||
}
|
||||
_order = 'sequence asc'
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.model class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_model(osv.Model):
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
|
@ -81,6 +98,12 @@ class fleet_vehicle_model(osv.Model):
|
|||
'image_small': fields.related('brand','image_small',type="binary",string="Logo",store=False),
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.brand class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_model_brand(osv.Model):
|
||||
_name = 'fleet.vehicle.model.brand'
|
||||
_description = 'Brand model of the vehicle'
|
||||
|
@ -119,6 +142,13 @@ class fleet_vehicle_model_brand(osv.Model):
|
|||
"Use this field anywhere a small image is required."),
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle class
|
||||
############################
|
||||
############################
|
||||
|
||||
|
||||
class fleet_vehicle(osv.Model):
|
||||
|
||||
_inherit = 'mail.thread'
|
||||
|
@ -277,6 +307,7 @@ class fleet_vehicle(osv.Model):
|
|||
_order= 'name asc'
|
||||
_columns = {
|
||||
'name' : fields.function(_vehicle_name_get_fnc, type="char", string='Name', store=True),
|
||||
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
'license_plate' : fields.char('License Plate', size=32, required=True, help='License plate number of the vehicle (ie: plate number for a car)'),
|
||||
'vin_sn' : fields.char('Chassis Number', size=32, required=False, help='Unique number written on the vehicle motor (VIN/SN number)'),
|
||||
|
@ -364,6 +395,12 @@ class fleet_vehicle(osv.Model):
|
|||
pass
|
||||
return vehicle_id
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.odometer class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_odometer(osv.Model):
|
||||
_name='fleet.vehicle.odometer'
|
||||
_description='Odometer log for a vehicle'
|
||||
|
@ -388,7 +425,6 @@ class fleet_vehicle_odometer(osv.Model):
|
|||
def _vehicle_log_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
|
||||
res = self.name_get(cr, uid, ids, context=context)
|
||||
return dict(res)
|
||||
|
||||
def on_change_vehicle(self, cr, uid, ids, vehicle_id, context=None):
|
||||
|
||||
if not vehicle_id:
|
||||
|
@ -407,17 +443,31 @@ class fleet_vehicle_odometer(osv.Model):
|
|||
|
||||
'date' : fields.date('Purchase Date'),
|
||||
'value' : fields.float('Odometer Value',group_operator="max"),
|
||||
'unit': fields.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
|
||||
'vehicle_id' : fields.many2one('fleet.vehicle', 'Vehicle', required=True),
|
||||
'unit': fields.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
|
||||
|
||||
}
|
||||
_defaults = {
|
||||
'date' : time.strftime('%Y-%m-%d')
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log classes
|
||||
############################
|
||||
############################
|
||||
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log.fuel class
|
||||
############################
|
||||
############################
|
||||
|
||||
|
||||
class fleet_vehicle_log_fuel(osv.Model):
|
||||
|
||||
_inherits = {'fleet.vehicle.odometer': 'odometer_id'}
|
||||
#_inherits = {'fleet.vehicle.odometer': 'odometer_id'}
|
||||
|
||||
def on_change_vehicle(self, cr, uid, ids, vehicle_id, context=None):
|
||||
|
||||
|
@ -467,12 +517,39 @@ class fleet_vehicle_log_fuel(osv.Model):
|
|||
else :
|
||||
return {}
|
||||
|
||||
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):
|
||||
if record.odometer_id:
|
||||
res[record.id] = record.odometer_id.value
|
||||
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 = self.browse(cr, uid, id, context=context).date
|
||||
if not(date):
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
vehicle_id = self.browse(cr, uid, id, context=context).vehicle_id
|
||||
data = {'value' : value,'date' : date,'vehicle_id' : vehicle_id.id}
|
||||
odometer_id = self.pool.get('fleet.vehicle.odometer').create(cr, uid, data, context=context)
|
||||
self.write(cr, uid, id, {'odometer_id': odometer_id})
|
||||
return value
|
||||
self.write(cr, uid, id, {'odometer_id': ''})
|
||||
return False
|
||||
|
||||
|
||||
_name = 'fleet.vehicle.log.fuel'
|
||||
|
||||
_columns = {
|
||||
#'name' : fields.char('Name',size=64),
|
||||
|
||||
'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this fuel log'),
|
||||
'date' :fields.date('Refueling Date',help='Date when the refueling has been performed'),
|
||||
'liter' : fields.float('Liter'),
|
||||
'price_per_liter' : fields.float('Price Per Liter'),
|
||||
'amount': fields.float('Total price'),
|
||||
|
@ -480,11 +557,22 @@ class fleet_vehicle_log_fuel(osv.Model):
|
|||
'inv_ref' : fields.char('Invoice Reference', size=64),
|
||||
'vendor_id' : fields.many2one('res.partner', 'Supplier', domain="[('supplier','=',True)]"),
|
||||
'notes' : fields.text('Notes'),
|
||||
'odometer_id' : fields.many2one('fleet.vehicle.odometer', 'Odometer', required=False, help='Odometer measure of the vehicle at the moment of this log'),
|
||||
'odometer' : fields.function(_get_odometer,fnct_inv=_set_odometer,type='string',string='Odometer',store=False),
|
||||
'odometer_unit': fields.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
|
||||
}
|
||||
_defaults = {
|
||||
'purchaser_id': lambda self, cr, uid, ctx: uid,
|
||||
'date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log.service class
|
||||
############################
|
||||
############################
|
||||
|
||||
|
||||
class fleet_vehicle_log_services(osv.Model):
|
||||
|
||||
def on_change_vehicle(self, cr, uid, ids, vehicle_id, context=None):
|
||||
|
@ -496,16 +584,41 @@ class fleet_vehicle_log_services(osv.Model):
|
|||
|
||||
return {
|
||||
'value' : {
|
||||
'unit' : odometer_unit,
|
||||
'odometer_unit' : odometer_unit,
|
||||
}
|
||||
}
|
||||
|
||||
_inherits = {'fleet.vehicle.odometer': 'odometer_id'}
|
||||
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):
|
||||
if record.odometer_id:
|
||||
res[record.id] = record.odometer_id.value
|
||||
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 = self.browse(cr, uid, id, context=context).date
|
||||
if not(date):
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
vehicle_id = self.browse(cr, uid, id, context=context).vehicle_id
|
||||
data = {'value' : value,'date' : date,'vehicle_id' : vehicle_id.id}
|
||||
odometer_id = self.pool.get('fleet.vehicle.odometer').create(cr, uid, data, context=context)
|
||||
self.write(cr, uid, id, {'odometer_id': odometer_id})
|
||||
return value
|
||||
self.write(cr, uid, id, {'odometer_id': ''})
|
||||
return False
|
||||
|
||||
_name = 'fleet.vehicle.log.services'
|
||||
_columns = {
|
||||
|
||||
#'name' : fields.char('Name',size=64),
|
||||
'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this services log'),
|
||||
'date' :fields.date('Service Date',help='Date when the service will be/has been performed'),
|
||||
'amount' :fields.float('Cost', help="Total cost of the service"),
|
||||
'service_ids' :fields.many2many('fleet.service.type','fleet_vehicle_service_type_rel','vehicle_service_type_id','service_id','Services completed'),
|
||||
|
@ -513,20 +626,61 @@ class fleet_vehicle_log_services(osv.Model):
|
|||
'inv_ref' : fields.char('Invoice Reference', size=64),
|
||||
'vendor_id' :fields.many2one('res.partner', 'Supplier', domain="[('supplier','=',True)]"),
|
||||
'notes' : fields.text('Notes'),
|
||||
|
||||
'odometer_id' : fields.many2one('fleet.vehicle.odometer', 'Odometer', required=False, help='Odometer measure of the vehicle at the moment of this log'),
|
||||
'odometer' : fields.function(_get_odometer,fnct_inv=_set_odometer,type='char',string='Odometer',store=False),
|
||||
'odometer_unit': fields.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
|
||||
}
|
||||
_defaults = {
|
||||
'purchaser_id': lambda self, cr, uid, ctx: uid,
|
||||
'date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
|
||||
class fleet_contract_type(osv.Model):
|
||||
_name = 'fleet.contract.type'
|
||||
############################
|
||||
############################
|
||||
#Vehicle.service.type class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_service_type(osv.Model):
|
||||
_name = 'fleet.service.type'
|
||||
_columns = {
|
||||
'name': fields.char('Name', required=True, translate=True),
|
||||
}
|
||||
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log.contract class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_vehicle_log_contract(osv.Model):
|
||||
_inherits = {'fleet.vehicle.odometer': 'odometer_id'}
|
||||
|
||||
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):
|
||||
if record.odometer_id:
|
||||
res[record.id] = record.odometer_id.value
|
||||
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 = self.browse(cr, uid, id, context=context).date
|
||||
if not(date):
|
||||
date = time.strftime('%Y-%m-%d')
|
||||
vehicle_id = self.browse(cr, uid, id, context=context).vehicle_id
|
||||
data = {'value' : value,'date' : date,'vehicle_id' : vehicle_id.id}
|
||||
odometer_id = self.pool.get('fleet.vehicle.odometer').create(cr, uid, data, context=context)
|
||||
self.write(cr, uid, id, {'odometer_id': odometer_id})
|
||||
return value
|
||||
self.write(cr, uid, id, {'odometer_id': ''})
|
||||
return False
|
||||
|
||||
def on_change_vehicle(self, cr, uid, ids, vehicle_id, context=None):
|
||||
|
||||
|
@ -537,7 +691,7 @@ class fleet_vehicle_log_contract(osv.Model):
|
|||
|
||||
return {
|
||||
'value' : {
|
||||
'unit' : odometer_unit,
|
||||
'odometer_unit' : odometer_unit,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -583,7 +737,8 @@ class fleet_vehicle_log_contract(osv.Model):
|
|||
_columns = {
|
||||
|
||||
#'name' : fields.char('Name',size=64),
|
||||
|
||||
'vehicle_id': fields.many2one('fleet.vehicle', 'Vehicle', required=True, help='Vehicle concerned by this contract log'),
|
||||
'date' :fields.date('Contract Date',help='Date when the contract has been signed'),
|
||||
'contract_type' : fields.many2one('fleet.contract.type', 'Type', required=False, help='Type of the contract'),
|
||||
'start_date' : fields.date('Start Date', required=False, help='Date when the coverage of the contract begins'),
|
||||
'expiration_date' : fields.date('Expiration Date', required=False, help='Date when the coverage of the contract expirates (by default, one year after begin date)'),
|
||||
|
@ -596,6 +751,10 @@ class fleet_vehicle_log_contract(osv.Model):
|
|||
'reminder' : fields.boolean('Renewal Reminder', help="Warn the user when this contract needs to be renewed"),
|
||||
'notes' : fields.text('Terms and Conditions'),
|
||||
'costs' : fields.one2many('fleet.vehicle.cost', 'vehicle_id', 'Costs covered'),
|
||||
|
||||
'odometer_id' : fields.many2one('fleet.vehicle.odometer', 'Odometer', required=False, help='Odometer measure of the vehicle at the moment of this log'),
|
||||
'odometer' : fields.function(_get_odometer,fnct_inv=_set_odometer,type='string',string='Odometer',store=False),
|
||||
'odometer_unit': fields.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
|
||||
}
|
||||
_defaults = {
|
||||
'purchaser_id': lambda self, cr, uid, ctx: uid,
|
||||
|
@ -613,8 +772,25 @@ class fleet_vehicle_log_contract(osv.Model):
|
|||
self.write(cr, uid, ids, {'state': 'open'})
|
||||
return True
|
||||
|
||||
class fleet_service_type(osv.Model):
|
||||
_name = 'fleet.service.type'
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log.contract.type class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_contract_type(osv.Model):
|
||||
_name = 'fleet.contract.type'
|
||||
_columns = {
|
||||
'name': fields.char('Name', required=True, translate=True),
|
||||
}
|
||||
############################
|
||||
############################
|
||||
#Vehicle.log.contract.state class
|
||||
############################
|
||||
############################
|
||||
|
||||
class fleet_contract_state(osv.Model):
|
||||
_name = 'fleet.contract.state'
|
||||
_columns = {
|
||||
'name':fields.char('Contract Status',size=32),
|
||||
}
|
|
@ -247,8 +247,7 @@
|
|||
<field name="driver" />
|
||||
<field name="location" />
|
||||
<field name="state" />
|
||||
<field name="odometer" />
|
||||
<field name="odometer_unit" />
|
||||
|
||||
<field name="image" />
|
||||
<field name="tag_ids" />
|
||||
<field name="contract_renewal_due_soon" />
|
||||
|
@ -386,8 +385,8 @@
|
|||
<group col="2">
|
||||
<group string="Odometer details">
|
||||
<div>
|
||||
<field name="value" class="oe_inline"/>
|
||||
<field name="unit" class="oe_inline"/>
|
||||
<field name="odometer" class="oe_inline"/>
|
||||
<field name="odometer_unit" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group></group>
|
||||
|
@ -412,8 +411,7 @@
|
|||
<field name="warning_date" invisible="1"/>
|
||||
<field name="insurer_id" />
|
||||
<field name="price" />
|
||||
<field name="value" />
|
||||
<field name="unit" />
|
||||
|
||||
<field name="notes" />
|
||||
</tree>
|
||||
</field>
|
||||
|
@ -436,10 +434,10 @@
|
|||
<sheet>
|
||||
<group>
|
||||
<field name="vehicle_id" on_change="on_change_vehicle(vehicle_id)"/>
|
||||
<div>
|
||||
<field name="value" class="oe_inline"/>
|
||||
<field name="unit" class="oe_inline"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="value" class="oe_inline"/>
|
||||
<field name="unit" class="oe_inline"/>
|
||||
</div>
|
||||
<field name="date" />
|
||||
</group>
|
||||
</sheet>
|
||||
|
@ -501,8 +499,8 @@
|
|||
<group col="2">
|
||||
<group string="Odometer Details">
|
||||
<div>
|
||||
<field name="value" class="oe_inline"/>
|
||||
<field name="unit" class="oe_inline"/>
|
||||
<field name="odometer" class="oe_inline"/>
|
||||
<field name="odometer_unit" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Additional Details">
|
||||
|
@ -530,11 +528,11 @@
|
|||
<field name="price_per_liter" />
|
||||
<field name="amount" />
|
||||
<field name="purchaser_id" />
|
||||
<field name="date" />
|
||||
<field name="value" />
|
||||
<field name="unit" />
|
||||
<field name="date" />
|
||||
<field name="inv_ref" />
|
||||
<field name="vendor_id" />
|
||||
<field name="odometer" />
|
||||
<field name="odometer_unit" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -580,8 +578,8 @@
|
|||
<group col="2">
|
||||
<group string="Odometer Details">
|
||||
<div>
|
||||
<field name="value" class="oe_inline"/>
|
||||
<field name="unit" class="oe_inline"/>
|
||||
<field name="odometer" class="oe_inline"/>
|
||||
<field name="odometer_unit" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Additional Details">
|
||||
|
@ -611,8 +609,6 @@
|
|||
<field name="purchaser_id" />
|
||||
<field name="vendor_id" />
|
||||
<field name="inv_ref" />
|
||||
<field name="value" />
|
||||
<field name="unit" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
Loading…
Reference in New Issue