Browse Source

July 11: [ADD] Initial commit 'hr_leave_lop'

pull/320/head
RisvanaCybro 10 months ago
parent
commit
af337d856d
  1. 46
      hr_leave_lop/README.rst
  2. 22
      hr_leave_lop/__init__.py
  3. 46
      hr_leave_lop/__manifest__.py
  4. 6
      hr_leave_lop/doc/RELEASE_NOTES.md
  5. 23
      hr_leave_lop/models/__init__.py
  6. 57
      hr_leave_lop/models/hr_leave_lop.py
  7. 154
      hr_leave_lop/models/hr_payslip.py
  8. 2
      hr_leave_lop/security/ir.model.access.csv
  9. BIN
      hr_leave_lop/static/description/assets/icons/check.png
  10. BIN
      hr_leave_lop/static/description/assets/icons/chevron.png
  11. BIN
      hr_leave_lop/static/description/assets/icons/cogs.png
  12. BIN
      hr_leave_lop/static/description/assets/icons/consultation.png
  13. BIN
      hr_leave_lop/static/description/assets/icons/ecom-black.png
  14. BIN
      hr_leave_lop/static/description/assets/icons/education-black.png
  15. BIN
      hr_leave_lop/static/description/assets/icons/hotel-black.png
  16. BIN
      hr_leave_lop/static/description/assets/icons/license.png
  17. BIN
      hr_leave_lop/static/description/assets/icons/lifebuoy.png
  18. BIN
      hr_leave_lop/static/description/assets/icons/logo.png
  19. BIN
      hr_leave_lop/static/description/assets/icons/manufacturing-black.png
  20. BIN
      hr_leave_lop/static/description/assets/icons/pos-black.png
  21. BIN
      hr_leave_lop/static/description/assets/icons/puzzle.png
  22. BIN
      hr_leave_lop/static/description/assets/icons/restaurant-black.png
  23. BIN
      hr_leave_lop/static/description/assets/icons/service-black.png
  24. BIN
      hr_leave_lop/static/description/assets/icons/trading-black.png
  25. BIN
      hr_leave_lop/static/description/assets/icons/training.png
  26. BIN
      hr_leave_lop/static/description/assets/icons/update.png
  27. BIN
      hr_leave_lop/static/description/assets/icons/user.png
  28. BIN
      hr_leave_lop/static/description/assets/icons/wrench.png
  29. BIN
      hr_leave_lop/static/description/assets/misc/categories.png
  30. BIN
      hr_leave_lop/static/description/assets/misc/check-box.png
  31. BIN
      hr_leave_lop/static/description/assets/misc/compass.png
  32. BIN
      hr_leave_lop/static/description/assets/misc/corporate.png
  33. BIN
      hr_leave_lop/static/description/assets/misc/customer-support.png
  34. BIN
      hr_leave_lop/static/description/assets/misc/cybrosys-logo.png
  35. BIN
      hr_leave_lop/static/description/assets/misc/features.png
  36. BIN
      hr_leave_lop/static/description/assets/misc/logo.png
  37. BIN
      hr_leave_lop/static/description/assets/misc/pictures.png
  38. BIN
      hr_leave_lop/static/description/assets/misc/pie-chart.png
  39. BIN
      hr_leave_lop/static/description/assets/misc/right-arrow.png
  40. BIN
      hr_leave_lop/static/description/assets/misc/star.png
  41. BIN
      hr_leave_lop/static/description/assets/misc/support.png
  42. BIN
      hr_leave_lop/static/description/assets/misc/whatsapp.png
  43. BIN
      hr_leave_lop/static/description/assets/modules/1.png
  44. BIN
      hr_leave_lop/static/description/assets/modules/2.png
  45. BIN
      hr_leave_lop/static/description/assets/modules/3.png
  46. BIN
      hr_leave_lop/static/description/assets/modules/4.png
  47. BIN
      hr_leave_lop/static/description/assets/modules/5.png
  48. BIN
      hr_leave_lop/static/description/assets/modules/6.gif
  49. BIN
      hr_leave_lop/static/description/assets/screenshots/1.png
  50. BIN
      hr_leave_lop/static/description/assets/screenshots/2.png
  51. BIN
      hr_leave_lop/static/description/assets/screenshots/3.png
  52. BIN
      hr_leave_lop/static/description/assets/screenshots/4.png
  53. BIN
      hr_leave_lop/static/description/assets/screenshots/5.png
  54. BIN
      hr_leave_lop/static/description/assets/screenshots/6.png
  55. BIN
      hr_leave_lop/static/description/assets/screenshots/7.png
  56. BIN
      hr_leave_lop/static/description/assets/screenshots/8.png
  57. BIN
      hr_leave_lop/static/description/assets/screenshots/hero.gif
  58. BIN
      hr_leave_lop/static/description/assets/screenshots/screenshot-Timeoff-lop_v16.zip
  59. BIN
      hr_leave_lop/static/description/banner.jpg
  60. BIN
      hr_leave_lop/static/description/icon.png
  61. 726
      hr_leave_lop/static/description/index.html
  62. 58
      hr_leave_lop/views/hr_leave_lop_views.xml

46
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 <https://cybrosys.com/>`__
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 <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

22
hr_leave_lop/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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

46
hr_leave_lop/__manifest__.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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,
}

6
hr_leave_lop/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <hr_leave_lop>
#### 15.06.2024
#### Version 16.0.1.0.0
##### ADD
- Initial Commit for Time Off LOP

23
hr_leave_lop/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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

57
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(<https://www.cybrosys.com>)
# 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)

154
hr_leave_lop/models/hr_payslip.py

@ -0,0 +1,154 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# 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

2
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
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_hr_leave_lop_manager access.hr.leave.lop.manager model_hr_leave_lop hr_holidays.group_hr_holidays_manager 1 1 1 1

BIN
hr_leave_lop/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
hr_leave_lop/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
hr_leave_lop/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
hr_leave_lop/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
hr_leave_lop/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
hr_leave_lop/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
hr_leave_lop/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
hr_leave_lop/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
hr_leave_lop/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
hr_leave_lop/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
hr_leave_lop/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
hr_leave_lop/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
hr_leave_lop/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
hr_leave_lop/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
hr_leave_lop/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
hr_leave_lop/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
hr_leave_lop/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
hr_leave_lop/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
hr_leave_lop/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
hr_leave_lop/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
hr_leave_lop/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
hr_leave_lop/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
hr_leave_lop/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
hr_leave_lop/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
hr_leave_lop/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
hr_leave_lop/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
hr_leave_lop/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
hr_leave_lop/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
hr_leave_lop/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
hr_leave_lop/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
hr_leave_lop/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
hr_leave_lop/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
hr_leave_lop/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
hr_leave_lop/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
hr_leave_lop/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
hr_leave_lop/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
hr_leave_lop/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
hr_leave_lop/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
hr_leave_lop/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
hr_leave_lop/static/description/assets/modules/6.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
hr_leave_lop/static/description/assets/screenshots/screenshot-Timeoff-lop_v16.zip

Binary file not shown.

BIN
hr_leave_lop/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
hr_leave_lop/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

726
hr_leave_lop/static/description/index.html

@ -0,0 +1,726 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;"
xmlns="http://www.w3.org/1999/html">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Time Off LOP</h1>
<p
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
Deduct Loss of Pay Amount from the Payslip.
</p>
<!-- END OF APP HERO -->
<img src="./assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
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.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Hr manager can set lop structures</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Based on the deduction percentage, loss of pay is deducted</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Available in Odoo 16.0 Enterprise and Odoo.sh</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Create Time Off LOP
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Go to Time Off => Configuration => Time Off LOP. Create LOP
structures.</p>
<img src="assets/screenshots/1.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Day Before Holiday
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.
<br/><br/> 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.<br/><br/>
In summary, this LOP type is triggered when an employee takes
leave right before the given consecutive number of holidays.
</p>
<img src="assets/screenshots/2.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Generate Payslip
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Navigate to Payroll => Payslips => To Pay, and generate
payslips for the month. Compute the payroll for the month of
September.<br/><br/>
</p>
<img src="assets/screenshots/3.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Compute Payslip
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.<br/><br/>
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.
</p>
<img src="assets/screenshots/4.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Day After Holiday
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.<br/><br/>
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.<br/><br/>
In summary, this LOP type is triggered when an employee takes
leave right after the given consecutive number of holidays.
</p>
<img src="assets/screenshots/5.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Compute Payslip
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Compute the payslip for the employee named "Demo" by granting
a leave on a day after two consecutive holidays.<br/>
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.
</p>
<img src="assets/screenshots/6.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Between 2 Holidays
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.<br/><br/>
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.<br/><br/>
In essence, this method calculates the number of holidays by
considering the larger count of consecutive holidays, whether
before or after the leave date.
</p>
<img src="assets/screenshots/7.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Compute Payslip
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.<br/><br/>
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.
</p>
<img src="assets/screenshots/8.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/automatic_payroll/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/employee_check_list/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/employee_documents_expiry/">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_contract_types/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_payroll_community/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/5.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/ohrms_core/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/6.gif">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

58
hr_leave_lop/views/hr_leave_lop_views.xml

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Define the tree view for hr.leave.lop model -->
<record id="hr_leave_lop_view_tree" model="ir.ui.view">
<field name="name">hr.leave.lop.view.tree</field>
<field name="model">hr.leave.lop</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="leave_type"/>
<field name="deduction_amount"/>
</tree>
</field>
</record>
<!-- Define the search view for hr.leave.lop model -->
<record id="hr_leave_lop_view_search" model="ir.ui.view">
<field name="name">hr.leave.lop.view.search</field>
<field name="model">hr.leave.lop</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="leave_type"/>
<field name="deduction_amount"/>
</search>
</field>
</record>
<!-- Define the form view for hr.leave.lop model -->
<record id="hr_leave_lop_view_form" model="ir.ui.view">
<field name="name">hr.leave.lop.view.form</field>
<field name="model">hr.leave.lop</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="leave_type"/>
<field name="deduction_amount"/>
<field name="no_of_days"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Define the action for hr.leave.lop model -->
<record id="hr_leave_lop_action" model="ir.actions.act_window">
<field name="name">Time Off LOP</field>
<field name="res_model">hr.leave.lop</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Add the menu item for Time Off LOP -->
<menuitem id="hr_leave_lop_menu_root" action="hr_leave_lop_action"
parent="hr_holidays.menu_hr_holidays_configuration"
name="TIme Off LOP"/>
</odoo>
Loading…
Cancel
Save