diff --git a/employee_orientation/README.rst b/employee_orientation/README.rst new file mode 100644 index 000000000..fc2d6d277 --- /dev/null +++ b/employee_orientation/README.rst @@ -0,0 +1,21 @@ +Employee Orientation v10 +======================== + +This module developed to manage employee orientation&training programs. + +Installation +============ +Just select it from modules list to install, there is no need to extra installations. + +Usage +===== + +# The system automatically create employee orientation request when employee orientation is confirmed. +# Now when responsible person login in system, he/she will find job allocated as Orientation Checklists Requests and finish it. + +Credits +======= +Developer: Anusha @ cybrosys + + + diff --git a/employee_orientation/__init__.py b/employee_orientation/__init__.py new file mode 100644 index 000000000..a8dc6be8e --- /dev/null +++ b/employee_orientation/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies ().# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +from . import models +from . import wizard diff --git a/employee_orientation/__manifest__.py b/employee_orientation/__manifest__.py new file mode 100644 index 000000000..491f2a04c --- /dev/null +++ b/employee_orientation/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies ().# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +{ + 'name': "Employee Orientation & Training", + 'version': '10.0.1.0.0', + "category": "Generic Modules/Human Resources", + 'summary': """Employee Orientation/Training Program""", + 'description': """Complete Employee Orientation/Training Program""", + 'author': "Cybrosys Techno Solutions", + 'company': "Cybrosys Techno Solutions", + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'hr'], + 'data': [ + 'security/ir.model.access.csv', + 'wizard/orientation_complete.xml', + 'views/orientation_checklist_line.xml', + 'views/orientation_checklist.xml', + 'views/employee_orientation.xml', + 'views/orientation_checklists_request.xml', + 'views/orientation_checklist_sequence.xml', + 'views/orientation_request_mail_template.xml', + 'views/employee_training.xml', + ], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_orientation/models/__init__.py b/employee_orientation/models/__init__.py new file mode 100644 index 000000000..113fd6a00 --- /dev/null +++ b/employee_orientation/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +################################################################################### +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies ().# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### +from . import orientation_checklist_line +from . import orientation_checklist +from . import employee_orientation +from . import orientation_checklist_request +from . import employee_training diff --git a/employee_orientation/models/employee_orientation.py b/employee_orientation/models/employee_orientation.py new file mode 100644 index 000000000..b7e8c332a --- /dev/null +++ b/employee_orientation/models/employee_orientation.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +from openerp import api, fields, models, _ + + +class Orientation(models.Model): + _name = 'employee.orientation' + _description = "Employee Orientation" + _inherit = ['mail.thread', 'ir.needaction_mixin'] + + name = fields.Char(string='Employee Orientation', readonly=True, default=lambda self: _('New')) + employee_name = fields.Many2one('hr.employee', string='Employee', size=32, required=True) + department = fields.Many2one('hr.department', string='Department', related='employee_name.department_id', required=True) + date = fields.Date(string="Date", default=fields.Datetime.now) + responsible_user = fields.Many2one('res.users', string='Responsible User') + employee_company = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + parent_id = fields.Many2one('hr.employee', string='Manager', related='employee_name.parent_id') + job_id = fields.Many2one('hr.job', string='Job Title', related='employee_name.job_id', + domain="[('department_id', '=', department)]") + orientation_id = fields.Many2one('orientation.checklist', string='Orientation Checklist', + domain="[('checklist_department','=', department)]", required=True) + note_id = fields.Text('Description') + orientation_request = fields.One2many('orientation.request', 'request_orientation', string='Orientation Request') + state = fields.Selection([ + ('draft', 'Draft'), + ('confirm', 'Confirmed'), + ('cancel', 'Canceled'), + ('complete', 'Completed'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') + + @api.multi + def confirm_orientation(self): + self.write({'state': 'confirm'}) + for values in self.orientation_id.checklist_line_id: + self.env['orientation.request'].create({ + 'request_name': values.line_name, + 'request_orientation': self.id, + 'partner_id': values.responsible_user.id, + 'request_date': self.date, + 'employee_id': self.employee_name.id, + }) + + @api.multi + def cancel_orientation(self): + for request in self.orientation_request: + request.state = 'cancel' + self.write({'state': 'cancel'}) + + @api.multi + def complete_orientation(self): + force_complete = False + for request in self.orientation_request: + if request.state == 'new': + force_complete = True + if force_complete: + return { + 'name': 'Complete Orientation', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'orientation.force.complete', + 'type': 'ir.actions.act_window', + 'context': {'default_orientation_id': self.id}, + 'target': 'new', + } + self.write({'state': 'complete'}) + + @api.model + def create(self, vals): + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code('employee.orientation') or 'New' + result = super(Orientation, self).create(vals) + return result diff --git a/employee_orientation/models/employee_training.py b/employee_orientation/models/employee_training.py new file mode 100644 index 000000000..677cc8f4f --- /dev/null +++ b/employee_orientation/models/employee_training.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +from openerp import api, fields, models, _ + + +class EmployeeTraining(models.Model): + _name = 'employee.training' + _rec_name = 'program_name' + _description = "Employee Training" + _inherit = ['mail.thread', 'ir.needaction_mixin'] + + program_name = fields.Char(string='Training Program', required=True) + program_department = fields.Many2one('hr.department', string='Department', required=True) + program_convener = fields.Many2one('res.users', string='Responsible User', size=32, required=True) + training_id = fields.One2many('hr.employee', string='Employee Details', compute="employee_details") + note_id = fields.Text('Description') + date_from = fields.Date(string="Date From") + date_to = fields.Date(string="Date To") + user_id = fields.Many2one('res.users', string='users', default=lambda self: self.env.user) + company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + state = fields.Selection([ + ('new', 'New'), + ('confirm', 'Confirmed'), + ('cancel', 'Canceled'), + ('complete', 'Completed'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='new') + + @api.onchange('program_department') + def employee_details(self): + data = self.env['hr.employee'].search( + [('department_id', '=', self.program_department.id)]) + self.training_id = data + + @api.multi + def complete_event(self): + self.write({'state': 'complete'}) + + @api.multi + def confirm_event(self): + self.write({'state': 'confirm'}) + + @api.multi + def cancel_event(self): + self.write({'state': 'cancel'}) + + @api.multi + def confirm_send_mail(self): + self.ensure_one() + ir_model_data = self.env['ir.model.data'] + try: + template_id = ir_model_data.get_object_reference('employee_orientation', 'orientation_training_mailer')[1] + except ValueError: + template_id = False + try: + compose_form_id = ir_model_data.get_object_reference('mail', 'email_compose_message_wizard_form')[1] + except ValueError: + compose_form_id = False + ctx = dict(self.env.context or {}) + ctx.update({ + 'default_model': 'employee.training', + 'default_res_id': self.ids[0], + 'default_use_template': bool(template_id), + 'default_template_id': template_id, + 'default_composition_mode': 'comment', + }) + + return { + 'name': _('Compose Email'), + 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'mail.compose.message', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } diff --git a/employee_orientation/models/orientation_checklist.py b/employee_orientation/models/orientation_checklist.py new file mode 100644 index 000000000..7011381f9 --- /dev/null +++ b/employee_orientation/models/orientation_checklist.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, _ + + +class OrientationChecklist(models.Model): + _name = 'orientation.checklist' + _description = "Checklist" + _rec_name = 'checklist_name' + _inherit = ['mail.thread', 'ir.needaction_mixin'] + + checklist_name = fields.Char(string='Name', required=True) + checklist_department = fields.Many2one('hr.department', string='Department', required=True) + active = fields.Boolean(string='Active', default=True, + help="Set active to false to hide the Orientation Checklist without removing it.") + checklist_line_id = fields.Many2many('checklist.line', 'checklist_line_rel', String="Checklist") + + + + + diff --git a/employee_orientation/models/orientation_checklist_line.py b/employee_orientation/models/orientation_checklist_line.py new file mode 100644 index 000000000..f1ba7a428 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_line.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields + + +class ChecklistLine(models.Model): + _name = 'checklist.line' + _rec_name = 'line_name' + + line_name = fields.Char(string='Name', required=True) + responsible_user = fields.Many2one('res.users', string='Responsible User', required=True) diff --git a/employee_orientation/models/orientation_checklist_request.py b/employee_orientation/models/orientation_checklist_request.py new file mode 100644 index 000000000..70d66aaee --- /dev/null +++ b/employee_orientation/models/orientation_checklist_request.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api +from openerp.tools.translate import _ + + +class OrientationChecklistRequest(models.Model): + _name = 'orientation.request' + _description = "Employee Orientation Request" + _rec_name = 'request_name' + _inherit = ['mail.thread', 'ir.needaction_mixin'] + + request_name = fields.Char(string='Name') + request_orientation = fields.Many2one('employee.orientation', string='Employee Orientation') + employee_company = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + partner_id = fields.Many2one('res.users', string='Responsible User') + request_date = fields.Date(string="Date") + employee_id = fields.Many2one('hr.employee', string='Employee') + request_expected_date = fields.Date(string="Expected Date") + attachment_id_1 = fields.Many2many('ir.attachment', 'orientation_rel_1', string="Attachment") + note_id = fields.Text('Description') + user_id = fields.Many2one('res.users', string='users', default=lambda self: self.env.user) + company_id = fields.Many2one('res.company', string='Company', required=True, + default=lambda self: self.env.user.company_id) + state = fields.Selection([ + ('new', 'New'), + ('cancel', 'Cancel'), + ('complete', 'Completed'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='new') + + @api.multi + def confirm_send_mail(self): + self.ensure_one() + ir_model_data = self.env['ir.model.data'] + try: + template_id = ir_model_data.get_object_reference('employee_orientation', 'orientation_request_mailer')[1] + except ValueError: + template_id = False + try: + compose_form_id = ir_model_data.get_object_reference('mail', 'email_compose_message_wizard_form')[1] + except ValueError: + compose_form_id = False + ctx = dict(self.env.context or {}) + ctx.update({ + 'default_model': 'orientation.request', + 'default_res_id': self.ids[0], + 'default_use_template': bool(template_id), + 'default_template_id': template_id, + 'default_composition_mode': 'comment', + }) + + return { + 'name': _('Compose Email'), + 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'mail.compose.message', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } + + @api.multi + def confirm_request(self): + self.write({'state': "complete"}) + + @api.multi + def cancel_request(self): + self.write({'state': "cancel"}) diff --git a/employee_orientation/security/ir.model.access.csv b/employee_orientation/security/ir.model.access.csv new file mode 100644 index 000000000..1a3d3134c --- /dev/null +++ b/employee_orientation/security/ir.model.access.csv @@ -0,0 +1,18 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_user_orientation_request,orientation.request,model_orientation_request,hr.group_hr_user,1,1,1,1 +access_manager_orientation_request,orientation.request,model_orientation_request,base.group_user,1,1,0,0 +access_user_checklist_line,checklist.line,model_checklist_line,hr.group_hr_user,1,0,0,0 +access_manager_checklist_line,checklist.line,model_checklist_line,hr.group_hr_manager,1,1,1,1 +access_user_employee_orientation,employee.orientation,model_employee_orientation,hr.group_hr_user,1,1,1,1 +access_manager_employee_orientation_request,orientation.checklist,model_orientation_checklist,hr.group_hr_user,1,1,1,1 +access_user_employee_training,employee.training,model_employee_training,hr.group_hr_user,1,1,1,1 +access_manager_employee_training,employee.training,model_employee_training,base.group_user,1,1,0,0 + + + + + + + + + diff --git a/employee_orientation/static/description/banner.jpg b/employee_orientation/static/description/banner.jpg new file mode 100644 index 000000000..067ede9fb Binary files /dev/null and b/employee_orientation/static/description/banner.jpg differ diff --git a/employee_orientation/static/description/cybro_logo.png b/employee_orientation/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/employee_orientation/static/description/cybro_logo.png differ diff --git a/employee_orientation/static/description/hr_orientation_1.png b/employee_orientation/static/description/hr_orientation_1.png new file mode 100644 index 000000000..e375839a9 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_1.png differ diff --git a/employee_orientation/static/description/hr_orientation_10.png b/employee_orientation/static/description/hr_orientation_10.png new file mode 100644 index 000000000..743282f1d Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_10.png differ diff --git a/employee_orientation/static/description/hr_orientation_11.png b/employee_orientation/static/description/hr_orientation_11.png new file mode 100644 index 000000000..ffc196c5c Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_11.png differ diff --git a/employee_orientation/static/description/hr_orientation_12.png b/employee_orientation/static/description/hr_orientation_12.png new file mode 100644 index 000000000..c2651e81a Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_12.png differ diff --git a/employee_orientation/static/description/hr_orientation_13.png b/employee_orientation/static/description/hr_orientation_13.png new file mode 100644 index 000000000..ed1019dd3 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_13.png differ diff --git a/employee_orientation/static/description/hr_orientation_2.png b/employee_orientation/static/description/hr_orientation_2.png new file mode 100644 index 000000000..9933f04b7 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_2.png differ diff --git a/employee_orientation/static/description/hr_orientation_3.png b/employee_orientation/static/description/hr_orientation_3.png new file mode 100644 index 000000000..20ad10e6d Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_3.png differ diff --git a/employee_orientation/static/description/hr_orientation_4.png b/employee_orientation/static/description/hr_orientation_4.png new file mode 100644 index 000000000..51f32e194 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_4.png differ diff --git a/employee_orientation/static/description/hr_orientation_5.png b/employee_orientation/static/description/hr_orientation_5.png new file mode 100644 index 000000000..daf06ed33 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_5.png differ diff --git a/employee_orientation/static/description/hr_orientation_6.png b/employee_orientation/static/description/hr_orientation_6.png new file mode 100644 index 000000000..567fd4ed3 Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_6.png differ diff --git a/employee_orientation/static/description/hr_orientation_7.png b/employee_orientation/static/description/hr_orientation_7.png new file mode 100644 index 000000000..3d9c9882b Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_7.png differ diff --git a/employee_orientation/static/description/hr_orientation_8.png b/employee_orientation/static/description/hr_orientation_8.png new file mode 100644 index 000000000..0658c57ed Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_8.png differ diff --git a/employee_orientation/static/description/hr_orientation_9.png b/employee_orientation/static/description/hr_orientation_9.png new file mode 100644 index 000000000..2253f5e6a Binary files /dev/null and b/employee_orientation/static/description/hr_orientation_9.png differ diff --git a/employee_orientation/static/description/icon.png b/employee_orientation/static/description/icon.png new file mode 100644 index 000000000..ce3b03d64 Binary files /dev/null and b/employee_orientation/static/description/icon.png differ diff --git a/employee_orientation/static/description/index.html b/employee_orientation/static/description/index.html new file mode 100644 index 000000000..dfee3fd04 --- /dev/null +++ b/employee_orientation/static/description/index.html @@ -0,0 +1,161 @@ +
+
+

Employee Orientation & Training

+

Manage Employee Orientation And Training Programs

+

Cybrosys Technologies

+
+
+

Major Features:

+
+ Makes the Employee Orientation Program easier.
+ Systematical Workflow.
+ Allows to Create Employee Training Programs.
+ Email Notification for each Responsible person.
+
+
+
+ +
+
+
+

Overview

+

+ Employee orientation/training is the process by which an employee acquires the necessary skills, + knowledge, behaviors, and contacts to effectively transition into a new organization.It can enhance + the overall satisfaction of employees and can encourage a positive attitude about the employer. + Employees view companies that offer meaningful benefits as more caring and engaged with their needs. + This may help reduce turnover and increase productivity +

+
+
+
+ +
+
+

Configuration

+
+

You can configure employee orientation programs for each department from + Employees -> Configuration -> Orientation Program

+
+

Orientation Checklist

+ +
+
+ +
+
+
+
+ +
+
+

Orientation Checklist Line

+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+

Employee Orientation

+
+
+ +
+
+
+
+ +
+
+
+
+

+ On confirming employee orientation, creates orientation lines from corresponding orientation checklist. +

+
+ +
+
+
+
+ +
+
+

Orientation Request

+
+
+ +
+
+
+
+ +
+
+

Email Template

+
+
+ +
+
+
+
+ +
+
+

Employee Training

+
+
+ +
+
+
+
+ +
+
+

Email Template

+
+
+ +
+
+
+
+ +
+

Need Any Help?

+ +
+ + diff --git a/employee_orientation/views/employee_orientation.xml b/employee_orientation/views/employee_orientation.xml new file mode 100644 index 000000000..625054c85 --- /dev/null +++ b/employee_orientation/views/employee_orientation.xml @@ -0,0 +1,112 @@ + + + + + employee.orientation.tree + employee.orientation + + + + + + + + + + + + + employee.orientation.form + employee.orientation + +
+
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + employee.orientation.search + employee.orientation + + + + + + + + + + + + + Employee Orientation + ir.actions.act_window + employee.orientation + form + tree,form + + [] + {} + +

+ Create Employee Orientation. +

+
+
+ +
+
diff --git a/employee_orientation/views/employee_training.xml b/employee_orientation/views/employee_training.xml new file mode 100644 index 000000000..fdd77589a --- /dev/null +++ b/employee_orientation/views/employee_training.xml @@ -0,0 +1,91 @@ + + + + + employee.training.tree + employee.training + + + + + + + + + + + employee.training.form + employee.training + +
+
+
+ + + + + + + + + + + + + + +
+ + +
+
+
+
+ + employee.training.search + employee.training + + + + + + + + + + + + Employee Training Program + ir.actions.act_window + employee.training + form + tree,form + + [] + {} + +

+ Create Employee Training Program. +

+
+
+ + +
+
diff --git a/employee_orientation/views/orientation_checklist.xml b/employee_orientation/views/orientation_checklist.xml new file mode 100644 index 000000000..dc4523716 --- /dev/null +++ b/employee_orientation/views/orientation_checklist.xml @@ -0,0 +1,87 @@ + + + + + orientation.checklist.tree + orientation.checklist + + + + + + + + + + + orientation.checklist.form + orientation.checklist + + +
+ + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + + orientation.checklist.search + orientation.checklist + + + + + + + + + + + + + + Orientation Checklist + ir.actions.act_window + orientation.checklist + form + tree,form + + [] + {'search_default_active': True} + +

+ Create Orientation Checklists. +

+
+
+ + +
+
diff --git a/employee_orientation/views/orientation_checklist_line.xml b/employee_orientation/views/orientation_checklist_line.xml new file mode 100644 index 000000000..2c3b01a62 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_line.xml @@ -0,0 +1,85 @@ + + + + + checklist.line.tree + checklist.line + + + + + + + + + + checklist.line.form + checklist.line + + +
+ + + + + + +
+
+
+ + checklist.line.search + checklist.line + + + + + + + + + + + + + + Orientation Checklist Line + ir.actions.act_window + checklist.line + form + tree,form + + [] + {} + +

+ Create Orientation Checklists Lines. +

+
+
+ + + + + + + +
+
diff --git a/employee_orientation/views/orientation_checklist_sequence.xml b/employee_orientation/views/orientation_checklist_sequence.xml new file mode 100644 index 000000000..17685ffe4 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_sequence.xml @@ -0,0 +1,15 @@ + + + + + + + Employee Orientation + employee.orientation + OR + 3 + + + + + \ No newline at end of file diff --git a/employee_orientation/views/orientation_checklists_request.xml b/employee_orientation/views/orientation_checklists_request.xml new file mode 100644 index 000000000..15c003bc9 --- /dev/null +++ b/employee_orientation/views/orientation_checklists_request.xml @@ -0,0 +1,84 @@ + + + + + orientation.request.tree + orientation.request + + + + + + + + + + + orientation.request.form + orientation.request + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + orientation.request.search + orientation.request + + + + + + + + + + + + Orientation Request + ir.actions.act_window + orientation.request + form + tree,form + + [] + {} + +

+ Create Orientation Requests. +

+
+
+ +
+
diff --git a/employee_orientation/views/orientation_request_mail_template.xml b/employee_orientation/views/orientation_request_mail_template.xml new file mode 100644 index 000000000..dcb5e79c1 --- /dev/null +++ b/employee_orientation/views/orientation_request_mail_template.xml @@ -0,0 +1,90 @@ + + + + + Employee Orientation Request + ${(object.user_id.email or object.company_id.email)|safe} + ${(object.partner_id.email)} + Employee Orientation Request + + + +

Hello ${object.partner_id.name},

+

Your are request to conduct orientation program listed below.

+

Check Line: ${object.request_name}

+

Employee: ${object.employee_id.name}

+ %if object.request_expected_date: +

Expected Date: ${object.request_expected_date}

+ % endif +
+

Thank you!

+
+
+

+ ${object.company_id.name}

+
+
+ + ${object.company_id.partner_id.sudo().with_context(show_address=True, html_format=True).name_get()[0][1] | safe} + + % if object.company_id.phone: +
+ Phone:  ${object.company_id.phone} +
+ % endif + % if object.company_id.website: + + %endif +

+
+ + ]]> +
+
+ + Employee Training program + ${(object.user_id.email or object.company_id.email)} + ${(object.program_convener.email)|safe} + Employee Training Request + + + +

Hello ${object.program_convener.name},

+

Your are request to conduct ${object.program_name} Training program for ${object.program_department.name} department + % if object.from_date and object.to_date: + from ${object.from_date} to ${object.to_date} + % endif + .

+
+

Thank you!

+
+
+

+ ${object.company_id.name}

+
+
+ + ${object.company_id.partner_id.sudo().with_context(show_address=True, html_format=True).name_get()[0][1] | safe} + + % if object.company_id.phone: +
+ Phone:  ${object.company_id.phone} +
+ % endif + % if object.company_id.website: + + %endif +

+
+ + ]]> +
+
+
+
\ No newline at end of file diff --git a/employee_orientation/wizard/__init__.py b/employee_orientation/wizard/__init__.py new file mode 100644 index 000000000..d55a4e1cc --- /dev/null +++ b/employee_orientation/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import orientation_complete diff --git a/employee_orientation/wizard/orientation_complete.py b/employee_orientation/wizard/orientation_complete.py new file mode 100644 index 000000000..94eab4302 --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +from openerp import api, fields, models, _ + + +class OrientationForceComplete(models.TransientModel): + _name = 'orientation.force.complete' + + name = fields.Char() + orientation_id = fields.Many2one('employee.orientation', string='Orientation') + orientation_lines = fields.One2many('orientation.request', string='Orientation Lines', compute='pending_lines') + + @api.onchange('orientation_id') + def pending_lines(self): + pending = [] + for data in self.orientation_id.orientation_request: + if data.state == 'new': + pending.append(data.id) + self.update({'orientation_lines': pending}) + + @api.multi + def force_complete(self): + for line in self.orientation_lines: + if line.state != 'cancel': + line.state = 'complete' + self.orientation_id.write({'state': 'complete'}) + diff --git a/employee_orientation/wizard/orientation_complete.xml b/employee_orientation/wizard/orientation_complete.xml new file mode 100644 index 000000000..8dfb0de35 --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.xml @@ -0,0 +1,23 @@ + + + + + orientation.force.complete.form + orientation.force.complete + +
+

+ Please make sure that orientations programs are already done. +

+ +
+
+
\ No newline at end of file