Browse Source

May 31: [ADD] Initial Commit 'hr_leave_lop'

15.0
Cybrosys Technologies 2 months ago
parent
commit
4aba81e144
  1. 48
      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. 58
      hr_leave_lop/models/hr_leave_lop.py
  7. 158
      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/icon.png
  17. BIN
      hr_leave_lop/static/description/assets/icons/license.png
  18. BIN
      hr_leave_lop/static/description/assets/icons/lifebuoy.png
  19. BIN
      hr_leave_lop/static/description/assets/icons/logo.png
  20. BIN
      hr_leave_lop/static/description/assets/icons/manufacturing-black.png
  21. BIN
      hr_leave_lop/static/description/assets/icons/pos-black.png
  22. BIN
      hr_leave_lop/static/description/assets/icons/puzzle.png
  23. BIN
      hr_leave_lop/static/description/assets/icons/restaurant-black.png
  24. BIN
      hr_leave_lop/static/description/assets/icons/service-black.png
  25. BIN
      hr_leave_lop/static/description/assets/icons/trading-black.png
  26. BIN
      hr_leave_lop/static/description/assets/icons/training.png
  27. BIN
      hr_leave_lop/static/description/assets/icons/update.png
  28. BIN
      hr_leave_lop/static/description/assets/icons/user.png
  29. BIN
      hr_leave_lop/static/description/assets/icons/wrench.png
  30. BIN
      hr_leave_lop/static/description/assets/misc/categories.png
  31. BIN
      hr_leave_lop/static/description/assets/misc/check-box.png
  32. BIN
      hr_leave_lop/static/description/assets/misc/compass.png
  33. BIN
      hr_leave_lop/static/description/assets/misc/corporate.png
  34. BIN
      hr_leave_lop/static/description/assets/misc/customer-support.png
  35. BIN
      hr_leave_lop/static/description/assets/misc/cybrosys-logo.png
  36. BIN
      hr_leave_lop/static/description/assets/misc/features.png
  37. BIN
      hr_leave_lop/static/description/assets/misc/logo.png
  38. BIN
      hr_leave_lop/static/description/assets/misc/pictures.png
  39. BIN
      hr_leave_lop/static/description/assets/misc/pie-chart.png
  40. BIN
      hr_leave_lop/static/description/assets/misc/right-arrow.png
  41. BIN
      hr_leave_lop/static/description/assets/misc/star.png
  42. BIN
      hr_leave_lop/static/description/assets/misc/support.png
  43. BIN
      hr_leave_lop/static/description/assets/misc/whatsapp.png
  44. BIN
      hr_leave_lop/static/description/assets/modules/budget_image.png
  45. BIN
      hr_leave_lop/static/description/assets/modules/credit_image.png
  46. BIN
      hr_leave_lop/static/description/assets/modules/employee_image.png
  47. BIN
      hr_leave_lop/static/description/assets/modules/export_image.png
  48. BIN
      hr_leave_lop/static/description/assets/modules/gantt_image.png
  49. BIN
      hr_leave_lop/static/description/assets/modules/quotation_image.png
  50. BIN
      hr_leave_lop/static/description/assets/screenshots/hero.gif
  51. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_001.png
  52. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_002.png
  53. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_003.png
  54. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_004.png
  55. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_005.png
  56. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_006.png
  57. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_007.png
  58. BIN
      hr_leave_lop/static/description/assets/screenshots/scrn_008.png
  59. BIN
      hr_leave_lop/static/description/banner.png
  60. BIN
      hr_leave_lop/static/description/icon.png
  61. 766
      hr_leave_lop/static/description/index.html
  62. 58
      hr_leave_lop/views/hr_leave_lop_views.xml

48
hr_leave_lop/README.rst

@ -0,0 +1,48 @@
.. 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 : (V15) Sabeel B,
(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) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.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) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.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': '15.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.png'],
'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>
#### 01.05.2025
#### Version 15.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) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.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

58
hr_leave_lop/models/hr_leave_lop.py

@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.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):
"""Restrict Duplicating the record"""
raise ValidationError(_("Cannot duplicate a Time Off Lop!"))
return super().copy(default)

158
hr_leave_lop/models/hr_payslip.py

@ -0,0 +1,158 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.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 = list(super()._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)
self.env['hr.leave.lop'].search([
('no_of_days', '=', no_of_days),
('leave_type', '=', leave_type)],
).deduction_amount
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: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

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/budget_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
hr_leave_lop/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
hr_leave_lop/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

766
hr_leave_lop/static/description/index.html

@ -0,0 +1,766 @@
<div class="container"
style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between"
style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png"
style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 950px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4.1rem 1rem !important; background-color: #FFFFFF !important; height: 600px !important;">
<div class="d-flex justify-content-center mb-2">
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 800 !important; color: #282F33 !important; font-size: 4rem !important; text-align: center !important;">
Time Off LOP</h1>
</div>
<p
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #282F33 !important; font-size: 1.4rem !important; text-align: center !important;">
Deduct Loss of Pay Amount from the Payslip.
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive"
width="100%" height="700px"/>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 px-3 text-center">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 1.4rem; font-weight: 700 !important;">
Explore this module</h2>
<div class="mt-3">
<a href="#overview" class="mr-5"
style="font-family: 'Montserrat', sans-serif !important; font-size: 1rem; font-weight: 700; color: #714B67 !important;">Overview
<i class="fa fa-chevron-right ml-1"
style="color: #714B67 !important;"></i></a>
<a href="#features" class="mr-5"
style="font-family: 'Montserrat', sans-serif !important; font-size: 1rem; font-weight: 700; color: #714B67 !important;">Key
Features <i class="fa fa-chevron-right ml-1"
style="color: #714B67 !important;"></i></a>
<a href="#screenshots" class="mr-5"
style="font-family: 'Montserrat', sans-serif !important; font-size: 1rem; font-weight: 700; color: #714B67 !important;">Screenshots
<i class="fa fa-chevron-right ml-1"
style="color: #714B67 !important;"></i></a>
</div>
<hr class="my-5" style="border-color: d5d5d5 !important;"/>
</div>
</div>
<div class="row " id="overview">
<div class="col-sm-12 col-md-12 col-lg-12 px-4">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Overview</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
<p class="mt-4"
style="font-size: 1.1rem !important; color: #282F33 !important; font-weight: 400 !important; line-height: 1.85 !important">
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.
</p>
</div>
</div>
<div class="row" id="features" style="margin-top: 3rem;">
<div class="col-sm-12 col-md-12 col-lg-12 px-4">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Features</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="d-flex my-5"
style="padding-bottom: 1.3rem !important; border-bottom: 2px solid #f0f0f0;">
<img src="assets/icons/check.png" width="24px"
height="24px" 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 my-5"
style="padding-bottom: 1.3rem !important; border-bottom: 2px solid #f0f0f0;">
<img src="assets/icons/check.png" width="24px"
height="24px" 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 class="d-flex my-5"
style="padding-bottom: 1.3rem !important; border-bottom: 2px solid #f0f0f0;">
<img src="assets/icons/check.png" width="24px"
height="24px" class="mr-2">
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Available in Odoo 15.0 Enterprise and Odoo.sh</span>
</div>
</div>
</div>
</div>
</div>
<div class="row " id="screenshots">
<div class="col-sm-12 col-md-12 col-lg-12 px-4">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Screenshots</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_001.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_002.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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.</p>
</div>
<img src="assets/screenshots/scrn_003.png"
class="img-responsive img-thumbnail border">
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_004.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_005.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_006.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png" width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_007.png"
class="img-responsive img-thumbnail border">
</div>
</div>
<div class="mt-5">
<div class="d-flex mb-2"
style="padding-bottom: 0.5rem !important;">
<img src="assets/icons/chevron.png"
width="20px"
height="20px" class="mr-2"
style="margin-top: 4px !important;">
<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/scrn_008.png"
class="img-responsive img-thumbnail border">
</div>
</div>
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row mt-3">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="padding: 2.5rem 1rem !important;">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
<div id="demo1"
class="row carousel slide mt-4 data-ride="
>
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active"
style="min-height:0px">
<div class="carousel-item active"
style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/export_stockinfo_xls/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/export_image.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/15.0/custom_gantt_view/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/gantt_image.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/15.0/sales_credit_limit/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/credit_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item"
style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_account_budget/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/budget_image.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/15.0/product_to_quotation/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/quotation_image.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/15.0/employee_documents_expiry/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/employee_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev"
href="#demo1" data-slide="prev"
style="left:-25px;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="right:-25px;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 SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container"
style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
</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: #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>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container"
style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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: 10px; 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>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container"
style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-size: 2rem; font-weight: 700 !important; color: #21272B !important;">
Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 30px !important; margin-left: 0 !important; margin-bottom: 2rem !important;"/>
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12"
style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com"
target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707"
target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>+91
86068 27707</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container"
style="padding: 2rem 3rem 1rem;">
<div class="row"
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center"
style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png"
width="200px"
height="auto"/>
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

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