diff --git a/odex25_hr/exp_official_mission/models/hr_official_mission.py b/odex25_hr/exp_official_mission/models/hr_official_mission.py index bf0ba3e6e..5c982fa9b 100644 --- a/odex25_hr/exp_official_mission/models/hr_official_mission.py +++ b/odex25_hr/exp_official_mission/models/hr_official_mission.py @@ -30,10 +30,9 @@ class HrOfficialMission(models.Model): mission_purpose = fields.Text() state = fields.Selection([('draft', _('Draft')), ('send', _('Waiting Direct Manager')), - ('accounting_manager', _('Waiting Accounting Manager')), ('direct_manager', _('Waiting Department Manager')), ('depart_manager', _('Wait HR Department')), - ('accounting_manager_final', _('Waiting Accounting Manager')), + ('hr_aaproval', _('Wait Approval')), ('approve', _('Approved')), ('refused', _('Refused'))], default="draft", tracking=True) duration_type = fields.Selection(default='days', related='mission_type.duration_type') @@ -550,26 +549,24 @@ class HrOfficialMission(models.Model): self.state = "send" def direct_manager(self): - for rec in self: - manager = rec.sudo().employee_id.parent_id - hr_manager = rec.sudo().employee_id.company_id.hr_manager_id - if manager and self.env.uid not in (manager.user_id.id, hr_manager.user_id.id): - raise exceptions.Warning(_("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!") % (manager.name)) - - if rec.mission_type.related_with_financial: - rec.state = 'accounting_manager' - else: - rec.accounting_manager() - - def accounting_manager(self): # self.chick_employee_ids() self.employee_ids.chick_not_overtime() self.employee_ids.compute_Training_cost_emp() self.employee_ids.write({'status': 'approved'}) - self.state = 'direct_manager' + self.state = 'depart_manager' + for rec in self: + manager = rec.sudo().employee_id.parent_id + hr_manager = rec.sudo().employee_id.company_id.hr_manager_id + if manager: + if manager.user_id.id == rec.env.uid or hr_manager.user_id.id == rec.env.uid: + rec.write({'state': 'depart_manager'}) + else: + raise exceptions.Warning( + _("Sorry, The Approval For The Direct Manager '%s' Only OR HR Manager!") % (manager.name)) + else: + rec.write({'state': 'depart_manager'}) if self.mission_type.approve_by == 'direct_manager': - return self.approve() - return self._reset_to_action() + self.approve() # Refuse For The Direct Manager Only def direct_manager_refused(self): @@ -623,10 +620,7 @@ class HrOfficialMission(models.Model): self.employee_ids.chick_not_overtime() self.employee_ids.compute_Training_cost_emp() - if self.mission_type.related_with_financial: - self.state = "accounting_manager_final" - else: - self.approve() + self.state = "hr_aaproval" def get_ticket_cost(self, employee): for rec in self: @@ -763,12 +757,6 @@ class HrOfficialMission(models.Model): def refused(self): self.state = 'refused' self.reset_emp_work_state() - - def _reset_to_action(self): - if self.env.context.get('default_process_type') == 'mission': - return self.env.ref('exp_official_mission.employee_official_mission_action').sudo().read()[0] - else: - return self.env.ref('exp_official_mission.employee_training_action').sudo().read()[0] def reset_emp_work_state(self): if self.mission_type.work_state and self.mission_type.duration_type == 'days': diff --git a/odex25_hr/exp_official_mission/security/ir.model.access.csv b/odex25_hr/exp_official_mission/security/ir.model.access.csv index 3310bce9e..55bdbbede 100644 --- a/odex25_hr/exp_official_mission/security/ir.model.access.csv +++ b/odex25_hr/exp_official_mission/security/ir.model.access.csv @@ -15,6 +15,4 @@ access_training_appraisal_wizard,training_appraisal_wizard,model_training_apprai access_hr_mission_type_account_hr_user,access_hr_mission_type_account,model_hr_mission_type_account,hr.group_hr_user,1,1,1,1 access_hr_mission_type_account_emp,access_hr_mission_type_account,model_hr_mission_type_account,base.group_user,1,0,0,0 -access_mission_table,access_mission_table,model_mission_table,base.group_user,1,1,1,1 -access_hr_employee_accounting_manager,hr.employee.accounting.manager,hr.model_hr_employee,hr_base.group_account_manager,1,1,0,0 -access_hr_official_mission_accounting_manager,hr.official.mission.accounting.manager,model_hr_official_mission,hr_base.group_account_manager,1,1,0,0 \ No newline at end of file +access_mission_table,access_mission_table,model_mission_table,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/odex25_hr/exp_official_mission/security/official_mission_security.xml b/odex25_hr/exp_official_mission/security/official_mission_security.xml index fceabbcd6..820ecc413 100644 --- a/odex25_hr/exp_official_mission/security/official_mission_security.xml +++ b/odex25_hr/exp_official_mission/security/official_mission_security.xml @@ -18,19 +18,12 @@ Division manager: views missions of its subordinates ['|',('department_id2.manager_id.user_id','=',user.id), - ('department_id2.parent_id.manager_id','child_of', user.employee_id.ids)] + ('department_id2.parent_id.manager_id.user_id','child_of', [user.id])] - - Accounting Manager: views missions that needs approval - - ['|',('state','in',['accounting_manager','accounting_manager_final', 'approve', 'refused']),('employee_ids.employee_id.user_id','in',user.ids)] - - - Allow HR : views missions of all employees @@ -74,7 +67,7 @@ Division manager: views missions of its subordinates ['|',('employee_id.department_id.manager_id.user_id','=',user.id), - ('employee_id.department_id.parent_id.manager_id','child_of', user.employee_id.ids)] + ('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])] @@ -83,7 +76,7 @@ Allow HR : views missions of all employees [(1 ,'=', 1)] -