add new module
40
hr_resignation/README.rst
Executable file
@@ -0,0 +1,40 @@
|
||||
OHRMS Employee Resignation v13
|
||||
==============================
|
||||
|
||||
Employee Resignation Process.
|
||||
|
||||
Depends
|
||||
=======
|
||||
[hr_employee_updation] addon Open HRMS
|
||||
[mail] addon Odoo
|
||||
|
||||
Tech
|
||||
====
|
||||
* [Python] - Models
|
||||
* [XML] - Odoo views
|
||||
|
||||
Installation
|
||||
============
|
||||
- www.odoo.com/documentation/13.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: Niyas Raphy @ cybrosys, odoo@cybrosys.com
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
This module is maintained by Cybrosys Technologies.
|
||||
|
||||
For support and more information, please visit https://www.cybrosys.com.
|
||||
2
hr_resignation/__init__.py
Executable file
@@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import models
|
||||
49
hr_resignation/__manifest__.py
Executable file
@@ -0,0 +1,49 @@
|
||||
# -*- 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: Niyas Raphy(<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 Resignation',
|
||||
'version': '13.0.2.0.0',
|
||||
'summary': 'Handle the resignation process of the employee',
|
||||
'author': 'Cybrosys Techno solutions',
|
||||
'company': 'Cybrosys Techno Solutions',
|
||||
'website': 'https://www.openhrms.com',
|
||||
'depends': ['hr', 'hr_employee_updation', 'mail'],
|
||||
'category': 'Generic Modules/Human Resources',
|
||||
'maintainer': 'Cybrosys Techno Solutions',
|
||||
'demo': ['data/demo_data.xml'],
|
||||
'data': [
|
||||
'security/security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/resign_employee.xml',
|
||||
'views/hr_employee.xml',
|
||||
'views/resignation_view.xml',
|
||||
'views/approved_resignation.xml',
|
||||
'views/resignation_sequence.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': False,
|
||||
'images': ['static/description/banner.png'],
|
||||
'license': 'AGPL-3',
|
||||
}
|
||||
|
||||
23
hr_resignation/data/demo_data.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="resign_employee_id" model="hr.employee">
|
||||
<field name="name">Sreejith Sasidharan</field>
|
||||
<field name="job_title">Odoo developer</field>
|
||||
<field name="work_location">Building 1, Third Floor</field>
|
||||
<field name="work_phone">(376)-352-741</field>
|
||||
<field name="work_email">sreejith@example.com</field>
|
||||
<field name="image_1920" type="base64"
|
||||
file="hr_resignation/static/image/resign_employee_id.jpeg"/>
|
||||
</record>
|
||||
|
||||
<record id="resignation_one" model="hr.resignation">
|
||||
<field name="employee_id" ref="resign_employee_id"/>
|
||||
<field name="joined_date">2015-03-02</field>
|
||||
<field name="expected_revealing_date">2020-03-22</field>
|
||||
<field name="reason">Career Change</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
16
hr_resignation/data/resign_employee.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="ir_cron_data_employee_resignation" model="ir.cron">
|
||||
<field name="name">HR Resignation: update employee</field>
|
||||
<field name="model_id" ref="model_hr_resignation"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.update_employee_status()</field>
|
||||
<field name="user_id" ref="base.user_root" />
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field eval="False" name="doall" />
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
11
hr_resignation/docs/RELEASE_NOTES.md
Executable file
@@ -0,0 +1,11 @@
|
||||
## Module hr_resignation
|
||||
|
||||
#### 07.04.2018
|
||||
#### Version 13.0.1.0.0
|
||||
##### ADD
|
||||
- Initial Commit
|
||||
|
||||
#### 10.03.2019
|
||||
#### Version 13.0.2.0.0
|
||||
##### UPDT
|
||||
- Resignation Field in Employee Master
|
||||
363
hr_resignation/i18n/ar_001.po
Normal file
@@ -0,0 +1,363 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_resignation
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-02-12 03:50+0000\n"
|
||||
"PO-Revision-Date: 2020-02-12 03:50+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr "الإجراءات اللازمة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
|
||||
msgid "Approve"
|
||||
msgstr "يوافق"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__approved
|
||||
msgid "Approved"
|
||||
msgstr "وافق"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__approved_revealing_date
|
||||
msgid "Approved Date"
|
||||
msgstr "تاريخ الموافقة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model_terms:ir.actions.act_window,help:hr_resignation.view_approved_resignation
|
||||
#: model:ir.actions.act_window,name:hr_resignation.view_approved_resignation
|
||||
#: model:ir.ui.menu,name:hr_resignation.employee_resignation_approved
|
||||
msgid "Approved Resignation"
|
||||
msgstr "تمت الموافقة على الاستقالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid "Approved relieving date must be anterior to confirmed date"
|
||||
msgstr "يجب أن يكون تاريخ التخفيف المعتمد هو الأمامي للتاريخ المؤكد"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr "عدد المرفقات"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__cancel
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
|
||||
msgid "Cancel"
|
||||
msgstr "إلغاء"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__confirm
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
|
||||
msgid "Confirm"
|
||||
msgstr "تؤكد"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "انشأ من قبل"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__create_date
|
||||
msgid "Created on"
|
||||
msgstr "تم إنشاؤها على"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__expected_revealing_date
|
||||
msgid "Date on which he is revealing from the company"
|
||||
msgstr "التاريخ الذي يكشف عنه من الشركة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__resign_confirm_date
|
||||
msgid "Date on which the request is confirmed"
|
||||
msgstr "تاريخ تأكيد الطلب"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__department_id
|
||||
msgid "Department"
|
||||
msgstr "قسم"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__department_id
|
||||
msgid "Department of the employee"
|
||||
msgstr "قسم الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "اسم العرض"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__draft
|
||||
msgid "Draft"
|
||||
msgstr "مشروع"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model,name:hr_resignation.model_hr_employee
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__employee_id
|
||||
msgid "Employee"
|
||||
msgstr "الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.actions.act_window,name:hr_resignation.view_employee_resignation
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_tree
|
||||
msgid "Employee Resignation"
|
||||
msgstr "استقالة الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model_terms:ir.actions.act_window,help:hr_resignation.view_employee_resignation
|
||||
msgid "Employee Resignation Form"
|
||||
msgstr "نموذج استقالة الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid "Enter Approved Relieving Date"
|
||||
msgstr "أدخل تاريخ التخفيف المعتمد"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr "متابعون"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr "(المتابعون (القنوات"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr "(المتابعون (الشركاء"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.actions.server,name:hr_resignation.ir_cron_data_employee_resignation_ir_actions_server
|
||||
#: model:ir.cron,cron_name:hr_resignation.ir_cron_data_employee_resignation
|
||||
#: model:ir.cron,name:hr_resignation.ir_cron_data_employee_resignation
|
||||
msgid "HR Resignation: update employee"
|
||||
msgstr "استقالة الموارد البشرية: تحديث الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__id
|
||||
msgid "ID"
|
||||
msgstr "هوية شخصية"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_needaction
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_unread
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr "إذا تم تحديد ذلك ، فإن الرسائل الجديدة تتطلب اهتمامك."
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_error
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr "إذا تم تحديده ، فبعض الرسائل بها خطأ في التسليم."
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr "هو تابع"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__joined_date
|
||||
msgid "Join Date"
|
||||
msgstr "تاريخ الانضمام"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__joined_date
|
||||
msgid "Joining date of the employee"
|
||||
msgstr "تاريخ انضمام الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "آخر تعديل في"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "آخر تحديث بواسطة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "آخر تحديث في"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr "المرفق الرئيسي"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr "خطأ في تسليم الرسالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_ids
|
||||
msgid "Messages"
|
||||
msgstr "رسائل"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__employee_id
|
||||
msgid "Name of the employee for whom the request is creating"
|
||||
msgstr "اسم الموظف الذي يتم إنشاء الطلب له"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid "New"
|
||||
msgstr "جديد"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__notice_period
|
||||
msgid "Notice Period"
|
||||
msgstr "فترة إشعار"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr "عدد الإجراءات"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr "عدد الاخطاء"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr "عدد الرسائل التي تتطلب إجراء"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr "عدد الرسائل مع خطأ التسليم"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr "عدد الرسائل غير المقروءة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__name
|
||||
msgid "Order Reference"
|
||||
msgstr "ترتيب المرجعي"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__reason
|
||||
msgid "Reason"
|
||||
msgstr "السبب"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
|
||||
msgid "Reject"
|
||||
msgstr "رفض"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__expected_revealing_date
|
||||
msgid "Relieving Date"
|
||||
msgstr "تاريخ تخفيف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid "Relieving date must be anterior to joining date"
|
||||
msgstr "يجب أن يكون تاريخ التخفيف أمام تاريخ الانضمام"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_employee__resign_date
|
||||
msgid "Resign Date"
|
||||
msgstr "تاريخ الاستقالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__resign_confirm_date
|
||||
msgid "Resign confirm date"
|
||||
msgstr "استقالة تأكيد التاريخ"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.ui.menu,name:hr_resignation.employee_resignation
|
||||
msgid "Resignation"
|
||||
msgstr "استقالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.ui.menu,name:hr_resignation.employee_resignation_request
|
||||
msgid "Resignation Request"
|
||||
msgstr "طلب الاستقالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr "خطأ في تسليم الرسائل القصيرة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__reason
|
||||
msgid "Specify reason for leaving the company"
|
||||
msgstr "تحديد سبب مغادرة الشركة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__state
|
||||
msgid "Status"
|
||||
msgstr "الحالة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__approved_revealing_date
|
||||
msgid "The date approved for the relieving"
|
||||
msgstr "التاريخ المعتمد للتخفيف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"There is a resignation request in confirmed or approved state for this "
|
||||
"employee"
|
||||
msgstr "هناك طلب استقالة في حالة مؤكدة أو معتمدة لهذا الموظف"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_unread
|
||||
msgid "Unread Messages"
|
||||
msgstr "رسائل غير مقروءة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr "عداد الرسائل غير المقروءة"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr "رسائل الموقع"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr "سجل اتصالات الموقع"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: code:addons/hr_resignation/models/hr_resignation.py:0
|
||||
#, python-format
|
||||
msgid "You cannot create request for other employees"
|
||||
msgstr "لا يمكنك إنشاء طلب للموظفين الآخرين"
|
||||
|
||||
#. module: hr_resignation
|
||||
#: model:ir.model,name:hr_resignation.model_hr_resignation
|
||||
msgid "hr.resignation"
|
||||
msgstr ""
|
||||
2
hr_resignation/models/__init__.py
Executable file
@@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import hr_resignation
|
||||
178
hr_resignation/models/hr_resignation.py
Executable file
@@ -0,0 +1,178 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
date_format = "%Y-%m-%d"
|
||||
RESIGNATION_TYPE = [('resigned', 'Normal Resignation'),
|
||||
('fired', 'Fired by the company')]
|
||||
|
||||
|
||||
class HrResignation(models.Model):
|
||||
_name = 'hr.resignation'
|
||||
_inherit = 'mail.thread'
|
||||
_rec_name = 'employee_id'
|
||||
|
||||
name = fields.Char(string='Order Reference', required=True, copy=False, readonly=True, index=True,
|
||||
default=lambda self: _('New'))
|
||||
employee_id = fields.Many2one('hr.employee', string="Employee", default=lambda self: self.env.user.employee_id.id,
|
||||
help='Name of the employee for whom the request is creating')
|
||||
department_id = fields.Many2one('hr.department', string="Department", related='employee_id.department_id',
|
||||
help='Department of the employee')
|
||||
resign_confirm_date = fields.Date(string="Confirmed Date",
|
||||
help='Date on which the request is confirmed by the employee.',
|
||||
track_visibility="always")
|
||||
approved_revealing_date = fields.Date(string="Approved Last Day Of Employee",
|
||||
help='Date on which the request is confirmed by the manager.',
|
||||
track_visibility="always")
|
||||
joined_date = fields.Date(string="Join Date", required=False, readonly=True, related="employee_id.joining_date",
|
||||
help='Joining date of the employee.i.e Start date of the first contract')
|
||||
|
||||
expected_revealing_date = fields.Date(string="Last Day of Employee", required=True,
|
||||
help='Employee requested date on which he is revealing from the company.')
|
||||
reason = fields.Text(string="Reason", required=True, help='Specify reason for leaving the company')
|
||||
notice_period = fields.Char(string="Notice Period")
|
||||
state = fields.Selection(
|
||||
[('draft', 'Draft'), ('confirm', 'Confirm'), ('approved', 'Approved'), ('cancel', 'Rejected')],
|
||||
string='Status', default='draft', track_visibility="always")
|
||||
resignation_type = fields.Selection(selection=RESIGNATION_TYPE, help="Select the type of resignation: normal "
|
||||
"resignation or fired by the company")
|
||||
read_only = fields.Boolean(string="check field")
|
||||
employee_contract = fields.Char(String="Contract")
|
||||
|
||||
@api.onchange('employee_id')
|
||||
@api.depends('employee_id')
|
||||
def _compute_read_only(self):
|
||||
""" Use this function to check weather the user has the permission to change the employee"""
|
||||
res_user = self.env['res.users'].search([('id', '=', self._uid)])
|
||||
print(res_user.has_group('hr.group_hr_user'))
|
||||
if res_user.has_group('hr.group_hr_user'):
|
||||
self.read_only = True
|
||||
else:
|
||||
self.read_only = False
|
||||
|
||||
# @api.onchange('employee_id')
|
||||
# def set_join_date(self):
|
||||
# self.joined_date = self.employee_id.joining_date if self.employee_id.joining_date else ''
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
# assigning the sequence for the record
|
||||
if vals.get('name', _('New')) == _('New'):
|
||||
vals['name'] = self.env['ir.sequence'].next_by_code('hr.resignation') or _('New')
|
||||
res = super(HrResignation, self).create(vals)
|
||||
return res
|
||||
|
||||
@api.constrains('employee_id')
|
||||
def check_employee(self):
|
||||
# Checking whether the user is creating leave request of his/her own
|
||||
for rec in self:
|
||||
if not self.env.user.has_group('hr.group_hr_user'):
|
||||
if rec.employee_id.user_id.id and rec.employee_id.user_id.id != self.env.uid:
|
||||
raise ValidationError(_('You cannot create request for other employees'))
|
||||
|
||||
@api.onchange('employee_id')
|
||||
@api.depends('employee_id')
|
||||
def check_request_existence(self):
|
||||
# Check whether any resignation request already exists
|
||||
for rec in self:
|
||||
if rec.employee_id:
|
||||
resignation_request = self.env['hr.resignation'].search([('employee_id', '=', rec.employee_id.id),
|
||||
('state', 'in', ['confirm', 'approved'])])
|
||||
if resignation_request:
|
||||
raise ValidationError(_('There is a resignation request in confirmed or'
|
||||
' approved state for this employee'))
|
||||
if rec.employee_id:
|
||||
no_of_contract = self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)])
|
||||
for contracts in no_of_contract:
|
||||
if contracts.state == 'open':
|
||||
rec.employee_contract = contracts.name
|
||||
rec.notice_period = contracts.notice_days
|
||||
|
||||
@api.constrains('joined_date')
|
||||
def _check_dates(self):
|
||||
# validating the entered dates
|
||||
for rec in self:
|
||||
resignation_request = self.env['hr.resignation'].search([('employee_id', '=', rec.employee_id.id),
|
||||
('state', 'in', ['confirm', 'approved'])])
|
||||
if resignation_request:
|
||||
raise ValidationError(_('There is a resignation request in confirmed or'
|
||||
' approved state for this employee'))
|
||||
|
||||
def confirm_resignation(self):
|
||||
if self.joined_date:
|
||||
if self.joined_date >= self.expected_revealing_date:
|
||||
raise ValidationError(_('Last date of the Employee must be anterior to Joining date'))
|
||||
for rec in self:
|
||||
rec.state = 'confirm'
|
||||
rec.resign_confirm_date = str(datetime.now())
|
||||
else:
|
||||
raise ValidationError(_('Please set joining date for employee'))
|
||||
|
||||
def cancel_resignation(self):
|
||||
for rec in self:
|
||||
rec.state = 'cancel'
|
||||
|
||||
def reject_resignation(self):
|
||||
for rec in self:
|
||||
rec.state = 'cancel'
|
||||
|
||||
def reset_to_draft(self):
|
||||
for rec in self:
|
||||
rec.state = 'draft'
|
||||
rec.employee_id.active = True
|
||||
rec.employee_id.resigned = False
|
||||
rec.employee_id.fired = False
|
||||
|
||||
def approve_resignation(self):
|
||||
for rec in self:
|
||||
if rec.expected_revealing_date and rec.resign_confirm_date:
|
||||
no_of_contract = self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)])
|
||||
for contracts in no_of_contract:
|
||||
if contracts.state == 'open':
|
||||
rec.employee_contract = contracts.name
|
||||
rec.state = 'approved'
|
||||
rec.approved_revealing_date = rec.resign_confirm_date + timedelta(days=contracts.notice_days)
|
||||
else:
|
||||
rec.approved_revealing_date = rec.expected_revealing_date
|
||||
# Changing state of the employee if resigning today
|
||||
if rec.expected_revealing_date <= fields.Date.today() and rec.employee_id.active:
|
||||
rec.employee_id.active = False
|
||||
# Changing fields in the employee table with respect to resignation
|
||||
rec.employee_id.resign_date = rec.expected_revealing_date
|
||||
if rec.resignation_type == 'resigned':
|
||||
rec.employee_id.resigned = True
|
||||
else:
|
||||
rec.employee_id.fired = True
|
||||
# Removing and deactivating user
|
||||
if rec.employee_id.user_id:
|
||||
rec.employee_id.user_id.active = False
|
||||
rec.employee_id.user_id = None
|
||||
else:
|
||||
raise ValidationError(_('Please enter valid dates.'))
|
||||
|
||||
def update_employee_status(self):
|
||||
resignation = self.env['hr.resignation'].search([('state', '=', 'approved')])
|
||||
for rec in resignation:
|
||||
if rec.expected_revealing_date <= fields.Date.today() and rec.employee_id.active:
|
||||
rec.employee_id.active = False
|
||||
# Changing fields in the employee table with respect to resignation
|
||||
rec.employee_id.resign_date = rec.expected_revealing_date
|
||||
if rec.resignation_type == 'resigned':
|
||||
rec.employee_id.resigned = True
|
||||
else:
|
||||
rec.employee_id.fired = True
|
||||
# Removing and deactivating user
|
||||
if rec.employee_id.user_id:
|
||||
rec.employee_id.user_id.active = False
|
||||
rec.employee_id.user_id = None
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
resign_date = fields.Date('Resign Date', readonly=True, help="Date of the resignation")
|
||||
resigned = fields.Boolean(string="Resigned", default=False, store=True,
|
||||
help="If checked then employee has resigned")
|
||||
fired = fields.Boolean(string="Fired", default=False, store=True, help="If checked then employee has fired")
|
||||
3
hr_resignation/security/ir.model.access.csv
Executable file
@@ -0,0 +1,3 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
view_hr_resignation,view.hr.resignation,hr_resignation.model_hr_resignation,base.group_user,1,1,1,0
|
||||
view_hr_employee,view.hr.employee,hr.model_hr_employee,base.group_user,1,1,1,0
|
||||
|
19
hr_resignation/security/security.xml
Executable file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- To view their own record only-->
|
||||
<record id="hr_resignation_personal_rule" model="ir.rule">
|
||||
<field name="name">Employee Resignation User</field>
|
||||
<field ref="hr_resignation.model_hr_resignation" name="model_id"/>
|
||||
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
|
||||
</record>
|
||||
<!-- Manager permission to view all record -->
|
||||
<record id="hr_resignation_personal_rule_manager" model="ir.rule">
|
||||
<field name="name">Employee Resignation Manager</field>
|
||||
<field ref="hr_resignation.model_hr_resignation" name="model_id"/>
|
||||
<field name="domain_force">['|',('employee_id.user_id','!=',user.id),('employee_id.user_id','=',False)]</field>
|
||||
<field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
BIN
hr_resignation/static/description/banner.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
hr_resignation/static/description/icon.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
hr_resignation/static/description/images/appraisal_image.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
hr_resignation/static/description/images/bio_image.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
hr_resignation/static/description/images/checked.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
hr_resignation/static/description/images/checked.psd
Normal file
BIN
hr_resignation/static/description/images/core_image.gif
Normal file
|
After Width: | Height: | Size: 612 KiB |
BIN
hr_resignation/static/description/images/dash_image.gif
Normal file
|
After Width: | Height: | Size: 408 KiB |
BIN
hr_resignation/static/description/images/emp.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 388 KiB |
BIN
hr_resignation/static/description/images/openhrms.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
hr_resignation/static/description/images/salary_image.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
hr_resignation/static/description/images/shift_image.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
508
hr_resignation/static/description/index.html
Normal file
@@ -0,0 +1,508 @@
|
||||
<div class="row"
|
||||
style="margin: 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4;text-align: center; margin: auto; display: flex;justify-content: center;">
|
||||
<a href="https://www.openhrms.com/" target="_blank"><img src="images/openhrms.png"
|
||||
style=" width: 293px; padding: 1rem 0rem; margin: auto"
|
||||
alt="cybrosys-logo"></a>
|
||||
</div>
|
||||
<div class="row"
|
||||
style="margin:75px 0;position: relative;color: #000;background-position: center;background: #ffffff;border-bottom: 1px solid #e4e4e4; padding-bottom: 30px;">
|
||||
<div class="col-md-7 col-sm-12 col-xs-12" style="padding: 0px">
|
||||
<div style=" margin: 0 0 0px;padding: 20px 0 10;font-size: 23px;line-height: 35px;font-weight: 400;color: #000;border-top: 1px solid rgba(255,255,255,0.1);border-bottom: 1px solid rgba(255,255,255,0.11);text-align: left;">
|
||||
<h1 style="font-size: 39px;font-weight: 600;margin: 0px !important;"> Employee Resignation </h1>
|
||||
<h3 style="font-size: 21px;margin-top: 8px;position: relative;"> Easily create, manage, and track employee resignations.
|
||||
</h3>
|
||||
</div>
|
||||
<h2 style="font-weight: 600;font-size: 1.8rem;margin-top: 15px;">Key Highlights</h2>
|
||||
<ul style=" padding: 0 1px; list-style: none; ">
|
||||
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
|
||||
style=" width: 22px; margin-right: 6px; "
|
||||
alt="check">
|
||||
Employee will create his/her resignation request
|
||||
</li>
|
||||
<li style="display: flex;align-items: center;padding: 8px 0;font-size: 18px;"><img src="images/checked.png"
|
||||
style=" width: 22px; margin-right: 6px; "
|
||||
alt="check">
|
||||
Higher level officers can approve or reject the request
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-5 col-sm-12 col-xs-12"><img src="images/emp.png" class="img-responsive" alt=""></div>
|
||||
</div>
|
||||
<div>
|
||||
<section class="oe_container" style="padding: 1rem 0rem 1rem; background-color: #ffffff !important;">
|
||||
<div class="row py-4 px-3">
|
||||
<div class="w-100" style="padding-top:30px;padding-bottom:45px;border-radius: 10px;">
|
||||
<ul role="tablist" class="nav nav-pills justify-content-center" data-tabs="tabs" id="pills-tab"
|
||||
style="border: none;background: unset;">
|
||||
<li class="nav-item mr-1 mb-3"
|
||||
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
|
||||
<a id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab"
|
||||
aria-controls="pills-home" aria-selected="true" class="nav-link active show"
|
||||
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Overview </a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item mr-1 mb-3"
|
||||
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #d31c22;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
|
||||
<a id="pills-home-tab" data-toggle="pill" href="#pills-features" role="tab"
|
||||
aria-controls="pills-home" aria-selected="true" class="nav-link "
|
||||
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Features </a>
|
||||
</li>
|
||||
<li class="nav-item mr-1 mb-3"
|
||||
style="font-size: 1.05rem;font-weight: 400;transition: all .15s ease;color: #ffffff;background-color: #00438b;box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);border: 0;font-family: 'Open Sans',sans-serif;width: 140px;border-radius: 0.30rem;">
|
||||
<a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab"
|
||||
aria-controls="pills-profile" aria-selected="false"
|
||||
style="color: #fff;line-height: 33px;border: 0;border-radius: .25rem;font-weight: 400; text-align: center;">Screenshots </a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="pills-tabContent"
|
||||
style="padding-top: 30px; padding-bottom: 30px; padding: 30px;">
|
||||
<div class="px-3 pt-1 tab-pane fade active show" id="pills-home" role="tabpanel" aria-labelledby="
|
||||
pills-home-tab">
|
||||
<!-- Overview-->
|
||||
<h2 style="font-weight: 600;text-align: center;width: 100%;">Overview</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<h3 class="oe_slogan"
|
||||
style="text-align: center;font-size: 19px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 31px;font-weight: 400;letter-spacing: .5px;margin-bottom: 21px;">
|
||||
Employee Resignation is a component of Open HRMS suit. This module manages employee resignation process. Employee can fill and send resignation request from their portal and higher level officers can take appropriate actions on it.
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="px-3 pt-1 tab-pane fade " id="pills-features" role="tabpanel" aria-labelledby="
|
||||
pills-home-tab">
|
||||
<!-- feature tab-->
|
||||
<h2 style="font-weight: 600;text-align: center;width: 100%;"> Employee Resignation </h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<ul>
|
||||
<li class="mb8"
|
||||
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
|
||||
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
|
||||
Employee will create his/her resignation request
|
||||
</li>
|
||||
<li class="mb8"
|
||||
style="font-family: Roboto;color: #000;list-style-type: square;font-size: 19px;line-height: 50px; background-color: #3a34380d;padding-left: 20px;border-radius: 7px;list-style: none;">
|
||||
<img src="images/checked.png" style=" width: 22px; margin-right: 6px; " alt="check">
|
||||
Higher level officers can approve or reject the request
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Screenshot tab-->
|
||||
<div class="px-3 tab-pane fade" id="pills-profile" role="tabpanel"
|
||||
aria-labelledby="pills-profile-tab">
|
||||
<div class="tab-pane">
|
||||
<h2 style="font-weight: 600;text-align: center;width: 100%;">Screenshots</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<div>
|
||||
<section class="oe_container">
|
||||
<div id="demo" class="row carousel slide mb32" data-ride="carousel">
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active" style="min-height: 0px;">
|
||||
<div class="col-xs-12 col-sm-12 col-md-12 mb16 mt16"
|
||||
style="float: left;">
|
||||
<h3 class="alert"
|
||||
style="font-weight:400;color: #091E42;background: #fff;text-align: left;border-radius: 0; font-size: 18px;">
|
||||
<img src="images/checked.png"
|
||||
style=" width: 22px; margin-right: 6px; " alt="check">
|
||||
Working of HR resignation module
|
||||
</h3>
|
||||
<div style=""><img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/open-hrms-resignation.gif"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- faq tab-->
|
||||
<div class="px-2 px-lg-4 pt-3 tab-pane fade" id="pills-contact"
|
||||
role="tabpanel"
|
||||
aria-labelledby="pills-contact-tab">
|
||||
<ul class="list-unstyled">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
|
||||
<h2 style="font-weight: 600;text-align: center;margin-bottom: 25px;width: 100%;">Suggested Products</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<div id="demo1" class="row carousel slide" data-ride="carousel">
|
||||
<!-- The slideshow -->
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active" style="min-height: 0px;">
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/ohrms_core/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/core_image.gif">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/hrms_dashboard/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/dash_image.gif">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/oh_hr_zk_attendance/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/bio_image.png">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-item" style="min-height: 0px;">
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/oh_appraisal/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/appraisal_image.png">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/hr_employee_shift/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/shift_image.png">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
|
||||
<a
|
||||
href="https://apps.odoo.com/apps/modules/13.0/ohrms_salary_advance/" target="_blank">
|
||||
<div style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
|
||||
<img class="img img-responsive center-block"
|
||||
style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
|
||||
src="images/salary_image.png">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Left and right controls -->
|
||||
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
|
||||
style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
|
||||
class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a class="carousel-control-next"
|
||||
href="#demo1"
|
||||
data-slide="next"
|
||||
style="right:-25px;width: 35px;color: #000;">
|
||||
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
|
||||
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Service</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<div class="row" style=" display: flex; justify-content: center; flex-wrap: wrap;width: 100%; ">
|
||||
<!-- <div style="display:flex;padding-top: 20px;justify-content: space-between;"> -->
|
||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
|
||||
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-customization.png"
|
||||
style="width: 100%;border-radius: 100%;"/> </a></div>
|
||||
<h3 class="oe_slogan"
|
||||
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
|
||||
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Odoo Customization </a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
|
||||
href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-erp-implementation.png"
|
||||
style="width: 100%;border-radius: 100%;"/> </a></div>
|
||||
<h3 class="oe_slogan"
|
||||
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
|
||||
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Odoo Implementation </a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
|
||||
href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-erp-integration.png"
|
||||
style="width: 100%;border-radius: 100%;"/> </a></div>
|
||||
<h3 class="oe_slogan"
|
||||
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
|
||||
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Odoo Integration </a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
|
||||
href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-erp-support.png"
|
||||
style="width: 100%;border-radius: 100%;"/> </a></div>
|
||||
<h3 class="oe_slogan"
|
||||
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
|
||||
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Odoo Support</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-6 col-xs-12">
|
||||
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"><a
|
||||
href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/hire-odoo-developer.png"
|
||||
style="width: 100%;border-radius: 100%;"/> </a></div>
|
||||
<h3 class="oe_slogan"
|
||||
style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
|
||||
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Hire Odoo Developers</a>
|
||||
</h3>
|
||||
</a>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</section>
|
||||
<section class="row" style="padding: 2rem 3rem 1rem;margin:0px">
|
||||
<div class="row" style="margin: 0">
|
||||
<h2 style="font-weight: 600;margin-bottom: 20px;text-align: center;width: 100%;">Our Industries</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<!-- <div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> -->
|
||||
<div class="row" style="width: 100%">
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
|
||||
Trading </a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
|
||||
Easily procure and sell your products.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
|
||||
target="_blank"> <img src="https://www.cybrosys.com/images/odoo-index-industry-2.png"
|
||||
alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;" style=" margin-bottom: 10px; ">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/"
|
||||
target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
|
||||
Manufacturing</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
|
||||
Plan, track and schedule your operations.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
|
||||
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
|
||||
Restaurant</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
|
||||
Run your bar or restaurant methodical.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none;font-family: 'Montserrat',sans-serif;">
|
||||
POS</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;font-family: 'Montserrat',sans-serif;">
|
||||
Easy configuring and convivial selling.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
E-commerce & Website</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
|
||||
Mobile friendly, awe-inspiring product pages.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
|
||||
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Hotel Management</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
|
||||
An all-inclusive hotel management application.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
|
||||
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Education</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
|
||||
A Collaborative platform for educational management.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-sm-6 col-xs-12" style=" margin-bottom: 10px; ">
|
||||
<div>
|
||||
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> <img
|
||||
src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry"
|
||||
style=" border-radius: 100%;width:100%;"/> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:70%;float:left;">
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
|
||||
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"
|
||||
style="list-style: none; color:#000; text-decoration: none; font-family: 'Montserrat',sans-serif;">
|
||||
Service Management</a>
|
||||
</h3>
|
||||
<h3 class="oe_slogan"
|
||||
style=" text-align: left;font-size: 12px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px; font-family: 'Montserrat',sans-serif;">
|
||||
Keep track of services and invoice accordingly.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
|
||||
<center>
|
||||
<div class="col-md-12" style="margin: auto !important;
|
||||
width: 70%;
|
||||
padding: 30px;">
|
||||
<h2 style="font-weight: 600;text-align: center;width: 100%;">Need Any Help?</h2>
|
||||
<hr style="margin-top: 0px;margin-bottom: 2%;border: 0;text-align: center;border-top: 3px solid #d21c22;width: 5%;">
|
||||
<h4 style="font-size:16px;"> If you have anything to share with us based on your use of this module, please
|
||||
let us know. We are ready to offer our support.
|
||||
</h4>
|
||||
<div class="col-md-6" style="float:left; padding:20px;">
|
||||
<h4><i class="fa fa-envelope"></i>Email us </h4>
|
||||
<p>odoo@cybrosys.com / info@cybrosys.com</p>
|
||||
</div>
|
||||
<div class="col-md-6" style="float:left; padding:20px;">
|
||||
<h4><i class="fa fa-phone"></i> Contact Us </h4>
|
||||
<a href="https://www.cybrosys.com/contact/" target="_blank"> www.cybrosys.com</a>
|
||||
</div>
|
||||
</div>
|
||||
Suggested Products
|
||||
</center>
|
||||
</section>
|
||||
<section class="oe_container" style="padding: 0% 0% 6% 0%;">
|
||||
<div class="oe_slogan" style="margin-bottom: 0px;">
|
||||
<div style=" display: flex; justify-content: center; flex-wrap: wrap; ">
|
||||
</div>
|
||||
<br>
|
||||
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;"
|
||||
class="center-block">
|
||||
<div style=" display: flex; justify-content: center; flex-wrap: wrap; "><a href="https://twitter.com/cybrosys"
|
||||
target="_blank"><i
|
||||
class="fa fa-2x fa-twitter"
|
||||
style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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; height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></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;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a>
|
||||
</td>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
BIN
hr_resignation/static/description/resignation_web.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
hr_resignation/static/image/resign_employee_id.jpeg
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
25
hr_resignation/views/approved_resignation.xml
Executable file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record model="ir.actions.act_window" id="view_approved_resignation">
|
||||
<field name="name">Approved Resignation</field>
|
||||
<field name="res_model">hr.resignation</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('state', '=', 'approved')]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">Approved Resignation
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="employee_resignation_approved"
|
||||
parent="employee_resignation"
|
||||
name="Approved Resignation"
|
||||
action="view_approved_resignation"
|
||||
groups="hr.group_hr_user"
|
||||
sequence="4"/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
|
||||
25
hr_resignation/views/hr_employee.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<record model="ir.ui.view" id="hr_employee_resign_form_view">
|
||||
<field name="name">hr.employee.form.view</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="joining_date" position="after">
|
||||
<field name="resign_date" attrs="{'invisible': [('active', '!=', False)]}"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="hr_employee_resigned_filter">
|
||||
<field name="name">hr.employee.form.filter</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="job_id" position="after">
|
||||
<filter string="Resigned Employees" name="resigned" domain="['&',('resigned', '=', True),('active', '=', False)]"/>
|
||||
<filter string="Fired Employees" name="fired" domain="['&',('fired', '=', True),('active', '=', False)]"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
15
hr_resignation/views/resignation_sequence.xml
Executable file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Sequences for hr.resignation -->
|
||||
<record id="seq_hr_resignation" model="ir.sequence">
|
||||
<field name="name">Open HRMS Resignation</field>
|
||||
<field name="code">hr.resignation</field>
|
||||
<field name="prefix">RES</field>
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
91
hr_resignation/views/resignation_view.xml
Executable file
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="employee_resignation_tree" model="ir.ui.view">
|
||||
<field name="name">hr.resignation.tree</field>
|
||||
<field name="model">hr.resignation</field>
|
||||
<field name="priority" eval="8" />
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Employee Resignation">
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="employee_contract"/>
|
||||
<field name="joined_date" readonly="1"/>
|
||||
<field name="expected_revealing_date" />
|
||||
<field name="approved_revealing_date"/>
|
||||
<field name="resignation_type"/>
|
||||
<field name="notice_period"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="employee_resignation_form" model="ir.ui.view">
|
||||
<field name="name">hr.resignation.form</field>
|
||||
<field name="model">hr.resignation</field>
|
||||
<field name="priority" eval="8" />
|
||||
<field name="arch" type="xml">
|
||||
<form string="Employee Resignation">
|
||||
<header>
|
||||
<button string="Confirm" type="object" name="confirm_resignation" states='draft' class="oe_highlight"/>
|
||||
<button string="Cancel" type="object" name="cancel_resignation" states='draft'/>
|
||||
<button string="Approve" type="object" groups="hr.group_hr_user" name="approve_resignation" states='confirm'/>
|
||||
<button string="Reject" type="object" groups="hr.group_hr_user" name="reject_resignation" states='confirm'/>
|
||||
<button string="Set to Draft" type="object" groups="hr.group_hr_manager" name="reset_to_draft" states='approved'/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Employee Details">
|
||||
<field name="read_only" invisible="1"/>
|
||||
<field name="employee_id" attrs="{'readonly': ['|',('read_only','=',False),('state','=','approved')]}"/>
|
||||
<field name="department_id"/>
|
||||
<field name="employee_contract"/>
|
||||
</group>
|
||||
<group string="Dates">
|
||||
<field name="joined_date"/>
|
||||
<field name="resign_confirm_date"
|
||||
readonly="1"
|
||||
attrs="{'invisible':[('resign_confirm_date','=',False)]}"/>
|
||||
<field name="expected_revealing_date" attrs="{'readonly': [('state','=','approved')]}"/>
|
||||
<field name="approved_revealing_date"
|
||||
groups="hr.group_hr_user"/>
|
||||
<field name="notice_period"/>
|
||||
</group>
|
||||
<group string="Resignation Details">
|
||||
<field name="resignation_type" string="Type" groups="hr.group_hr_user" attrs="{'readonly': [('state','=','approved')]}"/>
|
||||
<field name="reason" attrs="{'readonly': [('state','=','approved')]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="view_employee_resignation">
|
||||
<field name="name">Employee Resignation</field>
|
||||
<field name="res_model">hr.resignation</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('state', 'in', ('draft', 'confirm','cancel'))]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">Employee Resignation Form
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem id="employee_resignation" name="Resignation"
|
||||
groups="base.group_user"
|
||||
web_icon="hr_resignation,static/description/resignation_web.png"
|
||||
sequence="21"/>
|
||||
<menuitem id="employee_resignation_request" parent="employee_resignation" name="Resignation Request"
|
||||
action="view_employee_resignation" groups="base.group_user" sequence="4"/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
|
||||