#_sql_constraints = [
# ('remaining_hours', 'CHECK (remaining_hours>=0)', 'Please increase and review remaining hours ! It can not be smaller than 0.'),
#]
+
+ def _button_dummy(self, cr, uid, ids, context={}):
+ tot_work=0
+ for obj in self.browse(cr,uid,ids):
+ for work in obj.work_ids:
+ tot_work+=work.hours
+ final_val = obj.planned_hours - tot_work
+ self.write(cr,uid,ids[0],{'remaining_hours':final_val})
+ return True
def copy(self, cr, uid, id, default={},context={}):
default = default or {}
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S')
}
_order = "date desc"
- def create(self, cr, uid, vals, *args, **kwargs):
- if 'task_id' in vals:
- cr.execute('update project_task set remaining_hours=remaining_hours+%.2f where id=%d', (-vals.get('hours',0.0), vals['task_id']))
- return super(project_work,self).create(cr, uid, vals, *args, **kwargs)
-
- def write(self, cr, uid, ids,vals,context={}):
- for work in self.browse(cr, uid, ids, context):
- cr.execute('update project_task set remaining_hours=remaining_hours+%.2f+(%.2f) where id=%d', (-vals.get('hours',0.0), work.hours, work.task_id.id))
- return super(project_work,self).write(cr, uid, ids, vals, context)
- def unlink(self, cr, uid, ids, *args, **kwargs):
- for work in self.browse(cr, uid, ids):
- cr.execute('update project_task set remaining_hours=remaining_hours+%.2f where id=%d', (work.hours, work.task_id.id))
- return super(project_work,self).unlink(cr, uid, ids,*args, **kwargs)
project_work()
-
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
widget="float_time"
on_change="onchange_planned(planned_hours,effective_hours)"/>
<field name="delay_hours" widget="float_time"/>
- <field name="remaining_hours" select="2" widget="float_time"/>
+ <field name="remaining_hours" select="2" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" colspan="1"/>
+ <button name="_button_dummy" string="Compute" type="object" colspan="1"/>
<field name="effective_hours" widget="float_time"/>
<field colspan="4" name="description" nolabel="1" select="2"/>
<act_window domain="[('user_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form" view_type="form"/>
<act_window domain="[('user_id', '=', active_id),('date', '>=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/>
-
+
</data>
</openerp>