79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from dateutil.relativedelta import relativedelta
|
||
|
from odoo.fields import Date
|
||
|
from odoo.tests.common import TransactionCase
|
||
|
|
||
|
|
||
|
class TestWorkEntryBase(TransactionCase):
|
||
|
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super(TestWorkEntryBase, cls).setUpClass()
|
||
|
|
||
|
cls.env.user.tz = 'Europe/Brussels'
|
||
|
cls.env.ref('resource.resource_calendar_std').tz = 'Europe/Brussels'
|
||
|
|
||
|
cls.dep_rd = cls.env['hr.department'].create({
|
||
|
'name': 'Research & Development - Test',
|
||
|
})
|
||
|
|
||
|
# I create a new employee "Richard"
|
||
|
cls.richard_emp = cls.env['hr.employee'].create({
|
||
|
'name': 'Richard',
|
||
|
'gender': 'male',
|
||
|
'birthday': '1984-05-01',
|
||
|
'country_id': cls.env.ref('base.be').id,
|
||
|
'department_id': cls.dep_rd.id,
|
||
|
})
|
||
|
|
||
|
# I create a contract for "Richard"
|
||
|
cls.env['hr.contract'].create({
|
||
|
'date_end': Date.today() + relativedelta(years=2),
|
||
|
'date_start': Date.to_date('2018-01-01'),
|
||
|
'name': 'Contract for Richard',
|
||
|
'wage': 5000.0,
|
||
|
'employee_id': cls.richard_emp.id,
|
||
|
})
|
||
|
|
||
|
cls.work_entry_type = cls.env['hr.work.entry.type'].create({
|
||
|
'name': 'Extra attendance',
|
||
|
'is_leave': False,
|
||
|
'code': 'WORKTEST200',
|
||
|
})
|
||
|
|
||
|
cls.work_entry_type_unpaid = cls.env['hr.work.entry.type'].create({
|
||
|
'name': 'Unpaid Time Off',
|
||
|
'is_leave': True,
|
||
|
'code': 'LEAVETEST300',
|
||
|
})
|
||
|
|
||
|
cls.work_entry_type_leave = cls.env['hr.work.entry.type'].create({
|
||
|
'name': 'Time Off',
|
||
|
'is_leave': True,
|
||
|
'code': 'LEAVETEST100'
|
||
|
})
|
||
|
|
||
|
def create_work_entry(self, start, stop, work_entry_type=None):
|
||
|
work_entry_type = work_entry_type or self.work_entry_type
|
||
|
return self.create_work_entries([(start, stop, work_entry_type)])
|
||
|
|
||
|
def create_work_entries(self, intervals):
|
||
|
default_work_entry_type = self.work_entry_type
|
||
|
create_vals = []
|
||
|
for interval in intervals:
|
||
|
start = interval[0]
|
||
|
stop = interval[1]
|
||
|
work_entry_type = interval[2] if len(interval) == 3\
|
||
|
else default_work_entry_type
|
||
|
create_vals.append({
|
||
|
'contract_id': self.richard_emp.contract_ids[0].id,
|
||
|
'name': 'Work entry %s-%s' % (start, stop),
|
||
|
'date_start': start,
|
||
|
'date_stop': stop,
|
||
|
'employee_id': self.richard_emp.id,
|
||
|
'work_entry_type_id': work_entry_type.id,
|
||
|
})
|
||
|
return self.env['hr.work.entry'].create(create_vals)
|