diff --git a/hr_reward_warning/README.md b/hr_reward_warning/README.md new file mode 100644 index 000000000..6fc40f0f2 --- /dev/null +++ b/hr_reward_warning/README.md @@ -0,0 +1,17 @@ +OH Reward/Warning +--------------------- +Supporting Addon for Open HRMS, Managing Official Announcements + +Connect with experts +-------------------- + +If you have any question/queries/additional works on OpenHRMS or this module, You can drop an email directly to Cybrosys. + +Contacts +-------- +info - info@cybrosys.com +Jesni Banu - jesni@cybrosys.in + +Website: +https://www.openhrms.com +https://www.cybrosys.com diff --git a/hr_reward_warning/RELEASE_NOTES.md b/hr_reward_warning/RELEASE_NOTES.md new file mode 100644 index 000000000..02d9a9de1 --- /dev/null +++ b/hr_reward_warning/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 30.03.2018 +#### Version 10.0.1.0.0 +##### ADD +- Initial commit for OpenHrms Project diff --git a/hr_reward_warning/__init__.py b/hr_reward_warning/__init__.py new file mode 100644 index 000000000..fa5f521c3 --- /dev/null +++ b/hr_reward_warning/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +################################################################################### +# A part of OpenHRMS Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Jesni Banu () +# +# 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 + + + diff --git a/hr_reward_warning/__manifest__.py b/hr_reward_warning/__manifest__.py new file mode 100644 index 000000000..9f658f9f1 --- /dev/null +++ b/hr_reward_warning/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +################################################################################### +# A part of OpenHRMS Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Jesni Banu () +# +# 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': 'OHRMS Official Announcements', + 'version': '10.0.1.0.0', + 'summary': """Managing Official Announcements""", + 'description': 'This module helps you to manage hr official announcements', + 'category': 'Generic Modules/Human Resources', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': "https://www.openhrms.com", + 'depends': ['base', 'hr_payroll'], + 'data': [ + 'security/ir.model.access.csv', + 'security/reward_security.xml', + 'views/hr_reward_warning_view.xml', + 'views/hr_employee_view.xml', + 'data/reward_rule.xml', + 'reports/letter.xml', + ], + 'demo': [], + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/hr_reward_warning/data/reward_rule.xml b/hr_reward_warning/data/reward_rule.xml new file mode 100644 index 000000000..d74b1c02f --- /dev/null +++ b/hr_reward_warning/data/reward_rule.xml @@ -0,0 +1,29 @@ + + + + + SWR + Warning Amount + + code + result = -(payslip.warning_amount) + + + + + + SRR + Reward + + code + result = payslip.reward_amount + + + + + + + + + \ No newline at end of file diff --git a/hr_reward_warning/models/__init__.py b/hr_reward_warning/models/__init__.py new file mode 100644 index 000000000..7d8916fd0 --- /dev/null +++ b/hr_reward_warning/models/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +################################################################################### +# A part of OpenHRMS Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Jesni Banu () +# +# 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 hr_warning +from . import hr_employee + + diff --git a/hr_reward_warning/models/hr_employee.py b/hr_reward_warning/models/hr_employee.py new file mode 100644 index 000000000..dfa8d28aa --- /dev/null +++ b/hr_reward_warning/models/hr_employee.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +################################################################################### +# A part of OpenHRMS Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Jesni Banu () +# +# 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 odoo import models, fields, api, _ + + +class HrRewardWarning(models.Model): + _inherit = 'hr.employee' + + warning_count = fields.Integer(compute='_warning_count', string='# Warnings') + reward_count = fields.Integer(compute='_reward_count', string='# Rewards') + ann_count = fields.Integer(compute='_ann_count', string='# Announcements') + letter_count = fields.Integer(compute='_letter_count', string='# Letters') + + @api.multi + def _warning_count(self): + for each in self: + warning_ids = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each.id), + ('hr_type', '=', 'warning'), + ('state', 'in', ('approved', 'done'))]) + each.warning_count = len(warning_ids) + + @api.multi + def _letter_count(self): + for each in self: + letter_ids = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each.id), + ('hr_type', '=', 'letter'), + ('state', 'in', ('approved', 'done'))]) + each.letter_count = len(letter_ids) + + @api.multi + def _reward_count(self): + for each in self: + reward_ids = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each.id), + ('hr_type', '=', 'reward'), + ('state', 'in', ('approved', 'done'))]) + each.reward_count = len(reward_ids) + + @api.multi + def _ann_count(self): + for each in self: + ann_ids = self.env['hr.reward.warning'].sudo().search([('is_announcement', '=', True), + ('state', 'in', ('approved', 'done'))]) + each.ann_count = len(ann_ids) + + @api.multi + def warning_view(self): + for each1 in self: + warning_obj = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each1.id), + ('hr_type', '=', 'warning'), + ('state', 'in', ('approved', 'done'))]) + warning_ids = [] + for each in warning_obj: + warning_ids.append(each.id) + view_id = self.env.ref('hr_reward_warning.view_hr_reward_warning_form').id + if warning_ids: + if len(warning_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'hr.reward.warning', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Warnings'), + 'res_id': warning_ids and warning_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', warning_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'hr.reward.warning', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Warnings'), + 'res_id': warning_ids + } + + return value + + @api.multi + def letter_view(self): + for each1 in self: + letter_obj = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each1.id), + ('hr_type', '=', 'letter'), + ('state', 'in', ('approved', 'done'))]) + letter_ids = [] + for each in letter_obj: + letter_ids.append(each.id) + view_id = self.env.ref('hr_reward_warning.view_hr_reward_warning_form').id + if letter_ids: + if len(letter_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'hr.reward.warning', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Letters'), + 'res_id': letter_ids and letter_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', letter_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'hr.reward.warning', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Letters'), + 'res_id': letter_ids + } + + return value + + @api.multi + def reward_view(self): + for each1 in self: + reward_obj = self.env['hr.reward.warning'].sudo().search([('employee_id', '=', each1.id), + ('hr_type', '=', 'reward'), + ('state', 'in', ('approved', 'done'))]) + reward_ids = [] + for each in reward_obj: + reward_ids.append(each.id) + view_id = self.env.ref('hr_reward_warning.view_hr_reward_warning_form').id + if reward_ids: + if len(reward_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'hr.reward.warning', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Rewards'), + 'res_id': reward_ids and reward_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', reward_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'hr.reward.warning', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Rewards'), + 'res_id': reward_ids + } + + return value + + @api.multi + def announcement_view(self): + for each1 in self: + ann_obj = self.env['hr.reward.warning'].sudo().search([('is_announcement', '=', True), + ('state', 'in', ('approved', 'done'))]) + ann_ids = [] + for each in ann_obj: + ann_ids.append(each.id) + view_id = self.env.ref('hr_reward_warning.view_hr_reward_warning_form').id + if ann_ids: + if len(ann_ids) <= 1: + value = { + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'hr.reward.warning', + 'view_id': view_id, + 'type': 'ir.actions.act_window', + 'name': _('Announcements'), + 'res_id': ann_ids and ann_ids[0] + } + else: + value = { + 'domain': str([('id', 'in', ann_ids)]), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'hr.reward.warning', + 'view_id': False, + 'type': 'ir.actions.act_window', + 'name': _('Announcements'), + 'res_id': ann_ids + } + + return value diff --git a/hr_reward_warning/models/hr_warning.py b/hr_reward_warning/models/hr_warning.py new file mode 100644 index 000000000..df4dd325b --- /dev/null +++ b/hr_reward_warning/models/hr_warning.py @@ -0,0 +1,246 @@ +# -*- coding: utf-8 -*- +################################################################################### +# A part of OpenHRMS Project +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Jesni Banu () +# +# 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 datetime import datetime +from odoo import models, fields, api, _ + + +class HrRewardWarning(models.Model): + _name = 'hr.reward.warning' + _description = 'HR Reward Warning' + _inherit = ['mail.thread', 'ir.needaction_mixin'] + + @api.multi + def reject(self): + self.state = 'rejected' + + @api.model + def create(self, vals): + if vals.get('hr_type') == 'reward': + vals['name'] = self.env['ir.sequence'].next_by_code('hr.loan.reward') + elif vals.get('hr_type') == 'warning': + vals['name'] = self.env['ir.sequence'].next_by_code('hr.loan.warning') + elif vals.get('hr_type') == 'letter': + vals['name'] = self.env['ir.sequence'].next_by_code('hr.loan.letter') + if vals.get('is_announcement'): + vals['name'] = self.env['ir.sequence'].next_by_code('hr.loan.announcement') + return super(HrRewardWarning, self).create(vals) + + @api.multi + def sent(self): + self.state = 'to_approve' + + @api.multi + def set_to_draft(self): + self.state = 'draft' + + @api.multi + def approve(self): + letter = _('' + '
%s

Approved by


%s
') % (self.letter, self.env.user.signature) + partner_ids = [] + if self.letter: + self.letter = letter + if self.hr_type == 'warning': + subject = 'Warning: ' + self.reason + body = '' + elif self.hr_type == 'reward': + subject = 'Reward: ' + self.reason + body = _('

Congrats %s

') % self.employee_id.name + elif self.hr_type == 'letter': + subject = 'Letter: ' + self.reason + body = '' + if self.is_announcement: + subject = 'Announcement: ' + self.reason + body = '' + if self.is_announcement: + email_to = self.env.user.email + emp_obj = self.env['hr.employee'].search([]) + for each in emp_obj: + if each.work_email: + email_to = email_to + ',' + each.work_email + if each.user_id: + partner_ids.append(each.user_id.partner_id.id) + main_content = { + 'subject': subject, + 'author_id': self.env.user.partner_id.id, + 'body_html': body + self.letter, + 'email_to': email_to, + } + else: + if self.employee_id.user_id: + partner_ids.append(self.employee_id.user_id.partner_id.id) + main_content = { + 'subject': subject, + 'author_id': self.env.user.partner_id.id, + 'body_html': body + self.letter, + 'email_to': self.employee_id.work_email, + } + mail_id = self.env['mail.mail'].create(main_content) + if self.attachment_id: + att_ids = [] + for each in self.attachment_id: + att_ids.append(each.id) + mail_id.write({'attachment_ids': [(6, 0, [aid for aid in att_ids])]}) + mail_id.send() + mail_id.mail_message_id.write({'needaction_partner_ids': [(4, pid) for pid in partner_ids]}) + mail_id.mail_message_id.write({'partner_ids': [(4, pid) for pid in partner_ids]}) + self.state = 'approved' + + @api.multi + def set_to_done(self): + self.state = 'done' + + name = fields.Char(string='Code No:') + company_id = fields.Many2one('res.company', 'Company', readonly=True, + default=lambda self: self.env.user.company_id) + email_send = fields.Boolean(default=False, invisible=1, track_visibility='always', copy=False) + is_announcement = fields.Boolean(string='Is general Announcement?') + requested_date = fields.Date(string='Requested Date', default=datetime.now().strftime('%Y-%m-%d')) + employee_id = fields.Many2one('hr.employee', string='Employee', readonly=True, + states={'draft': [('readonly', False)]}) + hr_type = fields.Selection([('warning', 'Warning'), ('reward', 'Reward'), ('letter', 'Letter')], string='Type', + readonly=True, states={'draft': [('readonly', False)]}) + amount = fields.Float(string='Amount') + attachment_id = fields.Many2many('ir.attachment', 'doc_warning_rel', 'doc_id', 'attach_id4', + string="Attachment", help='You can attach the copy of your Letter') + reason = fields.Text(string='Title', readonly=True, states={'draft': [('readonly', False)]}, required=True) + letter = fields.Html(string='Letter', readonly=True, states={'draft': [('readonly', False)]}) + state = fields.Selection([('draft', 'Draft'), ('to_approve', 'Waiting For Approval'), ('approved', 'Approved'), + ('done', 'Done'), ('rejected', 'Refused')], string='Status', default='draft', + track_visibility='always') + month_of_action = fields.Selection([('1', 'January'), ('2', 'February'), ('3', 'March'), + ('4', 'April'), ('5', 'May'), ('6', 'June'), + ('7', 'July'), ('8', 'August'), ('9', 'September'), + ('10', 'October'), ('11', 'November'), ('12', 'December')], + help="Month of action for to generate payslip", + string='Requested Month', readonly=True, states={'draft': [('readonly', False)]}) + + +class HrEmployeeWarningAttachment(models.Model): + _inherit = 'ir.attachment' + + doc_warning_rel = fields.Many2many('hr.reward.warning', 'attachment_id', 'attach_id4', 'doc_id', + string="Attachment", invisible=1) + + +class RewardHrPayslip(models.Model): + _inherit = 'hr.payslip' + + warning_amount = fields.Float('Warning Amount', compute='add_warning', store='True') + reward_amount = fields.Float('Reward Amount', compute='add_reward', store='True') + + @api.multi + def action_payslip_done(self): + for each in self: + current_month = datetime.strptime(each.date_from, "%Y-%m-%d").month + if each.warning_amount: + warnings = self.env['hr.reward.warning'].search([('employee_id', '=', each.employee_id.id), + ('state', '=', 'approved'), + ('hr_type', '=', 'warning'), + ('month_of_action', '=', current_month)]) + for each1 in warnings: + each1.write({'state': 'done'}) + if each.reward_amount: + rewards = self.env['hr.reward.warning'].search([('employee_id', '=', each.employee_id.id), + ('state', '=', 'approved'), + ('hr_type', '=', 'reward'), + ('month_of_action', '=', current_month)]) + for each1 in rewards: + each1.write({'state': 'done'}) + return super(RewardHrPayslip, self).action_payslip_done() + + @api.depends('employee_id') + def add_warning(self): + for each in self: + warning_amount = 0 + current_month = datetime.strptime(each.date_from, "%Y-%m-%d").month + warnings = self.env['hr.reward.warning'].search([('employee_id', '=', each.employee_id.id), + ('state', '=', 'approved'), + ('hr_type', '=', 'warning'), + ('month_of_action', '=', current_month)]) + for each1 in warnings: + warning_amount += each1.amount + each.warning_amount = warning_amount + + @api.depends('employee_id') + def add_reward(self): + for each in self: + reward_amount = 0 + current_month = datetime.strptime(each.date_from, "%Y-%m-%d").month + rewards = self.env['hr.reward.warning'].search([('employee_id', '=', each.employee_id.id), + ('state', '=', 'approved'), + ('hr_type', '=', 'reward'), + ('month_of_action', '=', current_month)]) + for each1 in rewards: + reward_amount += each1.amount + each.reward_amount = reward_amount + + +class WizardSendMail(models.TransientModel): + _name = 'wizard.send.mail' + + @api.multi + def send_now(self): + context = self._context + reward_obj = self.env['hr.reward.warning'].search([('id', '=', context.get('reward_id'))]) + partner_ids = [] + if reward_obj.hr_type == 'warning': + subject = 'Warning: ' + reward_obj.reason + elif reward_obj.hr_type == 'reward': + subject = 'Reward: ' + reward_obj.reason + elif reward_obj.hr_type == 'letter': + subject = 'Letter: ' + reward_obj.reason + if reward_obj.is_announcement: + subject = 'Announcement: ' + reward_obj.reason + if not reward_obj.is_announcement: + if self.department_ids: + body = 'Hi Team,
' + email_to = self.env.user.email + email_ids = [] + for each in self.department_ids: + for each1 in each.member_ids: + if each1.work_email: + if each1.work_email not in email_ids: + email_ids.append(each1.work_email) + email_to = email_to + ',' + each1.work_email + if each1.user_id: + if each1.user_id not in partner_ids: + partner_ids.append(each1.user_id.partner_id.id) + main_content = { + 'subject': subject, + 'author_id': self.env.user.partner_id.id, + 'body_html': body + reward_obj.letter, + 'email_to': email_to, + } + mail_id = self.env['mail.mail'].create(main_content) + if reward_obj.attachment_id: + att_ids = [] + for each in reward_obj.attachment_id: + att_ids.append(each.id) + mail_id.write({'attachment_ids': [(6, 0, [aid for aid in att_ids])]}) + mail_id.send() + mail_id.mail_message_id.write({'needaction_partner_ids': [(4, pid) for pid in partner_ids]}) + mail_id.mail_message_id.write({'partner_ids': [(4, pid) for pid in partner_ids]}) + reward_obj.write({'email_send': True}) + + department_ids = fields.Many2many('hr.department', string='Departments') diff --git a/hr_reward_warning/reports/letter.xml b/hr_reward_warning/reports/letter.xml new file mode 100644 index 000000000..6be980560 --- /dev/null +++ b/hr_reward_warning/reports/letter.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/hr_reward_warning/security/ir.model.access.csv b/hr_reward_warning/security/ir.model.access.csv new file mode 100644 index 000000000..48d7cacee --- /dev/null +++ b/hr_reward_warning/security/ir.model.access.csv @@ -0,0 +1,4 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_hr_employee_reward_admin","hr.employee.reward","model_hr_reward_warning","hr.group_hr_manager",1,1,1,1 +"access_hr_employee_reward_user","hr.employee.reward.user","model_hr_reward_warning","hr.group_hr_user",1,1,1,1 +"access_hr_employee_reward_employee","hr.employee.reward.employee","model_hr_reward_warning","base.group_user",1,0,0,0 diff --git a/hr_reward_warning/security/reward_security.xml b/hr_reward_warning/security/reward_security.xml new file mode 100644 index 000000000..e7ab299bf --- /dev/null +++ b/hr_reward_warning/security/reward_security.xml @@ -0,0 +1,9 @@ + + + + Reward Multi Company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + diff --git a/hr_reward_warning/static/description/HRMS-BUTTON.png b/hr_reward_warning/static/description/HRMS-BUTTON.png new file mode 100644 index 000000000..0f1b65bea Binary files /dev/null and b/hr_reward_warning/static/description/HRMS-BUTTON.png differ diff --git a/hr_reward_warning/static/description/banner.jpg b/hr_reward_warning/static/description/banner.jpg new file mode 100644 index 000000000..61924dabc Binary files /dev/null and b/hr_reward_warning/static/description/banner.jpg differ diff --git a/hr_reward_warning/static/description/cybro-service.png b/hr_reward_warning/static/description/cybro-service.png new file mode 100644 index 000000000..252929a86 Binary files /dev/null and b/hr_reward_warning/static/description/cybro-service.png differ diff --git a/hr_reward_warning/static/description/cybro_logo.png b/hr_reward_warning/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/hr_reward_warning/static/description/cybro_logo.png differ diff --git a/hr_reward_warning/static/description/hr_reward.png b/hr_reward_warning/static/description/hr_reward.png new file mode 100644 index 000000000..184ee961e Binary files /dev/null and b/hr_reward_warning/static/description/hr_reward.png differ diff --git a/hr_reward_warning/static/description/icon.png b/hr_reward_warning/static/description/icon.png new file mode 100644 index 000000000..81e5258c8 Binary files /dev/null and b/hr_reward_warning/static/description/icon.png differ diff --git a/hr_reward_warning/static/description/index.html b/hr_reward_warning/static/description/index.html new file mode 100644 index 000000000..569824bc0 --- /dev/null +++ b/hr_reward_warning/static/description/index.html @@ -0,0 +1,87 @@ +
+
+

OpenHRMS

+

Most advanced open source HR management software

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

OH Official Announcements

+

Manages Official Announcements

+

Cybrosys Technologies

+
+
+

Features:

+
+ Managing Official Announcements.
+
+
+
+ +
+
+
+

Overview

+

+ This module helps you to manage official announcements. +

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

Our Odoo Services

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

Need Any Help?

+ +
+ diff --git a/hr_reward_warning/views/hr_employee_view.xml b/hr_reward_warning/views/hr_employee_view.xml new file mode 100644 index 000000000..4e2ce1f16 --- /dev/null +++ b/hr_reward_warning/views/hr_employee_view.xml @@ -0,0 +1,26 @@ + + + + + hr.employee.form.inherit.view + hr.employee + + +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/hr_reward_warning/views/hr_reward_warning_view.xml b/hr_reward_warning/views/hr_reward_warning_view.xml new file mode 100644 index 000000000..796b5f8e5 --- /dev/null +++ b/hr_reward_warning/views/hr_reward_warning_view.xml @@ -0,0 +1,197 @@ + + + + + Reward Code + hr.loan.reward + RS + + + + + Warning Code + hr.loan.warning + WS + + + + + Letter Code + hr.loan.letter + LS + + + + + Announcement + hr.loan.announcement + GA + + + + + wizard.send.mail.form + wizard.send.mail + +
+ + + + + +
+
+
+
+
+ + + Share Letter + wizard.send.mail + form + form + + new + + + + hr.reward.warning.form + hr.reward.warning + +
+
+
+ + +
+ + +
+
+
+
+ + + hr.reward.warning.tree + hr.reward.warning + + + + + + + + + + + + + + hr.reward.warning.search + hr.reward.warning + + + + + + + + + + + + + + + + + + + + + + + + + + + Announcements + hr.reward.warning + form + tree,form + + +

+ Click to Create a New Record. +

+
+
+ + + +
+
\ No newline at end of file