Browse Source

[UDT] Workflow Updated

pull/79/head
Sreejith P 7 years ago
parent
commit
35c9dd5118
  1. 5
      hr_reward_warning/__manifest__.py
  2. 29
      hr_reward_warning/data/reward_rule.xml
  3. BIN
      hr_reward_warning/models/__pycache__/__init__.cpython-35.pyc
  4. BIN
      hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc
  5. BIN
      hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc
  6. 177
      hr_reward_warning/models/hr_employee.py
  7. 231
      hr_reward_warning/models/hr_warning.py
  8. 24
      hr_reward_warning/reports/letter.xml
  9. 6
      hr_reward_warning/security/ir.model.access.csv
  10. 6
      hr_reward_warning/security/reward_security.xml
  11. 26
      hr_reward_warning/static/description/index.html
  12. 138
      hr_reward_warning/views/hr_announcement_view.xml
  13. 26
      hr_reward_warning/views/hr_employee_view.xml
  14. 198
      hr_reward_warning/views/hr_reward_warning_view.xml

5
hr_reward_warning/__manifest__.py

@ -33,10 +33,7 @@
'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',
'views/hr_announcement_view.xml',
],
'demo': [],
'images': ['static/description/banner.jpg'],

29
hr_reward_warning/data/reward_rule.xml

@ -1,29 +0,0 @@
<?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>

BIN
hr_reward_warning/models/__pycache__/__init__.cpython-35.pyc

Binary file not shown.

BIN
hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc

Binary file not shown.

BIN
hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc

Binary file not shown.

177
hr_reward_warning/models/hr_employee.py

@ -23,180 +23,47 @@
from odoo import models, fields, api, _
class HrRewardWarning(models.Model):
class HrAnnouncements(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
def _announcement_count(self):
for obj in self:
announcement_ids = self.env['hr.announcement'].sudo().search([('is_announcement', '=', True),
('state', 'in', ('approved', 'done'))])
obj.announcement_count = len(announcement_ids)
@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'))])
for obj in self:
ann_obj = self.env['hr.announcement'].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
view_id = self.env.ref('hr_reward_warning.view_hr_announcement_form').id
if ann_ids:
if len(ann_ids) <= 1:
if len(ann_ids) > 1:
value = {
'domain': str([('id', 'in', ann_ids)]),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'hr.reward.warning',
'view_id': view_id,
'view_mode': 'tree,form',
'res_model': 'hr.announcement',
'view_id': False,
'type': 'ir.actions.act_window',
'name': _('Announcements'),
'res_id': ann_ids and ann_ids[0]
'res_id': ann_ids
}
else:
value = {
'domain': str([('id', 'in', ann_ids)]),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'hr.reward.warning',
'view_id': False,
'view_mode': 'form',
'res_model': 'hr.announcement',
'view_id': view_id,
'type': 'ir.actions.act_window',
'name': _('Announcements'),
'res_id': ann_ids
'res_id': ann_ids and ann_ids[0]
}
return value
announcement_count = fields.Integer(compute='_announcement_count', string='# Announcements')

231
hr_reward_warning/models/hr_warning.py

@ -24,223 +24,44 @@ 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', 'mail.activity.mixin']
class HrAnnouncementTable(models.Model):
_name = 'hr.announcement'
_description = 'HR Announcement'
_inherit = ['mail.thread', 'ir.needaction_mixin']
name = fields.Char(string='Code No:')
announcement_reason = fields.Text(string='Title', states={'draft': [('readonly', False)]}, required=True, readonly=True)
state = fields.Selection([('draft', 'Draft'), ('to_approve', 'Waiting For Approval'),
('approved', 'Approved'),
('done', 'Done'), ('rejected', 'Refused')],
string='Status', default='draft',
track_visibility='always')
requested_date = fields.Date(string='Requested Date', default=datetime.now().strftime('%Y-%m-%d'))
attachment_id = fields.Many2many('ir.attachment', 'doc_warning_rel', 'doc_id', 'attach_id4',
string="Attachment", help='You can attach the copy of your Letter')
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env.user.company_id, readonly=True,)
is_announcement = fields.Boolean(string='Is general Announcement?')
announcement = fields.Html(string='Letter', states={'draft': [('readonly', False)]}, readonly=True)
@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})
def sent(self):
self.state = 'to_approve'
department_ids = fields.Many2many('hr.department', string='Departments')
@api.model
def create(self, vals):
if vals.get('is_announcement'):
vals['name'] = self.env['ir.sequence'].next_by_code('hr.announcement')
return super(HrAnnouncementTable, self).create(vals)

24
hr_reward_warning/reports/letter.xml

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<template id="reward_warning_letter">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="obj">
<t t-call="web.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>

6
hr_reward_warning/security/ir.model.access.csv

@ -1,4 +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
"access_hr_employee_reward_admin","hr.employee.reward","model_hr_announcement","hr.group_hr_manager",1,1,1,1
"access_hr_employee_reward_user","hr.employee.reward.user","model_hr_announcement","hr.group_hr_user",1,1,1,1
"access_hr_employee_reward_employee","hr.employee.reward.employee","model_hr_announcement","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 model_hr_announcement hr.group_hr_manager 1 1 1 1
3 access_hr_employee_reward_user hr.employee.reward.user model_hr_reward_warning model_hr_announcement hr.group_hr_user 1 1 1 1
4 access_hr_employee_reward_employee hr.employee.reward.employee model_hr_reward_warning model_hr_announcement base.group_user 1 0 0 0

6
hr_reward_warning/security/reward_security.xml

@ -1,8 +1,8 @@
<?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"/>
<record id="property_rule_announcement" model="ir.rule">
<field name="name">Announcement Multi Company</field>
<field name="model_id" ref="model_hr_announcement"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>

26
hr_reward_warning/static/description/index.html

@ -67,29 +67,21 @@
</div>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a
<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/" target="_blank"><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.odoo.com/apps/modules/browse?search=open+hrms" target="_blank"><i
class="fa fa-suitcase"></i> Other Open HRMS Addons </a>
<a
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/" target="_blank"><i
class="fa fa-wrench"></i> Request Customization </a>
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<a href="https://www.cybrosys.com/" target="_blank">
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</div>
</section>

138
hr_reward_warning/views/hr_announcement_view.xml

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="announcement_seq" model="ir.sequence">
<field name="name">Announcement</field>
<field name="code">hr.announcement</field>
<field name="prefix">GA</field>
<field eval="4" name="padding" />
</record>
<record id="view_hr_announcement_form" model="ir.ui.view">
<field name="name">hr.announcement.form</field>
<field name="model">hr.announcement</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 Done" type="object" name="set_to_done" groups="hr.group_hr_user"
attrs="{'invisible': ['|',('state','not in',('approved', 'done')),
('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="announcement_reason"/>
<div>
<field name="announcement_reason"/>
</div>
</group>
<group>
<group>
<field name="attachment_id" widget="many2many_binary" class="oe_inline"/>
</group>
<group>
<field name="requested_date" readonly="1"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page name="announcement" string="Letter">
<field name="announcement"/>
</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_announcement_tree" model="ir.ui.view">
<field name="name">hr.announcement.tree</field>
<field name="model">hr.announcement</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="announcement_reason"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_hr_announcement_search" model="ir.ui.view">
<field name="name">hr.announcement.search</field>
<field name="model">hr.announcement</field>
<field name="arch" type="xml">
<search string="Announcements">
<field name="name"/>
<field name="is_announcement"/>
<field name="announcement_reason"/>
<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)]"/>
<group expand="0" string="Group By">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record id="action_hr_announcement" model="ir.actions.act_window">
<field name="name">Announcements</field>
<field name="res_model">hr.announcement</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_hr_announcement_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to Create a New Record.
</p>
</field>
</record>
<menuitem id="hr_announcement"
name="Official Announcements"
groups="hr.group_hr_user,hr.group_hr_manager"
parent="hr.menu_hr_root"
sequence="15"/>
<menuitem id="hr_announcement_sub_menu"
name="Announcements"
action="action_hr_announcement"
parent="hr_announcement"
groups="hr.group_hr_user,hr.group_hr_manager"
sequence="1"/>
<record model="ir.ui.view" id="announcement_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="announcement_view" type="object" icon="fa-bullhorn">
<field string="Announcements" name="announcement_count" widget="statinfo"/>
</button>
</div>
</field>
</record>
</data>
</odoo>

26
hr_reward_warning/views/hr_employee_view.xml

@ -1,26 +0,0 @@
<?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>

198
hr_reward_warning/views/hr_reward_warning_view.xml

@ -1,198 +0,0 @@
<?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')),
('state','=', 'done'),
('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