[ADD]Unique frequency for contracts costs frequency + [FIX]Week interval bugs + replace title and help messages

bzr revid: dle@openerp.com-20121024091131-j1o5kf2klt0827be
This commit is contained in:
Denis Ledoux dle@openerp.com 2012-10-24 11:11:31 +02:00
parent c144f3e183
commit 22b8f78546
3 changed files with 36 additions and 26 deletions

View File

@ -776,15 +776,15 @@
<record id="log_contract_1" model="fleet.vehicle.log.contract" >
<field name="vehicle_id" ref="vehicle_2" />
<field name="amount">0</field>
<field name="cost_generated">450</field>
<field name="cost_frequency">monthly</field>
<field name="cost_generated">20</field>
<field name="cost_frequency">daily</field>
<field name="cost_type" ref="type_service_56"/>
<field name="date">2012-01-01</field>
<field name="date" eval="time.strftime('%Y-01-01')" />
<field name="start_date" eval="time.strftime('%Y-01-01')" />
<field name="expiration_date" eval="(DateTime.now() + timedelta(5)).strftime('%Y-%m-%d')" />
<field name="purchaser_id" ref="base.res_partner_address_18" />
<field name="insurer_id" ref="base.res_partner_13" />
<field name="notes">Usual leasing contract</field>
<field name="notes">Daily leasing contract</field>
</record>
<record id="contract_cost_11" model="fleet.vehicle.cost" >
@ -814,15 +814,15 @@
<record id="log_contract_2" model="fleet.vehicle.log.contract" >
<field name="vehicle_id" ref="vehicle_1" />
<field name="amount">0</field>
<field name="cost_generated">400</field>
<field name="cost_frequency">monthly</field>
<field name="cost_generated">150</field>
<field name="cost_frequency">weekly</field>
<field name="cost_type" ref="type_service_56"/>
<field name="date">2012-01-01</field>
<field name="date" eval="time.strftime('%Y-01-01')" />
<field name="start_date" eval="time.strftime('%Y-01-01')" />
<field name="expiration_date" eval="(DateTime.now() + timedelta(-1)).strftime('%Y-%m-%d')" />
<field name="purchaser_id" ref="base.res_partner_address_18" />
<field name="insurer_id" ref="base.res_partner_13" />
<field name="notes">Usual leasing contract</field>
<field name="notes">Weekly leasing contract</field>
</record>
<record id="contract_cost_21" model="fleet.vehicle.cost" >
@ -855,12 +855,12 @@
<field name="cost_generated">400</field>
<field name="cost_frequency">monthly</field>
<field name="cost_type" ref="type_service_56"/>
<field name="date">2012-01-01</field>
<field name="date" eval="time.strftime('%Y-01-01')"/>
<field name="start_date" eval="time.strftime('%Y-01-01')" />
<field name="expiration_date" eval="time.strftime('%Y-12-31')" />
<field name="purchaser_id" ref="base.res_partner_address_18" />
<field name="insurer_id" ref="base.res_partner_13" />
<field name="notes">Usual leasing contract</field>
<field name="notes">Monthly leasing contract</field>
</record>
<record id="contract_cost_31" model="fleet.vehicle.cost" >
@ -890,15 +890,15 @@
<record id="log_contract_4" model="fleet.vehicle.log.contract" >
<field name="vehicle_id" ref="vehicle_4" />
<field name="amount">0</field>
<field name="cost_generated">400</field>
<field name="cost_frequency">monthly</field>
<field name="cost_generated">4000</field>
<field name="cost_frequency">yearly</field>
<field name="cost_type" ref="type_service_56"/>
<field name="date">2012-01-01</field>
<field name="date" eval="time.strftime('%Y-01-01')" />
<field name="start_date" eval="time.strftime('%Y-01-01')" />
<field name="expiration_date" eval="time.strftime('%Y-12-31')" />
<field name="purchaser_id" ref="base.res_partner_address_18" />
<field name="insurer_id" ref="base.res_partner_13" />
<field name="notes">Usual leasing contract</field>
<field name="notes">Yearly leasing contract</field>
</record>
<record id="contract_cost_41" model="fleet.vehicle.cost" >
@ -928,15 +928,15 @@
<record id="log_contract_5" model="fleet.vehicle.log.contract" >
<field name="vehicle_id" ref="vehicle_5" />
<field name="amount">0</field>
<field name="cost_generated">400</field>
<field name="cost_frequency">monthly</field>
<field name="cost_generated">17000</field>
<field name="cost_frequency">unique</field>
<field name="cost_type" ref="type_service_56"/>
<field name="date">2012-01-01</field>
<field name="start_date" eval="time.strftime('%Y-01-01')" />
<field name="expiration_date" eval="time.strftime('%Y-12-31')" />
<field name="date" eval="time.strftime('2012-01-01')" />
<field name="start_date" eval="time.strftime('2012-01-01')" />
<field name="expiration_date" eval="time.strftime('2016-12-31')" />
<field name="purchaser_id" ref="base.res_partner_address_18" />
<field name="insurer_id" ref="base.res_partner_13" />
<field name="notes">Usual leasing contract</field>
<field name="notes">Unique leasing contract</field>
</record>
<record id="contract_cost_51" model="fleet.vehicle.cost" >

View File

@ -859,6 +859,8 @@ class fleet_vehicle_log_contract(osv.Model):
contract_ids = self.pool.get('fleet.vehicle.log.contract').search(cr, uid, [('state','=','open')], offset=0, limit=None, order=None,context=None, count=False)
for contract in self.pool.get('fleet.vehicle.log.contract').browse(cr,uid,contract_ids,context=context):
if not contract.start_date:
break;
if contract.generated_cost_ids != []:
last_cost_id = self.pool.get('fleet.vehicle.cost').search(cr, uid, ['&',('contract_id','=',contract.id),('auto_generated','=',True)], offset=0, limit=1, order='date desc',context=None, count=False)
last_cost_date = self.pool.get('fleet.vehicle.cost').browse(cr,uid,last_cost_id[0],context=None).date
@ -881,10 +883,10 @@ class fleet_vehicle_log_contract(osv.Model):
elif contract.cost_frequency == 'weekly':
delta = relativedelta(weeks=+1)
if last_cost_date:
startdate = datetime.datetime.strptime(last_cost_date[:4]+'-'+self.str_to_date(last_cost_date[5:7]).strftime('%W')+'-'+str(self.str_to_date(last_cost_date).weekday()),'%Y-%W-%w').date() + relativedelta(weeks=+1)
startdate = datetime.datetime.strptime(last_cost_date[:4]+'-'+self.str_to_date(last_cost_date).strftime('%W')+'-'+str(self.str_to_date(last_cost_date).weekday()),'%Y-%W-%w').date() + relativedelta(weeks=+1)
else:
startdate = datetime.date.strptime(contract.start_date[:4]+'-'+self.str_to_date(contract.start_date[5:7]).strftime('%W')+'-'+str(self.str_to_date(contract.start_date).weekday()).date(),'%Y-%W-%w')
enddate = datetime.date.strptime(str(d.year)+'-'+d.strftime('%W')+'-'+d.strftime('%w'),'%Y-%W-%w')
startdate = datetime.datetime.strptime(contract.start_date[:4]+'-'+self.str_to_date(contract.start_date).strftime('%W')+'-'+str(self.str_to_date(contract.start_date).weekday()),'%Y-%W-%w').date()
enddate = datetime.datetime.strptime(str(d.year)+'-'+d.strftime('%W')+'-'+d.strftime('%w'),'%Y-%W-%w').date()
elif contract.cost_frequency == 'daily':
delta = relativedelta(days=+1)
if last_cost_date:
@ -892,6 +894,13 @@ class fleet_vehicle_log_contract(osv.Model):
else:
startdate = datetime.datetime.strptime(contract.start_date,'%Y-%m-%d').date()
enddate = d
elif contract.cost_frequency == 'unique':
delta = relativedelta(days=+1)
if not last_cost_date:
enddate = startdate = datetime.datetime.strptime(contract.start_date,'%Y-%m-%d').date()
else:
startdate = 1
enddate = 0
print 'Start : '+str(startdate)+', End : '+str(enddate)
while startdate <= enddate:
data = {'amount' : contract.cost_generated,'date' : startdate.strftime('%Y-%m-%d'),'vehicle_id' : contract.vehicle_id.id,'cost_type' : contract.cost_type.id,'contract_id' : contract.id,'auto_generated' : True}
@ -1059,8 +1068,8 @@ class fleet_vehicle_log_contract(osv.Model):
'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.related('vehicle_id','odometer_unit',type="char",string="Unit",store=False, readonly=True),
'cost_amount': fields.related('cost_id','amount',type="float",string="Amount",store=True, readonly=True),
'cost_generated': fields.float('Generated costs amount'),
'cost_frequency': fields.selection([('daily', 'Daily'),('weekly','Weekly'),('monthly','Monthly'),('yearly','Yearly')], 'Cost Frequency', help='Frequency of the costs',required=True),
'cost_generated': fields.float('Recuring Costs Amount',help="Costs paid at regular intervals, depending on the cost frequency. If the cost frequency is set to unique, the cost will be logged at the start date"),
'cost_frequency': fields.selection([('unique','Unique'),('daily', 'Daily'),('weekly','Weekly'),('monthly','Monthly'),('yearly','Yearly')], 'Cost Frequency', help='Frequency of the costs',required=True),
'generated_cost_ids' : fields.one2many('fleet.vehicle.cost', 'contract_id', 'Generated Costs',ondelete='cascade'),
}
_defaults = {

View File

@ -500,7 +500,8 @@
<field name="expiration_date" />
<field name="warning_date" invisible="1"/>
<field name="insurer_id" />
<field name="amount"/>
<field name="amount" string="Activation Costs" help="Costs paid the day of the contract realization. The cost will be logged at the invoice date"/>
<field name="cost_generated"/>
<field name="cost_frequency"/>
<field name="notes" />
</tree>