diff --git a/hr_reward_warning/__manifest__.py b/hr_reward_warning/__manifest__.py
index efb02c44b..f64f67965 100644
--- a/hr_reward_warning/__manifest__.py
+++ b/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'],
diff --git a/hr_reward_warning/data/reward_rule.xml b/hr_reward_warning/data/reward_rule.xml
deleted file mode 100644
index d74b1c02f..000000000
--- a/hr_reward_warning/data/reward_rule.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- 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/__pycache__/__init__.cpython-35.pyc b/hr_reward_warning/models/__pycache__/__init__.cpython-35.pyc
deleted file mode 100644
index d08fc9de5..000000000
Binary files a/hr_reward_warning/models/__pycache__/__init__.cpython-35.pyc and /dev/null differ
diff --git a/hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc b/hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc
deleted file mode 100644
index 22632d92f..000000000
Binary files a/hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc and /dev/null differ
diff --git a/hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc b/hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc
deleted file mode 100644
index 0db2f6d2b..000000000
Binary files a/hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc and /dev/null differ
diff --git a/hr_reward_warning/models/hr_employee.py b/hr_reward_warning/models/hr_employee.py
index dfa8d28aa..44730e53c 100644
--- a/hr_reward_warning/models/hr_employee.py
+++ b/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')
\ No newline at end of file
diff --git a/hr_reward_warning/models/hr_warning.py b/hr_reward_warning/models/hr_warning.py
index 503f7ecf4..e744a64ac 100644
--- a/hr_reward_warning/models/hr_warning.py
+++ b/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 = _('
') % (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})
+ 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)
diff --git a/hr_reward_warning/reports/letter.xml b/hr_reward_warning/reports/letter.xml
deleted file mode 100644
index 5e59b5272..000000000
--- a/hr_reward_warning/reports/letter.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hr_reward_warning/security/ir.model.access.csv b/hr_reward_warning/security/ir.model.access.csv
index 48d7cacee..49d676c97 100644
--- a/hr_reward_warning/security/ir.model.access.csv
+++ b/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
diff --git a/hr_reward_warning/security/reward_security.xml b/hr_reward_warning/security/reward_security.xml
index e7ab299bf..c8f6db1f4 100644
--- a/hr_reward_warning/security/reward_security.xml
+++ b/hr_reward_warning/security/reward_security.xml
@@ -1,8 +1,8 @@
-
- Reward Multi Company
-
+
+ Announcement Multi Company
+
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
diff --git a/hr_reward_warning/static/description/index.html b/hr_reward_warning/static/description/index.html
index a5d3760f9..200f408da 100644
--- a/hr_reward_warning/static/description/index.html
+++ b/hr_reward_warning/static/description/index.html
@@ -67,29 +67,21 @@
- Need Any Help?
+ Need Any Help?
diff --git a/hr_reward_warning/views/hr_announcement_view.xml b/hr_reward_warning/views/hr_announcement_view.xml
new file mode 100644
index 000000000..cce5e3a6d
--- /dev/null
+++ b/hr_reward_warning/views/hr_announcement_view.xml
@@ -0,0 +1,138 @@
+
+
+
+
+
+ Announcement
+ hr.announcement
+ GA
+
+
+
+
+ hr.announcement.form
+ hr.announcement
+
+
+
+
+
+
+ hr.announcement.tree
+ hr.announcement
+
+
+
+
+
+
+
+
+
+
+ hr.announcement.search
+ hr.announcement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Announcements
+ hr.announcement
+ form
+ tree,form
+
+
+
+ Click to Create a New Record.
+
+
+
+
+
+
+
+
+ hr.employee.form.inherit.view
+ hr.employee
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hr_reward_warning/views/hr_employee_view.xml b/hr_reward_warning/views/hr_employee_view.xml
deleted file mode 100644
index 4e2ce1f16..000000000
--- a/hr_reward_warning/views/hr_employee_view.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- 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
deleted file mode 100644
index 7063fe1b6..000000000
--- a/hr_reward_warning/views/hr_reward_warning_view.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
- 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