[IMP] Project: Modify create write of task work as per hours changes

bzr revid: mra@mra-laptop-20100809115735-77xw02qsh9i58fbq
This commit is contained in:
Mustufa Rangwala
2010-08-09 17:27:35 +05:30
parent 18672119ec
commit e0422d53a1
+25 -32
View File
@@ -647,42 +647,35 @@ class project_work(osv.osv):
def create(self, cr, uid, vals, *args, **kwargs):
project_obj = self.pool.get('project.project')
uom_obj = self.pool.get('product.uom')
if (not 'task_id' in vals) or (not 'hours' in vals):
return super(project_work, self).create(cr, uid, vals, *args, **kwargs)
if not vals['hours']:
vals['hours'] = 0.00
user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid)
duration = vals['hours']
if user_uom != default_uom:
duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom)
cr.execute('update project_task set remaining_hours=remaining_hours - %s where id=%s', (duration, vals['task_id']))
return super(project_work,self).create(cr, uid, vals, *args, **kwargs)
if vals.get('hours', False):
user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid)
duration = vals['hours']
if user_uom != default_uom:
duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom)
cr.execute('update project_task set remaining_hours=remaining_hours - %s where id=%s', (duration, vals['task_id']))
return super(project_work, self).create(cr, uid, vals, *args, **kwargs)
def write(self, cr, uid, ids, vals, context=None):
project_obj = self.pool.get('project.project')
uom_obj = self.pool.get('product.uom')
if context is None:
context = {}
if not vals['hours']:
vals['hours'] = 0.00
user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid)
duration = vals['hours']
if user_uom == default_uom:
for work in self.browse(cr, uid, ids, context):
cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, work.hours, work.task_id.id))
else:
for work in self.browse(cr, uid, ids, context):
duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom)
del_work = uom_obj._compute_qty(cr, uid, default_uom, work.hours, user_uom)
cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, del_work, work.task_id.id))
return super(project_work,self).write(cr, uid, ids, vals, context)
if vals.get('hours', False):
old_hours = self.browse(cr, uid, ids, context=context)
user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid)
duration = vals['hours']
for old in old_hours:
if vals.get('hours') != old.hours:
# this code is only needed when we update the hours of the project
# TODO: it may still a second calculation if the task.id is changed
# at this task.
if user_uom == default_uom:
for work in self.browse(cr, uid, ids, context=context):
cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, work.hours, work.task_id.id))
else:
for work in self.browse(cr, uid, ids, context=context):
duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom)
del_work = uom_obj._compute_qty(cr, uid, default_uom, work.hours, user_uom)
cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, del_work, work.task_id.id))
return super(project_work,self).write(cr, uid, ids, vals, context=context)
def unlink(self, cr, uid, ids, *args, **kwargs):
context = kwargs.get('context', {})