Example #1
0
    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")
Example #2
0
    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")
Example #3
0
    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")
Example #4
0
 def to_datetime_tz(self, datetime_str, tz=None):
     tz = tz or self.tz
     return tz.localize(Datetime.to_datetime(datetime_str))
Example #5
0
 def to_datetime_tz(self, datetime_str, tz=None):
     tz = tz or self.tz
     return tz.localize(Datetime.to_datetime(datetime_str))