Browse Source

[DLT] Moved To Repo OpenHRMS

pull/63/merge
Sreejith P 7 years ago
parent
commit
ad5d421a5e
  1. 43
      hr_employee_shift/README.rst
  2. 23
      hr_employee_shift/__init__.py
  3. 49
      hr_employee_shift/__manifest__.py
  4. 25
      hr_employee_shift/demo/shift_schedule_data.xml
  5. 6
      hr_employee_shift/doc/RELEASE_NOTES.md
  6. 23
      hr_employee_shift/models/__init__.py
  7. 76
      hr_employee_shift/models/hr_employee_contract.py
  8. 61
      hr_employee_shift/models/hr_employee_shift.py
  9. 101
      hr_employee_shift/models/hr_generate_shift.py
  10. 109
      hr_employee_shift/models/hr_shift_payroll.py
  11. 16
      hr_employee_shift/security/hr_employee_shift_security.xml
  12. 3
      hr_employee_shift/security/ir.model.access.csv
  13. BIN
      hr_employee_shift/static/description/HRMS-BUTTON.png
  14. BIN
      hr_employee_shift/static/description/banner.jpg
  15. BIN
      hr_employee_shift/static/description/contract1.png
  16. BIN
      hr_employee_shift/static/description/create_shift.png
  17. BIN
      hr_employee_shift/static/description/cybro-service.png
  18. BIN
      hr_employee_shift/static/description/cybro_logo.png
  19. BIN
      hr_employee_shift/static/description/generate_schedule.png
  20. BIN
      hr_employee_shift/static/description/icon.png
  21. 136
      hr_employee_shift/static/description/index.html
  22. BIN
      hr_employee_shift/static/description/shift.png
  23. 7
      hr_employee_shift/static/src/css/shift_dashboard.css
  24. 18
      hr_employee_shift/static/src/less/shift_dashboard.less
  25. 29
      hr_employee_shift/views/hr_employee_contract_view.xml
  26. 91
      hr_employee_shift/views/hr_employee_shift_view.xml
  27. 50
      hr_employee_shift/views/hr_generate_shift_view.xml
  28. 9
      hr_employee_shift/views/templates.xml
  29. 39
      hr_insurance/README.rst
  30. 6
      hr_insurance/RELEASE_NOTES.md
  31. 24
      hr_insurance/__init__.py
  32. 49
      hr_insurance/__manifest__.py
  33. 25
      hr_insurance/models/__init__.py
  34. BIN
      hr_insurance/models/__init__.pyc
  35. 120
      hr_insurance/models/employee_insurance.py
  36. BIN
      hr_insurance/models/employee_insurance.pyc
  37. 33
      hr_insurance/models/policy_details.py
  38. BIN
      hr_insurance/models/policy_details.pyc
  39. 16
      hr_insurance/security/hr_insurance_security.xml
  40. 8
      hr_insurance/security/ir.model.access.csv
  41. BIN
      hr_insurance/static/description/HRMS-BUTTON.png
  42. BIN
      hr_insurance/static/description/banner.jpg
  43. BIN
      hr_insurance/static/description/cybro-service.png
  44. BIN
      hr_insurance/static/description/cybro_logo.png
  45. BIN
      hr_insurance/static/description/employee.png
  46. BIN
      hr_insurance/static/description/icon.png
  47. 120
      hr_insurance/static/description/index.html
  48. BIN
      hr_insurance/static/description/insurance.png
  49. BIN
      hr_insurance/static/description/payslip.png
  50. BIN
      hr_insurance/static/description/policy.png
  51. 105
      hr_insurance/views/employee_insurance_view.xml
  52. 41
      hr_insurance/views/insurance_salary_stucture.xml
  53. 59
      hr_insurance/views/policy_management.xml
  54. 25
      hr_leave_request_aliasing/README.md
  55. 25
      hr_leave_request_aliasing/__init__.py
  56. 45
      hr_leave_request_aliasing/__manifest__.py
  57. 81
      hr_leave_request_aliasing/data/web_planner_data.xml
  58. 6
      hr_leave_request_aliasing/doc/RELEASE_NOTES.md
  59. 27
      hr_leave_request_aliasing/models/__init__.py
  60. BIN
      hr_leave_request_aliasing/models/__init__.pyc
  61. BIN
      hr_leave_request_aliasing/models/__pycache__/__init__.cpython-35.pyc
  62. BIN
      hr_leave_request_aliasing/models/__pycache__/leave_request_alias.cpython-35.pyc
  63. BIN
      hr_leave_request_aliasing/models/__pycache__/res_config.cpython-35.pyc
  64. BIN
      hr_leave_request_aliasing/models/__pycache__/web_planner.cpython-35.pyc
  65. 73
      hr_leave_request_aliasing/models/leave_request_alias.py
  66. BIN
      hr_leave_request_aliasing/models/leave_request_alias.pyc
  67. 48
      hr_leave_request_aliasing/models/res_config.py
  68. BIN
      hr_leave_request_aliasing/models/res_config.pyc
  69. 44
      hr_leave_request_aliasing/models/web_planner.py
  70. BIN
      hr_leave_request_aliasing/models/web_planner.pyc
  71. BIN
      hr_leave_request_aliasing/static/description/HRMS-BUTTON.png
  72. BIN
      hr_leave_request_aliasing/static/description/banner.jpg
  73. BIN
      hr_leave_request_aliasing/static/description/cybro-service.png
  74. BIN
      hr_leave_request_aliasing/static/description/cybro_logo.png
  75. BIN
      hr_leave_request_aliasing/static/description/icon.png
  76. 102
      hr_leave_request_aliasing/static/description/index.html
  77. BIN
      hr_leave_request_aliasing/static/description/mail_aliasing.png
  78. 6
      hr_leave_request_aliasing/static/src/js/web_planner_hr_leave.js
  79. 11
      hr_leave_request_aliasing/views/hr_leave_template.xml
  80. 9
      hr_leave_request_aliasing/views/leave_request_alias_view.xml
  81. 54
      hr_leave_request_aliasing/views/res_config_views.xml
  82. 14
      hr_payslip_monthly_report/README.rst
  83. 22
      hr_payslip_monthly_report/__init__.py
  84. 43
      hr_payslip_monthly_report/__manifest__.py
  85. 45
      hr_payslip_monthly_report/__manifest__.py~
  86. 24
      hr_payslip_monthly_report/models/__init__.py
  87. 70
      hr_payslip_monthly_report/models/hr_payroll_report.py
  88. 2
      hr_payslip_monthly_report/security/ir.model.access.csv
  89. BIN
      hr_payslip_monthly_report/static/description/HR Payslip Report view.png
  90. BIN
      hr_payslip_monthly_report/static/description/HR report group by.png
  91. BIN
      hr_payslip_monthly_report/static/description/Payslip Graph Report.png
  92. BIN
      hr_payslip_monthly_report/static/description/banner.jpg
  93. BIN
      hr_payslip_monthly_report/static/description/cybro_logo.png
  94. BIN
      hr_payslip_monthly_report/static/description/icon.png
  95. 124
      hr_payslip_monthly_report/static/description/index.html
  96. 67
      hr_payslip_monthly_report/views/menu_payslip_report.xml
  97. 112
      hr_payslip_monthly_report/views/quotation_handler.xml~
  98. 39
      hr_reminder/README.rst
  99. 25
      hr_reminder/__init__.py
  100. 45
      hr_reminder/__manifest__.py

43
hr_employee_shift/README.rst

@ -1,43 +0,0 @@
OHRMS Employee Shift v11
========================
Easily create, manage, and track employee shift schedules
Depends
=======
[hr] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
Installation
============
- www.odoo.com/documentation/10.0/setup/install.html
- Install our custom addon
License
=======
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (LGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developer: Saritha Sahadevan, saritha@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

23
hr_employee_shift/__init__.py

@ -1,23 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

49
hr_employee_shift/__manifest__.py

@ -1,49 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of Open Hrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': "Open HRMS Employee Shift",
'version': '11.0.1.0.0',
'summary': """Easily create, manage, and track employee shift schedules.""",
'description': """Easily create, manage, and track employee shift schedules.""",
'category': 'Human Resource',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.openhrms.com",
'depends': ['hr', 'hr_payroll', 'resource'],
'data': [
'security/ir.model.access.csv',
'security/hr_employee_shift_security.xml',
'views/hr_employee_shift_view.xml',
'views/hr_employee_contract_view.xml',
'views/hr_generate_shift_view.xml',
'views/templates.xml',
],
'demo': [
'demo/shift_schedule_data.xml',
],
'images': ["static/description/banner.jpg"],
'license': "AGPL-3",
'installable': True,
'application': True,
}

25
hr_employee_shift/demo/shift_schedule_data.xml

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<delete model="resource.calendar" search="[('id', '=', ref('resource.resource_calendar_std_35h'))]"/>
<delete model="resource.calendar" search="[('id', '=', ref('resource.resource_calendar_std_38h'))]"/>
<delete model="hr.contract" search="[('id', '=', ref('hr_payroll.hr_contract_firstcontract1'))]"/>
<delete model="hr.contract" search="[('id', '=', ref('hr_payroll.hr_contract_gilles_gravie'))]"/>
<record id="resource_calendar_std_35h" model="resource.calendar">
<field name="name">Morning</field>
<field name="company_id" ref="base.main_company"/>
<field name="hr_department" ref="hr.dep_management"/>
<field name="attendance_ids"
eval="[
(0, 0, {'name': 'Monday Morning', 'dayofweek': '0', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': 'Tuesday Morning', 'dayofweek': '1', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': 'Wednesday Morning', 'dayofweek': '2', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': 'Thursday Morning', 'dayofweek': '3', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': 'Friday Morning', 'dayofweek': '4', 'hour_from': 8, 'hour_to': 12}),
]"
/>
</record>
</data>
</odoo>

6
hr_employee_shift/doc/RELEASE_NOTES.md

@ -1,6 +0,0 @@
## Module <hr_employee_shift>
#### 21.04.2018
#### Version 11.0.1.0.0
##### ADD
- Initial commit for OpenHrms Project

23
hr_employee_shift/models/__init__.py

@ -1,23 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import hr_employee_shift, hr_employee_contract, hr_generate_shift, hr_shift_payroll

76
hr_employee_shift/models/hr_employee_contract.py

@ -1,76 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo.exceptions import Warning
from odoo import models, fields, api, _
class HrEmployeeContract(models.Model):
_inherit = 'hr.contract'
shift_schedule = fields.One2many('hr.shift.schedule', 'rel_hr_schedule', string="Shift Schedule")
working_hours = fields.Many2one('resource.calendar', string='Working Schedule')
department_id = fields.Many2one('hr.department', string="Department",
required=True)
class HrSchedule(models.Model):
_name = 'hr.shift.schedule'
start_date = fields.Date(string="Date From", required=True)
end_date = fields.Date(string="Date To", required=True)
rel_hr_schedule = fields.Many2one('hr.contract')
hr_shift = fields.Many2one('resource.calendar', string="Shift", required=True)
@api.onchange('start_date', 'end_date')
def get_department(self):
"""Adding domain to the hr_shift field"""
hr_department = None
if self.start_date:
hr_department = self.rel_hr_schedule.department_id.id
return {
'domain': {
'hr_shift': [('hr_department', '=', hr_department)]
}
}
@api.multi
def write(self, vals):
self._check_overlap(vals)
return super(HrSchedule, self).write(vals)
@api.model
def create(self, vals):
self._check_overlap(vals)
return super(HrSchedule, self).create(vals)
def _check_overlap(self, vals):
if vals.get('start_date', False) and vals.get('end_date', False):
shifts = self.env['hr.shift.schedule'].search([('rel_hr_schedule', '=', vals.get('rel_hr_schedule'))])
for each in shifts:
if each != shifts[-1]:
if each.end_date >= vals.get('start_date') or each.start_date >= vals.get('start_date'):
raise Warning(_('The dates may not overlap with one another.'))
if vals.get('start_date') > vals.get('end_date'):
raise Warning(_('Start date should be less than end date.'))
return True

61
hr_employee_shift/models/hr_employee_shift.py

@ -1,61 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo.exceptions import ValidationError
from odoo import models, fields, api, _
class HrEmployeeInherited(models.Model):
_inherit = 'hr.employee'
resource_calendar_ids = fields.Many2one('resource.calendar', 'Working Hours')
class HrEmployeeShift(models.Model):
_inherit = 'resource.calendar'
def _get_default_attendance_ids(self):
return [
(0, 0, {'name': _('Monday Morning'), 'dayofweek': '0', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': _('Tuesday Morning'), 'dayofweek': '1', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': _('Wednesday Morning'), 'dayofweek': '2', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': _('Thursday Morning'), 'dayofweek': '3', 'hour_from': 8, 'hour_to': 12}),
(0, 0, {'name': _('Friday Morning'), 'dayofweek': '4', 'hour_from': 8, 'hour_to': 12}),
]
color = fields.Integer(string='Color Index')
hr_department = fields.Many2one('hr.department', string="Department", required=True)
sequence = fields.Integer(string="Sequence", required=True, default=1)
attendance_ids = fields.One2many(
'resource.calendar.attendance', 'calendar_id', 'Workingssss Time',
copy=True, default=_get_default_attendance_ids)
@api.constrains('sequence')
def validate_seq(self):
record = self.env['resource.calendar'].search([('hr_department', '=', self.hr_department.id),
('sequence', '=', self.sequence)
])
if len(record) > 1:
raise ValidationError("One record with same sequence is already active."
"You can't activate more than one record at a time")

101
hr_employee_shift/models/hr_generate_shift.py

@ -1,101 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, fields
class HrGenerateShift(models.Model):
_name = 'hr.shift.generate'
hr_department = fields.Many2one('hr.department', string="Department")
start_date = fields.Date(string="Start Date", required=True)
end_date = fields.Date(string="End Date", required=True)
def action_schedule_shift(self):
"""Create mass schedule for all departments based on the shift scheduled in corresponding employee's contract"""
if self.hr_department:
for contract in self.env['hr.contract'].search([('department_id', '=', self.hr_department.id)]):
if contract.shift_schedule:
for shift_val in contract.shift_schedule:
shift = shift_val.hr_shift
start_date = self.start_date
end_date = self.end_date
shift_obj = self.env['resource.calendar'].search([('hr_department', '=', self.hr_department.id),
('name', '=', shift.name)], limit=1)
sequence = shift_obj.sequence
seq_no = sequence + 1
new_shift = self.env['resource.calendar'].search([
('sequence', '=', seq_no), ('hr_department', '=', self.hr_department.id)], limit=1)
if new_shift:
shift_ids = [(0, 0, {
'hr_shift': new_shift.id,
'start_date': start_date,
'end_date': end_date
})]
contract.shift_schedule = shift_ids
else:
seq_no = 1
new_shift = self.env['resource.calendar'].search([
('sequence', '=', seq_no), ('hr_department', '=', self.hr_department.id)], limit=1)
if new_shift:
shift_ids = [(0, 0, {
'hr_shift': new_shift.id,
'start_date': start_date,
'end_date': end_date
})]
contract.shift_schedule = shift_ids
else:
for contract in self.env['hr.contract'].search([]):
if contract.shift_schedule and contract.department_id:
for shift_val in contract.shift_schedule:
shift = shift_val.hr_shift
start_date = self.start_date
end_date = self.end_date
shift_obj = self.env['resource.calendar'].search([('hr_department', '=', contract.department_id.id),
('name', '=', shift.name)], limit=1)
sequence = shift_obj.sequence
seq_no = sequence + 1
new_shift = self.env['resource.calendar'].search([
('sequence', '=', seq_no), ('hr_department', '=', contract.department_id.id)], limit=1)
if new_shift:
shift_ids = [(0, 0, {
'hr_shift': new_shift.id,
'start_date': start_date,
'end_date': end_date
})]
contract.shift_schedule = shift_ids
else:
seq_no = 1
new_shift = self.env['resource.calendar'].search([
('sequence', '=', seq_no), ('hr_department', '=', contract.department_id.id)], limit=1)
shift_ids = [(0, 0, {
'hr_shift': new_shift.id,
'start_date': start_date,
'end_date': end_date
})]
contract.shift_schedule = shift_ids

109
hr_employee_shift/models/hr_shift_payroll.py

@ -1,109 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHrms Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Saritha Sahadevan (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from datetime import datetime, timedelta
from odoo import models, fields, api, _, tools
class HrPayroll(models.Model):
_inherit = 'hr.payslip'
@api.model
def get_worked_day_lines(self, contract_ids, date_from, date_to):
"""
@param contract_ids: list of contract id
@return: returns a list of dict containing the input that should be applied for the given contract between date_from and date_to
"""
def was_on_leave_interval(employee_id, date_from, date_to):
date_from = fields.Datetime.to_string(date_from)
date_to = fields.Datetime.to_string(date_to)
return self.env['hr.holidays'].search([
('state', '=', 'validate'),
('employee_id', '=', employee_id),
('type', '=', 'remove'),
('date_from', '<=', date_from),
('date_to', '>=', date_to)
], limit=1)
res = []
# fill only if the contract as a working schedule linked
uom_day = self.env.ref('product.product_uom_day', raise_if_not_found=False)
for contract in self.env['hr.contract'].browse(contract_ids).filtered(lambda contract: contract):
uom_hour = contract.employee_id.resource_id.calendar_id.uom_id or self.env.ref('product.product_uom_hour',
raise_if_not_found=False)
interval_data = []
holidays = self.env['hr.holidays']
attendances = {
'name': _("Normal Working Days paid at 100%"),
'sequence': 1,
'code': 'WORK100',
'number_of_days': 0.0,
'number_of_hours': 0.0,
'contract_id': contract.id,
}
leaves = {}
# Gather all intervals and holidays
for days in contract.shift_schedule:
start_date = datetime.strptime(days.start_date, tools.DEFAULT_SERVER_DATE_FORMAT)
end_date = datetime.strptime(days.end_date, tools.DEFAULT_SERVER_DATE_FORMAT)
nb_of_days = (end_date - start_date).days + 1
for day in range(0, nb_of_days):
working_intervals_on_day = days.hr_shift.get_working_intervals_of_day(
start_dt=start_date + timedelta(days=day))
for interval in working_intervals_on_day:
interval_data.append(
(interval, was_on_leave_interval(contract.employee_id.id, interval[0], interval[1])))
# Extract information from previous data. A working interval is considered:
# - as a leave if a hr.holiday completely covers the period
# - as a working period instead
for interval, holiday in interval_data:
holidays |= holiday
hours = (interval[1] - interval[0]).total_seconds() / 3600.0
if holiday:
# if he was on leave, fill the leaves dict
if holiday.holiday_status_id.name in leaves:
leaves[holiday.holiday_status_id.name]['number_of_hours'] += hours
else:
leaves[holiday.holiday_status_id.name] = {
'name': holiday.holiday_status_id.name,
'sequence': 5,
'code': holiday.holiday_status_id.name,
'number_of_days': 0.0,
'number_of_hours': hours,
'contract_id': contract.id,
}
else:
# add the input vals to tmp (increment if existing)
attendances['number_of_hours'] += hours
# Clean-up the results
leaves = [value for key, value in leaves.items()]
for data in [attendances] + leaves:
data['number_of_days'] = uom_hour._compute_quantity(data['number_of_hours'], uom_day) \
if uom_day and uom_hour \
else data['number_of_hours'] / 8.0
res.append(data)
return res

16
hr_employee_shift/security/hr_employee_shift_security.xml

@ -1,16 +0,0 @@
<?xml version="1.0" ?>
<odoo>
<record id="property_rule_hr_shift" model="ir.rule">
<field name="name">Hr Shift Multi Company</field>
<field name="model_id" ref="model_hr_shift_schedule"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="property_rule_hr_shift_generate" model="ir.rule">
<field name="name">Hr Shift Genarate Multi Company</field>
<field name="model_id" ref="model_hr_shift_generate"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</odoo>

3
hr_employee_shift/security/ir.model.access.csv

@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_employee_shift_hr_employee_shift,hr_employee_shift.hr_shift_schedule,model_hr_shift_schedule,hr.group_hr_manager,1,1,1,1
access_hr_employee_shift_hr_employee_shift1,hr_employee_shift.hr_shift_generate,model_hr_shift_generate,hr.group_hr_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_employee_shift_hr_employee_shift hr_employee_shift.hr_shift_schedule model_hr_shift_schedule hr.group_hr_manager 1 1 1 1
3 access_hr_employee_shift_hr_employee_shift1 hr_employee_shift.hr_shift_generate model_hr_shift_generate hr.group_hr_manager 1 1 1 1

BIN
hr_employee_shift/static/description/HRMS-BUTTON.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
hr_employee_shift/static/description/banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

BIN
hr_employee_shift/static/description/contract1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

BIN
hr_employee_shift/static/description/create_shift.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

BIN
hr_employee_shift/static/description/cybro-service.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

BIN
hr_employee_shift/static/description/cybro_logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_employee_shift/static/description/generate_schedule.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

BIN
hr_employee_shift/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

136
hr_employee_shift/static/description/index.html

@ -1,136 +0,0 @@
<section class="oe_container bg-gray-lighter" xmlns="http://www.w3.org/1999/html">
<div class="oe_row">
<div class="oe_span">
<h2 class="oe_slogan">Open HRMS</h2>
<h3 class="oe_slogan">Most advanced open source HR management software</h3>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced oe_mt32">
<div class="oe_span">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openhrms.com/#request-demo">
<img src="HRMS-BUTTON.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Employee Shift Management</h2>
<h3 class="oe_slogan">Easily create, manage, and track employee shift schedules.</h3>
<h3 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h3>
</div>
<div class="oe_row oe_spaced">
<h4><p style="margin-left: 42px;">Major Features:</p></h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9733;</span>&nbsp;&nbsp; Define list of Work Shifts</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9733;</span>&nbsp;&nbsp; Define flexible hour wise shift</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9733;</span>&nbsp;&nbsp; Assign shift in employee contract</li>
<li style="list-style:none !important;"><span style="color:green;"> &#9733;</span>&nbsp;&nbsp; Assign new shift automatically</li>
</ul>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32">
Employee Shift Management is a component of Open HRMS suit.
This module allows the user to create and manage employee work shifts.
Administrator can create various shifts according to the working hours and assign the Shift in
employee work contract. The module also helps to automatically assign new shift according to
the shift sequence
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<p><h2>Create Employee Shift</h2> </p>
<div class="oe_demo oe_picture oe_screenshot">
<img src="create_shift.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<p><h2>Employee Shift In Contract</h2> </p>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="contract1.png">
</div>
</div>
<div class="oe_span6">
<p>Have an option to schedule shift in employee contract form.
It is very important to create atleast one shift schedule manually in contract form</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<p><h2>Generate Automatic Shifts</h2></p>
<p class="oe_mt32">
<p>Automatically assign new shift according to the shift sequence</p>
</p>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="generate_schedule.png">
</div>
</div>
<div class="oe_span6">
<p><h2> Employee Shifts</h2> </p>
<div class="oe_demo oe_picture oe_screenshot">
<img src="shift.png">
</div>
</div>
</div>
</section>
<div class="row section-content">
<div class="col-md-6 img-content">
<h3>Our Odoo Services</h3>
</div>
<div class="bc-span col-md-12"><div class="inner-span"><a target="_blank" href="https://www.openhrms.com"><img class="img-border img-responsive thumbnail" src="cybro-service.png"></a></div></div>
</div>
</div>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/" target="_blank"><i
class="fa fa-phone"></i> Contact Us </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.odoo.com/apps/modules/browse?search=open+hrms" target="_blank"><i
class="fa fa-suitcase"></i> Other Open HRMS Addons </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"><i
class="fa fa-wrench"></i> Request Customization </a>
</div>
<br>
<a href="https://www.cybrosys.com/" target="_blank">
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
</div>
</section>

BIN
hr_employee_shift/static/description/shift.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

7
hr_employee_shift/static/src/css/shift_dashboard.css

@ -1,7 +0,0 @@
.style_shift{
color: black !important;
font-size: 15px;
text-align: center;
padding: 10px 0px 2px 3px;
}

18
hr_employee_shift/static/src/less/shift_dashboard.less

@ -1,18 +0,0 @@
@dashboard-bg-color: white;
.o_kanban_view.o_kanban_dashboard.o_shift_kanban {
@sale-table-spacing: 20px;
.o_kanban_record {
min-height: 150px;
max-width: 250px !important;
@media (min-width: @screen-sm-min) {
min-width: 20px;
}
}
.oe_kanban_content{
padding-top: 50px!important;
}
}

29
hr_employee_shift/views/hr_employee_contract_view.xml

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="employee_contract_form_inherited" model="ir.ui.view">
<field name="name">employee.contract</field>
<field name="model">hr.contract</field>
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='resource_calendar_id']" position="replace">
<field name="resource_calendar_id" invisible="1"/>
</xpath>
<xpath expr="//field[@name='department_id']" position="replace">
<field name="department_id"/>
</xpath>
<xpath expr="//group[@name='duration_group']" position="after">
<group colspan="2" string="Shift Schedule">
<field name="shift_schedule" nolabel="1">
<tree editable="1">
<field name="start_date"/>
<field name="end_date"/>
<field name="hr_shift"/>
</tree>
</field>
</group>
</xpath>
</field>
</record>
</data>
</odoo>

91
hr_employee_shift/views/hr_employee_shift_view.xml

@ -1,91 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="employee_form_inherited" model="ir.ui.view">
<field name="name">hr.employee.resource</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='resource_calendar_id']" position="replace">
<field name="resource_calendar_ids"/>
</xpath>
</field>
</record>
<record id="resource_calendar_form" model="ir.ui.view">
<field name="name">resource.calendar</field>
<field name="model">resource.calendar</field>
<field name="inherit_id" ref="resource.resource_calendar_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="hr_department"/>
<field name="sequence"/>
<field name="color" invisible="1"/>
</xpath>
<xpath expr="//field[@name='attendance_ids']" position="replace">
<field name="attendance_ids"/>
</xpath>
</field>
</record>
<record id="shift_template_kanban_view" model="ir.ui.view">
<field name="name">employee.shift.kanban</field>
<field name="model">resource.calendar</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_shift_kanban">
<field name="color"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click ">
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle btn" data-toggle="dropdown" href="#" >
<span class="fa fa-bars fa-lg"/>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<t t-if="widget.editable"><li><a type="edit">Edit</a></li></t>
<t t-if="widget.deletable"><li><a type="delete">Delete</a></li></t>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<div class="oe_kanban_content">
<div class="row">
<div class="o_primary style_shift">
<div class="text-center"><strong><field name="name"/></strong></div>
</div>
</div>
</div>
<div class="oe_kanban_details">
<strong>
<div class="text-center">
<span t-if="record.hr_department.value">[<field name="hr_department"/>]</span>
</div>
</strong>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="resource.action_resource_calendar_form" model="ir.actions.act_window">
<field name="name">Shift Working Time</field>
<field name="res_model">resource.calendar</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="resource.view_resource_calendar_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Define working hours and time table that could be scheduled to your project members
</p>
</field>
</record>
<menuitem name="Shifts" id="hr_employee_shift.menu_shift" parent="hr.menu_human_resources_configuration"
action="resource.action_resource_calendar_form"/>
</data>
</odoo>

50
hr_employee_shift/views/hr_generate_shift_view.xml

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- explicit wizard view definition -->
<record model="ir.ui.view" id="hr_employee_shift.generate_schedule_form">
<field name="name">hr_employee_shift_generate_schedule form</field>
<field name="model">hr.shift.generate</field>
<field name="arch" type="xml">
<form create="false" edit="false">
<sheet>
<group>
<group>
<field name="hr_department"/>
</group>
</group>
<group>
<group>
<field name="start_date"/>
</group>
<group>
<field name="end_date"/>
</group>
</group>
<footer>
<button string="Generate" name="action_schedule_shift" type="object"
class="oe_highlight"/>
<button string="Cancel" special="cancel"
class="oe_link"/>
</footer>
</sheet>
</form>
</field>
</record>
<!-- actions opening views on models -->
<record model="ir.actions.act_window" id="hr_employee_shift.generate_schedule_action_window">
<field name="name">Employee Shift</field>
<field name="res_model">hr.shift.generate</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- menu item -->
<menuitem name="Employee Shift" id="menu_shift_schedule_generate_id_menu" parent="hr.menu_hr_root" action="hr_employee_shift.generate_schedule_action_window" groups="hr.group_hr_manager"/>
<menuitem name="Generate Schedule" id="hr_employee_shift.menu_shift_schedule_generate_id" parent="menu_shift_schedule_generate_id_menu" action="hr_employee_shift.generate_schedule_action_window" groups="hr.group_hr_manager"/>
</data>
</odoo>

9
hr_employee_shift/views/templates.xml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="project assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/hr_employee_shift/static/src/css/shift_dashboard.css"/>
<link rel="stylesheet" href="/hr_employee_shift/static/src/less/shift_dashboard.less"/>
</xpath>
</template>
</odoo>

39
hr_insurance/README.rst

@ -1,39 +0,0 @@
OHRMS Employee Insurance Management v10
=======================================
Employee insurance management for Open HRMS.
Depends
=======
[hr] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
Installation
============
- www.odoo.com/documentation/10.0/setup/install.html
- Install our custom addon
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developer: Treesa Maria Jude @ cybrosys, treesa@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

6
hr_insurance/RELEASE_NOTES.md

@ -1,6 +0,0 @@
## Module hr_insurance
#### 21.04.2018
#### Version 11.0.1.0.0
##### ADD
- Initial commit for OpenHrms Project

24
hr_insurance/__init__.py

@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

49
hr_insurance/__manifest__.py

@ -1,49 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of Open HRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Open HRMS Employee Insurance',
'version': '11.0.1.0.0',
'summary': """Employee Insurance Management for Open HRMS.""",
'description': """Manages insurance amounts for employees to be deducted from salary""",
'category': 'Human Resources',
'author': 'Cybrosys Techno solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.openhrms.com',
'depends': [
'base', 'hr', 'hr_payroll',
],
'data': [
'security/ir.model.access.csv',
'security/hr_insurance_security.xml',
'views/employee_insurance_view.xml',
'views/insurance_salary_stucture.xml',
'views/policy_management.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

25
hr_insurance/models/__init__.py

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import policy_details
from . import employee_insurance

BIN
hr_insurance/models/__init__.pyc

Binary file not shown.

120
hr_insurance/models/employee_insurance.py

@ -1,120 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
import time
from datetime import datetime
from dateutil import relativedelta
from odoo import models, fields, api, _
class EmployeeInsurance(models.Model):
_name = 'hr.insurance'
_description = 'HR Insurance'
_rec_name = 'employee_id'
employee_id = fields.Many2one('hr.employee', string='Employee', required=True)
policy_id = fields.Many2one('insurance.policy', string='Policy', required=True)
amount = fields.Float(string='Policy Amount', required=True)
sum_insured = fields.Float(string="Sum Insured", required=True)
policy_coverage = fields.Selection([('monthly', 'Monthly'), ('yearly', 'Yearly')],
required=True, default='monthly',
string='Policy Coverage',)
date_from = fields.Date(string='Date From',
default=time.strftime('%Y-%m-%d'), readonly=True)
date_to = fields.Date(string='Date To', readonly=True,
default=str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10])
state = fields.Selection([('active', 'Active'),
('expired', 'Expired'), ],
default='active', string="State",compute='get_status')
company_id = fields.Many2one('res.company', string='Company', required=True,
default=lambda self: self.env.user.company_id)
def get_status(self):
current_datetime = datetime.now()
for i in self:
x = datetime.strptime(i.date_from, '%Y-%m-%d')
y = datetime.strptime(i.date_to, '%Y-%m-%d')
if x <= current_datetime and y >= current_datetime:
i.state = 'active'
else:
i.state = 'expired'
@api.constrains('policy_coverage')
@api.onchange('policy_coverage')
def get_policy_period(self):
if self.policy_coverage == 'monthly':
self.date_to = str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10]
if self.policy_coverage == 'yearly':
self.date_to = str(datetime.now() + relativedelta.relativedelta(months=+12))[:10]
class HrInsurance(models.Model):
_inherit = 'hr.employee'
insurance_percentage = fields.Float(string="Company Percentage ")
deduced_amount_per_month = fields.Float(string="Salary deduced per month", compute="get_deduced_amount")
deduced_amount_per_year = fields.Float(string="Salary deduced per year", compute="get_deduced_amount")
insurance = fields.One2many('hr.insurance', 'employee_id', string="Insurance",
domain=[('state', '=', 'active')])
def get_deduced_amount(self):
current_datetime = datetime.now()
for emp in self:
ins_amount = 0
for ins in emp.insurance:
x = datetime.strptime(ins.date_from, '%Y-%m-%d')
y = datetime.strptime(ins.date_to, '%Y-%m-%d')
if x < current_datetime and y > current_datetime:
if ins.policy_coverage == 'monthly':
ins_amount = ins_amount + (ins.amount*12)
else:
ins_amount = ins_amount + ins.amount
emp.deduced_amount_per_year = ins_amount-((ins_amount*emp.insurance_percentage)/100)
emp.deduced_amount_per_month = emp.deduced_amount_per_year/12
class InsuranceRuleInput(models.Model):
_inherit = 'hr.payslip'
# insurance_amount = fields.Float("Insurance amount", compute='get_inputs')
def get_inputs(self, contract_ids, date_from, date_to):
"""This Compute the other inputs to employee payslip.
"""
res = super(InsuranceRuleInput, self).get_inputs(contract_ids, date_from, date_to)
contract_obj = self.env['hr.contract']
for i in contract_ids:
if contract_ids[0]:
emp_id = contract_obj.browse(i[0].id).employee_id
for result in res:
if emp_id.deduced_amount_per_month != 0 and result.get('code') == 'INSUR':
result['amount'] = emp_id.deduced_amount_per_month
return res

BIN
hr_insurance/models/employee_insurance.pyc

Binary file not shown.

33
hr_insurance/models/policy_details.py

@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, fields, api
class InsurancePolicy(models.Model):
_name = 'insurance.policy'
name = fields.Char(string='Name', required=True)
note_field = fields.Html(string='Comment')
company_id = fields.Many2one('res.company', string='Company', required=True,
default=lambda self: self.env.user.company_id)

BIN
hr_insurance/models/policy_details.pyc

Binary file not shown.

16
hr_insurance/security/hr_insurance_security.xml

@ -1,16 +0,0 @@
<?xml version="1.0" ?>
<odoo>
<record id="property_rule_hr_shift" model="ir.rule">
<field name="name">Hr Insurancy Company</field>
<field name="model_id" ref="model_hr_insurance"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="property_rule_hr_shift_generate" model="ir.rule">
<field name="name">Hr Insurance Policy company</field>
<field name="model_id" ref="model_insurance_policy"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</odoo>

8
hr_insurance/security/ir.model.access.csv

@ -1,8 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_insurance_policy_officer,hr.insurance_policy.officer,hr_insurance.model_insurance_policy,hr.group_hr_user,1,1,1,1
access_hr_insurance_policy_employee,hr.insurance_policy.employee,hr_insurance.model_insurance_policy,hr.group_hr_manager,1,1,1,1
access_hr_insurance_policy_manager,hr.insurance_policy.manager,hr_insurance.model_insurance_policy,base.group_user,1,0,0,0
access_hr_insurance_officer,hr.insurance.officer,hr_insurance.model_hr_insurance,hr.group_hr_user,1,1,1,1
access_hr_insurance_employee,hr.insurance.employee,hr_insurance.model_hr_insurance,hr.group_hr_manager,1,1,1,1
access_hr_insurance_manager,hr.insurance.manager,hr_insurance.model_hr_insurance,base.group_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_insurance_policy_officer hr.insurance_policy.officer hr_insurance.model_insurance_policy hr.group_hr_user 1 1 1 1
3 access_hr_insurance_policy_employee hr.insurance_policy.employee hr_insurance.model_insurance_policy hr.group_hr_manager 1 1 1 1
4 access_hr_insurance_policy_manager hr.insurance_policy.manager hr_insurance.model_insurance_policy base.group_user 1 0 0 0
5 access_hr_insurance_officer hr.insurance.officer hr_insurance.model_hr_insurance hr.group_hr_user 1 1 1 1
6 access_hr_insurance_employee hr.insurance.employee hr_insurance.model_hr_insurance hr.group_hr_manager 1 1 1 1
7 access_hr_insurance_manager hr.insurance.manager hr_insurance.model_hr_insurance base.group_user 1 0 0 0

BIN
hr_insurance/static/description/HRMS-BUTTON.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
hr_insurance/static/description/banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

BIN
hr_insurance/static/description/cybro-service.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

BIN
hr_insurance/static/description/cybro_logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_insurance/static/description/employee.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

BIN
hr_insurance/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

120
hr_insurance/static/description/index.html

@ -1,120 +0,0 @@
<section class="oe_container bg-gray-lighter" xmlns="http://www.w3.org/1999/html">
<div class="oe_row">
<div class="oe_span">
<h2 class="oe_slogan">OpenHRMS</h2>
<h3 class="oe_slogan">Most advanced open source HR management software</h3>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced oe_mt32">
<div class="oe_span">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openhrms.com/#request-demo">
<img src="HRMS-BUTTON.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">OHRMS Employee Insurance Management</h2>
<h3 class="oe_slogan">Employee Insurance Management for OHRMS</h3>
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4>
<p class='oe_mt32'>
This module allows tracking the insurance details allowed for employees. Also
efficiently manages the insurance allowances with the salary. You can manage
the percentage of insurance amount to be deduced from the salary.
</p>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_padded">
<h2 class="oe_slogan">Set Insurance For Employees</h2>
<div class="oe_span12">
</div>
<div class="oe_span13">
<div class="oe_demo oe_screenshot">
<img src="insurance.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_padded">
<h2 class="oe_slogan">Policy Management</h2>
<div class="oe_span13">
<div class="oe_demo oe_screenshot">
<img src="policy.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_padded">
<div class="oe_span12">
<h2 class="oe_slogan">Employee Insurance Details</h2>
</div>
<div class="oe_span13">
<div class="oe_demo oe_screenshot">
<img src="employee.png">
</div>
</div></div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_padded">
<div class="oe_span12">
<h2 class="oe_slogan">Amount Deduced On Payslip</h2>
</div>
<div class="oe_span13">
<div class="oe_demo oe_screenshot">
<img src="payslip.png">
</div>
</div></div>
</section>
<div class="row section-content">
<div class="col-md-6 img-content">
<h3>Our Odoo Services</h3>
</div> <div class="bc-span col-md-12"><div class="inner-span"><a target="_blank" href="https://www.openhrms.com"><img class="img-border img-responsive thumbnail" src="cybro-service.png"></a></div></div>
</div>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="http://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="http://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</div>
</section>

BIN
hr_insurance/static/description/insurance.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

BIN
hr_insurance/static/description/payslip.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

BIN
hr_insurance/static/description/policy.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

105
hr_insurance/views/employee_insurance_view.xml

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_employee_insurance_form" model="ir.ui.view">
<field name="name">hr.employee.Insurance_form</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='hr_settings']" position="after">
<page name="insurance" string="Insurance">
<group>
<group>
<field name="insurance_percentage">%</field>
</group>
<group>
<field name="deduced_amount_per_year"/>
<field name="deduced_amount_per_month"/>
</group>
</group>
<field name="insurance" context="{'default_employee_id':id}"/>
</page>
</xpath>
</field>
</record>
<record id="employee_insurance__details_form" model="ir.ui.view">
<field name="name">Employee Insurance</field>
<field name="model">hr.insurance</field>
<field name="arch" type="xml">
<form string="Employee Insurance">
<header>
<field name="state" widget="statusbar" statusbar_visible="active,expired"/>
</header>
<sheet>
<!--<header>-->
<!--<field name="state" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}'/>-->
<!--</header>-->
<group>
<group>
<field name="employee_id"/>
<field name="policy_coverage"/>
<label for="date_from" string="Policy Period"/>
<div>
<field name="date_from" class="oe_inline" on_change="1" modifiers="{'readonly': [['state', 'not in', ['draft']]], 'required': true}"/>
-
<field name="date_to" class="oe_inline" on_change="1" modifiers="{'readonly': [['state', 'not in', ['draft']]], 'required': true}"/>
</div>
</group>
<group>
<field name="policy_id"/>
<field name="sum_insured"/>
<field name="amount"/>
<field name="company_id"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="employee_insurance_details_tree" model="ir.ui.view">
<field name="name">Employee Insurance</field>
<field name="model">hr.insurance</field>
<field name="arch" type="xml">
<tree string="Employee Insurance">
<field name="employee_id"/>
<field name="policy_id"/>
<field name="policy_coverage"/>
<field name="sum_insured"/>
<field name="amount"/>
<field name="date_from" />
<field name="date_to"/>
<field name="company_id"/>
</tree>
</field>
</record>
<record id="action_employee_insurance_details" model="ir.actions.act_window">
<field name="name">Employee Insurance</field>
<field name="res_model">hr.insurance</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
You have'nt created any policy yet.
</p>
</field>
</record>
<menuitem
id="hr_insurance_main_menu"
parent ="hr.menu_hr_root"
name="HR Insurance"/>
<menuitem
id="hr_employee_insurance_menu"
name="Employee Insurance"
parent="hr_insurance_main_menu"
action="action_employee_insurance_details"/>
</data>
</odoo>

41
hr_insurance/views/insurance_salary_stucture.xml

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<!--<record id="hr_payslip_rule_insurance" model="hr.salary.rule">-->
<!--<field name="code">INSUR</field>-->
<!--<field name="name">Insurance Amount</field>-->
<!--<field name="category_id" ref="hr_payroll.DED"/>-->
<!--<field name="amount_select">code</field>-->
<!--<field name="amount_python_compute">result = -(payslip.insurance_amount)</field>-->
<!--<field name="appears_on_payslip" eval="True"/>-->
<!--<field name="sequence" eval="190"/>-->
<!--</record>-->
<!--&lt;!&ndash;<record id="hr_payroll.structure_base" model="hr.payroll.structure">&ndash;&gt;-->
<!--&lt;!&ndash;<field eval="[(4, ref('hr_payslip_rule_warning')), (4, ref('hr_payslip_rule_reward'))]"&ndash;&gt;-->
<!--&lt;!&ndash;name="rule_ids"/>&ndash;&gt;-->
<!--&lt;!&ndash;</record>&ndash;&gt;-->
<!-- Insurance rule -->
<record id="hr_payslip_rule_insurance" model="hr.salary.rule">
<field name="code">INSUR</field>
<field name="name">Insurance Amount</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = -(inputs.INSUR.amount)</field>
<field name="appears_on_payslip" eval="True"/>
<field name="sequence" eval="190"/>
</record>
<record id="hr_rule_input_insurance" model="hr.rule.input">
<field name="code">INSUR</field>
<field name="name">Insurance Amount</field>
<field name="input_id" ref="hr_payslip_rule_insurance"/>
</record>
<record id="hr_payroll.structure_base" model="hr.payroll.structure">
<field eval="[(4, ref('hr_payslip_rule_insurance'))]"
name="rule_ids"/>
</record>
</data></odoo>

59
hr_insurance/views/policy_management.xml

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="insurance_policy_details_form" model="ir.ui.view">
<field name="name">Insurance Policy Details</field>
<field name="model">insurance.policy</field>
<field name="arch" type="xml">
<form string="Policy Details">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="company_id"/>
</group>
</group>
<notebook>
<page string="Extra Notes">
<field name="note_field"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="insurance_policy_details_tree" model="ir.ui.view">
<field name="name">Insurance Policy Details</field>
<field name="model">insurance.policy</field>
<field name="arch" type="xml">
<tree string="Policy Details">
<field name="name"/>
<field name="company_id"/>
</tree>
</field>
</record>
<record id="action_insurance_policy_management" model="ir.actions.act_window">
<field name="name">Insurance Policy </field>
<field name="res_model">insurance.policy</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
You have'nt created any policy yet.
</p>
</field>
</record>
<menuitem
id="policy_management_menu"
name="Policy"
parent="hr_insurance_main_menu"
action="action_insurance_policy_management"/>
</data>
</odoo>

25
hr_leave_request_aliasing/README.md

@ -1,25 +0,0 @@
Open HRMS Leave Request Aliasing
--------------------------------
Supporting Addon for Open HRMS, Allows You To Create Leave Request Automatically From Incoming Emails.
Connect with experts
--------------------
If you have any question/queries/additional works on OpenHRMS or this module, You can drop an email directly to Cybrosys.
Technical Notes
---------------
Here you need to send leave request through email with the following rules.
* You must send leave request through your registered email id.
* Mail subject must be start with 'LEAVE REQUEST '
* Mail body must contain date as per given format (%d/%m/%Y)
Contacts
--------
info - info@cybrosys.com
Jesni Banu - jesni@cybrosys.in
Website:
https://www.openhrms.com
https://www.cybrosys.com

25
hr_leave_request_aliasing/__init__.py

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models

45
hr_leave_request_aliasing/__manifest__.py

@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of Open HRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Open HRMS Leave Request Aliasing',
'version': '11.0.1.0.0',
'summary': """Allows You To Create Leave Request Automatically From Incoming Mails""",
'description': 'This module allows you to create leave request directly from incoming mails.',
'category': 'Generic Modules/Human Resources',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.openhrms.com",
'depends': ['base_setup', 'hr_holidays'],
'data': [
'data/web_planner_data.xml',
'views/hr_leave_template.xml',
'views/leave_request_alias_view.xml',
'views/res_config_views.xml',
],
'demo': [],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

81
hr_leave_request_aliasing/data/web_planner_data.xml

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="hr_leave_planner">
<t t-call="web_planner.pages">
<t t-call="web_planner.category">
<t t-set="menu_categorytitle">Setup</t>
<t t-set="menu_categoryclasses" t-value="'fa-magic'"/>
<t t-call="web_planner.page">
<t t-set="page_title">Get Mobile</t>
<t t-if="not (alias_name and alias_domain)">
<div class="alert alert-warning" role="alert">
<strong>Your email gateway is not configured.</strong> Please configure your email
gateway from the Settings app, menu <i>General Settings</i>.
</div>
<p>
Once your email gateway is configured, come back to this screen
to setup the next steps.
</p>
</t>
<t t-if="alias_name and alias_domain">
<p>
To create leave request by email, send leave request by email with the following
information:
</p>
<dl class="dl-horizontal">
<dt>From: Your Email</dt>
<dd>Your Email Address</dd>
<dt>To:</dt>
<dd><t t-esc="alias_name"/>@<t t-esc="alias_domain"/></dd>
<dt>Subject: </dt>
<dd><strong class="text-info">LEAVE REQUEST</strong> Free Description with Date From: and Date To:<strong class="text-primary"></strong></dd>
</dl>
<hr class="mb32"/>
<p>
The <strong class="text-info">LEAVE REQUEST</strong> is mandatory and should be in the
subject of your email. This
will root the leave request automatically on your
Odoo.
</p><p>
Also you need to set <strong class="text-primary">Date From: and Date To:</strong>
at the end of the body of your email.
</p>
<div class="alert alert-info" role="alert">
<b>Note:</b> Set the same email address on your employee form(working email) than
the one you use are your "From:". Otherwise, your
leave request will not be accepted by email.
</div>
</t>
</t>
</t>
<t t-call="web_planner.page">
<t t-set="page_title">End</t>
<t t-set="hide_title" t-value="True"/>
<t t-set="hide_from_menu" t-value="True"/>
<t t-set="hide_mark_as_done" t-value="True"/>
<h1 class="text-center o_planner_trophy" data-icon="&#xe006;" />
<div class="text-center">
<h1>Congratulations, you're done!</h1>
<h3>We hope this feature helped you manage your leave request efficiently.</h3>
<h4>Don't hesitate to <a href="mailto:info@cybrosys.com" target="_blank">send us an email</a> to describe<br/> your experience or to suggest improvements!</h4>
<p>Have a wonderful day,<br/>- Cybrosys</p>
<img src="/hr_leave_request_aliasing/static/description/cybro_logo.png"/>
</div>
</t>
</t>
</template>
<record id="planner_hr_leave" model="web.planner">
<field name="name">Leave strategy planner</field>
<field name="view_id" ref="hr_leave_planner"/>
<field name="menu_id" ref="hr_holidays.menu_hr_holidays_root"/>
<field name="planner_application">planner_hr_leave</field>
<field name="tooltip_planner"><![CDATA[
Send receipts by email to create leave request efficiently.
]]>
</field>
</record>
</odoo>

6
hr_leave_request_aliasing/doc/RELEASE_NOTES.md

@ -1,6 +0,0 @@
## Module <hr_leave_request_aliasing>
#### 24.03.2018
#### Version 11.0.1.0.0
##### ADD
- Initial commit for Open HRMS Project

27
hr_leave_request_aliasing/models/__init__.py

@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import leave_request_alias
from . import res_config
from . import web_planner

BIN
hr_leave_request_aliasing/models/__init__.pyc

Binary file not shown.

BIN
hr_leave_request_aliasing/models/__pycache__/__init__.cpython-35.pyc

Binary file not shown.

BIN
hr_leave_request_aliasing/models/__pycache__/leave_request_alias.cpython-35.pyc

Binary file not shown.

BIN
hr_leave_request_aliasing/models/__pycache__/res_config.cpython-35.pyc

Binary file not shown.

BIN
hr_leave_request_aliasing/models/__pycache__/web_planner.cpython-35.pyc

Binary file not shown.

73
hr_leave_request_aliasing/models/leave_request_alias.py

@ -1,73 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
import re
from datetime import datetime, timedelta
from odoo import models, api
from odoo.tools import email_split
class HrLeaveAlias(models.Model):
_inherit = 'hr.holidays'
@api.model
def message_new(self, msg_dict, custom_values=None):
"""This function extracts required fields of hr.holidays from incoming mail then creating records"""
try:
if custom_values is None:
custom_values = {}
msg_subject = msg_dict.get('subject', '')
subject = re.search('LEAVE REQUEST', msg_subject)
if subject is not None:
email_address = email_split(msg_dict.get('email_from', False))[0]
employee = self.env['hr.employee'].sudo().search([
'|',
('work_email', 'ilike', email_address),
('user_id.email', 'ilike', email_address)
], limit=1)
msg_body = msg_dict.get('body', '')
cleaner = re.compile('<.*?>')
clean_msg_body = re.sub(cleaner, '', msg_body)
date_list = re.findall(r'\d{2}/\d{2}/\d{4}', clean_msg_body)
if len(date_list) > 0:
date_from = date_list[0]
if len(date_list) > 1:
start_date = datetime.strptime(date_list[1], '%d/%m/%Y')
date_to = start_date + timedelta(days=0)
else:
start_date = datetime.strptime(date_list[0], '%d/%m/%Y')
date_to = start_date + timedelta(days=1)
no_of_days_temp = (datetime.strptime(str(date_to), "%Y-%m-%d %H:%M:%S") -
datetime.strptime(date_from, '%d/%m/%Y')).days
custom_values.update({
'name': msg_subject.strip(),
'employee_id': employee.id,
'holiday_status_id': 1,
'date_from': date_from,
'date_to': date_to,
'no_of_days_temp': no_of_days_temp
})
return super(HrLeaveAlias, self).message_new(msg_dict, custom_values)
except:
pass

BIN
hr_leave_request_aliasing/models/leave_request_alias.pyc

Binary file not shown.

48
hr_leave_request_aliasing/models/res_config.py

@ -1,48 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import api, fields, models
class HrLeaveConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
alias_prefix = fields.Char(string='Default Alias Name for Leave', help='Default Alias Name for Leave')
alias_domain = fields.Char(string='Alias Domain', help='Default Alias Domain for Leave',
default=lambda self: self.env["ir.config_parameter"].get_param("mail.catchall.domain"))
def set_values(self):
super(HrLeaveConfigSettings, self).set_values()
set_param = self.env['ir.config_parameter'].set_param
set_param('alias_prefix', self.alias_prefix)
set_param('alias_domain', self.alias_domain )
@api.model
def get_values(self):
res = super(HrLeaveConfigSettings, self).get_values()
get_param = self.env['ir.config_parameter'].sudo().get_param
res.update(
alias_prefix=get_param('alias_prefix', default=''),
alias_domain=get_param('alias_domain', default=''),
)
return res

BIN
hr_leave_request_aliasing/models/res_config.pyc

Binary file not shown.

44
hr_leave_request_aliasing/models/web_planner.py

@ -1,44 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Jesni Banu (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import api, models
class PlannerHrLeave(models.Model):
"""This class is used to activate web.planner feature in 'hr_leave_request_aliasing' module"""
_inherit = 'web.planner'
@api.model
def _get_planner_application(self):
planner = super(PlannerHrLeave, self)._get_planner_application()
planner.append(['planner_hr_leave', 'Leave Planner'])
return planner
@api.model
def _prepare_planner_hr_leave_data(self):
alias_record = self.env.ref('hr_leave_request_aliasing.mail_alias_leave')
return {
'alias_domain': alias_record.alias_domain,
'alias_name': alias_record.alias_name,
}

BIN
hr_leave_request_aliasing/models/web_planner.pyc

Binary file not shown.

BIN
hr_leave_request_aliasing/static/description/HRMS-BUTTON.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
hr_leave_request_aliasing/static/description/banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

BIN
hr_leave_request_aliasing/static/description/cybro-service.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

BIN
hr_leave_request_aliasing/static/description/cybro_logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_leave_request_aliasing/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

102
hr_leave_request_aliasing/static/description/index.html

@ -1,102 +0,0 @@
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan"><a href="https://www.openhrms.com">Open HRMS</a></h2>
<h3 class="oe_slogan">Most advanced open source HR management software</h3>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced oe_mt32">
<div class="oe_span">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openhrms.com/#request-demo">
<img src="HRMS-BUTTON.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Open HRMS Leave Request Aliasing</h2>
<h3 class="oe_slogan">Creating Leave Request, Automatically From Incoming Emails</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
</div>
<div class="oe_row oe_spaced" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<span style="color:green;"> &#9745; </span> Automation on Leaves Request Mails.<br/>
<span style="color:green;"> &#9745; </span> Option to Set Aliasing Domain Separately for Leave Request.<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32 text-justify" style="text-align: center;">
Email aliasing is a default feature in Odoo which allows the user to fetch contents to ERP records directly from incoming emails.
The feature is a type of automation. Since we can configure the E-mails to fetch contents directly.
So here we are providing one of the new module to create leave request automatically from incoming email.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12" style="text-align: center;">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:8px solid white;" src="mail_aliasing.png">
</div>
<span>
<i>Here we can send leave request through our registered email id. Then it will create leave
request in Odoo. We must ensure that our mail subject must start with 'LEAVE REQUEST ' and date
format must be as '%d/%m/%Y'.</i>
</span>
</div>
</div>
</section>
<div class="row section-content">
<div class="col-md-6 img-content">
<h3>Our Odoo Services</h3>
</div>
<div class="bc-span col-md-12">
<div class="inner-span">
<a target="_blank" href="https://www.openhrms.com">
<img class="img-border img-responsive thumbnail" src="cybro-service.png">
</a>
</div>
</div>
</div>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/" target="_blank"><i
class="fa fa-phone"></i> Contact Us </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.odoo.com/apps/modules/browse?search=open+hrms" target="_blank"><i
class="fa fa-suitcase"></i> Other Open HRMS Addons </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"><i
class="fa fa-wrench"></i> Request Customization </a>
</div>
<br>
<a href="https://www.cybrosys.com/" target="_blank">
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
</div>
</section>

BIN
hr_leave_request_aliasing/static/description/mail_aliasing.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

6
hr_leave_request_aliasing/static/src/js/web_planner_hr_leave.js

@ -1,6 +0,0 @@
odoo.define('planner_hr_leave.planner', function (require) {
"use strict";
var planner = require('web.planner.common');
});

11
hr_leave_request_aliasing/views/hr_leave_template.xml

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets_backend_expense" name="hr_leave assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/hr_leave_request_aliasing/static/src/js/web_planner_hr_leave.js"></script>
</xpath>
</template>
</data>
</odoo>

9
hr_leave_request_aliasing/views/leave_request_alias_view.xml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mail_alias_leave" model="mail.alias">
<field name="alias_name">leave</field>
<field name="alias_model_id" ref="model_hr_holidays"/>
<field name="alias_user_id" ref="base.user_root"/>
<field name="alias_contact">employees</field>
</record>
</odoo>

54
hr_leave_request_aliasing/views/res_config_views.xml

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_hr_leave_configuration" model="ir.ui.view">
<field name="name">Configure Leave</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="50"/>
<field name="inherit_id" ref="base.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block" data-string="Leaves" data-key="hr_leave_request_aliasing" groups="hr_holidays.group_hr_holidays_manager">
<h2>Leaves</h2>
<div class="row mt16 o_settings_container" name="config_leave">
<div class="col-xs-12 col-md-6 o_setting_box" name="config_leave_alias">
<div class="o_setting_right_pane">
<label string="Leave Email Alias"/>
<div class="text-muted">
You can setup a generic email alias to create
incoming leave request easily. Write an email with the desired
format to create leave request in one click.
Format:- Start subject with 'LEAVE REQUEST'. After your mail content mention
'Date From:' and 'Date To:'.
</div>
<div class="content-group">
<div class="row mt16">
<label string="Prefix" class="col-md-3"/>
<field name="alias_prefix"/>
</div>
<div class="row mt16">
<label string="Domain" class="col-md-3"/>
<field name="alias_domain"/>
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
<record id="action_hr_general_config" model="ir.actions.act_window">
<field name="name">Leaves Config</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'hr_leave_request_aliasing'}</field>
</record>
<menuitem id="menu_hr_leave_global_settings" name="Leaves Config"
parent="hr_holidays.menu_hr_holidays_root" sequence="96" action="action_hr_general_config" groups="base.group_system"/>
</data>
</odoo>

14
hr_payslip_monthly_report/README.rst

@ -1,14 +0,0 @@
Payroll-Payslip Reporting v11
=============================
This Module help Human resource managers to get a over all view for the payslips as pivot.
Features
========
* Pivot view for HR payslips.
* Group By options like Employee wise, department wise, job title wise, date wise, status wise and Company wise.
* Spot Export to XLS Report.
Credits
=======
Nikhil Krishnan @ cybrosys, nikhil@cybrosys.in

22
hr_payslip_monthly_report/__init__.py

@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Nikhil krishnan(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <https://www.gnu.org/licenses/>.
#
##############################################################################
from . import models

43
hr_payslip_monthly_report/__manifest__.py

@ -1,43 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Nikhil krishnan(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <https://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Payroll-Payslip Reporting',
'version': '11.0.1.0.0',
'summary': """Payslip Pivot View Report.""",
'description': """Payslip monthly report.
This module gives a pivot view for the HR managers. they can see all the 'NET' amount of payslips in all states""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'category': 'Generic Modules/Human Resources',
'depends': ['hr_payroll'],
'license': 'LGPL-3',
'data': [
'security/ir.model.access.csv',
'views/menu_payslip_report.xml'
],
'demo': [],
'images': ['static/description/banner.jpg'],
'installable': True,
'auto_install': False,
}

45
hr_payslip_monthly_report/__manifest__.py~

@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Nikhil krishnan(<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Payroll-Payslip Reporting',
'version': '10.0.1.0.0',
'summary': """Payslip Pivot View Report.""",
'description': """Payslip monthly report.
This module gives a pivot view for the HR managers. they can see all the 'NET' amount of payslips in all states""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'http://www.cybrosys.com',
'category': 'Human Resources',
'depends': ['hr_payroll'],
'license': 'LGPL-3',
'data': [
'security/ir.model.access.csv',
'views/menu_payslip_report.xml'
],
'demo': [],
'images': ['static/description/banner.jpg'],
'installable': True,
'auto_install': False,
}

24
hr_payslip_monthly_report/models/__init__.py

@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Nikhil krishnan(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <https://www.gnu.org/licenses/>.
#
##############################################################################
from . import hr_payroll_report

70
hr_payslip_monthly_report/models/hr_payroll_report.py

@ -1,70 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Nikhil krishnan(<https://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <https://www.gnu.org/licenses/>.
#
##############################################################################
from odoo import fields, models, tools, api
class PayrollReportView(models.Model):
_name = 'hr.payroll.report.view'
_auto = False
name = fields.Many2one('hr.employee', string='Employee')
date_from = fields.Date(string='From')
date_to = fields.Date(string='To')
state = fields.Selection([('draft', 'Draft'), ('verify', 'Waiting'), ('done', 'Done'), ('cancel', 'Rejected')],
string='Status')
job_id = fields.Many2one('hr.job', string='Job Title')
company_id = fields.Many2one('res.company', string='Company')
department_id = fields.Many2one('hr.department', string='Department')
net = fields.Float(string='Net Salary')
def _select(self):
select_str = """
min(ps.id) as id,emp.id as name,jb.id as job_id,
dp.id as department_id,cmp.id as company_id,
ps.date_from, ps.date_to, sum(psl.total) as net, ps.state as state
"""
return select_str
def _from(self):
from_str = """
hr_payslip_line psl join hr_payslip ps on (ps.employee_id=psl.employee_id and ps.id=psl.slip_id)
join hr_employee emp on (ps.employee_id=emp.id) join hr_department dp on (emp.department_id=dp.id)
join hr_job jb on (emp.department_id=jb.id) join res_company cmp on (cmp.id=ps.company_id) where psl.code='NET'
"""
return from_str
def _group_by(self):
group_by_str = """
group by emp.id,psl.total,ps.date_from, ps.date_to, ps.state,jb.id,dp.id,cmp.id
"""
return group_by_str
@api.model_cr
def init(self):
tools.drop_view_if_exists(self.env.cr, self._table)
self.env.cr.execute("""CREATE or REPLACE VIEW %s as ( SELECT
%s
FROM %s
%s
)""" % (self._table, self._select(), self._from(), self._group_by()))

2
hr_payslip_monthly_report/security/ir.model.access.csv

@ -1,2 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_payslip_monthly_report_manager,hr.payroll.report.view,hr_payslip_monthly_report.model_hr_payroll_report_view,hr.group_hr_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_payslip_monthly_report_manager hr.payroll.report.view hr_payslip_monthly_report.model_hr_payroll_report_view hr.group_hr_manager 1 1 1 1

BIN
hr_payslip_monthly_report/static/description/HR Payslip Report view.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

BIN
hr_payslip_monthly_report/static/description/HR report group by.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
hr_payslip_monthly_report/static/description/Payslip Graph Report.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

BIN
hr_payslip_monthly_report/static/description/banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

BIN
hr_payslip_monthly_report/static/description/cybro_logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_payslip_monthly_report/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

124
hr_payslip_monthly_report/static/description/index.html

@ -1,124 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Payroll-Payslip Reporting</h2>
<h3 class="oe_slogan">Get an overview of the pay slips as pivot</h3>
<h4 class="oe_slogan">Author : Cybrosys Techno Solutions , www.cybrosys.com</h4>
<div>
<h4><p>Features:</p></h4>
<ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; <b>Retrieve pivot view of pay slips.</b></li>
<li style="list-style:none !important;"><span style="color:green; "> &#9745;</span>&nbsp;&nbsp; <b>Able to get Reports</b> </li>
<ul style="padding-left: 36px;padding-top: 2px;">
<li style="list-style:outside !important;">Employee wise,</li>
<li style="list-style:outside !important;">Employee's department wise,</li>
<li style="list-style:outside !important;">Employee's job title wise,</li>
<li style="list-style:outside !important;">Pay slip's date wise,</li>
<li style="list-style:outside !important;">Pay slip's status wise,</li>
<li style="list-style:outside !important;">Company wise.</li>
</ul>
<li style="list-style:none !important;"><span style="color:green;"> &#9745;</span>&nbsp;&nbsp; <b>Spot Export to XLS Report.</b></li>
</ul>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Payroll Monthly Statement in Pivot View</h2>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<p class="oe_mt32">
This report helps in payroll analysis. This helps you to check your pay slips and sorting it out from different group
criteria (Employee, Job title, Department, Company, Pay slip etc.).
</p>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Payroll report as Pivot</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="HR Payslip Report view.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
HR managers need a complete payroll statement and also payroll monthly statement. From
this pivot view we can easily generate the custom payroll report views in excel format. Also
we can download it from there. From Odoo payroll report we can get only individual employee
pay slip reports. To make the use of HR payroll management system easier we can use this pivot
view to get the payroll/pay slip statement.
</p>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Group by the pivot view</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="HR report group by.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
In this View we can easily generate custom reports by using the + button,
That is we can make the filters by groups, also we can get the counts too, from the "Measures" Button
</p>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Graph View</h3>
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="Payslip Graph Report.png">
</div>
</div>
<div class="oe_span12">
<p class="oe_mt32">
In Pivot view we can easily generate custom Graphs like Pie Chart,Bar Chart, Line Chart.
With date and net salary or date and pay slip's counts.
</p>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="http://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="http://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td>
</div>
</div>
</section>

67
hr_payslip_monthly_report/views/menu_payslip_report.xml

@ -1,67 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_payroll_report_view_pivot" model="ir.ui.view">
<field name="name">hr.payslip.pivot</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<pivot string="Payslip Analysis">
<field name="name" type="row"/>
<field name="date_from" interval="month" type="col"/>
<field name="net" type="measure"/>
</pivot>
</field>
</record>
<record id="hr_payroll_report_view_graph" model="ir.ui.view">
<field name="name">hr.payslip.graph</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<graph string="Payslip Analysis">
<field name="date_from" type="row"/>
<field name="net" type="measure"/>
</graph>
</field>
</record>
<record id="hr_payroll_report_view_search" model="ir.ui.view">
<field name="name">hr.payslip.search</field>
<field name="model">hr.payroll.report.view</field>
<field name="arch" type="xml">
<search string="Payslip Analysis">
<field name="name"/>
<field name="date_from"/>
<field name="company_id" groups="base.group_multi_company"/>
<filter string="This Year" name="year" domain="[('date_from','&lt;=', time.strftime('%%Y-12-31')),('date_from','&gt;=',time.strftime('%%Y-01-01')),('date_to','&lt;=', time.strftime('%%Y-12-31')),('date_to','&gt;=',time.strftime('%%Y-01-01'))]"/>
<filter name="Salary" string="Salary" domain="[('state','=', 'done')]"/>
<filter name="Draft" string="Draft" domain="[('state','=','draft')]"/>
<separator/>
<field name="department_id"/>
<group expand="1" string="Group By">
<filter string="Employee" name="Employee" context="{'group_by':'name'}"/>
<filter string="Job" context="{'group_by':'job_id'}"/>
<filter string="Department" context="{'group_by':'department_id'}"/>
<filter name="status" string="Status" context="{'group_by':'state'}"/>
<filter string="Company" groups="base.group_multi_company" context="{'group_by':'company_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_hr_payslip_view_report" model="ir.actions.act_window">
<field name="res_model">hr.payroll.report.view</field>
<field name="name">Payslips</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="context">{'search_default_year':1}</field>
<field name="help">This report helps in payroll analysis. This helps you to check your pay slips and sorting it out from different group
criteria (Employee, Job title, Department, Company, Pay slip etc.).</field>
</record>
<menuitem name="Reports" id="menu_hr_payslip_reports" parent="hr_payroll.menu_hr_payroll_root" />
<menuitem id="menu_hr_payslip_view_report" name="Payslip Report"
parent="menu_hr_payslip_reports" action="action_hr_payslip_view_report"
groups="hr.group_hr_manager" sequence="10"/>
</data>
</odoo>

112
hr_payslip_monthly_report/views/quotation_handler.xml~

@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="act_sale_order_2_revised" model="ir.actions.act_window">
<field name="name">Revised Quotation Orders</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="sale.view_quotation_tree"/>
<field name="domain">[('parent_so_id', '=', active_id)]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Revised order against this Quotation Order.
</p>
</field>
</record>
<!--In sale order menu, we need to avoid the 'revised' state orders. -->
<record id="sale.action_orders" model="ir.actions.act_window">
<field name="name">Sales Orders</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="search_view_id" ref="sale.sale_order_view_search_inherit_sale"/>
<field name="context">{}</field>
<field name="domain">[('state', 'not in', ('draft','revised','sent', 'cancel'))]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Create a Quotation, the first step of a new sale.
</p><p>
Once the quotation is confirmed, it becomes a sales order.
You'll be able to invoice it and collect payments.
From the <i>Sales Orders</i> menu, you can track delivery
orders or services.
</p>
</field>
</record>
<record id="sale.action_quotations" model="ir.actions.act_window">
<field name="name">Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_id" ref="sale.view_quotation_tree"/>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="context">{}</field>
<field name="domain">[('state','in',('pre','draft','sent','cancel'))]</field>
<field name="search_view_id" ref="sale.view_sales_order_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Create a Quotation, the first step of a new sale.
</p><p>
Your next actions should flow efficiently: confirm the Quotation
to a Sale Order, then create the Invoice and collect the Payment.
</p><p>
Note that once a Quotation becomes a Sale Order, it will be moved
from the Quotations list to the Sales Order list.
</p>
</field>
</record>
<record id="view_order_form_revised" model="ir.ui.view">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_confirm']" position="after">
<button name="make_revision" string="Revise the Quotation" type="object" states="sent" class="btn-primary"/>
<button name="action_quotation_send" string="Send by Email" type="object" states="pre" class="btn-primary"/>
<button name="print_quotation" string="Print" type="object" states="pre" class="btn-primary"/>
<button name="action_cancel" states="pre" type="object" string="Cancel"/>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
<button class="oe_inline oe_stat_button" type="action" name="%(act_sale_order_2_revised)d"
icon="fa-bars" attrs="{'invisible':[('state','in',[('draft','revised')]}">
<field string="Revised Quotation Orders" name="revised_order_count" widget="statinfo"/>
</button>
</xpath>
<xpath expr="//field[@name='order_line']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='payment_term_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='user_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
<xpath expr="//field[@name='team_id']" position="attributes">
<attribute name="attrs">{'readonly': [('state', 'in', ('sent','revised','done','cancel'))]}</attribute>
</xpath>
</field>
</record>
<record id="view_quotation_handler_tree" model="ir.ui.view">
<field name="name">sale.order.tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_quotation_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='state']" position="replace">
<field name="state"/>
</xpath>
</field>
</record>
</data>
</odoo>

39
hr_reminder/README.rst

@ -1,39 +0,0 @@
Open HRMS Reminders Todo V11
============================
HR Reminder For OHRMS
Depends
=======
[hr] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
Installation
============
- www.odoo.com/documentation/10.0/setup/install.html
- Install our custom addon
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developer: Treesa Maria Jude @ cybrosys, treesa@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

25
hr_reminder/__init__.py

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of OpenHRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import models
from . import controllers

45
hr_reminder/__manifest__.py

@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
###################################################################################
# A part of Open HRMS Project <https://www.openhrms.com>
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Treesa Maria Jude (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Open HRMS Reminders Todo',
'version': '11.0.1.0.0',
'category': 'Extra Tools',
'summary': 'HR Reminder For OHRMS',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.openhrms.com",
'depends': ['base', 'hr'],
'data': [
'security/ir.model.access.csv',
'security/hr_reminder_security.xml',
'views/hr_reminder_view.xml',
'views/reminder_template.xml',
],
'qweb': [
'static/src/xml/reminder_topbar.xml', ],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save