diff --git a/addons/hr_holidays/hr.py b/addons/hr_holidays/hr.py index b6c0313e13f..c4b00a036b0 100755 --- a/addons/hr_holidays/hr.py +++ b/addons/hr_holidays/hr.py @@ -191,7 +191,7 @@ class hr_holidays(osv.osv): holiday_id=self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status_id.id)]) if holiday_id: obj_holidays_per_user=self.pool.get('hr.holidays.per.user').browse(cr, uid,holiday_id[0]) - self.pool.get('hr.holidays.per.user').write(cr,uid,obj_holidays_per_user.id,{'leaves_taken':obj_holidays_per_user.leaves_taken - record.number_of_days}) + self.pool.get('hr.holidays.per.user').write(cr,uid,obj_holidays_per_user.id,{'leaves_taken':obj_holidays_per_user.leaves_taken + record.number_of_days}) if record.case_id: if record.case_id.state <> 'draft': raise osv.except_osv(_('Warning !'), @@ -335,18 +335,23 @@ class hr_holidays(osv.osv): }) return True - def check_holidays(self,cr,uid,ids): - for record in self.browse(cr, uid, ids): + def check_holidays(self,cr,uid,ids, context={}): + for record in self.browse(cr, uid, ids, context=context): if not record.number_of_days: - raise osv.except_osv(_('Warning!'),_('Wrong leave definition.')) + raise osv.except_osv(_('Warning!'),_('Wrong leave definition.')) if record.employee_id: leave_asked = record.number_of_days + res = self.pool.get('hr.holidays.status').get_days(cr, uid, [record.holiday_status_id.id], record.employee_id.id, False) if leave_asked < 0.00: if not record.holiday_status_id.limit: - leaves_rest = self.pool.get('hr.holidays.status').get_days( cr, uid, [record.holiday_status_id.id], record.employee_id.id, False)[record.holiday_status_id.id]['remaining_leaves'] - + leaves_rest = res[record.holiday_status_id.id]['remaining_leaves'] + max_leaves = res[record.holiday_status_id.id]['max_leaves'] if leaves_rest < -(leave_asked): raise osv.except_osv(_('Warning!'),_('You Cannot Validate leaves while available leaves are less than asked leaves.')) + else: + leaves_taken = max_leaves -leaves_rest + record.number_of_days_temp + holiday_id = self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status_id.id)]) + self.pool.get('hr.holidays.per.user').write(cr,uid,holiday_id[0],{'leaves_taken':leaves_taken}) else: holiday_ids = [] vals = { diff --git a/addons/hr_holidays/hr_view.xml b/addons/hr_holidays/hr_view.xml index ecaf1ec9026..0406f9deca1 100644 --- a/addons/hr_holidays/hr_view.xml +++ b/addons/hr_holidays/hr_view.xml @@ -32,8 +32,9 @@ - + +