res = self.get_next_contract_reminder_fnc(cr, uid, ids, context=context)
return res
+ def get_contract_renewal_names(self,cr,uid,ids,function_name,args,context=None):
+ if not ids:
+ return dict([])
+ reads = self.browse(cr,uid,ids,context=context)
+ res=[]
+
+ for record in reads:
+ ids = self.pool.get('fleet.vehicle.log.contract').search(cr,uid,[('vehicle_id','=',record.id),('state','=','open')],limit=1,order='expiration_date asc')
+ if len(ids) > 0:
+ res.append((record.id,self.pool.get('fleet.vehicle.log.contract').browse(cr,uid,ids[0],context=context).cost_type.name))
+ return dict(res)
+
+ def get_total_contract_reminder(self,cr,uid,ids,prop,unknow_none,context=None):
+ if context is None:
+ context={}
+ if not ids:
+ return dict([])
+ reads = self.browse(cr,uid,ids,context=context)
+ res=[]
+
+ for record in reads:
+ due_soon=0
+ if (record.log_contracts):
+ for element in record.log_contracts:
+ if (element.state=='open' and element.expiration_date):
+ current_date_str=time.strftime('%Y-%m-%d')
+ due_time_str=element.expiration_date
+
+ current_date=self.str_to_date(current_date_str)
+ due_time=self.str_to_date(due_time_str)
+
+ diff_time=int((due_time-current_date).days)
+ if diff_time<15:
+ due_soon = due_soon +1;
+ if due_soon>0:
+ due_soon=due_soon-1
+ res.append((record.id,due_soon))
+ else:
+ res.append((record.id,0))
+
+ return dict(res)
+
def run_scheduler(self,cr,uid,context=None):
ids = self.pool.get('fleet.vehicle').search(cr, uid, [], offset=0, limit=None, order=None,context=None, count=False)
nexts = self.get_next_contract_reminder_fnc(cr,uid,ids,context=context)
'contract_renewal_due_soon' : fields.function(get_next_contract_reminder,fnct_search=_search_contract_renewal_due_soon,type="integer",string='Contracts to renew',store=False),
'contract_renewal_overdue' : fields.function(get_overdue_contract_reminder,fnct_search=_search_get_overdue_contract_reminder,type="integer",string='Contracts Overdued',store=False),
-
+ 'contract_renewal_name' : fields.function(get_contract_renewal_names,type="text",string='Name of contract to renew soon',store=False),
+ 'contract_renewal_total' : fields.function(get_total_contract_reminder,type="integer",string='Total of contracts due or overdue minus one',store=False),
+
'car_value': fields.float('Car Value', help='Value of the bought vehicle'),
#'leasing_value': fields.float('Leasing value',help='Value of the leasing(Monthly, usually'),
}
name = str(record.vehicle_id.name)
if record.cost_type.name:
name = name+ ' / '+ str(record.cost_type.name)
+ if record.date:
+ name = name+ ' / '+ record.date
res.append((record.id, name))
return res
# res.append((record.id,-1))
return dict(res)
+ def act_renew_contract(self,cr,uid,ids,context=None):
+ contracts = self.browse(cr,uid,ids,context=context)
+ res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid ,'fleet','act_renew_contract', context)
+ for element in contracts:
+ print '--------------------------'
+ print element.vehicle_id.id
+ print element.cost_type.id
+ print element.amount
+ print element.odometer
+ print element.insurer_id
+ res['context'] = {
+ 'default_vehicle_id': element.vehicle_id.id,
+ 'default_cost_type': element.cost_type.id,
+ 'default_amount': element.amount,
+ 'default_odometer': element.odometer,
+ #'default_insurer_id': element.insurer_id,
+ }
+ #res['domain']=[('vehicle_id','=', ids[0])]
+ return res
+ #return None
+
_name = 'fleet.vehicle.log.contract'
_order='state,expiration_date'
_columns = {
<field name="odometer" />
<field name="contract_renewal_due_soon" invisible="1"/>
<field name="contract_renewal_overdue" invisible="1" />
+ <field name="contract_renewal_total" invisible="1"/>
</tree>
</field>
</record>
<field name="tag_ids" />
<field name="contract_renewal_due_soon" />
<field name="contract_renewal_overdue" />
+ <field name="contract_renewal_name" />
+ <field name="contract_renewal_total" />
+
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_vignette oe_semantic_html_override">
</h4>
<t t-if="record.contract_renewal_due_soon.raw_value > 0 and record.contract_renewal_overdue.raw_value lte 0">
<a data-type="object" data-name="act_show_log_contract" href="#" class="oe_kanban_action oe_kanban_action_a">
- <span class="oe_kanban_button oe_kanban_color_3">Contract Renewal</span>
+ <span class="oe_kanban_button oe_kanban_color_3"><field name="contract_renewal_name" />
+ <t t-if="record.contract_renewal_total.raw_value > 0"> and <field name="contract_renewal_total" /> other(s) </t>
+ </span>
</a>
</t>
<t t-if="record.contract_renewal_overdue.raw_value > 0">
<a data-type="object" data-name="act_show_log_contract" href="#" class="oe_kanban_action oe_kanban_action_a">
- <span class="oe_kanban_button oe_kanban_color_2">Contract Renewal</span>
+ <span class="oe_kanban_button oe_kanban_color_2"><field name="contract_renewal_name" />
+ <t t-if="record.contract_renewal_total.raw_value > 0"> and <field name="contract_renewal_total" /> other(s) </t>
+ </span>
</a>
</t>
- <div class="oe_kanban_partner_categories">
- <span class="oe_kanban_list_many2many">
- <div modifiers="{}" name="tag_ids" class="oe_form_field oe_tags" model="fleet.vehicle.tag" t-att-data="record.tag_ids.raw_value" />
- </span>
- </div>
+
<ul>
<li>
<t t-if="record.driver.raw_value"><field name="driver"/></t>
</ul>
+ <div class="oe_kanban_partner_categories">
+ <span class="oe_kanban_list_many2many">
+ <div modifiers="{}" name="tag_ids" class="oe_form_field oe_tags" model="fleet.vehicle.tag" t-att-data="record.tag_ids.raw_value" />
+ </span>
+ </div>
+
</div>
</div>
</t>
<menuitem name="Vehicles" parent="menu_root" id="fleet_vehicles" sequence="2" />
<menuitem action="fleet_vehicle_act" parent="fleet_vehicles" id="fleet_vehicle_menu" />
+
+
<record model='ir.ui.view' id='fleet_vehicle_log_contract_form'>
<field name="name">fleet.vehicle.log_contract.form</field>
<field name="model">fleet.vehicle.log.contract</field>
<header>
<button modifiers="{'invisible': [['state', 'not in', ['open']]]}" name="contract_close" states="open" type="object" class="oe_highlight" string="Terminate Contract"/>
<button modifiers="{'invisible': [['state', 'not in', ['closed']]]}" name="contract_open" states="closed" type="object" class="oe_highlight" string="Set Contract In Progress"/>
+ <button class="oe_highlight" name="act_renew_contract" type="object" string="Renew Contract" help="Create a new contract automatically with all the same informations except for the date that will start at the end of current contract" />
<field name="state" widget="statusbar" />
</header>
<sheet>
<field name="cost_type" domain="[('category','=','service')]"/>
<field name="amount" sum="Price" string="Indicative Cost" />
</tree>
- <!--<form string="Costs" version="7.0">
- <sheet>
- <group>
- <field name="cost_type" />
- <field name="amount" />
- </group>
- </sheet>
- </form>-->
</field>
-
-
</group>
<group string="Terms and Conditions">
<field name="notes" nolabel="1" placeholder="Write here all other information relative to this contract" />
</field>
</record>
+ <act_window
+
+ id="act_renew_contract"
+ name="Renew Contract"
+ res_model="fleet.vehicle.log.contract"
+ src_model="fleet.vehicle.log.contract"
+ view_mode="form"
+ view_type="form"
+ />
+
+
<record model='ir.ui.view' id='fleet_vehicle_log_contract_tree'>
<field name="name">fleet.vehicle.log.contract.tree</field>
<field name="model">fleet.vehicle.log.contract</field>
<field name="warning_date" invisible="1"/>
<field name="insurer_id" />
<field name="amount"/>
-
<field name="notes" />
</tree>
</field>