diff --git a/employee_check_list/README.rst b/employee_check_list/README.rst new file mode 100644 index 000000000..03a974df3 --- /dev/null +++ b/employee_check_list/README.rst @@ -0,0 +1,40 @@ +Employee Check List +=================== +This module is used to remembering the employee's entry and exit progress. + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: Nimisha Murali@cybrosys(V13) + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/employee_check_list/__init__.py b/employee_check_list/__init__.py new file mode 100644 index 000000000..b6ce483db --- /dev/null +++ b/employee_check_list/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models + diff --git a/employee_check_list/__manifest__.py b/employee_check_list/__manifest__.py new file mode 100644 index 000000000..e72d16467 --- /dev/null +++ b/employee_check_list/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Employee Checklist', + 'version': '13.0.1.0.0', + 'summary': """Manages Employee's Entry & Exit Process""", + 'description': """This module is used to remembering the employee's entry and exit progress.""", + 'category': 'Generic Modules/Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'employee_documents_expiry'], + 'data': [ + 'views/employee_form_inherit_view.xml', + 'views/checklist_view.xml', + 'views/settings_view.xml', + ], + 'demo': [], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} + diff --git a/employee_check_list/__manifest__.py~ b/employee_check_list/__manifest__.py~ new file mode 100644 index 000000000..4934f8f44 --- /dev/null +++ b/employee_check_list/__manifest__.py~ @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Nilmar Shereef() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': 'Employee Checklist', + 'version': '10.0.1.0.0', + 'summary': """Manages Employee's Entry & Exit Process""", + 'description': """This module is used to remembering the employee's entry and exit progress.""", + 'category': "Human Resources", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'employee_documents_expiry'], + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_form_inherit_view.xml', + 'views/checklist_view.xml', + 'views/settings_view.xml', + ], + 'demo': [], + 'images': ['static/description/banner.jpg'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_check_list/doc/RELEASE_NOTES.md b/employee_check_list/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..1d3eaedc9 --- /dev/null +++ b/employee_check_list/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 17.10.2019 +#### Version 13.0.1.0.0 +#### ADD +Initial commit for Employee Check List + + + diff --git a/employee_check_list/models/__init__.py b/employee_check_list/models/__init__.py new file mode 100644 index 000000000..2e5ae5287 --- /dev/null +++ b/employee_check_list/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import employee_master_inherit +from . import settings diff --git a/employee_check_list/models/employee_master_inherit.py b/employee_check_list/models/employee_master_inherit.py new file mode 100644 index 000000000..de085b1e6 --- /dev/null +++ b/employee_check_list/models/employee_master_inherit.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class EmployeeMasterInherit(models.Model): + _inherit = 'hr.employee' + + @api.depends('exit_checklist') + def exit_progress(self): + for each in self: + total_len = self.env['employee.checklist'].search_count([('document_type', '=', 'exit')]) + entry_len = len(each.exit_checklist) + if total_len != 0: + each.exit_progress = (entry_len * 100) / total_len + + @api.depends('entry_checklist') + def entry_progress(self): + for each in self: + total_len = self.env['employee.checklist'].search_count([('document_type', '=', 'entry')]) + entry_len = len(each.entry_checklist) + if total_len != 0: + each.entry_progress = (entry_len*100) / total_len + + entry_checklist = fields.Many2many('employee.checklist', 'entry_obj', 'check_hr_rel', 'hr_check_rel', + string='Entry Process', + domain=[('document_type', '=', 'entry')]) + exit_checklist = fields.Many2many('employee.checklist', 'exit_obj', 'exit_hr_rel', 'hr_exit_rel', + string='Exit Process', + domain=[('document_type', '=', 'exit')]) + entry_progress = fields.Float(compute=entry_progress, string='Entry Progress', store=True, default=0.0) + exit_progress = fields.Float(compute=exit_progress, string='Exit Progress', store=True, default=0.0) + maximum_rate = fields.Integer(default=100) + check_list_enable = fields.Boolean(invisible=True, copy=False) + + +class EmployeeDocumentInherit(models.Model): + _inherit = 'hr.employee.document' + + @api.model + def create(self, vals): + result = super(EmployeeDocumentInherit, self).create(vals) + if result.document_name.document_type == 'entry': + result.employee_ref.write({'entry_checklist': [(4, result.document_name.id)]}) + if result.document_name.document_type == 'exit': + result.employee_ref.write({'exit_checklist': [(4, result.document_name.id)]}) + return result + + def unlink(self): + for result in self: + if result.document_name.document_type == 'entry': + result.employee_ref.write({'entry_checklist': [(5, result.document_name.id)]}) + if result.document_name.document_type == 'exit': + result.employee_ref.write({'exit_checklist': [(5, result.document_name.id)]}) + res = super(EmployeeDocumentInherit, self).unlink() + return res + + +class EmployeeChecklistInherit(models.Model): + _inherit = 'employee.checklist' + + entry_obj = fields.Many2many('hr.employee', 'entry_checklist', 'hr_check_rel', 'check_hr_rel', + invisible=1) + exit_obj = fields.Many2many('hr.employee', 'exit_checklist', 'hr_exit_rel', 'exit_hr_rel', + invisible=1) diff --git a/employee_check_list/models/settings.py b/employee_check_list/models/settings.py new file mode 100644 index 000000000..7bcb513eb --- /dev/null +++ b/employee_check_list/models/settings.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class HRSettings(models.TransientModel): + _inherit = 'res.config.settings' + + enable_checklist = fields.Boolean(string='Enable Checklist Progress in Kanban?', default=False) + + @api.model + def get_values(self): + res = super(HRSettings, self).get_values() + config = self.env['ir.config_parameter'].sudo() + enable_checklist = config.get_param('employee_check_list.enable_checklist', default=False) + res.update( + enable_checklist=enable_checklist + ) + return res + + def set_values(self): + super(HRSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param('employee_check_list.enable_checklist', + self.enable_checklist) + emp_obj = self.env['hr.employee'].search([]) + for rec in emp_obj: + rec.write({'check_list_enable': self.enable_checklist}) + + diff --git a/employee_check_list/static/description/banner.jpg b/employee_check_list/static/description/banner.jpg new file mode 100644 index 000000000..185536156 Binary files /dev/null and b/employee_check_list/static/description/banner.jpg differ diff --git a/employee_check_list/static/description/cybro_logo.png b/employee_check_list/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/employee_check_list/static/description/cybro_logo.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-1.png b/employee_check_list/static/description/employee-checklist-cybrosys-1.png new file mode 100644 index 000000000..0ab1e38e6 Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-1.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-2.png b/employee_check_list/static/description/employee-checklist-cybrosys-2.png new file mode 100644 index 000000000..bc8f5032a Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-2.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-3.png b/employee_check_list/static/description/employee-checklist-cybrosys-3.png new file mode 100644 index 000000000..023bb1d0d Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-3.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-4.png b/employee_check_list/static/description/employee-checklist-cybrosys-4.png new file mode 100644 index 000000000..4ec0ceb25 Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-4.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-5.png b/employee_check_list/static/description/employee-checklist-cybrosys-5.png new file mode 100644 index 000000000..c91273215 Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-5.png differ diff --git a/employee_check_list/static/description/employee-checklist-cybrosys-6.png b/employee_check_list/static/description/employee-checklist-cybrosys-6.png new file mode 100644 index 000000000..615cbf4c8 Binary files /dev/null and b/employee_check_list/static/description/employee-checklist-cybrosys-6.png differ diff --git a/employee_check_list/static/description/entry_checklist.png b/employee_check_list/static/description/entry_checklist.png new file mode 100644 index 000000000..9a492f258 Binary files /dev/null and b/employee_check_list/static/description/entry_checklist.png differ diff --git a/employee_check_list/static/description/exit_checklist.png b/employee_check_list/static/description/exit_checklist.png new file mode 100644 index 000000000..ea95aae3c Binary files /dev/null and b/employee_check_list/static/description/exit_checklist.png differ diff --git a/employee_check_list/static/description/form_view.png b/employee_check_list/static/description/form_view.png new file mode 100644 index 000000000..dddd63a01 Binary files /dev/null and b/employee_check_list/static/description/form_view.png differ diff --git a/employee_check_list/static/description/icon.png b/employee_check_list/static/description/icon.png new file mode 100644 index 000000000..0f20b8400 Binary files /dev/null and b/employee_check_list/static/description/icon.png differ diff --git a/employee_check_list/static/description/index.html b/employee_check_list/static/description/index.html new file mode 100644 index 000000000..54c20fd88 --- /dev/null +++ b/employee_check_list/static/description/index.html @@ -0,0 +1,373 @@ + +
+
+

+ Employee Exit/Entry Checklist +

+

+ Manages Employees Entry & Exit Process +

+
+ Cybrosys Technologies +
+ +
+ cybrosys technologies +
+
+
+
+ +
+
+

+ Overview +

+

+ A well functioning human resource department will lay down a number procedure and process before an employee during joining/resigning time. It may be submission/Return of a certificate or attending a conference etc. A person has to undergo all these checklist items before being admitted/resigned. The module simplifies the process by providing you a checklist to mark the proceedings. + It will also display the PercentPie of the checklist items completed. +

+
+
+ +
+
+

+ Features +

+

+ + Managing entry/exit process. +

+

+ + Automatic process on document attachments. +

+

+ + Option to enable Gauge widget for employee kanban. +

+

+ + Entry/Exit Percentpie in employee form view. +

+

+ + Entry Progressbar in employee tree view +

+
+
+ +
+
+

+ Screenshots +

+

+ + Entry/Exit Checklist +

+
+ +
+
+
+ +
+

+ + Employee From View With PercentPie +

+
+ +
+

+ + Employee Tree View With Progressbar +

+
+ +
+

+ + Employee Kanban View with Gauge +

+
+ +
+

+ + Configuration +

+
+ +
+ +
+
+ +
+
+ cybrosys technologies +
+
+
+
+

+ Our Services +

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

+ + Odoo Support +

+ +
+ +
+
+
+
+
+

+ Our Industries +

+
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Trading + +

+

+ Easily procure and sell your products. +

+
+ +
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Manufacturing +

+

+ Plan, track and schedule your operations. +

+
+ +
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Restaurant +

+

+ Run your bar or restaurant methodical. +

+
+ +
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + POS +

+

+ Easy configuring and convivial selling. +

+
+ +
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + E-commerce & Website +

+

+ Mobile friendly, awe-inspiring product pages. +

+
+
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Hotel Management +

+

+ An all-inclusive hotel management application. +

+
+
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Education +

+

+ A Collaborative platform for educational management. +

+
+
+
+ +
+
+ + Odoo Industry + +
+
+
+

+ + Service Management +

+

+ Keep track of services and invoice accordingly. +

+
+
+
+
+
+
+ +
diff --git a/employee_check_list/static/description/index.html~ b/employee_check_list/static/description/index.html~ new file mode 100644 index 000000000..bb6cf0ca6 --- /dev/null +++ b/employee_check_list/static/description/index.html~ @@ -0,0 +1,140 @@ +
+
+

Employee Exit/Entry Checklist

+

Manages Employees Entry & Exit Process

+

Cybrosys Technologies

+
+
+

Features:

+
+ Managing entry/exit process.
+ Automatic process on document attachments.
+ Option to enable Gauge widget for employee kanban.
+ Entry/Exit Percentpie in employee form view.
+ Entry Progressbar in employee tree view.
+
+
+
+ +
+
+
+

Overview

+

+A well functioning human resource department will lay down a number procedure and process before an employee during joining/resigning time. It may be submission/Return of a certificate or attending a conference etc. +A person has to undergo all these checklist items before being admitted/resigned. The module simplifies the process by providing you a checklist to mark the proceedings. It will also display the PercentPie of the checklist items completed. + +

+
+
+
+ +
+
+
+

+

Entry/Exit Checklist

+

+

+ + +
+
+ +
+
+
+

+

Employee From View With PercentPie

+

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

+

Employee Tree View With Progressbar

+

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

+

Employee Kanban View with Gauge

+

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

+

Configuration

+

+
+
+
+ +
+
+
+
+ +
+

Need Any Help?

+ +
diff --git a/employee_check_list/static/description/kanban_view.png b/employee_check_list/static/description/kanban_view.png new file mode 100644 index 000000000..a8fc2bc2b Binary files /dev/null and b/employee_check_list/static/description/kanban_view.png differ diff --git a/employee_check_list/static/description/settings.png b/employee_check_list/static/description/settings.png new file mode 100644 index 000000000..c7101fa0e Binary files /dev/null and b/employee_check_list/static/description/settings.png differ diff --git a/employee_check_list/static/description/tree_view.png b/employee_check_list/static/description/tree_view.png new file mode 100644 index 000000000..26cd0c7af Binary files /dev/null and b/employee_check_list/static/description/tree_view.png differ diff --git a/employee_check_list/views/checklist_view.xml b/employee_check_list/views/checklist_view.xml new file mode 100644 index 000000000..2ec59d0da --- /dev/null +++ b/employee_check_list/views/checklist_view.xml @@ -0,0 +1,36 @@ + + + + + Entry Checklist + ir.actions.act_window + employee.checklist + tree,form + [('document_type', '=', 'entry')] + {"default_document_type":'entry'} + +

+ Click to create a New Entry Checklist +

+
+
+ + + Exit Checklist + ir.actions.act_window + employee.checklist + tree,form + [('document_type', '=', 'exit')] + {"default_document_type":'exit'} + +

+ Click to create a New Exit Checklist +

+
+
+ + + +
\ No newline at end of file diff --git a/employee_check_list/views/employee_form_inherit_view.xml b/employee_check_list/views/employee_form_inherit_view.xml new file mode 100644 index 000000000..d4d63718a --- /dev/null +++ b/employee_check_list/views/employee_form_inherit_view.xml @@ -0,0 +1,66 @@ + + + + + hr.employee.form.view + hr.employee + + + +
+ + +
+
+ + + + + + + + + + + + + +
+
+ + + hr.employee.tree.view + hr.employee + + + + + + + + + + + hr.employee.kanban.view + hr.employee + + + + + + + + + +
  • + Entry Progress + + +
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/employee_check_list/views/settings_view.xml b/employee_check_list/views/settings_view.xml new file mode 100644 index 000000000..c8c71460c --- /dev/null +++ b/employee_check_list/views/settings_view.xml @@ -0,0 +1,30 @@ + + + + + + HR Settings + res.config.settings + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/employee_documents_expiry/README.md b/employee_documents_expiry/README.md new file mode 100644 index 000000000..9604d929b --- /dev/null +++ b/employee_documents_expiry/README.md @@ -0,0 +1,40 @@ +Employee Documents +------------------ +Supporting Addon for HR, Manages Employee Related Documents + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: Nimisha (odoo@cybrosys.com) + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/employee_documents_expiry/__init__.py b/employee_documents_expiry/__init__.py new file mode 100644 index 000000000..e48f2d890 --- /dev/null +++ b/employee_documents_expiry/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/employee_documents_expiry/__manifest__.py b/employee_documents_expiry/__manifest__.py new file mode 100644 index 000000000..5cb2fd969 --- /dev/null +++ b/employee_documents_expiry/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Employee Documents', + 'version': '13.0.1.0.0', + 'summary': """Manages Employee Documents With Expiry Notifications.""", + 'description': """Manages Employee Related Documents with Expiry Notifications.""", + 'category': 'Generic Modules/Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'hr'], + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_check_list_view.xml', + 'views/employee_document_view.xml', + ], + 'demo': ['data/data.xml'], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_documents_expiry/__manifest__.py~ b/employee_documents_expiry/__manifest__.py~ new file mode 100644 index 000000000..9aef8c8a3 --- /dev/null +++ b/employee_documents_expiry/__manifest__.py~ @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Nilmar Shereef() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': 'Employee Documents', + 'version': '10.0.2.0', + 'summary': """Manages Employee Documents With Expiry Notifications.""", + 'description': """Manages Employee Related Documents with Expiry Notifications.""", + 'category': 'Generic Modules/Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'hr'], + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_check_list_view.xml', + 'views/employee_document_view.xml', + ], + 'demo': ['data/data.xml'], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_documents_expiry/data/data.xml b/employee_documents_expiry/data/data.xml new file mode 100644 index 000000000..0583e0bb4 --- /dev/null +++ b/employee_documents_expiry/data/data.xml @@ -0,0 +1,27 @@ + + + + + + Education Certificate + entry + + + Salary Certificate + entry + + + Experience Certificate + entry + + + Experience Certificate + exit + + + Salary Certificate + exit + + + + \ No newline at end of file diff --git a/employee_documents_expiry/doc/RELEASE_NOTES.md b/employee_documents_expiry/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..0141c4064 --- /dev/null +++ b/employee_documents_expiry/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 19.10.2019 +#### Version 13.0.1.0.0 +#### ADD +Initial commit for Employee Documents Expiry + + + diff --git a/employee_documents_expiry/models/__init__.py b/employee_documents_expiry/models/__init__.py new file mode 100644 index 000000000..745c3e7f6 --- /dev/null +++ b/employee_documents_expiry/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import employee_documents +from . import employee_entry_exit_check_list diff --git a/employee_documents_expiry/models/employee_documents.py b/employee_documents_expiry/models/employee_documents.py new file mode 100644 index 000000000..93b87b672 --- /dev/null +++ b/employee_documents_expiry/models/employee_documents.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from datetime import datetime, date, timedelta +from odoo import models, fields, api, _ +from odoo.exceptions import Warning + + +class HrEmployeeDocument(models.Model): + _name = 'hr.employee.document' + _description = 'HR Employee Documents' + + def mail_reminder(self): + now = datetime.now() + timedelta(days=1) + date_now = now.date() + match = self.search([]) + for i in match: + if i.expiry_date: + exp_date = i.expiry_date - timedelta(days=7) + if date_now >= exp_date: + mail_content = " Hello " + i.employee_ref.name + ",
    Your Document " + i.name + "is going to expire on " + \ + str(i.expiry_date) + ". Please renew it before expiry date" + main_content = { + 'subject': _('Document-%s Expired On %s') % (i.name, i.expiry_date), + 'author_id': self.env.user.partner_id.id, + 'body_html': mail_content, + 'email_to': i.employee_ref.work_email, + } + self.env['mail.mail'].create(main_content).send() + + @api.constrains('expiry_date') + def check_expr_date(self): + for each in self: + exp_date = each.expiry_date + if exp_date < date.today(): + raise Warning('Your Document Is Already Expired.') + + name = fields.Char(string='Document Number', required=True, copy=False) + document_name = fields.Many2one('employee.checklist', string='Document', required=True) + description = fields.Text(string='Description', copy=False) + expiry_date = fields.Date(string='Expiry Date', copy=False) + employee_ref = fields.Many2one('hr.employee', invisible=1, copy=False) + doc_attachment_id = fields.Many2many('ir.attachment', 'doc_attach_rel', 'doc_id', 'attach_id3', string="Attachment", + help='You can attach the copy of your document', copy=False) + issue_date = fields.Date(string='Issue Date', default=fields.Date.context_today, copy=False) + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + + def _document_count(self): + for each in self: + document_ids = self.env['hr.employee.document'].search([('employee_ref', '=', each.id)]) + each.document_count = len(document_ids) + + + def document_view(self): + self.ensure_one() + domain = [ + ('employee_ref', '=', self.id)] + return { + 'name': _('Documents'), + 'domain': domain, + 'res_model': 'hr.employee.document', + 'type': 'ir.actions.act_window', + 'view_id': False, + 'view_mode': 'tree,form', + 'view_type': 'form', + 'help': _('''

    + Click to Create for New Documents +

    '''), + 'limit': 80, + 'context': "{'default_employee_ref': '%s'}" % self.id + } + + document_count = fields.Integer(compute='_document_count', string='# Documents') + + +class HrEmployeeAttachment(models.Model): + _inherit = 'ir.attachment' + + doc_attach_rel = fields.Many2many('hr.employee.document', 'doc_attachment_id', 'attach_id3', 'doc_id', + string="Attachment", invisible=1) diff --git a/employee_documents_expiry/models/employee_entry_exit_check_list.py b/employee_documents_expiry/models/employee_entry_exit_check_list.py new file mode 100644 index 000000000..4294443dc --- /dev/null +++ b/employee_documents_expiry/models/employee_entry_exit_check_list.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api + + +class EmployeeEntryDocuments(models.Model): + _name = 'employee.checklist' + _inherit = 'mail.thread' + _description = "Employee Documents" + + def name_get(self): + result = [] + for each in self: + if each.document_type == 'entry': + name = each.name + '_en' + elif each.document_type == 'exit': + name = each.name + '_ex' + elif each.document_type == 'other': + name = each.name + '_ot' + result.append((each.id, name)) + return result + + name = fields.Char(string='Document Name', copy=False, required=1) + document_type = fields.Selection([('entry', 'Entry Process'), + ('exit', 'Exit Process'), + ('other', 'Other')], string='Checklist Type', required=1) + + diff --git a/employee_documents_expiry/models/employee_entry_exit_check_list.py~ b/employee_documents_expiry/models/employee_entry_exit_check_list.py~ new file mode 100644 index 000000000..6fbd2c51d --- /dev/null +++ b/employee_documents_expiry/models/employee_entry_exit_check_list.py~ @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: Nilmar Shereef() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## +from odoo import models, fields, api + + +class EmployeeEntryDocuments(models.Model): + _name = 'employee.checklist' + _inherit = ['mail.thread', 'ir.needaction_mixin'] + _description = "Employee Documents" + + @api.multi + def name_get(self): + result = [] + for each in self: + if each.document_type == 'entry': + name = each.name + '_en' + elif each.document_type == 'exit': + name = each.name + '_ex' + elif each.document_type == 'other': + name = each.name + '_ot' + result.append((each.id, name)) + return result + + name = fields.Char(string='Document Name', copy=False, required=1) + document_type = fields.Selection([('entry', 'Entry Documents'), + ('exit', 'Exit Documents'), + ('other', 'Other')], string='Checklist Type', required=1) + diff --git a/employee_documents_expiry/security/ir.model.access.csv b/employee_documents_expiry/security/ir.model.access.csv new file mode 100644 index 000000000..bb52b71f5 --- /dev/null +++ b/employee_documents_expiry/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_hr_employee_checklist_user,employee.checklist.user,model_employee_checklist,hr.group_hr_user,1,1,1,1 +access_hr_employee_checklist_emp,employee.checklist.emp,model_employee_checklist,base.group_user,1,1,1,0 +access_hr_employee_document_employee,hr.employee.document_employee,model_hr_employee_document,base.group_user,1,1,1,0 +access_hr_employee_document_manager,hr.employee.document_manager,model_hr_employee_document,hr.group_hr_manager,1,1,1,1 +access_hr_employee_document_user,hr.employee.document_user,model_hr_employee_document,hr.group_hr_user,1,1,1,0 + diff --git a/employee_documents_expiry/static/description/banner.jpg b/employee_documents_expiry/static/description/banner.jpg new file mode 100644 index 000000000..931855443 Binary files /dev/null and b/employee_documents_expiry/static/description/banner.jpg differ diff --git a/employee_documents_expiry/static/description/cybro_logo.png b/employee_documents_expiry/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/employee_documents_expiry/static/description/cybro_logo.png differ diff --git a/employee_documents_expiry/static/description/document_form.png b/employee_documents_expiry/static/description/document_form.png new file mode 100644 index 000000000..5c570a339 Binary files /dev/null and b/employee_documents_expiry/static/description/document_form.png differ diff --git a/employee_documents_expiry/static/description/documents-expiry-cybrosys-1.png b/employee_documents_expiry/static/description/documents-expiry-cybrosys-1.png new file mode 100644 index 000000000..85d6bbcc4 Binary files /dev/null and b/employee_documents_expiry/static/description/documents-expiry-cybrosys-1.png differ diff --git a/employee_documents_expiry/static/description/documents-expiry-cybrosys-2.png b/employee_documents_expiry/static/description/documents-expiry-cybrosys-2.png new file mode 100644 index 000000000..1bb8aadb2 Binary files /dev/null and b/employee_documents_expiry/static/description/documents-expiry-cybrosys-2.png differ diff --git a/employee_documents_expiry/static/description/documents-expiry-cybrosys-3.png b/employee_documents_expiry/static/description/documents-expiry-cybrosys-3.png new file mode 100644 index 000000000..0aa8ebcdb Binary files /dev/null and b/employee_documents_expiry/static/description/documents-expiry-cybrosys-3.png differ diff --git a/employee_documents_expiry/static/description/email.png b/employee_documents_expiry/static/description/email.png new file mode 100644 index 000000000..90b70be6c Binary files /dev/null and b/employee_documents_expiry/static/description/email.png differ diff --git a/employee_documents_expiry/static/description/employee_form.png b/employee_documents_expiry/static/description/employee_form.png new file mode 100644 index 000000000..c7ea0e59f Binary files /dev/null and b/employee_documents_expiry/static/description/employee_form.png differ diff --git a/employee_documents_expiry/static/description/icon.png b/employee_documents_expiry/static/description/icon.png new file mode 100644 index 000000000..9aa49d9c9 Binary files /dev/null and b/employee_documents_expiry/static/description/icon.png differ diff --git a/employee_documents_expiry/static/description/index.html b/employee_documents_expiry/static/description/index.html new file mode 100644 index 000000000..cf5936e90 --- /dev/null +++ b/employee_documents_expiry/static/description/index.html @@ -0,0 +1,361 @@ +
    +
    +

    + Employee Documents +

    +

    + Manages Employee Related Documents +

    +
    + Cybrosys Technologies +
    + +
    + cybrosys technologies +
    +
    +
    +
    +
    +
    +

    + Overview +

    +

    + Each and every detail associated with an employee is useful for any organization for better Human resource management. + So the employee documents with such necessary information must be saved and used accordingly. + 'Employee Documents' is a useful tool that can help you to store and manage the employee related + documents like certificates, appraisal reports, passport, license etc. + The application also allows you to set an alert message on reaching the expiration/any other + related dates of a document (like an expiration of passport) +

    +
    +
    +
    +
    +

    + Features +

    +

    + + Managing Documents of Employees +

    +

    + + Documents Types +

    +

    + + Expiry Date for Documents +

    +

    + + Validation for Expiry Date +

    +

    + + Mail Notification Based on Expiry Date +

    +
    +
    +
    +
    +

    + Screenshots +

    +

    +
    + + Documents Super Button +
    +

    +
    + +
    +

    +
    + + Documents Form +
    +

    +
    + +
    +

    +
    + Notification Mail for Expiry Doc +
    +

    +
    + +
    +
    +
    +
    +
    + cybrosys technologies +
    +
    +
    +
    +

    + Our Services +

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

    + + Odoo Support +

    + +
    + +
    +
    +
    +
    +
    +

    + Our Industries +

    +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Trading + +

    +

    + Easily procure and sell your products. +

    +
    + +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Manufacturing +

    +

    + Plan, track and schedule your operations. +

    +
    + +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Restaurant +

    +

    + Run your bar or restaurant methodical. +

    +
    + +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + POS +

    +

    + Easy configuring and convivial selling. +

    +
    + +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + E-commerce & Website +

    +

    + Mobile friendly, awe-inspiring product pages. +

    +
    +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Hotel Management +

    +

    + An all-inclusive hotel management application. +

    +
    +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Education +

    +

    + A Collaborative platform for educational management. +

    +
    +
    +
    + +
    +
    + + Odoo Industry + +
    +
    +
    +

    + + Service Management +

    +

    + Keep track of services and invoice accordingly. +

    +
    +
    +
    +
    +
    +
    + +
    + + + diff --git a/employee_documents_expiry/views/employee_check_list_view.xml b/employee_documents_expiry/views/employee_check_list_view.xml new file mode 100644 index 000000000..c698be1ac --- /dev/null +++ b/employee_documents_expiry/views/employee_check_list_view.xml @@ -0,0 +1,34 @@ + + + + + employee.checklist.form + employee.checklist + +
    + + + + + + +
    + + +
    +
    +
    +
    + + + employee.checklist.tree + employee.checklist + + + + + + + + +
    \ No newline at end of file diff --git a/employee_documents_expiry/views/employee_document_view.xml b/employee_documents_expiry/views/employee_document_view.xml new file mode 100644 index 000000000..5b0dc0cec --- /dev/null +++ b/employee_documents_expiry/views/employee_document_view.xml @@ -0,0 +1,67 @@ + + + + + HR Employee Data Expiration + + code + model.mail_reminder() + 1 + days + -1 + + + + hr.employee.document.form + hr.employee.document + +
    + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + hr.employee.document.tree + hr.employee.document + + + + + + + + + + + hr.employee.form.view + hr.employee + + +
    + +
    +
    +
    + +
    \ No newline at end of file diff --git a/employee_orientation/README.rst b/employee_orientation/README.rst new file mode 100644 index 000000000..6153e372d --- /dev/null +++ b/employee_orientation/README.rst @@ -0,0 +1,45 @@ +Employee Orientation v13 +======================== +This module developed to manage employee orientation&training programs. + + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Anusha @cybrosys, odoo@cybrosys.com + Niyas V11 @cybrosys, odoo@cybrosys.com + Kavya Raveendran V12 odoo@cybrosys.com + Nimisha Murali V13 @cybrosys,odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + + + diff --git a/employee_orientation/__init__.py b/employee_orientation/__init__.py new file mode 100644 index 000000000..bba0631a1 --- /dev/null +++ b/employee_orientation/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) 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..bb3b682ad --- /dev/null +++ b/employee_orientation/__manifest__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': "Employee Orientation & Training", + 'version': '13.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': [ + 'views/orientation_checklist_line.xml', + 'views/employee_orientation.xml', + 'views/orientation_checklist.xml', + 'views/orientation_checklists_request.xml', + 'views/orientation_checklist_sequence.xml', + 'views/orientation_request_mail_template.xml', + 'views/print_pack_certificates_template.xml', + 'views/report.xml', + 'views/employee_training.xml', + 'security/ir.model.access.csv', + ], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/employee_orientation/doc/RELEASE_NOTES.md b/employee_orientation/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..68b5a6b36 --- /dev/null +++ b/employee_orientation/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 29.10.2019 +#### Version 13.0.1.0.0 +#### Migration +Migration Of Employee Orientation & Training + + + diff --git a/employee_orientation/models/__init__.py b/employee_orientation/models/__init__.py new file mode 100644 index 000000000..75fb79bf4 --- /dev/null +++ b/employee_orientation/models/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) 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 +from . import report diff --git a/employee_orientation/models/employee_orientation.py b/employee_orientation/models/employee_orientation.py new file mode 100644 index 000000000..be6196bac --- /dev/null +++ b/employee_orientation/models/employee_orientation.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, fields, models, _ + + +class Orientation(models.Model): + _name = 'employee.orientation' + _description = "Employee Orientation" + _inherit = 'mail.thread' + + 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.Datetime(string="Date") + # date = fields.Datetime.to_string(dateText) + 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') + + 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, + }) + + def cancel_orientation(self): + for request in self.orientation_request: + request.state = 'cancel' + self.write({'state': 'cancel'}) + + 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): + vals['name'] = self.env['ir.sequence'].next_by_code('employee.orientation') + 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..ebd5affe4 --- /dev/null +++ b/employee_orientation/models/employee_training.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta +from odoo import api, fields, models, _ + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + certificates = fields.Boolean(default=True, string="Certificates") + + +class EmployeeTraining(models.Model): + _name = 'employee.training' + _rec_name = 'program_name' + _description = "Employee Training" + _inherit = 'mail.thread' + + 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.Datetime(string="Date From") + date_to = fields.Datetime(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'), + ('print', 'Print'), + ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='new') + + @api.onchange('program_department') + def employee_details(self): + datas = self.env['hr.employee'].search([('department_id', '=', self.program_department.id)]) + self.training_id = datas + + def print_event(self): + self.ensure_one() + started_date = datetime.strftime(self.create_date, "%Y-%m-%d ") + duration = (self.write_date - self.create_date).days + pause = relativedelta(hours=0) + difference = relativedelta(self.write_date, self.create_date) - pause + hours = difference.hours + minutes = difference.minutes + data = { + 'dept_id': self.program_department.id, + 'program_name': self.program_name, + 'company_name': self.company_id.name, + 'date_to': started_date, + 'duration': duration, + 'hours': hours, + 'minutes': minutes, + 'program_convener': self.program_convener.name, + + } + return self.env.ref('employee_orientation.print_pack_certificates').report_action(self, data=data) + + def complete_event(self): + self.write({'state': 'complete'}) + + def confirm_event(self): + self.write({'state': 'confirm'}) + + def cancel_event(self): + self.write({'state': 'cancel'}) + + 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..cc7ba4be0 --- /dev/null +++ b/employee_orientation/models/orientation_checklist.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, _ + + +class OrientationChecklist(models.Model): + _name = 'orientation.checklist' + _description = "Checklist" + _rec_name = 'checklist_name' + _inherit = 'mail.thread' + + 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..8ac5de189 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_line.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo 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..5fd12f82d --- /dev/null +++ b/employee_orientation/models/orientation_checklist_request.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, fields, api +from odoo.tools.translate import _ + + +class OrientationChecklistRequest(models.Model): + _name = 'orientation.request' + _description = "Employee Orientation Request" + _rec_name = 'request_name' + _inherit = 'mail.thread' + + 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') + + 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, + } + + def confirm_request(self): + self.write({'state': "complete"}) + + def cancel_request(self): + self.write({'state': "cancel"}) diff --git a/employee_orientation/models/report.py b/employee_orientation/models/report.py new file mode 100644 index 000000000..905bc180c --- /dev/null +++ b/employee_orientation/models/report.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, _ + + +class PackingReportValues(models.AbstractModel): + _name = 'report.employee_orientation.print_pack_template' + + @api.model + def _get_report_values(self, docids, data=None): + + lst = [] + empl_obj = self.env['hr.employee'].search([('department_id', '=', data['dept_id'])]) + + for line in empl_obj: + lst.append({ + 'name': line.name, + 'department_id': line.department_id.name, + 'program_name': data['program_name'], + 'company_name': data['company_name'], + 'date_to': data['date_to'], + 'program_convener': data['program_convener'], + 'duration': data['duration'], + 'hours': data['hours'], + 'minutes': data['minutes'], + }) + + return { + 'data': lst, + } + diff --git a/employee_orientation/security/ir.model.access.csv b/employee_orientation/security/ir.model.access.csv new file mode 100644 index 000000000..6f736f265 --- /dev/null +++ b/employee_orientation/security/ir.model.access.csv @@ -0,0 +1,8 @@ +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_user_checklist_line,checklist.line,model_checklist_line,hr.group_hr_user,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 +access_manager_orientation_request,orientation.request,model_orientation_request,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/employee-orientation-cybrosys-1.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-1.jpg new file mode 100644 index 000000000..aade2933b Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-1.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-10.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-10.jpg new file mode 100644 index 000000000..f0dcf463a Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-10.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-2.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-2.jpg new file mode 100644 index 000000000..d4f002b37 Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-2.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-3.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-3.jpg new file mode 100644 index 000000000..c9ab87270 Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-3.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-4.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-4.jpg new file mode 100644 index 000000000..464b5efc3 Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-4.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-5.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-5.jpg new file mode 100644 index 000000000..7bc1019cb Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-5.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-6.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-6.jpg new file mode 100644 index 000000000..791f04b6f Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-6.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-7.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-7.jpg new file mode 100644 index 000000000..0d929d618 Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-7.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-8.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-8.jpg new file mode 100644 index 000000000..342789969 Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-8.jpg differ diff --git a/employee_orientation/static/description/employee-orientation-cybrosys-9.jpg b/employee_orientation/static/description/employee-orientation-cybrosys-9.jpg new file mode 100644 index 000000000..bae3f34fc Binary files /dev/null and b/employee_orientation/static/description/employee-orientation-cybrosys-9.jpg 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..a691a9076 --- /dev/null +++ b/employee_orientation/static/description/index.html @@ -0,0 +1,389 @@ + +
    +
    +

    + Employee Orientation & Training +

    +

    + Manage Employee Orientation And Training Programs +

    +
    + Cybrosys Technologies +
    + +
    + cybrosys technologies
    +
    +
    +
    +
    +
    +

    + 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. +

    +
    +
    + +
    +
    +

    + Features +

    +

    + + Makes the Employee Orientation Program easier. +

    +

    + + Systematical Workflow. +

    + + Allows to Create Employee Training Programs. +

    +

    + + Email Notification for each Responsible person.

    +

    + + Certificates for training program attendees +

    +
    +
    +
    +
    +

    + Orientation Checklist +

    + + + + +
    + +
    +

    + Orientation Checklist Line +

    + + + + +
    + +
    +

    + Employee Orientation +

    + + + + +
    + +
    +

    + Automatic creation of checklist lines +

    + + + + +
    + +
    +

    + Orientation Request +

    +

    + + Confirming orientation will create orientation requests automatically. +

    +
    + +
    +

    + + Orientation requests with the corresponding employee orientation are added +

    +
    + +
    +

    + Email Template +

    + + + + +
    + +
    +

    + Employee Training +

    + + + + +
    + +
    +

    + Email Template +

    + + + + +
    + +
    +

    + Print Certificates +

    + + + + +
    + +
    +
    +
    + + +
    + +
    +
    + +
    + +
    + +
    \ No newline at end of file diff --git a/employee_orientation/views/employee_orientation.xml b/employee_orientation/views/employee_orientation.xml new file mode 100644 index 000000000..1b9937d88 --- /dev/null +++ b/employee_orientation/views/employee_orientation.xml @@ -0,0 +1,111 @@ + + + + + employee.orientation.tree + employee.orientation + + + + + + + + + + + + + employee.orientation.form + employee.orientation + +
    +
    +
    + +
    +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + +
    +
    + + employee.orientation.search + employee.orientation + + + + + + + + + + + + + + Employee Orientation + ir.actions.act_window + employee.orientation + 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..a91685810 --- /dev/null +++ b/employee_orientation/views/employee_training.xml @@ -0,0 +1,105 @@ + + + + + employee.training.tree + employee.training + + + + + + + + + + + employee.training.form + employee.training + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    + + employee.training.search + employee.training + + + + + + + + + Employee Training Program + ir.actions.act_window + employee.training + tree,form + + [] + {} + + + Create Employee Training Program. + + + + + + hr.employee.inherit.form + hr.employee + + 30 + + + + + + +
    +
    diff --git a/employee_orientation/views/orientation_checklist.xml b/employee_orientation/views/orientation_checklist.xml new file mode 100644 index 000000000..ff8aa628b --- /dev/null +++ b/employee_orientation/views/orientation_checklist.xml @@ -0,0 +1,85 @@ + + + + + orientation.checklist.tree + orientation.checklist + + + + + + + + + + + orientation.checklist.form + orientation.checklist + + +
    + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    + + orientation.checklist.search + orientation.checklist + + + + + + + + + + + + + + + Orientation Checklist + ir.actions.act_window + orientation.checklist + 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..754fd25c8 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_line.xml @@ -0,0 +1,84 @@ + + + + + checklist.line.tree + checklist.line + + + + + + + + + + checklist.line.form + checklist.line + + +
    + + + + + + +
    +
    +
    + + checklist.line.search + checklist.line + + + + + + + + + + + + + + + Orientation Checklist Line + ir.actions.act_window + checklist.line + 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..4a8268817 --- /dev/null +++ b/employee_orientation/views/orientation_checklist_sequence.xml @@ -0,0 +1,14 @@ + + + + + + + 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..75b3af155 --- /dev/null +++ b/employee_orientation/views/orientation_checklists_request.xml @@ -0,0 +1,83 @@ + + + + + orientation.request.tree + orientation.request + + + + + + + + + + + orientation.request.form + orientation.request + +
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    + + orientation.request.search + orientation.request + + + + + + + + + + + + + Orientation Request + ir.actions.act_window + orientation.request + 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..56d609efb --- /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},

    +

    You are requested 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},

    +

    You are requested 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/views/print_pack_certificates_template.xml b/employee_orientation/views/print_pack_certificates_template.xml new file mode 100644 index 000000000..39b853fde --- /dev/null +++ b/employee_orientation/views/print_pack_certificates_template.xml @@ -0,0 +1,25 @@ + + + + \ No newline at end of file diff --git a/employee_orientation/views/report.xml b/employee_orientation/views/report.xml new file mode 100644 index 000000000..b920823ae --- /dev/null +++ b/employee_orientation/views/report.xml @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/employee_orientation/wizard/__init__.py b/employee_orientation/wizard/__init__.py new file mode 100644 index 000000000..72c16ef89 --- /dev/null +++ b/employee_orientation/wizard/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +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..5c4fff6ae --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies(). +# Author: Anusha @cybrosys(odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# 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 (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo 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}) + + 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..b86022b1a --- /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