add new module

This commit is contained in:
sonal arora
2020-07-21 10:09:46 +00:00
parent 800e7fdceb
commit c0d10e3fbe
1063 changed files with 243750 additions and 5 deletions

40
hr_resignation/README.rst Executable file
View 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
View File

@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import models

49
hr_resignation/__manifest__.py Executable file
View 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',
}

View 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>

View 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>

View 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

View 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 ""

View File

@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import hr_resignation

View 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")

View 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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 view_hr_resignation view.hr.resignation hr_resignation.model_hr_resignation base.group_user 1 1 1 0
3 view_hr_employee view.hr.employee hr.model_hr_employee base.group_user 1 1 1 0

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View 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>

View 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="['&amp;',('resigned', '=', True),('active', '=', False)]"/>
<filter string="Fired Employees" name="fired" domain="['&amp;',('fired', '=', True),('active', '=', False)]"/>
</field>
</field>
</record>
</odoo>

View 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>

View 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>