From 35c9dd5118f8ae85f914da0893cd2fe51a51fa8b Mon Sep 17 00:00:00 2001 From: Sreejith P Date: Tue, 8 May 2018 13:52:02 +0530 Subject: [PATCH] [UDT] Workflow Updated --- hr_reward_warning/__manifest__.py | 5 +- hr_reward_warning/data/reward_rule.xml | 29 --- .../__pycache__/__init__.cpython-35.pyc | Bin 229 -> 0 bytes .../__pycache__/hr_employee.cpython-35.pyc | Bin 5710 -> 0 bytes .../__pycache__/hr_warning.cpython-35.pyc | Bin 9820 -> 0 bytes hr_reward_warning/models/hr_employee.py | 177 ++------------ hr_reward_warning/models/hr_warning.py | 231 ++---------------- hr_reward_warning/reports/letter.xml | 24 -- .../security/ir.model.access.csv | 6 +- .../security/reward_security.xml | 6 +- .../static/description/index.html | 26 +- .../views/hr_announcement_view.xml | 138 +++++++++++ hr_reward_warning/views/hr_employee_view.xml | 26 -- .../views/hr_reward_warning_view.xml | 198 --------------- 14 files changed, 202 insertions(+), 664 deletions(-) delete mode 100644 hr_reward_warning/data/reward_rule.xml delete mode 100644 hr_reward_warning/models/__pycache__/__init__.cpython-35.pyc delete mode 100644 hr_reward_warning/models/__pycache__/hr_employee.cpython-35.pyc delete mode 100644 hr_reward_warning/models/__pycache__/hr_warning.cpython-35.pyc delete mode 100644 hr_reward_warning/reports/letter.xml create mode 100644 hr_reward_warning/views/hr_announcement_view.xml delete mode 100644 hr_reward_warning/views/hr_employee_view.xml delete mode 100644 hr_reward_warning/views/hr_reward_warning_view.xml 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 d08fc9de59061c25171ed98e3f57a9d4d9562125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 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 ZrZ8^-qXo_>f)a{x=S+IKJDs1t{y)JHdpQ6A 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 = _('' - '
%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}) + 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?

- Email Contact Us - - Other Open HRMS Addons - - Contact Us Request Customization - + href="https://www.cybrosys.com/odoo-customization-and-installation/"> Request Customization

- - - +
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