[ADD]show name of the contract warning in vehicle kanban view
authorCedric Snauwaert <csn@openerp.com>
Mon, 22 Oct 2012 08:18:33 +0000 (10:18 +0200)
committerCedric Snauwaert <csn@openerp.com>
Mon, 22 Oct 2012 08:18:33 +0000 (10:18 +0200)
bzr revid: csn@openerp.com-20121022081833-vybzaxflneqq0h1s

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

index 05c8579..59af1d7 100644 (file)
@@ -392,6 +392,48 @@ class fleet_vehicle(osv.Model):
         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)
@@ -444,7 +486,9 @@ class fleet_vehicle(osv.Model):
 
         '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'),
         }
@@ -811,6 +855,8 @@ class fleet_vehicle_log_contract(osv.Model):
                 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
 
@@ -896,6 +942,27 @@ class fleet_vehicle_log_contract(osv.Model):
             #    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 = {
index dcb1632..e58ed5b 100644 (file)
                     <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>