|
@ -20,9 +20,8 @@ |
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
|
|
# |
|
|
# |
|
|
################################################################################### |
|
|
################################################################################### |
|
|
|
|
|
|
|
|
from datetime import date |
|
|
from datetime import date |
|
|
from odoo import models, fields, api |
|
|
from odoo import models, fields, api ,_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EmployeeFormInherit(models.Model): |
|
|
class EmployeeFormInherit(models.Model): |
|
@ -43,6 +42,7 @@ class EmployeeFormInherit(models.Model): |
|
|
'state': 'grounding'}) |
|
|
'state': 'grounding'}) |
|
|
|
|
|
|
|
|
def set_as_employee(self): |
|
|
def set_as_employee(self): |
|
|
|
|
|
print('Setting') |
|
|
self.state = 'employment' |
|
|
self.state = 'employment' |
|
|
stage_obj = self.stages_history.search([('employee_id', '=', self.id), |
|
|
stage_obj = self.stages_history.search([('employee_id', '=', self.id), |
|
|
('state', '=', 'test_period')]) |
|
|
('state', '=', 'test_period')]) |
|
@ -66,7 +66,8 @@ class EmployeeFormInherit(models.Model): |
|
|
self.state = 'relieved' |
|
|
self.state = 'relieved' |
|
|
self.active = False |
|
|
self.active = False |
|
|
stage_obj = self.stages_history.search([('employee_id', '=', self.id), |
|
|
stage_obj = self.stages_history.search([('employee_id', '=', self.id), |
|
|
('state', '=', 'notice_period')]) |
|
|
( |
|
|
|
|
|
'state', '=', 'notice_period')]) |
|
|
if stage_obj: |
|
|
if stage_obj: |
|
|
stage_obj.sudo().write({'end_date': date.today()}) |
|
|
stage_obj.sudo().write({'end_date': date.today()}) |
|
|
self.stages_history.sudo().create({'end_date': date.today(), |
|
|
self.stages_history.sudo().create({'end_date': date.today(), |
|
@ -76,7 +77,8 @@ class EmployeeFormInherit(models.Model): |
|
|
def start_test_period(self): |
|
|
def start_test_period(self): |
|
|
self.state = 'test_period' |
|
|
self.state = 'test_period' |
|
|
self.stages_history.search([('employee_id', '=', self.id), |
|
|
self.stages_history.search([('employee_id', '=', self.id), |
|
|
('state', '=', 'grounding')]).sudo().write({'end_date': date.today()}) |
|
|
('state', '=', 'grounding')]).sudo().write( |
|
|
|
|
|
{'end_date': date.today()}) |
|
|
self.stages_history.sudo().create({'start_date': date.today(), |
|
|
self.stages_history.sudo().create({'start_date': date.today(), |
|
|
'employee_id': self.id, |
|
|
'employee_id': self.id, |
|
|
'state': 'test_period'}) |
|
|
'state': 'test_period'}) |
|
@ -91,7 +93,9 @@ class EmployeeFormInherit(models.Model): |
|
|
stage_obj.sudo().write({'end_date': date.today()}) |
|
|
stage_obj.sudo().write({'end_date': date.today()}) |
|
|
else: |
|
|
else: |
|
|
self.stages_history.search([('employee_id', '=', self.id), |
|
|
self.stages_history.search([('employee_id', '=', self.id), |
|
|
('state', '=', 'grounding')]).sudo().write({'end_date': date.today()}) |
|
|
('state', '=', |
|
|
|
|
|
'grounding')]).sudo().write( |
|
|
|
|
|
{'end_date': date.today()}) |
|
|
self.stages_history.sudo().create({'end_date': date.today(), |
|
|
self.stages_history.sudo().create({'end_date': date.today(), |
|
|
'employee_id': self.id, |
|
|
'employee_id': self.id, |
|
|
'state': 'terminate'}) |
|
|
'state': 'terminate'}) |
|
@ -102,11 +106,33 @@ class EmployeeFormInherit(models.Model): |
|
|
('employment', 'Employment'), |
|
|
('employment', 'Employment'), |
|
|
('notice_period', 'Notice Period'), |
|
|
('notice_period', 'Notice Period'), |
|
|
('relieved', 'Resigned'), |
|
|
('relieved', 'Resigned'), |
|
|
('terminate', 'Terminated')], string='Status', default='joined', |
|
|
('terminate', 'Terminated')], string='Status', |
|
|
|
|
|
default='joined', |
|
|
track_visibility='always', copy=False, |
|
|
track_visibility='always', copy=False, |
|
|
help="Employee Stages.\nSlap On: Joined\nGrounding: Training\nTest period : Probation") |
|
|
help="Employee Stages.\nSlap On: " |
|
|
stages_history = fields.One2many('hr.employee.status.history', 'employee_id', string='Stage History', |
|
|
"Joined\nGrounding: Training\nTest period : " |
|
|
help='It shows the duration and history of each stages') |
|
|
"Probation") |
|
|
|
|
|
stages_history = fields.One2many('hr.employee.status.history', |
|
|
|
|
|
'employee_id', string='Stage History', |
|
|
|
|
|
help='It shows the duration and history ' |
|
|
|
|
|
'of each stages') |
|
|
|
|
|
|
|
|
|
|
|
@api.onchange('state') |
|
|
|
|
|
def onchange_state(self): |
|
|
|
|
|
if self.state == 'grounding': |
|
|
|
|
|
self.start_grounding() |
|
|
|
|
|
if self.state == 'test_period': |
|
|
|
|
|
self.start_test_period() |
|
|
|
|
|
if self.state == 'notice_period': |
|
|
|
|
|
self.start_notice_period() |
|
|
|
|
|
if self.state == 'relieved': |
|
|
|
|
|
self.relived() |
|
|
|
|
|
if self.state == 'terminate': |
|
|
|
|
|
self.terminate() |
|
|
|
|
|
if self.state == 'employment': |
|
|
|
|
|
if not self.user_id: |
|
|
|
|
|
return {'warning': {'title': _('Warning'), 'message': _( |
|
|
|
|
|
'Please set a related user for this employee')}} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EmployeeStageHistory(models.Model): |
|
|
class EmployeeStageHistory(models.Model): |
|
@ -116,12 +142,15 @@ class EmployeeStageHistory(models.Model): |
|
|
start_date = fields.Date(string='Start Date') |
|
|
start_date = fields.Date(string='Start Date') |
|
|
end_date = fields.Date(string='End Date') |
|
|
end_date = fields.Date(string='End Date') |
|
|
duration = fields.Integer(compute='get_duration', string='Duration(days)') |
|
|
duration = fields.Integer(compute='get_duration', string='Duration(days)') |
|
|
|
|
|
description = fields.Char(string='Description', help='Description if add ' |
|
|
|
|
|
'anything') |
|
|
|
|
|
|
|
|
def get_duration(self): |
|
|
def get_duration(self): |
|
|
self.duration = 0 |
|
|
self.duration = 0 |
|
|
for each in self: |
|
|
for each in self: |
|
|
if each.end_date and each.start_date: |
|
|
if each.end_date and each.start_date: |
|
|
duration = fields.Date.from_string(each.end_date) - fields.Date.from_string(each.start_date) |
|
|
duration = fields.Date.from_string( |
|
|
|
|
|
each.end_date) - fields.Date.from_string(each.start_date) |
|
|
each.duration = duration.days |
|
|
each.duration = duration.days |
|
|
|
|
|
|
|
|
state = fields.Selection([('joined', 'Slap On'), |
|
|
state = fields.Selection([('joined', 'Slap On'), |
|
@ -134,19 +163,6 @@ class EmployeeStageHistory(models.Model): |
|
|
employee_id = fields.Many2one('hr.employee', invisible=1) |
|
|
employee_id = fields.Many2one('hr.employee', invisible=1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class WizardEmployee(models.TransientModel): |
|
|
|
|
|
_name = 'wizard.employee.stage' |
|
|
|
|
|
|
|
|
|
|
|
def set_as_employee(self): |
|
|
|
|
|
context = self._context |
|
|
|
|
|
employee_obj = self.env['hr.employee'].search([('id', '=', context.get('employee_id'))]) |
|
|
|
|
|
if self.related_user: |
|
|
|
|
|
employee_obj.user_id = self.related_user |
|
|
|
|
|
employee_obj.set_as_employee() |
|
|
|
|
|
|
|
|
|
|
|
related_user = fields.Many2one('res.users', string="Related User") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HrEmployeePublic(models.Model): |
|
|
class HrEmployeePublic(models.Model): |
|
|
_inherit = 'hr.employee.public' |
|
|
_inherit = 'hr.employee.public' |
|
|
|
|
|
|