Files
suite/hr_payroll_timesheet/tests/test_payslip_timesheet.py
2019-03-12 11:51:07 -07:00

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)