Browse Source

[ADD] Initial Commit

pull/78/head
Sreejith 7 years ago
parent
commit
30ae6a9b8e
  1. 17
      hr_reward_warning/README.md
  2. 6
      hr_reward_warning/RELEASE_NOTES.md
  3. 26
      hr_reward_warning/__init__.py
  4. 47
      hr_reward_warning/__manifest__.py
  5. 29
      hr_reward_warning/data/reward_rule.xml
  6. 26
      hr_reward_warning/models/__init__.py
  7. 202
      hr_reward_warning/models/hr_employee.py
  8. 246
      hr_reward_warning/models/hr_warning.py
  9. 24
      hr_reward_warning/reports/letter.xml
  10. 4
      hr_reward_warning/security/ir.model.access.csv
  11. 9
      hr_reward_warning/security/reward_security.xml
  12. BIN
      hr_reward_warning/static/description/HRMS-BUTTON.png
  13. BIN
      hr_reward_warning/static/description/banner.jpg
  14. BIN
      hr_reward_warning/static/description/cybro-service.png
  15. BIN
      hr_reward_warning/static/description/cybro_logo.png
  16. BIN
      hr_reward_warning/static/description/hr_reward.png
  17. BIN
      hr_reward_warning/static/description/icon.png
  18. 87
      hr_reward_warning/static/description/index.html
  19. 26
      hr_reward_warning/views/hr_employee_view.xml
  20. 197
      hr_reward_warning/views/hr_reward_warning_view.xml

17
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

6
hr_reward_warning/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <hr_reward_warning>
#### 30.03.2018
#### Version 10.0.1.0.0
##### ADD
- Initial commit for OpenHrms Project

26
hr_reward_warning/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# 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 <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

47
hr_reward_warning/__manifest__.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# 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 <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'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,
}

29
hr_reward_warning/data/reward_rule.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_payslip_rule_warning" model="hr.salary.rule">
<field name="code">SWR</field>
<field name="name">Warning Amount</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = -(payslip.warning_amount)</field>
<field name="appears_on_payslip" eval="True"/>
<field name="sequence" eval="190"/>
</record>
<record id="hr_payslip_rule_reward" model="hr.salary.rule">
<field name="code">SRR</field>
<field name="name">Reward</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = payslip.reward_amount</field>
<field name="appears_on_payslip" eval="True"/>
<field name="sequence" eval="190"/>
</record>
<record id="hr_payroll.structure_base" model="hr.payroll.structure">
<field eval="[(4, ref('hr_payslip_rule_warning')), (4, ref('hr_payslip_rule_reward'))]"
name="rule_ids"/>
</record>
</data>
</odoo>

26
hr_reward_warning/models/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# 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 <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import hr_warning
from . import hr_employee

202
hr_reward_warning/models/hr_employee.py

@ -0,0 +1,202 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# 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 <https://www.gnu.org/licenses/>.
#
###################################################################################
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

246
hr_reward_warning/models/hr_warning.py

@ -0,0 +1,246 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# 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 <https://www.gnu.org/licenses/>.
#
###################################################################################
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 = _('<table><tr colspan="2"><td>%s</td></tr><tr><td><h4><b>Approved by</b></h4><br/>%s</td>'
'<td></td></tr></table>') % (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 = _('<h3>Congrats %s<br/></h3>') % 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, <br/>'
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')

24
hr_reward_warning/reports/letter.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<template id="reward_warning_letter">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="obj">
<t t-call="report.external_layout">
<div class="page">
<t t-raw="obj.letter"/>
</div>
</t>
</t>
</t>
</template>
<report
string="Letter"
id="reward_letter"
model="hr.reward.warning"
report_type="qweb-pdf"
name="hr_reward_warning.reward_warning_letter"
file="hr_reward_warning.reward_warning_letter"
/>
</data>
</odoo>

4
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_employee_reward_admin hr.employee.reward model_hr_reward_warning hr.group_hr_manager 1 1 1 1
3 access_hr_employee_reward_user hr.employee.reward.user model_hr_reward_warning hr.group_hr_user 1 1 1 1
4 access_hr_employee_reward_employee hr.employee.reward.employee model_hr_reward_warning base.group_user 1 0 0 0

9
hr_reward_warning/security/reward_security.xml

@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<odoo>
<record id="property_rule_reward" model="ir.rule">
<field name="name">Reward Multi Company</field>
<field name="model_id" ref="model_hr_reward_warning"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</odoo>

BIN
hr_reward_warning/static/description/HRMS-BUTTON.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
hr_reward_warning/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
hr_reward_warning/static/description/cybro-service.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
hr_reward_warning/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_reward_warning/static/description/hr_reward.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
hr_reward_warning/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

87
hr_reward_warning/static/description/index.html

@ -0,0 +1,87 @@
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">OpenHRMS</h2>
<h3 class="oe_slogan">Most advanced open source HR management software</h3>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced oe_mt32">
<div class="oe_span">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openhrms.com/#request-demo">
<img src="HRMS-BUTTON.png">
</a>
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">OH Official Announcements</h2>
<h3 class="oe_slogan">Manages Official Announcements</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
</div>
<div class="oe_row oe_spaced" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<span style="color:green;"> &#9745; </span> Managing Official Announcements.<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32 text-justify" style="text-align: center;">
This module helps you to manage official announcements.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:8px solid white;" src="hr_reward.png">
</div>
</div>
</div>
</section>
<div class="row section-content">
<div class="col-md-6 img-content">
<h3>Our Odoo Services</h3>
</div>
<div class="bc-span col-md-12">
<div class="inner-span">
<a target="_blank" href="https://www.openhrms.com">
<img class="img-border img-responsive thumbnail" src="cybro-service.png">
</a>
</div>
</div>
</div>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</div>
</section>

26
hr_reward_warning/views/hr_employee_view.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="reward_hr_employee_inherit_form_view">
<field name="name">hr.employee.form.inherit.view</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<div class="oe_button_box" position="inside">
<button class="oe_stat_button" name="warning_view" type="object" icon="fa-exclamation-triangle">
<field string="Warnings" name="warning_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" name="reward_view" type="object" icon="fa-thumbs-up">
<field string="Rewards" name="reward_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" name="announcement_view" type="object" icon="fa-bullhorn">
<field string="Announcements" name="ann_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" name="letter_view" type="object" icon="fa-envelope">
<field string="Letters" name="letter_count" widget="statinfo"/>
</button>
</div>
</field>
</record>
</data>
</odoo>

197
hr_reward_warning/views/hr_reward_warning_view.xml

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="seq_hr_reward_seq" model="ir.sequence">
<field name="name">Reward Code</field>
<field name="code">hr.loan.reward</field>
<field name="prefix">RS</field>
<field eval="4" name="padding" />
</record>
<record id="seq_hr_warning_seq" model="ir.sequence">
<field name="name">Warning Code</field>
<field name="code">hr.loan.warning</field>
<field name="prefix">WS</field>
<field eval="4" name="padding" />
</record>
<record id="seq_hr_letter_seq" model="ir.sequence">
<field name="name">Letter Code</field>
<field name="code">hr.loan.letter</field>
<field name="prefix">LS</field>
<field eval="4" name="padding" />
</record>
<record id="seq_hr_ga_seq" model="ir.sequence">
<field name="name">Announcement</field>
<field name="code">hr.loan.announcement</field>
<field name="prefix">GA</field>
<field eval="4" name="padding" />
</record>
<record model='ir.ui.view' id='wizard_share_form'>
<field name="name">wizard.send.mail.form</field>
<field name="model">wizard.send.mail</field>
<field name="arch" type="xml">
<form string="Share Letter">
<group>
<group>
<field name="department_ids" widget="many2many_tags"/>
</group>
</group>
<footer>
<button name="send_now" string="Send" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record model='ir.actions.act_window' id='wizard_share_act'>
<field name="name">Share Letter</field>
<field name="res_model">wizard.send.mail</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_share_form"/>
<field name="target">new</field>
</record>
<record id="view_hr_reward_warning_form" model="ir.ui.view">
<field name="name">hr.reward.warning.form</field>
<field name="model">hr.reward.warning</field>
<field name="arch" type="xml">
<form string="Announcements">
<header>
<button string="Send For Approval" type="object" name="sent" groups="hr.group_hr_user"
attrs="{'invisible': [('state','not in',('draft'))]}"/>
<button string="Approve" groups="hr.group_hr_manager" type="object" name="approve"
attrs="{'invisible': [('state','not in',('to_approve'))]}"/>
<button string="Refuse" class="btn-primary" groups="hr.group_hr_manager" type="object"
name="reject" states="to_approve"/>
<button string="Set to Draft" type="object" name="set_to_draft" groups="hr.group_hr_user"
attrs="{'invisible': [('state','not in',('rejected'))]}"/>
<button string="Share" type="action" name="%(wizard_share_act)d" groups="hr.group_hr_user"
context="{'reward_id':id,'employee_id':employee_id}"
attrs="{'invisible': ['|',('state','not in',('approved')),('email_send','=',True)]}"/>
<button string="Set to Done" type="object" name="set_to_done" groups="hr.group_hr_user"
attrs="{'invisible': ['|',('state','not in',('approved')),
('hr_type','!=',('letter')),
('is_announcement','=',False)]}"/>
<field name="state" widget="statusbar" statusbar_visible="draft,to_approve,approved,done"/>
</header>
<sheet>
<label for="is_announcement"/>
<div>
<field name="is_announcement"/>
</div>
<h1>
<label for="name"/>
<div>
<field name="name" class="oe_inline" readonly="1"/>
</div>
</h1>
<group>
<label for="reason"/>
<div>
<field name="reason"/>
</div>
</group>
<group>
<group>
<field name="employee_id" attrs="{'invisible': [('is_announcement','=',True)],
'required': [('is_announcement','=',False)]}"/>
<field name="hr_type" attrs="{'invisible': [('is_announcement','=',True)],
'required': [('is_announcement','=',False)]}"/>
<field name="month_of_action" attrs="{'invisible': ['|',('hr_type','=',('letter')),
('is_announcement','=',True)],
'required': [('hr_type','!=',('letter')),
('is_announcement','=',False)]}"/>
<field name="attachment_id" widget="many2many_binary" class="oe_inline"/>
</group>
<group>
<field name="requested_date" readonly="1"/>
<field name="email_send" invisible="1"/>
<field name="amount" attrs="{'invisible': ['|',('hr_type','=',('letter')),
('is_announcement','=',True)]}"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page name="letter" string="Letter">
<field name="letter"/>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<record id="view_hr_reward_warning_tree" model="ir.ui.view">
<field name="name">hr.reward.warning.tree</field>
<field name="model">hr.reward.warning</field>
<field name="arch" type="xml">
<tree decoration-info="state == 'draft'" colors="grey:state == 'rejected';green:state == 'approved';red:state == 'to_approve';">
<field name="name"/>
<field name="reason"/>
<field name="employee_id"/>
<field name="hr_type"/>
<field name="month_of_action"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_hr_reward_warning_search" model="ir.ui.view">
<field name="name">hr.reward.warning.search</field>
<field name="model">hr.reward.warning</field>
<field name="arch" type="xml">
<search string="Announcements">
<field name="name"/>
<field name="is_announcement"/>
<field name="reason"/>
<field name="employee_id"/>
<field name="hr_type"/>
<field name="month_of_action"/>
<field name="state"/>
<separator/>
<filter name="approved_rewards" string="Approved Letters" domain="[('state', '=', 'approved')]"/>
<filter name="general_announcements" string="General Announcements" domain="[('is_announcement', '=',True)]"/>
<filter name="warnings" string="Warnings" domain="[('hr_type', '=', 'warning')]"/>
<filter name="letters" string="Letters" domain="[('hr_type', '=', 'letter')]"/>
<filter name="rewards" string="Rewards" domain="[('hr_type', '=', 'reward')]"/>
<group expand="0" string="Group By">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Employee" domain="[]" context="{'group_by':'employee_id'}"/>
<filter string="Type" domain="[]" context="{'group_by':'hr_type'}"/>
<filter string="Month of Action" domain="[]" context="{'group_by':'month_of_action'}"/>
</group>
</search>
</field>
</record>
<record id="action_hr_reward_warning" model="ir.actions.act_window">
<field name="name">Announcements</field>
<field name="res_model">hr.reward.warning</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_hr_reward_warning_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</field>
</record>
<menuitem id="hr_reward_warning" parent="hr.menu_hr_root"
groups="hr.group_hr_user,hr.group_hr_manager"
name="Official Announcements" sequence="15"/>
<menuitem action="action_hr_reward_warning" id="hr_reward_warning_sub_menu" parent="hr_reward_warning"
groups="hr.group_hr_user,hr.group_hr_manager"
name="Announcements" sequence="1"/>
</data>
</odoo>
Loading…
Cancel
Save