diff --git a/hr_leave_lop/README.rst b/hr_leave_lop/README.rst new file mode 100755 index 000000000..4cb30a7f5 --- /dev/null +++ b/hr_leave_lop/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/license-OPL--1-red.svg + :target: https://www.odoo.com/documentation/16.0/legal/licenses.html#odoo-apps + :alt: License: OPL-1 + +Time Off LOP +============ +This module helps you to deduct loss of pay of an employee from the payslip. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +Odoo Proprietary License v1.0 (OPL-1) +(https://www.odoo.com/documentation/16.0/legal/licenses.html#odoo-apps) + +Credits +------- +* Developer : (V16) Muhsina V, 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_leave_lop/__init__.py b/hr_leave_lop/__init__.py new file mode 100755 index 000000000..72fd97838 --- /dev/null +++ b/hr_leave_lop/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Muhsina V (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 +# (OPL-1) It is forbidden to publish, distribute, sublicense, or +# sell copies of the Software or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +# THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +############################################################################### +from . import models diff --git a/hr_leave_lop/__manifest__.py b/hr_leave_lop/__manifest__.py new file mode 100755 index 000000000..0c8068d5d --- /dev/null +++ b/hr_leave_lop/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Muhsina V (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 +# (OPL-1) It is forbidden to publish, distribute, sublicense, or +# sell copies of the Software or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +# THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +############################################################################### +{ + 'name': 'Time Off LOP', + 'version': '16.0.1.0.0', + 'category': 'Human Resources', + 'summary': 'Deduct Loss of Pay Amount from the Payslip', + 'description': """Using this module Hr manger can set different LOP + conditions to deduct loss of pay from payslips.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['hr_payroll', 'hr_holidays'], + 'data': [ + 'security/ir.model.access.csv', + 'views/hr_leave_lop_views.xml', + ], + 'external_dependencies': { + 'python': ['pandas'], + }, + 'images': ['static/description/banner.jpg'], + 'license': 'OPL-1', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/hr_leave_lop/doc/RELEASE_NOTES.md b/hr_leave_lop/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..d4f7213a5 --- /dev/null +++ b/hr_leave_lop/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 15.06.2024 +#### Version 16.0.1.0.0 +##### ADD +- Initial Commit for Time Off LOP \ No newline at end of file diff --git a/hr_leave_lop/models/__init__.py b/hr_leave_lop/models/__init__.py new file mode 100755 index 000000000..383245d70 --- /dev/null +++ b/hr_leave_lop/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Muhsina V (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 +# (OPL-1) It is forbidden to publish, distribute, sublicense, or +# sell copies of the Software or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +# THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +############################################################################### +from . import hr_leave_lop +from . import hr_payslip diff --git a/hr_leave_lop/models/hr_leave_lop.py b/hr_leave_lop/models/hr_leave_lop.py new file mode 100755 index 000000000..5fc1daa2a --- /dev/null +++ b/hr_leave_lop/models/hr_leave_lop.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Muhsina V (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 +# (OPL-1) It is forbidden to publish, distribute, sublicense, or +# sell copies of the Software or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +# THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +############################################################################### +from odoo import fields, models, _ +from odoo.exceptions import ValidationError + + +class HrLeaveLOP(models.Model): + """Model for Time Off LOP (Loss of Pay)""" + _name = "hr.leave.lop" + _description = "Time Off LOP" + _inherit = ['mail.thread', 'mail.activity.mixin'] + + name = fields.Char(string="Name", help="Set a name to identify the lop", + required=True) + leave_type = fields.Selection([ + ('before_holiday', 'Day Before Holiday'), + ('after_holiday', 'Day After Holiday'), + ('between_holidays', 'Between 2 holidays')], string="Leave Type", + required=True, + help="Set type of leave to consider as lop " + "\n\n'Day Before Holiday': Choose this option if the leave day" + "falls just before a holiday, and it's considered as a loss of " + "pay." + "\n\n'Day After Holiday': Select this option if the leave day is " + "immediately following a holiday and should be considered as a " + "loss of pay." + "\n\n'Between 2 Holidays': Use this option when the leave spans " + "between two holidays, and it's treated as a loss of pay.") + deduction_amount = fields.Float(string='Deduction Amount %', + help="Percentage of daily wage to be " + "deducted", required=True) + no_of_days = fields.Integer(string='No Of Holidays', + help="No of holidays to consider", + required=True) + + def copy(self, default=None): + raise ValidationError(_("Cannot duplicate a Time Off Lop!")) + return super().copy(default) diff --git a/hr_leave_lop/models/hr_payslip.py b/hr_leave_lop/models/hr_payslip.py new file mode 100755 index 000000000..6114c599c --- /dev/null +++ b/hr_leave_lop/models/hr_payslip.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Muhsina V (odoo@cybrosys.com) +# +# This program is under the terms of the Odoo Proprietary License v1.0 +# (OPL-1) It is forbidden to publish, distribute, sublicense, or +# sell copies of the Software or modified copies of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +# THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +############################################################################### +import datetime +from pandas import date_range +from odoo import api, models +from odoo.tools import date_utils + + +class HrPayslip(models.Model): + """ Extended model for HR Payslip""" + _inherit = 'hr.payslip' + + def holiday(self, day): + """Get a list of dates for a given frequency. + Args: + day (str): Frequency of the dates (e.g., 'W-MON' for Mondays). + Returns: + list: List of dates in '%Y-%m-%d' format. + """ + return date_range( + start=str(date_utils.start_of( + self.date_from.replace(month=self.date_from.month - 1), + 'month')), + end=str(date_utils.end_of( + self.date_from.replace(month=self.date_from.month + 1), + 'month')), + freq=day).strftime( + '%Y-%m-%d').tolist() + + def get_all_holidays(self): + """Get all holidays based on the employee's working days. + Returns: + list: List of holiday dates in '%Y-%m-%d' format. + """ + holidays = [] + all_days = ['0', '1', '2', '3', '4', '5', '6'] + for working_hours in \ + self.employee_id.resource_calendar_id.attendance_ids: + if working_hours.dayofweek in all_days: + all_days.remove(working_hours.dayofweek) + for days in all_days: + if days == '0': + holidays += self.holiday('W-MON') + elif days == '1': + holidays += self.holiday('W-TUE') + elif days == '2': + holidays += self.holiday('W-WEN') + elif days == '3': + holidays += self.holiday('W-THU') + elif days == '4': + holidays += self.holiday('W-FRI') + elif days == '5': + holidays += self.holiday('W-SAT') + elif days == '6': + holidays += self.holiday('W-SUN') + return holidays + + @api.model + def _get_payslip_lines(self): + """Compute payslip lines including Loss of Pay (LOP) deduction. + Returns: + list: List of payslip line dictionaries. + """ + res = super(HrPayslip, self)._get_payslip_lines() + amount, lop_amount = 0, 0 + daily_wage = self.contract_id.wage / 30 + for leave in self.env['hr.leave'].search( + [('employee_id', '=', self.employee_id.id), + ('state', '=', 'validate'), + ('request_date_from', '>=', self.date_from), + ('request_date_to', '<=', self.date_to)]): + no_of_days, no_of_days_before, no_of_days_after = 0, 0, 0 + prev_flag, next_flag = 0, 0 + leave_type = '' + previous_date = leave.request_date_from - datetime.timedelta( + days=1) + next_date = leave.request_date_to + datetime.timedelta(days=1) + holidays = self.get_all_holidays() + for public_holiday in self.env['resource.calendar.leaves'].search( + [("resource_id", "=", False)]): + holiday_duration = len(date_range( + start=public_holiday.date_from.strftime('%Y-%m-%d'), + end=public_holiday.date_to.strftime('%Y-%m-%d'), + ).strftime('%Y-%m-%d').tolist()) + if str(previous_date) == str( + public_holiday.date_to.strftime('%Y-%m-%d')): + no_of_days += holiday_duration + no_of_days_before += holiday_duration + prev_flag = 1 + if str(next_date) == str( + public_holiday.date_from.strftime('%Y-%m-%d')): + no_of_days += holiday_duration + no_of_days_after += holiday_duration + next_flag = 1 + while str(previous_date) in holidays: + no_of_days += 1 + no_of_days_before += 1 + prev_flag = 1 + previous_date -= datetime.timedelta(days=1) + while str(next_date) in holidays: + no_of_days += 1 + no_of_days_after += 1 + next_flag = 1 + next_date += datetime.timedelta(days=1) + if not next_flag and prev_flag: + leave_type = 'after_holiday' + if next_flag and not prev_flag: + leave_type = 'before_holiday' + if next_flag and prev_flag: + leave_type = 'between_holidays' + if no_of_days_before > no_of_days_after: + no_of_days = no_of_days_before + no_of_days_after + else: + no_of_days = no_of_days_after + no_of_days_before + lop_amount += daily_wage * ( + self.env['hr.leave.lop'].search([ + ('no_of_days', '=', no_of_days), + ('leave_type', '=', leave_type)], + ).deduction_amount / 100) + amount = lop_amount + (leave.number_of_days_display-1) * daily_wage + res.append({'sequence': 250, + 'code': 'LOP', + 'name': 'Loss of Pay', + 'note': '', + 'salary_rule_id': self.env['hr.salary.rule'].search( + [("name", "=", "Deduction"), + ("id", "in", self.struct_id.rule_ids.ids)]).id, + 'contract_id': self.contract_id.id, + 'employee_id': self.employee_id.id, + 'amount': -amount, + 'quantity': 1.0, + 'rate': 100, + 'slip_id': self.id + }) + return res diff --git a/hr_leave_lop/security/ir.model.access.csv b/hr_leave_lop/security/ir.model.access.csv new file mode 100755 index 000000000..f891f5dc0 --- /dev/null +++ b/hr_leave_lop/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_hr_leave_lop_manager,access.hr.leave.lop.manager,model_hr_leave_lop,hr_holidays.group_hr_holidays_manager,1,1,1,1 diff --git a/hr_leave_lop/static/description/assets/icons/check.png b/hr_leave_lop/static/description/assets/icons/check.png new file mode 100755 index 000000000..c8e85f51d Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/check.png differ diff --git a/hr_leave_lop/static/description/assets/icons/chevron.png b/hr_leave_lop/static/description/assets/icons/chevron.png new file mode 100755 index 000000000..2089293d6 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/chevron.png differ diff --git a/hr_leave_lop/static/description/assets/icons/cogs.png b/hr_leave_lop/static/description/assets/icons/cogs.png new file mode 100755 index 000000000..95d0bad62 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/cogs.png differ diff --git a/hr_leave_lop/static/description/assets/icons/consultation.png b/hr_leave_lop/static/description/assets/icons/consultation.png new file mode 100755 index 000000000..8319d4baa Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/consultation.png differ diff --git a/hr_leave_lop/static/description/assets/icons/ecom-black.png b/hr_leave_lop/static/description/assets/icons/ecom-black.png new file mode 100755 index 000000000..a9385ff13 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/ecom-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/education-black.png b/hr_leave_lop/static/description/assets/icons/education-black.png new file mode 100755 index 000000000..3eb09b27b Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/education-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/hotel-black.png b/hr_leave_lop/static/description/assets/icons/hotel-black.png new file mode 100755 index 000000000..130f613be Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/hotel-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/license.png b/hr_leave_lop/static/description/assets/icons/license.png new file mode 100755 index 000000000..a5869797e Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/license.png differ diff --git a/hr_leave_lop/static/description/assets/icons/lifebuoy.png b/hr_leave_lop/static/description/assets/icons/lifebuoy.png new file mode 100755 index 000000000..658d56ccc Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/lifebuoy.png differ diff --git a/hr_leave_lop/static/description/assets/icons/logo.png b/hr_leave_lop/static/description/assets/icons/logo.png new file mode 100755 index 000000000..478462d3e Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/logo.png differ diff --git a/hr_leave_lop/static/description/assets/icons/manufacturing-black.png b/hr_leave_lop/static/description/assets/icons/manufacturing-black.png new file mode 100755 index 000000000..697eb0e9f Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/manufacturing-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/pos-black.png b/hr_leave_lop/static/description/assets/icons/pos-black.png new file mode 100755 index 000000000..97c0f90c1 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/pos-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/puzzle.png b/hr_leave_lop/static/description/assets/icons/puzzle.png new file mode 100755 index 000000000..65cf854e7 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/puzzle.png differ diff --git a/hr_leave_lop/static/description/assets/icons/restaurant-black.png b/hr_leave_lop/static/description/assets/icons/restaurant-black.png new file mode 100755 index 000000000..4a35eb939 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/restaurant-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/service-black.png b/hr_leave_lop/static/description/assets/icons/service-black.png new file mode 100755 index 000000000..301ab51cb Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/service-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/trading-black.png b/hr_leave_lop/static/description/assets/icons/trading-black.png new file mode 100755 index 000000000..9398ba2f1 Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/trading-black.png differ diff --git a/hr_leave_lop/static/description/assets/icons/training.png b/hr_leave_lop/static/description/assets/icons/training.png new file mode 100755 index 000000000..884ca024d Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/training.png differ diff --git a/hr_leave_lop/static/description/assets/icons/update.png b/hr_leave_lop/static/description/assets/icons/update.png new file mode 100755 index 000000000..ecbc5a01a Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/update.png differ diff --git a/hr_leave_lop/static/description/assets/icons/user.png b/hr_leave_lop/static/description/assets/icons/user.png new file mode 100755 index 000000000..6ffb23d9f Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/user.png differ diff --git a/hr_leave_lop/static/description/assets/icons/wrench.png b/hr_leave_lop/static/description/assets/icons/wrench.png new file mode 100755 index 000000000..6c04dea0f Binary files /dev/null and b/hr_leave_lop/static/description/assets/icons/wrench.png differ diff --git a/hr_leave_lop/static/description/assets/misc/categories.png b/hr_leave_lop/static/description/assets/misc/categories.png new file mode 100755 index 000000000..bedf1e0b1 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/categories.png differ diff --git a/hr_leave_lop/static/description/assets/misc/check-box.png b/hr_leave_lop/static/description/assets/misc/check-box.png new file mode 100755 index 000000000..42caf24b9 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/check-box.png differ diff --git a/hr_leave_lop/static/description/assets/misc/compass.png b/hr_leave_lop/static/description/assets/misc/compass.png new file mode 100755 index 000000000..d5fed8faa Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/compass.png differ diff --git a/hr_leave_lop/static/description/assets/misc/corporate.png b/hr_leave_lop/static/description/assets/misc/corporate.png new file mode 100755 index 000000000..2eb13edbf Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/corporate.png differ diff --git a/hr_leave_lop/static/description/assets/misc/customer-support.png b/hr_leave_lop/static/description/assets/misc/customer-support.png new file mode 100755 index 000000000..79efc72ed Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/customer-support.png differ diff --git a/hr_leave_lop/static/description/assets/misc/cybrosys-logo.png b/hr_leave_lop/static/description/assets/misc/cybrosys-logo.png new file mode 100755 index 000000000..cc3cc0ccf Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/cybrosys-logo.png differ diff --git a/hr_leave_lop/static/description/assets/misc/features.png b/hr_leave_lop/static/description/assets/misc/features.png new file mode 100755 index 000000000..b41769f77 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/features.png differ diff --git a/hr_leave_lop/static/description/assets/misc/logo.png b/hr_leave_lop/static/description/assets/misc/logo.png new file mode 100755 index 000000000..478462d3e Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/logo.png differ diff --git a/hr_leave_lop/static/description/assets/misc/pictures.png b/hr_leave_lop/static/description/assets/misc/pictures.png new file mode 100755 index 000000000..56d255fe9 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/pictures.png differ diff --git a/hr_leave_lop/static/description/assets/misc/pie-chart.png b/hr_leave_lop/static/description/assets/misc/pie-chart.png new file mode 100755 index 000000000..426e05244 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/pie-chart.png differ diff --git a/hr_leave_lop/static/description/assets/misc/right-arrow.png b/hr_leave_lop/static/description/assets/misc/right-arrow.png new file mode 100755 index 000000000..730984a06 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/right-arrow.png differ diff --git a/hr_leave_lop/static/description/assets/misc/star.png b/hr_leave_lop/static/description/assets/misc/star.png new file mode 100755 index 000000000..2eb9ab29f Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/star.png differ diff --git a/hr_leave_lop/static/description/assets/misc/support.png b/hr_leave_lop/static/description/assets/misc/support.png new file mode 100755 index 000000000..4f18b8b82 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/support.png differ diff --git a/hr_leave_lop/static/description/assets/misc/whatsapp.png b/hr_leave_lop/static/description/assets/misc/whatsapp.png new file mode 100755 index 000000000..d513a5356 Binary files /dev/null and b/hr_leave_lop/static/description/assets/misc/whatsapp.png differ diff --git a/hr_leave_lop/static/description/assets/modules/1.png b/hr_leave_lop/static/description/assets/modules/1.png new file mode 100755 index 000000000..96aecf237 Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/1.png differ diff --git a/hr_leave_lop/static/description/assets/modules/2.png b/hr_leave_lop/static/description/assets/modules/2.png new file mode 100755 index 000000000..bc5648b1a Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/2.png differ diff --git a/hr_leave_lop/static/description/assets/modules/3.png b/hr_leave_lop/static/description/assets/modules/3.png new file mode 100755 index 000000000..c0aa245ce Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/3.png differ diff --git a/hr_leave_lop/static/description/assets/modules/4.png b/hr_leave_lop/static/description/assets/modules/4.png new file mode 100755 index 000000000..038385e41 Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/4.png differ diff --git a/hr_leave_lop/static/description/assets/modules/5.png b/hr_leave_lop/static/description/assets/modules/5.png new file mode 100755 index 000000000..31ed46762 Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/5.png differ diff --git a/hr_leave_lop/static/description/assets/modules/6.gif b/hr_leave_lop/static/description/assets/modules/6.gif new file mode 100755 index 000000000..0b7368dc0 Binary files /dev/null and b/hr_leave_lop/static/description/assets/modules/6.gif differ diff --git a/hr_leave_lop/static/description/assets/screenshots/1.png b/hr_leave_lop/static/description/assets/screenshots/1.png new file mode 100755 index 000000000..d78e92365 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/1.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/2.png b/hr_leave_lop/static/description/assets/screenshots/2.png new file mode 100755 index 000000000..1dc5be269 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/2.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/3.png b/hr_leave_lop/static/description/assets/screenshots/3.png new file mode 100755 index 000000000..e8f870815 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/3.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/4.png b/hr_leave_lop/static/description/assets/screenshots/4.png new file mode 100755 index 000000000..40ecb1ce9 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/4.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/5.png b/hr_leave_lop/static/description/assets/screenshots/5.png new file mode 100755 index 000000000..99a273213 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/5.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/6.png b/hr_leave_lop/static/description/assets/screenshots/6.png new file mode 100755 index 000000000..b534be37f Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/6.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/7.png b/hr_leave_lop/static/description/assets/screenshots/7.png new file mode 100755 index 000000000..828eb50ba Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/7.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/8.png b/hr_leave_lop/static/description/assets/screenshots/8.png new file mode 100755 index 000000000..f8644fe81 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/8.png differ diff --git a/hr_leave_lop/static/description/assets/screenshots/hero.gif b/hr_leave_lop/static/description/assets/screenshots/hero.gif new file mode 100755 index 000000000..8afb45f00 Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/hero.gif differ diff --git a/hr_leave_lop/static/description/assets/screenshots/screenshot-Timeoff-lop_v16.zip b/hr_leave_lop/static/description/assets/screenshots/screenshot-Timeoff-lop_v16.zip new file mode 100755 index 000000000..78cb6561b Binary files /dev/null and b/hr_leave_lop/static/description/assets/screenshots/screenshot-Timeoff-lop_v16.zip differ diff --git a/hr_leave_lop/static/description/banner.jpg b/hr_leave_lop/static/description/banner.jpg new file mode 100755 index 000000000..a4a4cdcfa Binary files /dev/null and b/hr_leave_lop/static/description/banner.jpg differ diff --git a/hr_leave_lop/static/description/icon.png b/hr_leave_lop/static/description/icon.png new file mode 100755 index 000000000..3f4536680 Binary files /dev/null and b/hr_leave_lop/static/description/icon.png differ diff --git a/hr_leave_lop/static/description/index.html b/hr_leave_lop/static/description/index.html new file mode 100755 index 000000000..c643fc955 --- /dev/null +++ b/hr_leave_lop/static/description/index.html @@ -0,0 +1,726 @@ +
+ +
+ +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ + +
+
+
+ +

+ Time Off LOP

+

+ Deduct Loss of Pay Amount from the Payslip. +

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

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ In this module, the HR manager can create different Time Off LOP + structures. Based on the conditions and the deduction percentage, + the corresponding amount is deducted from the payslip as Loss of Pay. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Hr manager can set lop structures +
+
+ + Based on the deduction percentage, loss of pay is deducted +
+
+
+
+ + Available in Odoo 16.0 Enterprise and Odoo.sh +
+
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

+ Create Time Off LOP +

+

+ Go to Time Off => Configuration => Time Off LOP. Create LOP + structures.

+ +
+
+

+ Day Before Holiday +

+

+ To create a new Loss of Pay (LOP) scenario, select the leave + type as "Day Before Holiday." Set the deduction amount to be + 100% of the daily wage for this LOP. Define the number of + holidays to which this LOP applies as 2 days. +

In the "Day Before Holiday" scenario, if an employee + takes leave just before a specified consecutive number of + holidays, it will be considered as a loss of pay.

+ In summary, this LOP type is triggered when an employee takes + leave right before the given consecutive number of holidays. +

+ +
+
+

+ Generate Payslip +

+

+ Navigate to Payroll => Payslips => To Pay, and generate + payslips for the month. Compute the payroll for the month of + September.

+

+ +
+
+

+ Compute Payslip +

+

+ For the employee named "Demo" with a monthly wage of 1000, + let's calculate the payslip for the month of September. The + employee took a leave on September 1st, which is considered a + normal loss of pay, as the 2nd and 3rd of September were also + leaves.

+ In this payslip, we observe a deduction for Loss of Pay, + amounting to 100% of the daily wage. For employee "Demo," + the daily wage is 33.33. +

+ +
+
+

+ Day After Holiday +

+

+ Let's explore the functionality of "Day After Holiday" for + creating a new Loss of Pay (LOP) scenario. Begin by providing a + name and selecting the leave type as "Day After Holiday." + Set the deduction amount to be 50% of the daily wage for this + LOP. Define the number of holidays to which this LOP applies as + 2 days.

+ In the "Day After Holiday" scenario, if an employee takes leave + immediately after a specified consecutive number of holidays, + it will be considered as a loss of pay.

+ In summary, this LOP type is triggered when an employee takes + leave right after the given consecutive number of holidays. +

+ +
+
+

+ Compute Payslip +

+

+ Compute the payslip for the employee named "Demo" by granting + a leave on a day after two consecutive holidays.
+ In this payslip, we observe a deduction for Loss of Pay, + amounting to 50% of the daily wage. For employee "Demo," + the daily wage is 33.33. +

+ +
+
+

+ Between 2 Holidays +

+

+ To create a new Loss of Pay (LOP) scenario, choose the leave + type as "Between 2 Holidays." Set the deduction amount to be 200% + for this LOP and define the number of holidays to which this + LOP applies as 3 days.

+ In this LOP type, if an employee takes leave between two + consecutive holidays, it will be considered as a loss of pay. + The total number of holidays is determined based on the total + consecutive holidays before or after the leave date.

+ In essence, this method calculates the number of holidays by + considering the larger count of consecutive holidays, whether + before or after the leave date. +

+ +
+
+

+ Compute Payslip +

+

+ Let's compute the payslip for the employee named "Demo" for + the month of September. The employee took a leave on the 12th + of September, where the 11th and 13th are public holidays. In + this scenario, there are 3 consecutive leaves, considering that + the 9th and 10th of September are a Saturday and Sunday, + respectively.

+ In this payslip, we observe a deduction for Loss of Pay, which + amounts to 200% of the daily wage. For employee "Demo," the + daily wage is 33.33. +

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

+ Related + Products +

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

+ Our Services +

+
+
+
+
+
+ +
+
+ Odoo + Customization
+
+
+
+ +
+
+ Odoo + Implementation
+
+
+
+ +
+
+ Odoo + Support
+
+
+
+ +
+
+ Hire + Odoo + Developer
+
+
+
+ +
+
+ Odoo + Integration
+
+
+
+ +
+
+ Odoo + Migration
+
+
+
+ +
+
+ Odoo + Consultancy
+
+
+
+ +
+
+ Odoo + Implementation
+
+
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+ +
+

+ Our + Industries +

+
+
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

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

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/hr_leave_lop/views/hr_leave_lop_views.xml b/hr_leave_lop/views/hr_leave_lop_views.xml new file mode 100755 index 000000000..0b0ac533d --- /dev/null +++ b/hr_leave_lop/views/hr_leave_lop_views.xml @@ -0,0 +1,58 @@ + + + + + hr.leave.lop.view.tree + hr.leave.lop + + + + + + + + + + + hr.leave.lop.view.search + hr.leave.lop + + + + + + + + + + + hr.leave.lop.view.form + hr.leave.lop + +
+ + + + + + + + +
+ + +
+
+
+
+ + + Time Off LOP + hr.leave.lop + tree,form + + + +