diff --git a/hr_payslip_monthly_report/README.rst b/hr_payslip_monthly_report/README.rst new file mode 100644 index 000000000..ad67ed752 --- /dev/null +++ b/hr_payslip_monthly_report/README.rst @@ -0,0 +1,40 @@ +Payroll Advanced Features +========================= +* Payroll Advanced Features for Odoo 13 community edition + +Installation +============ + - www.odoo.com/documentation/13.0/setup/install.html + - Install our custom addon + +License +------- +Affero General Public License, Version 3 (AGPL v3). +(https://www.odoo.com/documentation/user/13.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Credits +-------- +* Anusha, odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ + diff --git a/hr_payslip_monthly_report/__init__.py b/hr_payslip_monthly_report/__init__.py new file mode 100644 index 000000000..ee5061231 --- /dev/null +++ b/hr_payslip_monthly_report/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import models +from . import report +from . import wizard + diff --git a/hr_payslip_monthly_report/__manifest__.py b/hr_payslip_monthly_report/__manifest__.py new file mode 100644 index 000000000..28fe293a8 --- /dev/null +++ b/hr_payslip_monthly_report/__manifest__.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Payroll Advanced Features', + 'summary': 'Payroll Advanced Features For Odoo 13 Community.', + 'description': 'Payroll Advanced Features For Odoo 13 Community, payroll, odoo13, payroll report, payslip report', + 'category': 'Generic Modules/Human Resources', + 'version': '13.0.1.0.0', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': [ + 'hr_payroll_community', 'mail', + ], + 'data': [ + 'security/ir.model.access.csv', + 'views/hr_payslip.xml', + 'views/res_config_settings_views.xml', + 'data/payslip_mail_template.xml', + 'wizard/hr_payslip_mass_confirm.xml', + 'report/hr_payslip_report.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} + diff --git a/hr_payslip_monthly_report/data/payslip_mail_template.xml b/hr_payslip_monthly_report/data/payslip_mail_template.xml new file mode 100644 index 000000000..b4f610176 --- /dev/null +++ b/hr_payslip_monthly_report/data/payslip_mail_template.xml @@ -0,0 +1,22 @@ + + + + + + Monthly Payslip Email + + ${(user.email |safe)} + ${object.employee_id.private_email} + Ref ${object.number} + + Hi,

+

Here by attaching payslip details of this month

+ ]]> +
+ + ${(object.number or '').replace('/','_')} +
+
+
\ No newline at end of file diff --git a/hr_payslip_monthly_report/doc/RELEASE_NOTES.md b/hr_payslip_monthly_report/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..e5191b937 --- /dev/null +++ b/hr_payslip_monthly_report/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 29.2.2020 +#### Version 13.0.1.0.0 +#### ADD +- Initial commit + diff --git a/hr_payslip_monthly_report/models/__init__.py b/hr_payslip_monthly_report/models/__init__.py new file mode 100644 index 000000000..bfe4ad32b --- /dev/null +++ b/hr_payslip_monthly_report/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import hr_payslip +from . import res_config_settings diff --git a/hr_payslip_monthly_report/models/hr_payslip.py b/hr_payslip_monthly_report/models/hr_payslip.py new file mode 100644 index 000000000..6116dce24 --- /dev/null +++ b/hr_payslip_monthly_report/models/hr_payslip.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +import logging +from odoo import models, _ + +_logger = logging.getLogger(__name__) + + +class HrPayslip(models.Model): + _inherit = 'hr.payslip' + + def action_payslip_done(self): + """Checking auto email option is set.if set email containing payslip details will be send on confirmation""" + res = super(HrPayslip, self).action_payslip_done() + if self.env['ir.config_parameter'].sudo().get_param('send_payslip_by_email'): + for payslip in self: + if payslip.employee_id.private_email: + template = self.env.ref('hr_payslip_monthly_report.email_template_payslip') + template.sudo().send_mail(payslip.id, force_send=True) + _logger.info("Payslip details for %s send by mail", payslip.employee_id.name) + return res + + def action_payslip_send(self): + """opens a window to compose an email, + with template message loaded by default""" + self.ensure_one() + ir_model_data = self.env['ir.model.data'] + try: + template_id = ir_model_data.get_object_reference('hr_payslip_monthly_report', + 'email_template_payslip')[1] + except ValueError: + template_id = False + try: + compose_form_id = ir_model_data.get_object_reference('mail', + 'email_compose_message_wizard_form')[1] + except ValueError: + compose_form_id = False + ctx = { + 'default_model': 'hr.payslip', + 'default_res_id': self.ids[0], + 'default_use_template': bool(template_id), + 'default_template_id': template_id, + 'default_composition_mode': 'comment', + } + return { + 'name': _('Compose Email'), + 'type': 'ir.actions.act_window', + 'view_mode': 'form', + 'res_model': 'mail.compose.message', + 'views': [(compose_form_id, 'form')], + 'view_id': compose_form_id, + 'target': 'new', + 'context': ctx, + } diff --git a/hr_payslip_monthly_report/models/res_config_settings.py b/hr_payslip_monthly_report/models/res_config_settings.py new file mode 100644 index 000000000..3798d51f0 --- /dev/null +++ b/hr_payslip_monthly_report/models/res_config_settings.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import fields, models, api + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + send_payslip_by_email = fields.Boolean(string="Automatic Send Payslip By Mail") + + @api.model + def get_values(self): + res = super(ResConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + send_payslip_by_email = params.get_param('send_payslip_by_email', default=False) + res.update( + send_payslip_by_email=send_payslip_by_email + ) + return res + + def set_values(self): + super(ResConfigSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param("send_payslip_by_email", + self.send_payslip_by_email) + + + diff --git a/hr_payslip_monthly_report/report/__init__.py b/hr_payslip_monthly_report/report/__init__.py new file mode 100644 index 000000000..63ffb1e6d --- /dev/null +++ b/hr_payslip_monthly_report/report/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import hr_payslip_report diff --git a/hr_payslip_monthly_report/report/hr_payslip_report.py b/hr_payslip_monthly_report/report/hr_payslip_report.py new file mode 100644 index 000000000..fb776a815 --- /dev/null +++ b/hr_payslip_monthly_report/report/hr_payslip_report.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Anusha () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from odoo import fields, models, tools +from datetime import date +import time +from calendar import monthrange + + +class PayrollReportView(models.Model): + _name = 'hr.payroll.report.view' + _auto = False + + now = date.today() + month_day = monthrange(now.year, now.month) + start_date = fields.Date(string="Start Date", default=time.strftime('%Y-%m-01'), invisible=True) + end_date = fields.Date(string="End Date", default=time.strftime('%Y-%m-' + str(month_day[1]) + ''), invisible=True) + name = fields.Many2one('hr.employee', string='Employee') + date_from = fields.Date(string='From') + date_to = fields.Date(string='To') + state = fields.Selection([('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')], + string='Status') + job_id = fields.Many2one('hr.job', string='Job Title') + company_id = fields.Many2one('res.company', string='Company') + department_id = fields.Many2one('hr.department', string='Department') + rule_name = fields.Many2one('hr.salary.rule.category', string="Rule Category") + rule_amount = fields.Float(string="Amount") + struct_id = fields.Many2one('hr.payroll.structure', string="Salary Structure") + rule_id = fields.Many2one('hr.salary.rule', string="Salary Rule") + + def _select(self): + select_str = """ + min(psl.id),ps.id,ps.number,emp.id as name,dp.id as department_id,jb.id as job_id,cmp.id as company_id,ps.date_from, ps.date_to, ps.state as state ,rl.id as rule_name, + psl.total as rule_amount,ps.struct_id as struct_id,rlu.id as rule_id""" + return select_str + + def _from(self): + from_str = """ + hr_payslip_line psl + join hr_payslip ps on ps.id=psl.slip_id + join hr_salary_rule rlu on rlu.id = psl.salary_rule_id + join hr_employee emp on ps.employee_id=emp.id + join hr_salary_rule_category rl on rl.id = psl.category_id + left join hr_department dp on emp.department_id=dp.id + left join hr_job jb on emp.job_id=jb.id + join res_company cmp on cmp.id=ps.company_id + """ + return from_str + + def _group_by(self): + group_by_str = """group by ps.number,ps.id,emp.id,dp.id,jb.id,cmp.id,ps.date_from,ps.date_to,ps.state, + psl.total,psl.name,psl.category_id,rl.id,rlu.id""" + return group_by_str + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + self.env.cr.execute("""CREATE or REPLACE VIEW %s as ( SELECT + %s + FROM %s + %s + )""" % (self._table, self._select(), self._from(), self._group_by())) + + diff --git a/hr_payslip_monthly_report/report/hr_payslip_report.xml b/hr_payslip_monthly_report/report/hr_payslip_report.xml new file mode 100644 index 000000000..54c885b8b --- /dev/null +++ b/hr_payslip_monthly_report/report/hr_payslip_report.xml @@ -0,0 +1,78 @@ + + + + + hr.payslip.pivot + hr.payroll.report.view + + + + + + + + + + + hr.payslip.graph + hr.payroll.report.view + + + + + + + + + + hr.payslip.search + hr.payroll.report.view + + + + + + + + + + + + + + + + + + + + + + + + + + + hr.payroll.report.view + Payslips + pivot,graph + {'search_default_year':1} + This report helps in payroll analysis. This helps you to check your pay slips and sorting it out from different group + criteria (Employee, Job title, Department, Company, Pay slip etc.). + + + + + + \ No newline at end of file diff --git a/hr_payslip_monthly_report/security/ir.model.access.csv b/hr_payslip_monthly_report/security/ir.model.access.csv new file mode 100644 index 000000000..b41c4810d --- /dev/null +++ b/hr_payslip_monthly_report/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_hr_payslip_monthly_report_manager,hr.payroll.report.view,hr_payslip_monthly_report.model_hr_payroll_report_view,hr_payroll_community.group_hr_payroll_community_user,1,1,1,1 + diff --git a/hr_payslip_monthly_report/static/description/banner.png b/hr_payslip_monthly_report/static/description/banner.png new file mode 100644 index 000000000..21ec46472 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/banner.png differ diff --git a/hr_payslip_monthly_report/static/description/icon.png b/hr_payslip_monthly_report/static/description/icon.png new file mode 100644 index 000000000..c5cb9a55a Binary files /dev/null and b/hr_payslip_monthly_report/static/description/icon.png differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_barcode_scanning.jpeg b/hr_payslip_monthly_report/static/description/images/banner_barcode_scanning.jpeg new file mode 100644 index 000000000..529143e4e Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_barcode_scanning.jpeg differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_currency_total.png b/hr_payslip_monthly_report/static/description/images/banner_currency_total.png new file mode 100644 index 000000000..6153ed719 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_currency_total.png differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_customer_sequence.jpeg b/hr_payslip_monthly_report/static/description/images/banner_customer_sequence.jpeg new file mode 100644 index 000000000..7451342d6 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_customer_sequence.jpeg differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_previous_rates.jpeg b/hr_payslip_monthly_report/static/description/images/banner_previous_rates.jpeg new file mode 100644 index 000000000..e10c28799 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_previous_rates.jpeg differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_product_branding.png b/hr_payslip_monthly_report/static/description/images/banner_product_branding.png new file mode 100644 index 000000000..aa12beabb Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_product_branding.png differ diff --git a/hr_payslip_monthly_report/static/description/images/banner_product_expiry.jpeg b/hr_payslip_monthly_report/static/description/images/banner_product_expiry.jpeg new file mode 100644 index 000000000..84a872d44 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/banner_product_expiry.jpeg differ diff --git a/hr_payslip_monthly_report/static/description/images/checked.png b/hr_payslip_monthly_report/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/checked.png differ diff --git a/hr_payslip_monthly_report/static/description/images/cybrosys.png b/hr_payslip_monthly_report/static/description/images/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/cybrosys.png differ diff --git a/hr_payslip_monthly_report/static/description/images/email_option.png b/hr_payslip_monthly_report/static/description/images/email_option.png new file mode 100644 index 000000000..4330a9674 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/email_option.png differ diff --git a/hr_payslip_monthly_report/static/description/images/mass_confirm.png b/hr_payslip_monthly_report/static/description/images/mass_confirm.png new file mode 100644 index 000000000..3645acb7f Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/mass_confirm.png differ diff --git a/hr_payslip_monthly_report/static/description/images/payroll_adavanced_main.png b/hr_payslip_monthly_report/static/description/images/payroll_adavanced_main.png new file mode 100644 index 000000000..4c016d68b Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/payroll_adavanced_main.png differ diff --git a/hr_payslip_monthly_report/static/description/images/payroll_report.png b/hr_payslip_monthly_report/static/description/images/payroll_report.png new file mode 100644 index 000000000..e4e08777e Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/payroll_report.png differ diff --git a/hr_payslip_monthly_report/static/description/images/setting.png b/hr_payslip_monthly_report/static/description/images/setting.png new file mode 100644 index 000000000..86d0b5369 Binary files /dev/null and b/hr_payslip_monthly_report/static/description/images/setting.png differ diff --git a/hr_payslip_monthly_report/static/description/index.html b/hr_payslip_monthly_report/static/description/index.html new file mode 100644 index 000000000..0127fee9c --- /dev/null +++ b/hr_payslip_monthly_report/static/description/index.html @@ -0,0 +1,524 @@ +
+ cybrosys-logo
+
+
+
+

Payroll Advanced Features

+

Payroll Advanced Features For Odoo 13 Community.

+
+

Key Highlights

+
    +
  • check + Payroll-Payslip Report. +
  • +
  • check + Option for sending payslip report to employees by email. +
  • +
  • check + Automatic email to employee containing payslip details during the confirmation of payslip. +
  • +
  • check + Mass Confirmation of payslip. +
  • +
+
+
+
+
+
+
+
+ +
+
+ +

Overview

+
+

+ Payroll-Payslip reporting. + Email sending option in Payslip + Configure automatic sending of payslip details to employees during confirmation. +

+
+
+ +

Payroll Advanced Features

+
+
    +
  • + check + Payroll-Payslip reporting. +
  • +
  • + check + Automatic Payslip Mail to an employee during the confirmation of payslip. +
  • +
  • + check + Able to confirm Payslip Massly. +
  • +
+
+ +
+
+

Screenshots

+
+
+
+ +
+
+
+
+
+
    +
+
+
+
+
+
+
+

Suggested Products

+
+ +
+
+

Our Service

+
+ +
+
+
+

Our Industries

+
+ +
+
+
+
+ Odoo Industry
+
+
+

+ + Trading

+

+ Easily procure and sell your products.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Manufacturing

+

+ Plan, track and schedule your operations.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Restaurant

+

+ Run your bar or restaurant methodical.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + POS

+

+ Easy configuring and convivial selling.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + E-commerce & Website

+

+ Mobile friendly, awe-inspiring product pages.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Hotel Management

+

+ An all-inclusive hotel management application.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Education

+

+ A Collaborative platform for educational management.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + Service Management

+

+ Keep track of services and invoice accordingly.

+
+
+
+
+
+ +
+
+
+

Need Any Help?

+
+

If you have anything to share with us based on your use of this module, please + let us know. We are ready to offer our support.

+
+

Email us

+

odoo@cybrosys.com / info@cybrosys.com

+
+
+

Contact Us

+ www.cybrosys.com +
+
+
+
+
+
+
+
+
+ +
+ + + + + + + +
+
+
+ \ No newline at end of file diff --git a/hr_payslip_monthly_report/views/hr_payslip.xml b/hr_payslip_monthly_report/views/hr_payslip.xml new file mode 100644 index 000000000..bc6efdb2e --- /dev/null +++ b/hr_payslip_monthly_report/views/hr_payslip.xml @@ -0,0 +1,18 @@ + + + + + hr.payslip.view.form.inherit.mrp.workorder + hr.payslip + + + +