diff --git a/employee_orientation/README.rst b/employee_orientation/README.rst new file mode 100644 index 000000000..536fd9da3 --- /dev/null +++ b/employee_orientation/README.rst @@ -0,0 +1,24 @@ +Employee Orientation v12 +======================== + +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, odoo@cybrosys.com +Developer: Niyas V11 @cybrosys, odoo@cybrosys.com +Developer: Kavya Raveendran V12 odoo@cybrosys.com + + + + diff --git a/employee_orientation/__init__.py b/employee_orientation/__init__.py new file mode 100644 index 000000000..ab77bf2d4 --- /dev/null +++ b/employee_orientation/__init__.py @@ -0,0 +1,21 @@ +# -*- 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..360aa1b0a --- /dev/null +++ b/employee_orientation/__manifest__.py @@ -0,0 +1,47 @@ +# -*- 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': '12.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/models/__init__.py b/employee_orientation/models/__init__.py new file mode 100644 index 000000000..24d341103 --- /dev/null +++ b/employee_orientation/models/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +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..414d828aa --- /dev/null +++ b/employee_orientation/models/employee_orientation.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +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') + + @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): + 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..01c8b84c9 --- /dev/null +++ b/employee_orientation/models/employee_training.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- + +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) + # product_updatable = fields.Boolean(compute='_compute_product_updatable', string='Can Edit Product', readonly=True, default=True) + # @api.depends('training_id') + # def _compute_product_updatable(self): + # for line in self: + # if line.state in ['done', 'cancel'] or (line.state == 'sale' and (line.qty_invoiced > 0 or line.qty_delivered > 0)): + # line.product_updatable = False + # else: + # line.product_updatable = True + + 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 + + @api.multi + 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) + + @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..b865f604b --- /dev/null +++ b/employee_orientation/models/orientation_checklist.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +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..9e04e2d45 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_line.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- + +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..28336f1d2 --- /dev/null +++ b/employee_orientation/models/orientation_checklist_request.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- + +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') + + @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/models/report.py b/employee_orientation/models/report.py new file mode 100644 index 000000000..dbefa8303 --- /dev/null +++ b/employee_orientation/models/report.py @@ -0,0 +1,29 @@ +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..5611a75bb --- /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..d0db3b356 --- /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..20c3cbdaf --- /dev/null +++ b/employee_orientation/views/employee_training.xml @@ -0,0 +1,106 @@ + + + + + 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. + + + + + + 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..6a377392b --- /dev/null +++ b/employee_orientation/views/orientation_checklist.xml @@ -0,0 +1,86 @@ + + + + + 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..1bdb6ac2b --- /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..d1c0b2a54 --- /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..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..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..0237b8dfe --- /dev/null +++ b/employee_orientation/wizard/orientation_complete.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +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}) + + @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..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 diff --git a/pos_product_reference/README.rst b/pos_product_reference/README.rst new file mode 100755 index 000000000..cf91c8634 --- /dev/null +++ b/pos_product_reference/README.rst @@ -0,0 +1,13 @@ +Product Reference in POS v12 +====================================== + + This module enables user to print the product Reference in in POS receipts + +Installation +============ + - www.odoo.com/documentation/12.0/setup/install.html + - Install our custom addon + +Credits +======= + Developer: IJAZ AHAMMED E @ cybrosys, Contact: odoo@cybrosys.com diff --git a/pos_product_reference/__init__.py b/pos_product_reference/__init__.py new file mode 100644 index 000000000..40a96afc6 --- /dev/null +++ b/pos_product_reference/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/pos_product_reference/__manifest__.py b/pos_product_reference/__manifest__.py new file mode 100755 index 000000000..f891fba1f --- /dev/null +++ b/pos_product_reference/__manifest__.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2017-TODAY Cybrosys Technologies(). +# Author: IJAZ AHAMMED E() +# 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': 'Product reference In POS', + 'version': '12.0.1.0.0', + 'summary': """Product Reference in pos screen and receipt""", + 'description': """This module enables user to print the Product Reference in POS receipts""", + 'author': "Cybrosys Techno Solutions", + 'company': 'Cybrosys Techno Solutions', + 'website': 'http://www.cybrosys.com', + 'maintainer': 'Cybrosys Techno Solutions', + 'category': 'Point of Sale', + 'depends': ['point_of_sale', 'product'], + 'data': [ + 'views/reciept_template.xml', + ], + 'qweb': ['static/src/xml/*.xml'], + 'demo': [], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/pos_product_reference/doc/RELEASE_NOTES.md b/pos_product_reference/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..f6240f7c4 --- /dev/null +++ b/pos_product_reference/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 6.04.2019 +#### Version 12.0.1.0.0 +##### ADD +- Initial commit for Product reference in Pos diff --git a/pos_product_reference/static/description/1.png b/pos_product_reference/static/description/1.png new file mode 100644 index 000000000..b8c0adac1 Binary files /dev/null and b/pos_product_reference/static/description/1.png differ diff --git a/pos_product_reference/static/description/2.png b/pos_product_reference/static/description/2.png new file mode 100644 index 000000000..dbe9aaf4c Binary files /dev/null and b/pos_product_reference/static/description/2.png differ diff --git a/pos_product_reference/static/description/3.png b/pos_product_reference/static/description/3.png new file mode 100644 index 000000000..b7e1fb2fa Binary files /dev/null and b/pos_product_reference/static/description/3.png differ diff --git a/pos_product_reference/static/description/banner.jpg b/pos_product_reference/static/description/banner.jpg new file mode 100644 index 000000000..ff3225832 Binary files /dev/null and b/pos_product_reference/static/description/banner.jpg differ diff --git a/pos_product_reference/static/description/icon.png b/pos_product_reference/static/description/icon.png new file mode 100644 index 000000000..303776e17 Binary files /dev/null and b/pos_product_reference/static/description/icon.png differ diff --git a/pos_product_reference/static/description/index.html b/pos_product_reference/static/description/index.html new file mode 100644 index 000000000..f48ca87e3 --- /dev/null +++ b/pos_product_reference/static/description/index.html @@ -0,0 +1,344 @@ + +
+
+

+ product Reference in POS Order lines and Receipt +

+

+ This module enables user to print the product Reference in POS receipts +

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

+ Overview +

+

+ The module helps in printing the product’s Reference in in their POS Receipts. + Also, it enables the end user to view products with Product reference in the POS Screen. +

+
+
+ +
+
+

+ Features +

+

+ + Product names with product reference. +

+

+ + Print POS receipts with Product references. +

+
+
+ +
+
+

+ Screenshots +

+

+ + +      The product reference will displays with product name.
+

+
+ +
+

+ + +      Product Reference In Pos Order Lines .
+

+
+ +
+

+ + +      The receipt generated by POS is as follows.
+

+
+ +
+
+
+ +
+
+ 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/pos_product_reference/static/src/js/pos_receipt.js b/pos_product_reference/static/src/js/pos_receipt.js new file mode 100644 index 000000000..f0037b145 --- /dev/null +++ b/pos_product_reference/static/src/js/pos_receipt.js @@ -0,0 +1,7 @@ +odoo.define('pos_product_reference.pos_receipt', function (require) { +"use strict"; + +var gui = require('point_of_sale.gui'); +var models = require('point_of_sale.models'); +models.load_fields("product.product", ['default_code']); +}); \ No newline at end of file diff --git a/pos_product_reference/static/src/xml/pos_screen.xml b/pos_product_reference/static/src/xml/pos_screen.xml new file mode 100644 index 000000000..fc3548e78 --- /dev/null +++ b/pos_product_reference/static/src/xml/pos_screen.xml @@ -0,0 +1,27 @@ + + + + + + + [] + + + + + + + + [] + + + + + + + [] + + + + + diff --git a/pos_product_reference/views/reciept_template.xml b/pos_product_reference/views/reciept_template.xml new file mode 100644 index 000000000..c33ed2435 --- /dev/null +++ b/pos_product_reference/views/reciept_template.xml @@ -0,0 +1,8 @@ + + +