mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[MIG] hr_payroll_timesheet: for Odoo Enterprise 14.0
This commit is contained in:
@@ -1,52 +1,76 @@
|
||||
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||
|
||||
from odoo.tests import common
|
||||
from odoo.addons.hr_payroll_hibou.tests import common
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class TestPayslipTimesheet(common.TransactionCase):
|
||||
class TestPayslipTimesheet(common.TestPayslip):
|
||||
|
||||
def setUp(self):
|
||||
super(TestPayslipTimesheet, self).setUp()
|
||||
|
||||
self.work_type = self.env.ref('hr_timesheet_work_entry.work_input_timesheet')
|
||||
self.overtime_rules = self.work_type.overtime_type_id
|
||||
self.overtime_rules.hours_per_day = 0.0
|
||||
self.overtime_rules.multiplier = 1.5
|
||||
|
||||
self.test_hourly_wage = 21.5
|
||||
self.employee = self.env.ref('hr.employee_hne')
|
||||
self.contract = self.env['hr.contract'].create({
|
||||
'name': 'Test',
|
||||
'employee_id': self.employee.id,
|
||||
'structure_type_id': self.env.ref('hr_payroll.structure_type_employee').id,
|
||||
'date_start': '2018-01-01',
|
||||
'resource_calendar_id': self.employee.resource_calendar_id.id,
|
||||
'wage': self.test_hourly_wage,
|
||||
'paid_hourly_timesheet': True,
|
||||
'state': 'open',
|
||||
})
|
||||
self.payslip_dummy = self.env['hr.payslip'].create({
|
||||
'name': 'test slip dummy',
|
||||
'employee_id': self.employee.id,
|
||||
'date_from': '2017-01-01',
|
||||
'date_to': '2017-01-31',
|
||||
})
|
||||
self.payslip = self.env['hr.payslip'].create({
|
||||
'name': 'test slip',
|
||||
'employee_id': self.employee.id,
|
||||
'date_from': '2018-01-01',
|
||||
'date_to': '2018-01-31',
|
||||
})
|
||||
self.project = self.env['project.project'].create({
|
||||
'name': 'Timesheets',
|
||||
})
|
||||
self.employee = self._createEmployee()
|
||||
self.contract = self._createContract(self.employee,
|
||||
wage=self.test_hourly_wage,
|
||||
hourly_wage=self.test_hourly_wage,
|
||||
wage_type='hourly',
|
||||
paid_hourly_timesheet=True)
|
||||
|
||||
self.work_entry_type_leave = self.env['hr.work.entry.type'].create({
|
||||
'name': 'Test PTO',
|
||||
'code': 'TESTPTO',
|
||||
'is_leave': True,
|
||||
})
|
||||
self.leave_type = self.env['hr.leave.type'].create({
|
||||
'name': 'Test Paid Time Off',
|
||||
'time_type': 'leave',
|
||||
'allocation_type': 'no',
|
||||
'validity_start': False,
|
||||
'work_entry_type_id': self.work_entry_type_leave.id,
|
||||
self.project = self.env['project.project'].create({
|
||||
'name': 'Timesheets',
|
||||
})
|
||||
|
||||
# self.test_hourly_wage = 21.5
|
||||
# self.employee = self.env.ref('hr.employee_hne')
|
||||
# self.contract = self.env['hr.contract'].create({
|
||||
# 'name': 'Test',
|
||||
# 'employee_id': self.employee.id,
|
||||
# 'structure_type_id': self.env.ref('hr_payroll.structure_type_employee').id,
|
||||
# 'date_start': '2018-01-01',
|
||||
# 'resource_calendar_id': self.employee.resource_calendar_id.id,
|
||||
# 'wage': self.test_hourly_wage,
|
||||
# 'paid_hourly_timesheet': True,
|
||||
# 'state': 'open',
|
||||
# })
|
||||
# self.payslip_dummy = self.env['hr.payslip'].create({
|
||||
# 'name': 'test slip dummy',
|
||||
# 'employee_id': self.employee.id,
|
||||
# 'date_from': '2017-01-01',
|
||||
# 'date_to': '2017-01-31',
|
||||
# })
|
||||
# self.payslip = self.env['hr.payslip'].create({
|
||||
# 'name': 'test slip',
|
||||
# 'employee_id': self.employee.id,
|
||||
# 'date_from': '2018-01-01',
|
||||
# 'date_to': '2018-01-31',
|
||||
# })
|
||||
# self.project = self.env['project.project'].create({
|
||||
# 'name': 'Timesheets',
|
||||
# })
|
||||
# self.work_entry_type_leave = self.env['hr.work.entry.type'].create({
|
||||
# 'name': 'Test PTO',
|
||||
# 'code': 'TESTPTO',
|
||||
# 'is_leave': True,
|
||||
# })
|
||||
# self.leave_type = self.env['hr.leave.type'].create({
|
||||
# 'name': 'Test Paid Time Off',
|
||||
# 'time_type': 'leave',
|
||||
# 'allocation_type': 'no',
|
||||
# 'validity_start': False,
|
||||
# 'work_entry_type_id': self.work_entry_type_leave.id,
|
||||
# })
|
||||
|
||||
|
||||
def test_payslip_timesheet(self):
|
||||
self.assertTrue(self.contract.paid_hourly_timesheet)
|
||||
@@ -76,6 +100,7 @@ class TestPayslipTimesheet(common.TransactionCase):
|
||||
'name': 'test',
|
||||
})
|
||||
|
||||
self.payslip_dummy = self._createPayslip(self.employee, '2017-01-01', '2017-01-31')
|
||||
# Make one that should be excluded.
|
||||
self.env['account.analytic.line'].create({
|
||||
'employee_id': self.employee.id,
|
||||
@@ -86,10 +111,9 @@ class TestPayslipTimesheet(common.TransactionCase):
|
||||
'payslip_id': self.payslip_dummy.id,
|
||||
})
|
||||
|
||||
self.payslip._onchange_employee()
|
||||
self.payslip = self._createPayslip(self.employee, '2018-01-01', '2018-01-31')
|
||||
self.assertTrue(self.payslip.contract_id, 'No auto-discovered contract!')
|
||||
wage = self.test_hourly_wage
|
||||
self.payslip.compute_sheet()
|
||||
self.assertTrue(self.payslip.worked_days_line_ids)
|
||||
|
||||
timesheet_line = self.payslip.worked_days_line_ids.filtered(lambda l: l.code == 'TS')
|
||||
@@ -172,6 +196,7 @@ class TestPayslipTimesheet(common.TransactionCase):
|
||||
'work_type_id': worktype.id,
|
||||
})
|
||||
|
||||
self.payslip_dummy = self._createPayslip(self.employee, '2017-01-01', '2017-01-31')
|
||||
# Make one that should be excluded.
|
||||
self.env['account.analytic.line'].create({
|
||||
'employee_id': self.employee.id,
|
||||
@@ -182,10 +207,9 @@ class TestPayslipTimesheet(common.TransactionCase):
|
||||
'payslip_id': self.payslip_dummy.id,
|
||||
})
|
||||
|
||||
self.payslip._onchange_employee()
|
||||
self.payslip = self._createPayslip(self.employee, '2018-01-01', '2018-01-31')
|
||||
self.assertTrue(self.payslip.contract_id, 'No auto-discovered contract!')
|
||||
wage = self.test_hourly_wage
|
||||
self.payslip.compute_sheet()
|
||||
self.assertTrue(self.payslip.worked_days_line_ids)
|
||||
|
||||
timesheet_line = self.payslip.worked_days_line_ids.filtered(lambda l: l.code == 'TS')
|
||||
@@ -200,21 +224,19 @@ class TestPayslipTimesheet(common.TransactionCase):
|
||||
|
||||
|
||||
def test_with_leave(self):
|
||||
date_from = '2018-01-10'
|
||||
date_to = '2018-01-11'
|
||||
leave = self.env['hr.leave'].create({
|
||||
'name': 'Test Leave',
|
||||
'employee_id': self.employee.id,
|
||||
'holiday_status_id': self.leave_type.id,
|
||||
'date_to': date_to,
|
||||
date_from = '2020-01-10'
|
||||
date_to = '2020-01-11'
|
||||
self.env['resource.calendar.leaves'].create({
|
||||
'name': 'Doctor Appointment',
|
||||
'date_from': date_from,
|
||||
'number_of_days': 1,
|
||||
'date_to': date_to,
|
||||
'resource_id': self.employee.resource_id.id,
|
||||
'calendar_id': self.employee.resource_calendar_id.id,
|
||||
'work_entry_type_id': self.work_entry_type_leave.id,
|
||||
'time_type': 'leave',
|
||||
})
|
||||
leave.action_validate()
|
||||
self.assertEqual(leave.state, 'validate')
|
||||
self.payslip._onchange_employee()
|
||||
self.assertTrue(self.payslip.contract_id, 'No auto-discovered contract!')
|
||||
self.payslip.compute_sheet()
|
||||
|
||||
self.payslip = self._createPayslip(self.employee, '2020-01-06', '2020-01-19')
|
||||
self.assertTrue(self.payslip.worked_days_line_ids)
|
||||
|
||||
leave_line = self.payslip.worked_days_line_ids.filtered(lambda l: l.code == 'TESTPTO')
|
||||
|
||||
Reference in New Issue
Block a user