diff --git a/hr_reward_warning/RELEASE_NOTES.md b/hr_reward_warning/RELEASE_NOTES.md deleted file mode 100644 index 02d9a9de1..000000000 --- a/hr_reward_warning/RELEASE_NOTES.md +++ /dev/null @@ -1,6 +0,0 @@ -## Module - -#### 30.03.2018 -#### Version 10.0.1.0.0 -##### ADD -- Initial commit for OpenHrms Project diff --git a/hr_reward_warning/__manifest__.py b/hr_reward_warning/__manifest__.py index f1e0a2ddb..e9f8c63c9 100644 --- a/hr_reward_warning/__manifest__.py +++ b/hr_reward_warning/__manifest__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ################################################################################### -# A part of Open HRMS Project +# A part of OpenHRMS Project # # Cybrosys Technologies Pvt. Ltd. # Copyright (C) 2018-TODAY Cybrosys Technologies (). @@ -22,7 +22,7 @@ ################################################################################### { 'name': 'Open HRMS Official Announcements', - 'version': '10.0.1.0.0', + 'version': '10.0.1.1.0', 'summary': """Managing Official Announcements""", 'description': 'This module helps you to manage hr official announcements', 'category': 'Generic Modules/Human Resources', @@ -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/doc/RELEASE_NOTES.md b/hr_reward_warning/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8de2a9fb0 --- /dev/null +++ b/hr_reward_warning/doc/RELEASE_NOTES.md @@ -0,0 +1,11 @@ +## Module + +#### 07.04.2018 +#### Version 10.0.1.1.0 +##### CHG +- Index updated + +#### 30.03.2018 +#### Version 10.0.1.0.0 +##### ADD +- Initial commit for Open HRMS Project 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 df4dd325b..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' +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 6be980560..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 569824bc0..200f408da 100644 --- a/hr_reward_warning/static/description/index.html +++ b/hr_reward_warning/static/description/index.html @@ -1,11 +1,11 @@
-

OpenHRMS

+

Open HRMS

Most advanced open source HR management software

-
+
@@ -20,7 +20,7 @@
-

OH Official Announcements

+

Open HRMS Official Announcements

Manages Official Announcements

Cybrosys Technologies

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 796b5f8e5..000000000 --- a/hr_reward_warning/views/hr_reward_warning_view.xml +++ /dev/null @@ -1,197 +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