def test_approve_leave_benefit(self): start = self.to_datetime_tz('2015-11-01 09:00:00') end = self.to_datetime_tz('2015-11-03 13:00:00') leave = self.env['hr.leave'].create({ 'name': 'Doctor Appointment', 'employee_id': self.richard_emp.id, 'holiday_status_id': self.leave_type.id, 'date_from': start, 'date_to': start + relativedelta(days=1), 'number_of_days': 2, }) benef = self.env['hr.benefit'].create({ 'name': '1', 'employee_id': self.richard_emp.id, 'contract_id': self.richard_emp.contract_id.id, 'benefit_type_id': self.benefit_type.id, 'date_start': start, 'date_stop': end, 'leave_id': leave.id, # benefit conflicts with this leave }) leave.action_approve() new_leave_benef = self.env['hr.benefit'].search([ ('date_start', '=', Datetime.to_datetime('2015-11-01 09:00:00')), ('date_stop', '=', Datetime.to_datetime('2015-11-02 09:00:00')), ('benefit_type_id.is_leave', '=', True) ]) new_benef = self.env['hr.benefit'].search([ ('date_start', '=', Datetime.to_datetime('2015-11-02 09:00:01')), ('date_stop', '=', end), ('benefit_type_id.is_leave', '=', False) ]) self.assertTrue( new_benef, "It should have created a benefit for the last two days") self.assertTrue( new_leave_benef, "It should have created a leave benefit for the first day") self.assertTrue( benef.action_validate((new_benef | new_leave_benef).ids), "It should be able to validate the benefits")
def test_approve_leave_benefit(self): start = self.to_datetime_tz('2015-11-01 09:00:00') end = self.to_datetime_tz('2015-11-03 13:00:00') leave = self.env['hr.leave'].create({ 'name': 'Doctor Appointment', 'employee_id': self.richard_emp.id, 'holiday_status_id': self.leave_type.id, 'date_from': start, 'date_to': start + relativedelta(days=1), 'number_of_days': 2, }) benef = self.env['hr.benefit'].create({ 'name': '1', 'employee_id': self.richard_emp.id, 'contract_id': self.richard_emp.contract_id.id, 'benefit_type_id': self.benefit_type.id, 'date_start': start, 'date_stop': end, 'leave_id': leave.id, # benefit conflicts with this leave }) leave.action_approve() new_leave_benef = self.env['hr.benefit'].search([ ('date_start', '=', Datetime.to_datetime('2015-11-01 09:00:00')), ('date_stop', '=', Datetime.to_datetime('2015-11-02 09:00:00')), ('benefit_type_id.is_leave', '=', True) ]) new_benef = self.env['hr.benefit'].search([ ('date_start', '=', Datetime.to_datetime('2015-11-02 09:00:01')), ('date_stop', '=', end), ('benefit_type_id.is_leave', '=', False) ]) self.assertTrue(new_benef, "It should have created a benefit for the last two days") self.assertTrue(new_leave_benef, "It should have created a leave benefit for the first day") self.assertTrue(benef.action_validate((new_benef | new_leave_benef).ids), "It should be able to validate the benefits")
def test_contract_transfer_leaves(self): def create_calendar_leave(start, end, resource=None): return self.env['resource.calendar.leaves'].create({ 'name': 'leave name', 'date_from': start, 'date_to': end, 'resource_id': resource.id if resource else None, 'calendar_id': self.employee.resource_calendar_id.id, 'time_type': 'leave', }) start = Datetime.to_datetime('2015-11-17 07:00:00') end = Datetime.to_datetime('2015-11-20 18:00:00') leave1 = create_calendar_leave(start, end, resource=self.employee.resource_id) start = Datetime.to_datetime('2015-11-25 07:00:00') end = Datetime.to_datetime('2015-11-28 18:00:00') leave2 = create_calendar_leave(start, end, resource=self.employee.resource_id) # global leave start = Datetime.to_datetime('2015-11-25 07:00:00') end = Datetime.to_datetime('2015-11-28 18:00:00') leave3 = create_calendar_leave(start, end) self.calendar_richard.transfer_leaves_to( self.calendar_35h, resources=self.employee.resource_id, from_date=Date.to_date('2015-11-21')) self.assertEqual(leave1.calendar_id, self.calendar_richard, "It should stay in Richard's calendar") self.assertEqual(leave3.calendar_id, self.calendar_richard, "Global leave should stay in original calendar") self.assertEqual(leave2.calendar_id, self.calendar_35h, "It should be transfered to the other calendar") # Transfer global leaves self.calendar_richard.transfer_leaves_to( self.calendar_35h, resources=None, from_date=Date.to_date('2015-11-21')) self.assertEqual(leave3.calendar_id, self.calendar_35h, "Global leave should be transfered")
def to_datetime_tz(self, datetime_str, tz=None): tz = tz or self.tz return tz.localize(Datetime.to_datetime(datetime_str))