Browse Source

[ADD] Initial Commit

pull/72/head
Sreejith P 7 years ago
parent
commit
aa6b30a013
  1. 39
      hr_employee_transfer/README.rst
  2. 2
      hr_employee_transfer/__init__.py
  3. 45
      hr_employee_transfer/__manifest__.py
  4. 6
      hr_employee_transfer/docs/RELEASE_NOTES.md
  5. 4
      hr_employee_transfer/models/__init__.py
  6. 106
      hr_employee_transfer/models/employee_transfer.py
  7. 16
      hr_employee_transfer/models/hr_contract.py
  8. 19
      hr_employee_transfer/models/hr_employee.py
  9. 40
      hr_employee_transfer/models/res_company.py
  10. 18
      hr_employee_transfer/security/branch_security.xml
  11. 5
      hr_employee_transfer/security/ir.model.access.csv
  12. BIN
      hr_employee_transfer/static/description/HRMS-BUTTON.png
  13. BIN
      hr_employee_transfer/static/description/banner.jpg
  14. BIN
      hr_employee_transfer/static/description/create_a_transfer.png
  15. BIN
      hr_employee_transfer/static/description/create_contract.png
  16. BIN
      hr_employee_transfer/static/description/cybro-service.png
  17. BIN
      hr_employee_transfer/static/description/cybro_logo.png
  18. BIN
      hr_employee_transfer/static/description/icon.png
  19. 111
      hr_employee_transfer/static/description/index.html
  20. 80
      hr_employee_transfer/views/employee_transfer.xml

39
hr_employee_transfer/README.rst

@ -0,0 +1,39 @@
Open HRMS Employee Transfer v11
===============================
Employee transfer between branches.
Depends
=======
[hr] addon Odoo
Tech
====
* [Python] - Models
* [XML] - Odoo views
Installation
============
- www.odoo.com/documentation/11.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: Sreejith P @ cybrosys, sreejith@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

2
hr_employee_transfer/__init__.py

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

45
hr_employee_transfer/__manifest__.py

@ -0,0 +1,45 @@
# -*- 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: Sreejith P (<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 Branch Transfer',
'version': '11.0.1.0.0',
'summary': 'Employee transfer between branches',
'category': 'Generic Modules/Human Resources',
'author': 'Cybrosys Techno solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.openhrms.com',
'depends': ['base',
'hr_employee_updation'
],
'data': [
'views/employee_transfer.xml',
'security/ir.model.access.csv',
'security/branch_security.xml',
],
'images': ['static/description/banner.jpg'],
'installable': True,
'application': True,
'auto_install': False,
'license': 'AGPL-3',
}

6
hr_employee_transfer/docs/RELEASE_NOTES.md

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

4
hr_employee_transfer/models/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import employee_transfer
from . import hr_contract
from . import res_company

106
hr_employee_transfer/models/employee_transfer.py

@ -0,0 +1,106 @@
# -*- coding: utf-8 -*-
from datetime import date
from odoo import models, fields, api, _
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
from odoo.exceptions import Warning
class EmployeeTransfer(models.Model):
_name = 'employee.transfer'
_description = 'Employee Transfer'
_order = "id desc"
def _default_employee(self):
emp_ids = self.env['hr.employee'].search([('user_id', '=', self.env.uid)])
return emp_ids and emp_ids[0] or False
name = fields.Char(string='Name', help='Give a name to the Transfer', copy=False, default="/", readonly=True)
employee_id = fields.Many2one('hr.employee', string='Employee', required=True,
help='Select the employee you are going to transfer')
date = fields.Date(string='Date', default=fields.Date.today())
branch = fields.Many2one('transfer.company', string='Transfer Branch', requried=True, copy=False,
help='The Branch/Company which the employee is transferred')
state = fields.Selection(
[('draft', 'New'), ('cancel', 'Cancelled'), ('transfer', 'Transferred'), ('done', 'Done')],
string='Status', readonly=True, copy=False, default='draft',
help=" * The 'Draft' status is used when a transfer is created and unconfirmed Transfer.\n"
" * The 'Transferred' status is used when the user confirm the transfer. It stays in the open status till the other branch/company receive the employee.\n"
" * The 'Done' status is set automatically when the employee is Joined/Received.\n"
" * The 'Cancelled' status is used when user cancel Transfer."
)
sequence_number = fields.Integer(string='Sequence Number', help='A unique sequence number for the Transfer',
default=1, copy=False)
company_id = fields.Many2one('res.company', string='Company', required=True,
related='employee_id.company_id', store=True)
note = fields.Text(string='Internal Notes')
responsible = fields.Many2one('hr.employee', string='Responsible', default=_default_employee, readonly=True)
@api.one
def transfer(self):
obj_emp = self.env['hr.employee'].browse(self.employee_id.id)
emp = {}
if not self.branch:
raise Warning(_(
'You should select the transfer branch/company.'))
for this in self:
emp = {
'name': self.employee_id.name,
'company_id': self.branch.company_id,
}
new_emp = self.env['hr.employee'].create(emp)
if obj_emp.address_home_id:
obj_emp.address_home_id.active = False
for obj_contract in self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)]):
if obj_contract.date_end:
continue
if not obj_contract.date_end:
obj_contract.write({'date_end': date.today().strftime(DEFAULT_SERVER_DATE_FORMAT)})
self.wage = obj_contract.wage
self.state = 'transfer'
self.employee_id = new_emp
obj_emp.write({'active': False})
@api.multi
def receive_employee(self):
for this in self:
if this._context is None:
context = {}
partner = {}
for i in this:
partner = {
'name': i.employee_id.name,
'company_id': i.branch.company_id,
}
partner_created = self.env['res.partner'].create(partner)
self.env['hr.employee'].browse(this.employee_id.id).write({'address_home_id': partner_created.id})
return {
'name': _('Contract'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'hr.contract',
'type': 'ir.actions.act_window',
'target': 'current',
'context': {'default_employee_id': this.employee_id.id,
'default_date_start': this.date,
'default_emp_transfer': this.id,
},
}
@api.one
def cancel_transfer(self):
obj_emp = self.env['hr.employee'].browse(self.employee_id.id)
emp = {
'name': self.employee_id.name,
'company_id': self.company_id.id,
}
obj_emp.write(emp)
for obj_contract in self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)]):
obj_contract.unlink()
self.state = 'cancel'
@api.model
def create(self, vals):
vals['name'] = "Transfer Of " + self.env['hr.employee'].browse(vals['employee_id']).name
res = super(EmployeeTransfer, self).create(vals)
return res

16
hr_employee_transfer/models/hr_contract.py

@ -0,0 +1,16 @@
from odoo import models, fields, api
class HrContract(models.Model):
_inherit = 'hr.contract'
company_id = fields.Many2one('res.company', 'Company', default=lambda self: self.env.user.company_id)
from_transfer = fields.Boolean(string='Transferred', default=False)
emp_transfer = fields.Many2one('employee.transfer', string='Transferred Employee')
@api.model
def create(self, vals):
res = super(HrContract, self).create(vals)
if res.emp_transfer:
self.env['employee.transfer'].browse(res.emp_transfer.id).write({'state': 'done'})
return res

19
hr_employee_transfer/models/hr_employee.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class HrContract(models.Model):
_inherit = 'hr.employee'
transfer_detail = fields.One2many('transfer.detail', 'employee_id', string='Transfer Details')
class TransferDetails(models.Model):
_name = 'transfer.detail'
_description = 'Transfer Details'
employee_id = fields.Many2one('hr.employee', string='Employee')
date = fields.Date(string='Date', copy=False)
company_id = fields.Many2one('res.company', string='Company')
pre_company = fields.Many2one('res.company', string='Previous Company')

40
hr_employee_transfer/models/res_company.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class EmployeeTransfer(models.Model):
_name = 'transfer.company'
_description = 'Transfer Company'
_order = "id desc"
name = fields.Char(string='Name', copy=False, ondelete='cascade')
company_id = fields.Integer(string='Company', help='Company name same as res.company', copy=False)
class ResCompany(models.Model):
_inherit = 'res.company'
def init(self):
obj_company = self.env['res.company'].search([])
for company in obj_company:
obj_branch = self.env['transfer.company'].search([('company_id', '=', company.id)])
com = {}
if not obj_branch:
com = {
'name': company.name,
'company_id': company.id,
}
obj = self.env['transfer.company'].create(com)
@api.model
def create(self, res):
result = super(ResCompany, self).create(res)
com = {}
com = {
'name': result.name,
'company_id': result.id,
}
self.env['transfer.company'].create(com)
return result

18
hr_employee_transfer/security/branch_security.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="employee_rule" model="ir.rule">
<field name="name">Employee Rule</field>
<field name="model_id" ref="hr.model_hr_employee"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="employee_contract_rule" model="ir.rule">
<field name="name">Contract Rules</field>
<field name="model_id" ref="hr_contract.model_hr_contract"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</data>
</odoo>

5
hr_employee_transfer/security/ir.model.access.csv

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_employee_transfer,employee.transfer,model_employee_transfer,hr.group_hr_user,1,1,0,0
access_employee_transfer_manager,employee.transfer.manager,model_employee_transfer,hr.group_hr_manager,1,1,1,0
access_employee_transfer_company,employee.company.manager,base.model_res_company,hr.group_hr_manager,1,1,1,0
access_transfer_company,transfer.company.manager,model_transfer_company,hr.group_hr_manager,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_employee_transfer employee.transfer model_employee_transfer hr.group_hr_user 1 1 0 0
3 access_employee_transfer_manager employee.transfer.manager model_employee_transfer hr.group_hr_manager 1 1 1 0
4 access_employee_transfer_company employee.company.manager base.model_res_company hr.group_hr_manager 1 1 1 0
5 access_transfer_company transfer.company.manager model_transfer_company hr.group_hr_manager 1 1 1 0

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
hr_employee_transfer/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
hr_employee_transfer/static/description/create_a_transfer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
hr_employee_transfer/static/description/create_contract.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
hr_employee_transfer/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
hr_employee_transfer/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

111
hr_employee_transfer/static/description/index.html

@ -0,0 +1,111 @@
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Open HRMS</h2>
<h3 class="oe_slogan">Most advanced open source HR management software</h3>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced oe_mt32">
<div class="oe_span">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openhrms.com/#request-demo">
<img src="HRMS-BUTTON.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Branch Transfer</h2>
<h3 class="oe_slogan">Employee transfer between branches</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
</div>
<div class="oe_row oe_spaced" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<span style="color:green;"> &#9745; </span> Transfer Employee between branches.<br/>
</div>
</div>
</section>
<section class="oe_container ">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32 text-justify" style="text-align: center;">
Transferring employees between company is a basic thing in a organization. Now Odoo lacks a provision for employee transfer. This module gives a basic structure for employee transfer<br/>
Make sure that you are multi company is enabled.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Employee Transfer</h4>
<div class="oe_span12">
<p class='oe_mt32'>
&#x261B; Create a Employee Transfer.<br>
&#x261B; Select the Transfer Company.<br>
&#x261B; Click on the sent button.<br>
</p>
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="create_a_transfer.png">
</div>
</div>
</div>
</section>
<section class="oe_container ">
<div class="oe_row oe_spaced">
<h4 class="oe_slogan">Contract</h4>
<div class="oe_span12">
<p class='oe_mt32'>
&#x261B; Create new contract.<br>
<p>
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="create_contract.png">
</div>
</div>
</div>
</section>
<div class="row section-content">
<div class="col-md-6 img-content">
<h3>Our Odoo Services</h3>
</div> <div class="bc-span col-md-12"><div class="inner-span"><a target="_blank" href="https://www.openhrms.com"><img class="img-border img-responsive thumbnail" src="cybro-service.png"></a></div></div>
</div>
</div>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/" target="_blank"><i
class="fa fa-phone"></i> Contact Us </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.odoo.com/apps/modules/browse?search=open+hrms" target="_blank"><i
class="fa fa-suitcase"></i> Other Open HRMS Addons </a>
<a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"><i
class="fa fa-wrench"></i> Request Customization </a>
</div>
<br>
<a href="https://www.cybrosys.com/" target="_blank">
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
</a>
</div>
</section>

80
hr_employee_transfer/views/employee_transfer.xml

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="employee_transfer" model="ir.ui.view">
<field name="name">Employee Transfer</field>
<field name="model">employee.transfer</field>
<field name="arch" type="xml">
<form string="Employee Transfer">
<header>
<button name="transfer" string="Transfer" class="oe_highlight" type="object" states="draft"
groups="hr.group_hr_manager"/>
<button name="receive_employee" string="Receive" class="oe_highlight" type="object"
groups="hr.group_hr_manager" states="transfer"/>
<button name="cancel_transfer" string="Cancel" type="object"
attrs="{'invisible':[('state','in',('draft', 'cancel'))]}" groups="hr.group_hr_manager"/>
<field name="state" widget="statusbar" statusbar_visible="draft,transfer,done" />
</header>
<sheet>
<div class="oe_title oe_left">
<h2>
<field name="name" class="oe_inline" placeholder="Name"/>
</h2>
</div>
<group>
<group>
<field name="employee_id" options="{'no_create': True}" attrs="{'readonly' : [('state', '!=', 'draft')] }"/>
<field name="date" attrs="{'readonly' : [('state', '!=', 'draft')] }"/>
<field name="branch" groups="base.group_multi_company" options="{'no_create': True}"
attrs="{'readonly' : [('state', '!=', 'draft')] }"/>
</group>
<group>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
<field name="responsible" options="{'no_create': True}"/>
</group>
</group>
<notebook colspan="4">
<page string="Internal Notes" >
<field name="note"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="employee_transfer_tree" model="ir.ui.view">
<field name="name">Employee Transfer Tree</field>
<field name="model">employee.transfer</field>
<field name="arch" type="xml">
<tree string="Employee Transfer" decoration-info="state == 'draft'" decoration-muted="state in ('done','cancel')">
<field name="name"/>
<field name="employee_id"/>
<field name="date"/>
<field name="branch" groups="base.group_multi_company"/>
<!--<field name="amount_total" sum="Amount total" widget="monetary"/>-->
<field name="company_id" groups="base.group_multi_company"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="action_employee_transfer" model="ir.actions.act_window">
<field name="name">Employee Transfer</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">employee.transfer</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new Transfer.
</p><p>
Use this menu to browse previous transfer. To record new
transfer, you may use the create button.
</p>
</field>
</record>
<!--<menuitem id="menu_transfer_root" name="Employee Transfer" parent="hr.menu_hr_root" sequence="2" groups="hr.group_hr_manager"/>-->
<menuitem id="menu_employee_transfer" name="Employee Transfer" parent="hr_employee_updation.menu_hr_management" sequence="3"
action="action_employee_transfer" groups="hr.group_hr_manager"/>
</odoo>
Loading…
Cancel
Save