diff --git a/hr_payslip_monthly_report/README.rst b/hr_payslip_monthly_report/README.rst
new file mode 100644
index 000000000..5ca75a5ec
--- /dev/null
+++ b/hr_payslip_monthly_report/README.rst
@@ -0,0 +1,56 @@
+.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg
+ :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+
+Payroll Advanced Features
+=========================
+* Payroll Advanced Features for Odoo 17 community edition
+
+Features
+========
+* Payroll-Payslip Reporting.
+* Automatic Mail During Confirmation of Payslip.
+* Mass Confirm Payslip.
+
+Configuration
+=============
+Nothing to configure.
+
+License
+-------
+Affero General Public License, v3.0 (AGPL v3).
+(https://www.gnu.org/licenses/lgpl-3.0-standalone.html)
+
+Company
+-------
+* `Cybrosys Techno Solutions `__
+
+Credits
+-------
+* Developers: (V14) Jibin James
+ (V15) Aneesh,
+ (V16) Anusha,
+ (V17) Farhana Jahan PT,
+ Contact: odoo@cybrosys.com
+
+Contacts
+--------
+* Mail Contact : odoo@cybrosys.com
+* Website : https://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
+==========
+.. image:: https://cybrosys.com/images/logo.png
+ :target: https://cybrosys.com
+
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit `Our Website `__
+
+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..d8660a2df
--- /dev/null
+++ b/hr_payslip_monthly_report/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) 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..9e9d7c891
--- /dev/null
+++ b/hr_payslip_monthly_report/__manifest__.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+{
+ 'name': 'Payroll Advanced Features',
+ 'summary': 'Payroll Advanced Features For Odoo 17 Community.',
+ 'description': 'Payroll Advanced Features For Odoo 17 Community,'
+ 'Payroll-Payslip Reporting, Automatic Mail During '
+ 'Confirmation of Payslip, Mass Confirm Payslip ',
+ 'category': 'Generic Modules/Human Resources',
+ '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_views.xml',
+ 'views/res_config_settings_views.xml',
+ 'data/mail_template_data.xml',
+ 'wizard/payslip_confirm_views.xml',
+ 'report/hr_payslip_report_views.xml',
+ ],
+ 'images': ['static/description/banner.jpg'],
+ 'license': 'LGPL-3',
+ 'installable': True,
+ 'auto_install': False,
+ 'application': False,
+}
diff --git a/hr_payslip_monthly_report/data/mail_template_data.xml b/hr_payslip_monthly_report/data/mail_template_data.xml
new file mode 100644
index 000000000..23f1a1bb2
--- /dev/null
+++ b/hr_payslip_monthly_report/data/mail_template_data.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Monthly Payslip Email
+
+ {{(user.email)}}
+ {{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..174f73ee7
--- /dev/null
+++ b/hr_payslip_monthly_report/doc/RELEASE_NOTES.md
@@ -0,0 +1,5 @@
+## Module
+#### 18.12.2023
+#### Version 17.0.1.0.0
+#### ADD
+- Initial commit for Payroll Advanced Features
diff --git a/hr_payslip_monthly_report/models/__init__.py b/hr_payslip_monthly_report/models/__init__.py
new file mode 100644
index 000000000..4452a8fdd
--- /dev/null
+++ b/hr_payslip_monthly_report/models/__init__.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) 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..51fd2bc76
--- /dev/null
+++ b/hr_payslip_monthly_report/models/hr_payslip.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+import logging
+
+from odoo import fields, models, _
+
+_logger = logging.getLogger(__name__)
+
+
+class HrPayslip(models.Model):
+ """Inherit hr_payslip module for sending a mail."""
+ _inherit = 'hr.payslip'
+
+ is_send_mail = fields.Boolean(
+ string="Is Send Mail",
+ help="Checks the Mail is send or not")
+
+ def action_payslip_done(self):
+ """Checking auto email option is set. If set email containing payslip
+ details will send on confirmation"""
+ if self.env['ir.config_parameter'].sudo().get_param(
+ 'send_payslip_by_email'):
+ self.write({'is_send_mail': True})
+ 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()
+ self.write({'is_send_mail': True})
+ ir_model_data = self.env['ir.model.data']
+ try:
+ template_id = ir_model_data._xmlid_lookup(
+ 'hr_payslip_monthly_report.email_template_payslip')[1]
+ except ValueError:
+ template_id = False
+ try:
+ compose_form_id = ir_model_data._xmlid_lookup(
+ 'mail.email_compose_message_wizard_form')[1]
+ except ValueError:
+ compose_form_id = False
+ ctx = {
+ 'default_model': 'hr.payslip',
+ 'default_res_ids': self.ids,
+ 'default_template_id': template_id,
+ 'default_composition_mode': 'comment',
+ 'force_email': True,
+ }
+ 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..0cfb7bb00
--- /dev/null
+++ b/hr_payslip_monthly_report/models/res_config_settings.py
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import api, fields, models
+
+
+class ResConfigSettings(models.TransientModel):
+ """Inherit res_config_settings for adding a boolean for send
+ Payslip by Mail"""
+ _inherit = 'res.config.settings'
+
+ send_payslip_by_email = fields.Boolean(
+ string="Automatic Send Payslip By Mail",
+ help="Is needed for automatic send mail")
+
+ @api.model
+ def get_values(self):
+ """Function for getting boolean"""
+ 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):
+ """Function for setting boolean"""
+ 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..9c6a4edf9
--- /dev/null
+++ b/hr_payslip_monthly_report/report/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) 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..e413c5dd2
--- /dev/null
+++ b/hr_payslip_monthly_report/report/hr_payslip_report.py
@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+import time
+from calendar import monthrange
+from datetime import date
+
+from odoo import fields, models, tools
+
+
+class HrPayrollReportView(models.Model):
+ """Create a new model for getting monthly report"""
+ _name = 'hr.payroll.report'
+ _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,
+ help="Start Date for Report")
+ end_date = fields.Date(string="End Date", default=time.strftime(
+ '%Y-%m-' + str(month_day[1]) + ''), invisible=True,
+ help="End Date for Report")
+ name = fields.Many2one('hr.employee', string='Employee',
+ help="Choose Employee")
+ date_from = fields.Date(string='From', help="Starting Date for Report")
+ date_to = fields.Date(string='To', help="Ending Date for Report")
+ state = fields.Selection(
+ [('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'),
+ ('cancel', 'Rejected')],
+ string='Status', help="Select Status for Report")
+ job_id = fields.Many2one('hr.job', string='Job Title',
+ help="Choose Hr Job")
+ company_id = fields.Many2one('res.company', string='Company',
+ help="Choose Company")
+ department_id = fields.Many2one('hr.department',
+ string='Department',
+ help="Choose Hr Department")
+ rule_name = fields.Many2one('hr.salary.rule.category',
+ string="Rule Category",
+ help="Choose Salary Rule Category")
+ rule_amount = fields.Float(string="Amount", help="Set Amount")
+ struct_id = fields.Many2one('hr.payroll.structure',
+ string="Salary Structure",
+ help="Choose Hr Payroll Structure")
+ rule_id = fields.Many2one('hr.salary.rule',
+ string="Salary Rule", help="Choose Salary Rule")
+
+ def _select(self):
+ """
+ Generate and return a SQL SELECT statement for retrieving specific fields from the database.
+ Returns:
+ str: SQL SELECT statement with the following fields:
+ - Minimum of 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
+ """
+ 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):
+ """
+ Generate and return a SQL FROM clause for joining tables in a
+ database query.
+
+ Returns:
+ str: SQL FROM clause with the following table joins:
+ - hr_payslip_line (psl)
+ - hr_payslip (ps) on ps.id = psl.slip_id
+ - hr_salary_rule (rlu) on rlu.id = psl.salary_rule_id
+ - hr_employee (emp) on ps.employee_id = emp.id
+ - hr_salary_rule_category (rl) on rl.id = psl.category_id
+ - hr_department (dp) (left join) on emp.department_id = dp.id
+ - hr_job (jb) (left join) on emp.job_id = jb.id
+ - res_company (cmp) on cmp.id = ps.company_id
+ """
+ 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):
+ """
+ Generate and return a SQL GROUP BY clause for grouping results in a
+ database query.
+
+ Returns:
+ str: SQL GROUP BY clause with the following fields:
+ - 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
+ """
+ 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):
+ """
+ Initialize or update a database view with a SELECT statement.
+ """
+ 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_views.xml b/hr_payslip_monthly_report/report/hr_payslip_report_views.xml
new file mode 100644
index 000000000..00971e8bb
--- /dev/null
+++ b/hr_payslip_monthly_report/report/hr_payslip_report_views.xml
@@ -0,0 +1,88 @@
+
+
+
+
+ hr.payroll.view.pivot
+ hr.payroll.report
+
+
+
+
+
+
+
+
+
+
+ hr.payroll.view.graph
+ hr.payroll.report
+
+
+
+
+
+
+
+
+
+ hr.payroll.select
+ hr.payroll.report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hr.payroll.report
+ Payslips
+ pivot,graph
+ {'search_default_year':1}
+ This report helps in payroll analysis. This helps you
+ to check your payslips 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..0956fda07
--- /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,model_hr_payroll_report,hr_payroll_community.group_hr_payroll_community_user,1,1,1,1
+access_group_user,Access User,model_payslip_confirm,hr_payroll_community.group_hr_payroll_community_user,1,1,1,1
\ No newline at end of file
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/capture (1).png b/hr_payslip_monthly_report/static/description/assets/icons/capture (1).png
new file mode 100644
index 000000000..8824deafc
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/capture (1).png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/check.png b/hr_payslip_monthly_report/static/description/assets/icons/check.png
new file mode 100644
index 000000000..c8e85f51d
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/check.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/chevron.png b/hr_payslip_monthly_report/static/description/assets/icons/chevron.png
new file mode 100644
index 000000000..2089293d6
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/chevron.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/cogs.png b/hr_payslip_monthly_report/static/description/assets/icons/cogs.png
new file mode 100644
index 000000000..95d0bad62
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/cogs.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/consultation.png b/hr_payslip_monthly_report/static/description/assets/icons/consultation.png
new file mode 100644
index 000000000..8319d4baa
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/consultation.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/ecom-black.png b/hr_payslip_monthly_report/static/description/assets/icons/ecom-black.png
new file mode 100644
index 000000000..a9385ff13
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/ecom-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/education-black.png b/hr_payslip_monthly_report/static/description/assets/icons/education-black.png
new file mode 100644
index 000000000..3eb09b27b
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/education-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/hotel-black.png b/hr_payslip_monthly_report/static/description/assets/icons/hotel-black.png
new file mode 100644
index 000000000..130f613be
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/hotel-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/img.png b/hr_payslip_monthly_report/static/description/assets/icons/img.png
new file mode 100644
index 000000000..70197f477
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/img.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/license.png b/hr_payslip_monthly_report/static/description/assets/icons/license.png
new file mode 100644
index 000000000..a5869797e
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/license.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/lifebuoy.png b/hr_payslip_monthly_report/static/description/assets/icons/lifebuoy.png
new file mode 100644
index 000000000..658d56ccc
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/lifebuoy.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/manufacturing-black.png b/hr_payslip_monthly_report/static/description/assets/icons/manufacturing-black.png
new file mode 100644
index 000000000..697eb0e9f
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/manufacturing-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/photo-capture.png b/hr_payslip_monthly_report/static/description/assets/icons/photo-capture.png
new file mode 100644
index 000000000..06c111758
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/photo-capture.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/pos-black.png b/hr_payslip_monthly_report/static/description/assets/icons/pos-black.png
new file mode 100644
index 000000000..97c0f90c1
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/pos-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/puzzle.png b/hr_payslip_monthly_report/static/description/assets/icons/puzzle.png
new file mode 100644
index 000000000..65cf854e7
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/puzzle.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/restaurant-black.png b/hr_payslip_monthly_report/static/description/assets/icons/restaurant-black.png
new file mode 100644
index 000000000..4a35eb939
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/restaurant-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/service-black.png b/hr_payslip_monthly_report/static/description/assets/icons/service-black.png
new file mode 100644
index 000000000..301ab51cb
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/service-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/trading-black.png b/hr_payslip_monthly_report/static/description/assets/icons/trading-black.png
new file mode 100644
index 000000000..9398ba2f1
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/trading-black.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/training.png b/hr_payslip_monthly_report/static/description/assets/icons/training.png
new file mode 100644
index 000000000..884ca024d
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/training.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/update.png b/hr_payslip_monthly_report/static/description/assets/icons/update.png
new file mode 100644
index 000000000..ecbc5a01a
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/update.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/user.png b/hr_payslip_monthly_report/static/description/assets/icons/user.png
new file mode 100644
index 000000000..6ffb23d9f
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/user.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/icons/wrench.png b/hr_payslip_monthly_report/static/description/assets/icons/wrench.png
new file mode 100644
index 000000000..6c04dea0f
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/icons/wrench.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/Cybrosys R.png b/hr_payslip_monthly_report/static/description/assets/misc/Cybrosys R.png
new file mode 100644
index 000000000..da4058087
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/misc/Cybrosys R.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/email.svg b/hr_payslip_monthly_report/static/description/assets/misc/email.svg
new file mode 100644
index 000000000..15291cdc3
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/email.svg
@@ -0,0 +1,33 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/phone.svg b/hr_payslip_monthly_report/static/description/assets/misc/phone.svg
new file mode 100644
index 000000000..b7bd7f251
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/phone.svg
@@ -0,0 +1,3 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/star (1) 2.svg b/hr_payslip_monthly_report/static/description/assets/misc/star (1) 2.svg
new file mode 100644
index 000000000..5ae9f507a
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/star (1) 2.svg
@@ -0,0 +1,9 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/support (1) 1.svg b/hr_payslip_monthly_report/static/description/assets/misc/support (1) 1.svg
new file mode 100644
index 000000000..7d37a8f30
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/support (1) 1.svg
@@ -0,0 +1,9 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/support-email.svg b/hr_payslip_monthly_report/static/description/assets/misc/support-email.svg
new file mode 100644
index 000000000..eb70370d6
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/support-email.svg
@@ -0,0 +1,6 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/tick-mark.svg b/hr_payslip_monthly_report/static/description/assets/misc/tick-mark.svg
new file mode 100644
index 000000000..2dbb40187
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/tick-mark.svg
@@ -0,0 +1,17 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/whatsapp 1.svg b/hr_payslip_monthly_report/static/description/assets/misc/whatsapp 1.svg
new file mode 100644
index 000000000..0bfaf8fc6
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/whatsapp 1.svg
@@ -0,0 +1,9 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/misc/whatsapp.svg b/hr_payslip_monthly_report/static/description/assets/misc/whatsapp.svg
new file mode 100644
index 000000000..b618aea1d
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/assets/misc/whatsapp.svg
@@ -0,0 +1,33 @@
+
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/1.gif b/hr_payslip_monthly_report/static/description/assets/modules/1.gif
new file mode 100644
index 000000000..d19e2b352
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/1.gif differ
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/2.jpg b/hr_payslip_monthly_report/static/description/assets/modules/2.jpg
new file mode 100644
index 000000000..7b16c4f1f
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/2.jpg differ
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/3.jpg b/hr_payslip_monthly_report/static/description/assets/modules/3.jpg
new file mode 100644
index 000000000..094fffcd1
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/3.jpg differ
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/4.jpg b/hr_payslip_monthly_report/static/description/assets/modules/4.jpg
new file mode 100644
index 000000000..b32ba9e91
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/4.jpg differ
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/5.jpg b/hr_payslip_monthly_report/static/description/assets/modules/5.jpg
new file mode 100644
index 000000000..224bb649b
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/5.jpg differ
diff --git a/hr_payslip_monthly_report/static/description/assets/modules/6.jpg b/hr_payslip_monthly_report/static/description/assets/modules/6.jpg
new file mode 100644
index 000000000..7af1a94cb
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/modules/6.jpg differ
diff --git a/hr_payslip_monthly_report/static/description/assets/screenshots/1.png b/hr_payslip_monthly_report/static/description/assets/screenshots/1.png
new file mode 100644
index 000000000..1bb2b3edf
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/screenshots/1.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/screenshots/2.png b/hr_payslip_monthly_report/static/description/assets/screenshots/2.png
new file mode 100644
index 000000000..9217d5b7c
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/screenshots/2.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/screenshots/3.png b/hr_payslip_monthly_report/static/description/assets/screenshots/3.png
new file mode 100644
index 000000000..784649193
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/screenshots/3.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/screenshots/4.png b/hr_payslip_monthly_report/static/description/assets/screenshots/4.png
new file mode 100644
index 000000000..56bd70e4e
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/screenshots/4.png differ
diff --git a/hr_payslip_monthly_report/static/description/assets/screenshots/hero.gif b/hr_payslip_monthly_report/static/description/assets/screenshots/hero.gif
new file mode 100644
index 000000000..7e22ff8ed
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/assets/screenshots/hero.gif differ
diff --git a/hr_payslip_monthly_report/static/description/banner.jpg b/hr_payslip_monthly_report/static/description/banner.jpg
new file mode 100644
index 000000000..ed878a938
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/banner.jpg 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..e810c4dc6
Binary files /dev/null and b/hr_payslip_monthly_report/static/description/icon.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..4de489953
--- /dev/null
+++ b/hr_payslip_monthly_report/static/description/index.html
@@ -0,0 +1,706 @@
+
+
+
+
+
+
+ Odoo App 3 Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Community
+
+
+
+
+
+
+
+ Payroll Advanced Features
+
+ Payroll Advanced Features For Odoo 17 Community
+
+
+
+
+
+
+
+
+
+ Key Highlights
+
+
+
+
+
+
+
+
+
+
+ Payroll-Payslip Reporting.
+
Payroll-Payslip reporting options.
+
+
+
+
+
+
+
+
+
+
+
+ Automatic Mail During Confirmation of Payslip.
+
Automatic Payslip Mail to an employee during the confirmation of payslip.
+
+ Automatically send Email with Payslip details On
+ Confirmation of Payslip.
+
+
+
+
+
+
+
+
diff --git a/hr_payslip_monthly_report/wizard/__init__.py b/hr_payslip_monthly_report/wizard/__init__.py
new file mode 100644
index 000000000..596f59a82
--- /dev/null
+++ b/hr_payslip_monthly_report/wizard/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import payslip_confirm
diff --git a/hr_payslip_monthly_report/wizard/payslip_confirm.py b/hr_payslip_monthly_report/wizard/payslip_confirm.py
new file mode 100644
index 000000000..589c1018b
--- /dev/null
+++ b/hr_payslip_monthly_report/wizard/payslip_confirm.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions (odoo@cybrosys.com)
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import models
+
+
+class MassConfirmPayslip(models.TransientModel):
+ """Create a new model for getting mass confirm wizard"""
+ _name = 'payslip.confirm'
+ _description = 'Mass Confirm Payslip'
+
+ def confirm_payslip(self):
+ """Mass Confirmation of Payslip"""
+ context = self._context
+ record_ids = context.get('active_ids', [])
+ for each in record_ids:
+ payslip_id = self.env['hr.payslip'].search([('id', '=', each),
+ ('state', 'not in',
+ ['cancel', 'done'])])
+ if payslip_id:
+ payslip_id.action_payslip_done()
diff --git a/hr_payslip_monthly_report/wizard/payslip_confirm_views.xml b/hr_payslip_monthly_report/wizard/payslip_confirm_views.xml
new file mode 100644
index 000000000..a1438643f
--- /dev/null
+++ b/hr_payslip_monthly_report/wizard/payslip_confirm_views.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ payslip.confirm.view.form
+ payslip.confirm
+
+
+
+
+
+
+ Confirm Payslip
+ ir.actions.act_window
+ payslip.confirm
+ form
+ new
+
+ list
+
+