Files
enterprise-addons/hr_payroll_holidays/tests/test_leave_state_change.py
T

56 lines
2.4 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from freezegun import freeze_time
from odoo.tests.common import tagged
from odoo.addons.hr_payroll_holidays.tests.common import TestPayrollHolidaysBase
@tagged('post_install', '-at_install')
class TestLeaveStateChange(TestPayrollHolidaysBase):
@freeze_time('2018-02-24 10:00:00')
def test_leave_back_to_approval_leave_when_not_in_confirm_payslip(self):
"""
================================================================================================================
| case 1: An approved leave can be moved back to confirm state if leave is not in done/paid payslip. |
| case 2: An approved leave can't be moved back to confirm state if leave is in done/paid payslip. |
================================================================================================================
"""
unpaid_leave_type = self.env['hr.leave.type'].create({
'name': 'unpaid leave in days',
'request_unit': 'day',
'leave_validation_type': 'both',
'time_type': 'leave',
'requires_allocation': False,
'work_entry_type_id': self.work_entry_type_unpaid.id,
})
unpaid_leave = self.env['hr.leave'].with_user(self.emp.user_id).create({
'name': 'unpaid leave for 3 days',
'employee_id': self.emp.id,
'holiday_status_id': unpaid_leave_type.id,
'request_date_from': '2018-02-23',
'request_date_to': '2018-02-25',
})
unpaid_leave.with_user(self.joseph.id).action_approve()
unpaid_leave.with_user(self.joseph.id).action_back_to_approval()
self.assertEqual(
unpaid_leave.state,
"confirm",
"Approved leave can be moved back to confirm state as long as not included in the done/paid payslip",
)
unpaid_leave.with_user(self.joseph).action_approve()
payslip = self.env['hr.payslip'].create({
'name': 'Donald Payslip',
'employee_id': self.emp.id,
})
payslip.compute_sheet()
payslip.action_payslip_done()
unpaid_leave.with_user(self.joseph).action_back_to_approval()
self.assertEqual(
unpaid_leave.state,
"validate",
"Approved leave can't be moved back to confirm state if included in done/paid payslip",
)