mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
92 lines
3.3 KiB
Python
92 lines
3.3 KiB
Python
from odoo.tests import common
|
|
from odoo import fields
|
|
|
|
|
|
class TestPayslipTimesheet(common.TransactionCase):
|
|
|
|
def setUp(self):
|
|
super(TestPayslipTimesheet, self).setUp()
|
|
self.employee = self.env['hr.employee'].create({
|
|
'birthday': '1985-03-14',
|
|
'country_id': self.ref('base.us'),
|
|
'department_id': self.ref('hr.dep_rd'),
|
|
'gender': 'male',
|
|
'name': 'Jared'
|
|
})
|
|
self.contract = self.env['hr.contract'].create({
|
|
'name': 'test',
|
|
'employee_id': self.employee.id,
|
|
'type_id': self.ref('hr_contract.hr_contract_type_emp'),
|
|
'struct_id': self.ref('hr_payroll.structure_base'),
|
|
'resource_calendar_id': self.ref('resource.resource_calendar_std'),
|
|
'wage': 21.50,
|
|
'date_start': '2018-01-01',
|
|
'state': 'open',
|
|
'paid_hourly_timesheet': True,
|
|
'schedule_pay': 'monthly',
|
|
})
|
|
self.project = self.env['project.project'].create({
|
|
'name': 'Timesheets',
|
|
})
|
|
|
|
def test_payslip_timesheet(self):
|
|
self.assertTrue(self.contract.paid_hourly_timesheet)
|
|
from_date = '2018-01-01'
|
|
to_date = '2018-01-31'
|
|
|
|
# Day 1
|
|
self.env['account.analytic.line'].create({
|
|
'employee_id': self.employee.id,
|
|
'project_id': self.project.id,
|
|
'date': '2018-01-01',
|
|
'unit_amount': 5.0,
|
|
'name': 'test',
|
|
})
|
|
self.env['account.analytic.line'].create({
|
|
'employee_id': self.employee.id,
|
|
'project_id': self.project.id,
|
|
'date': '2018-01-01',
|
|
'unit_amount': 3.0,
|
|
'name': 'test',
|
|
})
|
|
|
|
# Day 2
|
|
self.env['account.analytic.line'].create({
|
|
'employee_id': self.employee.id,
|
|
'project_id': self.project.id,
|
|
'date': '2018-01-02',
|
|
'unit_amount': 1.0,
|
|
'name': 'test',
|
|
})
|
|
|
|
# Make one that should be excluded.
|
|
self.env['account.analytic.line'].create({
|
|
'employee_id': self.employee.id,
|
|
'project_id': self.project.id,
|
|
'date': '2017-01-01',
|
|
'unit_amount': 5.0,
|
|
'name': 'test',
|
|
})
|
|
|
|
# Create slip like a batch run.
|
|
slip_data = self.env['hr.payslip'].onchange_employee_id(from_date, to_date, self.employee.id, contract_id=False)
|
|
res = {
|
|
'employee_id': self.employee.id,
|
|
'name': slip_data['value'].get('name'),
|
|
'struct_id': slip_data['value'].get('struct_id'),
|
|
'contract_id': slip_data['value'].get('contract_id'),
|
|
'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids')],
|
|
'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids')],
|
|
'date_from': from_date,
|
|
'date_to': to_date,
|
|
'company_id': self.employee.company_id.id,
|
|
}
|
|
payslip = self.env['hr.payslip'].create(res)
|
|
payslip.compute_sheet()
|
|
self.assertTrue(payslip.worked_days_line_ids)
|
|
|
|
timesheet_line = payslip.worked_days_line_ids.filtered(lambda l: l.code == 'TS')
|
|
self.assertTrue(timesheet_line)
|
|
self.assertEqual(timesheet_line.number_of_days, 2.0)
|
|
self.assertEqual(timesheet_line.number_of_hours, 9.0)
|