169 lines
7.2 KiB
Python
169 lines
7.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from openerp.tests.common import TransactionCase
|
|
from datetime import datetime
|
|
from dateutil.relativedelta import relativedelta
|
|
from openerp.osv.orm import except_orm
|
|
import logging
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
class TestHrLeave(TransactionCase):
|
|
|
|
def setUp(self):
|
|
super(TestHrLeave, self).setUp()
|
|
cr, uid = self.cr, self.uid
|
|
|
|
# Find Employee group
|
|
group_employee_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user')
|
|
self.group_employee_id = group_employee_ref and group_employee_ref[1] or False
|
|
|
|
# Find Hr User group
|
|
group_hr_user_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_user')
|
|
self.group_hr_user_ref_id = group_hr_user_ref and group_hr_user_ref[1] or False
|
|
|
|
# Find Hr Manager group
|
|
group_hr_manager_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_manager')
|
|
self.group_hr_manager_ref_id = group_hr_manager_ref and group_hr_manager_ref[1] or False
|
|
|
|
|
|
|
|
self.test_hrmanager_user = self.env['res.users'].create({
|
|
'name': 'Bastien HrManager',
|
|
'login': 'bastien',
|
|
'alias_name': 'bastien',
|
|
'email': 'bastien.hrmanager@example.com',
|
|
'groups_id': [(6, 0, [self.group_employee_id, self.group_hr_manager_ref_id])]
|
|
})
|
|
|
|
self.test_hrmanager_employee = self.env['hr.employee'].create({
|
|
'name': 'Hr Manager Test',
|
|
'user_id':self.test_hrmanager_user.id,
|
|
})
|
|
|
|
|
|
self.test_user = self.env['res.users'].create({
|
|
'name': 'Agrolait Test User',
|
|
'login': 'user',
|
|
'email': 'hro@example.com',
|
|
'signature': '--\nAgr',
|
|
'groups_id': [(6, 0, [self.group_employee_id])]
|
|
})
|
|
|
|
self.test_employee = self.env['hr.employee'].create({
|
|
'name': 'Agrolait Test Emp',
|
|
'user_id':self.test_user.id,
|
|
'parent_id':self.test_hrmanager_employee.id,
|
|
})
|
|
|
|
working_hours = self.env["resource.calendar"].search([('name','=','45 Hours/Week')])
|
|
struct_id = self.env["hr.payroll.structure"].search([])
|
|
today_date = datetime.now().date()
|
|
test_contract = self.env['hr.contract'].create({
|
|
'name':'test employee contract',
|
|
'employee_id':self.test_employee.id,
|
|
'struct_id':struct_id[0].id,
|
|
'wage':100,
|
|
'date_start':str(today_date.replace(month=01,day=01)),
|
|
'date_end':str(today_date.replace(month=12,day=01)),
|
|
'working_hours':working_hours.id,
|
|
})
|
|
|
|
def test_fillup_sick_leave(self):
|
|
"""test case to test the sick leave fill up functionality"""
|
|
hr_sick_leave = self.env["hr.sick.leave"]
|
|
hr_analytic_timesheet =self.env['hr.analytic.timesheet']
|
|
today_date = datetime.now().date()
|
|
end_date = today_date+relativedelta(days=1)
|
|
hr_sick_leave_rec = hr_sick_leave.create({
|
|
'start_date':today_date,
|
|
'end_date':end_date,
|
|
})
|
|
|
|
hr_sick_leave_rec.with_context(active_ids = [self.test_employee.id]).confirm_sick_time()
|
|
leave_record = hr_analytic_timesheet.search([('date','>=',today_date),('date','<=',end_date),('user_id','<=',self.test_user.id)])
|
|
print"leave_record------",leave_record
|
|
if leave_record:
|
|
_logger.info('-----Sick leave is created.')
|
|
else:
|
|
self.assertEqual(1,2,'Sick leave is not created.')
|
|
|
|
def test_create_timesheet(self):
|
|
"""test case to test creation of timesheet and planned,fillup hours,closed timesheet"""
|
|
account_journal = self.env['account.analytic.journal'].search([])
|
|
account_analytic = self.env['account.analytic.account'].search([('use_timesheets','=',True),('type','=','contract')])
|
|
timesheet_sheet = self.env['hr_timesheet_sheet.sheet'].create({
|
|
'date_from': str(datetime.today()),
|
|
'date_to': str(datetime.today()),
|
|
'name': 'Agrolait Test',
|
|
'state': 'new',
|
|
'user_id': self.test_user.id,
|
|
'employee_id': self.test_employee.id,
|
|
'timesheet_ids': [(0, 0, {
|
|
'date': str(datetime.today()),
|
|
'name': 'Develop yaml for hr module(1)',
|
|
'user_id': self.test_user.id,
|
|
'unit_amount': 8.00,
|
|
'journal_id':account_journal[0].id,
|
|
'account_id':account_analytic[0].id,
|
|
})]})
|
|
|
|
try:
|
|
timesheet_sheet.action_timesheet_confirm()
|
|
except Exception:
|
|
pass
|
|
print"Planned hour--------",timesheet_sheet.total_contract_time
|
|
print"total_timesheet-11-------",timesheet_sheet.total_timesheet
|
|
print"actual_ot-11-------",timesheet_sheet.actual_ot
|
|
print"time_diff-11-------",timesheet_sheet.time_diff
|
|
self.assertEqual(timesheet_sheet.actual_ot,timesheet_sheet.time_diff,'Total overtime hour need to be equal.')
|
|
try:
|
|
timesheet_sheet.button_confirm()
|
|
except Exception:
|
|
pass
|
|
self.assertEqual(timesheet_sheet.actual_ot,timesheet_sheet.time_diff,'Total overtime hour need to be equal.')
|
|
|
|
def test_create_half_day_leave(self):
|
|
"""test half day leave test cases"""
|
|
|
|
hr_holidays = self.registry('hr.holidays')
|
|
holidays_status_1 = self.env["hr.holidays.status"].create({
|
|
'name': 'NotLimited',
|
|
'limit': True,
|
|
})
|
|
date_from = datetime.today() + relativedelta(days=2)
|
|
date_end = datetime.today() + relativedelta(days=2)
|
|
|
|
timesheet_rec = self.env['hr_timesheet_sheet.sheet'].create({
|
|
'date_from': str(date_from),
|
|
'date_to': str(date_end),
|
|
'name': 'Agrolait Test',
|
|
'state': 'new',
|
|
'user_id': self.test_user.id,
|
|
'employee_id': self.test_employee.id,
|
|
})
|
|
|
|
holiday_id = hr_holidays.create(self.cr, self.test_hrmanager_user.id,{
|
|
'name': 'Holiday1',
|
|
'employee_id': self.test_employee.id,
|
|
'holiday_status_id': holidays_status_1.id,
|
|
'date_from': str(date_from),
|
|
'date_to': str(date_end),
|
|
'leave_selection':'half_day',
|
|
'half_day_type':'morning',
|
|
'number_of_days_temp':0.5
|
|
})
|
|
holiday_rec = hr_holidays.browse(self.cr, self.test_hrmanager_user.id, holiday_id)
|
|
self.assertEqual(holiday_rec.state, 'confirm', 'hr_holidays: newly created leave request should be in confirm state')
|
|
self.assertEqual(holiday_rec.number_of_days_temp, 0.5, 'hr_holidays: Half day leave request need to shaw day as 0.5')
|
|
|
|
hr_holidays.signal_workflow(self.cr, self.test_hrmanager_user.id, [holiday_id], 'validate')
|
|
self.assertEqual(holiday_rec.state, 'validate', 'hr_holidays: validates leave request should be in validate state')
|
|
|
|
leave_record = self.env['hr.analytic.timesheet'].search([('date','>=',date_from),('date','<=',date_end),('user_id','<=',self.test_user.id)])
|
|
if leave_record:
|
|
_logger.info('-----Half Day leave is created.')
|
|
else:
|
|
self.assertEqual(1,2,'Half Day leave is not created.')
|
|
|
|
|