Key Features
Manage all kind of contribution made by employees and company on payroll basis. For example, monthly insurance fee, monthly labor union membership fee, internal funds, etc.
Unlimited Payroll Contribution Types
- You can define unlimited types of contribution by employee and company which links to Contribution Register. The following fields are available:
- Type name (e.g. Social Insurance, Employee Care Fund, etc)
- Employee Contribution Register, which links to a Contribution Register for computation in salary rule
- Company Contribution Register, which links to a Contribution Register for computation in salary rule
- Employee Contribution Rate, (e.g. 8% of the base wage)
- Company Contribution Rate, (e.g. 18% of the employee's basic wage)
- You can register employee for each and every Payroll Contribution Type.
- The registration status can be confirmed, suspended, resume or done (when the employee resigns)
- Status changes of Registration is logged automatically
Goes into Payslip Computation
- Payroll Contribution information is accessible within salary rules using variable employee.payroll_contribution_reg_ids. Find the default salary rules (i.e. Social Insurance by Employee, Unemployment Insurance by Company, etc) created upon installation of this app for further study.
Reports and Analysis
- Extends the Payroll Analysis offered by the application "HR Advanced & Tuned" to allow analysis by Contribution Register Categories
- Provides analysis on number of registrations over the time
Editions Supported
- Community Edition
- Enterprise Edition
Installation
- Navigate to Apps
- Find with keyword 'to_hr_payroll_contribution'
- Install it as usual then you are done
Default Data
Upon completion of installation, the following date will be created
Contribution Register Categories
- Insurance
- Labor Union
Contribution Registers
- Social Insurance: bound to the contribution register Category 'Insurance' mentioned above
- Health Insurance: bound to the contribution register Category 'Insurance' mentioned above
- Unemployment Insurance: bound to the contribution register Category 'Insurance' mentioned above
- Labor Union: bound to the contribution register Category 'Labor Union' mentioned above
Payroll Contribution Types
- Social Insurance
- Name: Social Insurance
- Code: SINS
- Employee Contribution Register: bound to the contribution register 'Social Insurance' mentioned above
- Employee Contribution Rate: 8%, which you can modify according to the policy of your your company/country
- Company Contribution Register: bound to the contribution register 'Social Insurance' mentioned above
- Company Contribution Rate: 18%, which you can modify according to the policy of your your company/country
- Health Insurance
- Name: Health Insurance
- Code: HINS
- Employee Contribution Register: bound to the contribution register 'Health Insurance' mentioned above
- Employee Contribution Rate: 1.5%, which you can modify according to the policy of your your company/country
- Company Contribution Register: bound to the contribution register 'Health Insurance' mentioned above
- Company Contribution Rate: 3%, which you can modify according to the policy of your your company/country
- Unemployment Insurance
- Name: Unemployment Insurance
- Code: UEINS
- Employee Contribution Register: bound to the contribution register 'Unemployment Insurance' mentioned above
- Employee Contribution Rate: 1%, which you can modify according to the policy of your your company/country
- Company Contribution Register: bound to the contribution register 'Unemployment Insurance' mentioned above
- Company Contribution Rate: 1%, which you can modify according to the policy of your your company/country
- Labor Union
- Name: Labor Union
- Code: LU
- Employee Contribution Register: bound to the contribution register 'Labor Union' mentioned above
- Employee Contribution Rate: 1%, which you can modify according to the policy of your your company/country
- Company Contribution Register: None, as we think the company has nothing to do here. But if it does, you can modify this accordingly
- Company Contribution Rate: None, as we think the company has nothing to do here. But if it does, you can modify this accordingly
Payroll Data
Salary Rule Categories
- Employee Insurance (by employee): to categorize salary rules related to employee insurance contributed by employee
- Name: Employee Insurance (by employee)
- Code: E_INSURANCE, which you can use in other salary rules' Python code
- Parent: Deduction
- Employee Insurance (by company): to categorize salary rules related to employee insurance contributed by company
- Name: Employee Insurance (by company)
- Code: C_INSURANCE, which you can use in other salary rules' Python code
- Parent: None
- Labor Union (by employee): to categorize salary rules related to labor union fee contributed by employee
- Name: Labor Union (by employee)
- Code: E_LU, which you can use in other salary rules' Python code
- Parent: Deduction
Salary Rules
Social Insurance by Employee: to compute social insurance that the employee has to contribute
Sequence: 101
Code: ESINS
Appear on Payslip: Yes
Category: Employee Insurance (by employee)
Condition Based on: Python Expression
Python Condition
result = True if payslip.hr_payslip_contrib_history_line_ids and payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'SINS') else False
Amount Type: Python
Python Code
result = 0.0
for line in payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'SINS'):
rate = -1 * line.employee_contrib_rate / 100
result += line.contribution_base * rate if line.contribution_base else categories.GROSS * rate
Contribution Register: Social Insurance
Social Insurance by Company: to compute employee social insurance that the company has to contribute
Sequence: 102
Code: CSINS
Appear on Payslip: No
Category: Employee Insurance (by employee)
Condition Based on: Python Expression
Python Condition
result = True if payslip.hr_payslip_contrib_history_line_ids and payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'SINS' and l.company_contrib_rate) else False
Amount Type: Python
Python Code
result = 0.0
for line in payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'HINS' and l.company_contrib_rate):
rate = line.company_contrib_rate / 100
result += line.contribution_base * rate if line.contribution_base else categories.GROSS * rate
Contribution Register: Social Insurance
Unemployment Insurance by Employee: to compute employee unemployment insurance that the employee has to contribute. See Payroll > Configuration > Salary Rules > Unemployment Insurance by Employee for details
Unemployment Insurance by Company: to compute employee unemployment insurance that the company has to contribute. See Payroll > Configuration > Salary Rules > Unemployment Insurance by Company for details
Labor Union Fee by Employee: to compute employee Labor Union Fee that the employee has to contribute. See Payroll > Configuration > Salary Rules > Labor Union Fee by Employee for details
Salary Structures: no new salary structure was created but the default one Base for new salary structures will be modified to add the newly created salary rules mentioned above.
Register a new Payroll Contribution for an employee
- Navigate to Payroll > HR Payroll Contribution
- Hit the button Create to create a new Payroll Contribution record
- Select the employee for whom you want to register
- Select a desired contribution type, e.g.: Social Insurance. Upon selecting, Odoo will fill the employee rate and company rate to the register.
- By default, the computation base of the register is zero which means Odoo will use the contract's basic wage as the computation base (according to the salary rules defined above). However, you could fill another value in case you don't want the basic wage.
- Fill the contribution number the validate the register so that it will be considered during salary computation.
How to employ Payroll Contribution Register for other purposes?
Use case 1: Fixed Allowance
Create a new Contribution Register Category: Payroll > Configuration > Contribution Register Category
- Name: Fixed Allowance
- Color: any
Create a new Contribution Register: Payroll > Configuration > Contribution Registers
- Name: Fixed Allowance
- Category: Fixed Allowance
- Partner: None
Create a new Payroll Contribution Type: Payroll > HR Payroll Contribution > Payroll Contribution Type
- Name: Fixed Allowance
- Code: FAL
- Employee Rate: -100%
Create a new Payroll Contribution Register: Payroll > HR Payroll Contribution > Payroll Contribution Register
- Employee: select an employee for whom you want to register fixed allowance
- Computation Base: enter the fixed amount of the allowance
- Employee Rate: -100%
- Date From: Select a date from which the allowance will be considered in salary computation
Create a new salary rule 'Fixed Allowance': Payroll > Configuration > Salary Rules
Name: Fixed Allowance
Category: Allowance
Code: FAL
Condition Based on: Python Expression
Python Condition
result = True if payslip.hr_payslip_contrib_history_line_ids and payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'FAL') else False
Amount Type: Python
Python Code
result = 0.0
for line in payslip.hr_payslip_contrib_history_line_ids.filtered(lambda l: l.state in ('confirmed','resumed') and l.type_id.code == 'FAL' and l.employee_contrib_rate):
rate = line.employee_contrib_rate / 100
result += line.contribution_base * rate if line.contribution_base else categories.GROSS * rate
Assign the salary rule newly created above to any salary structures that you want to get Fixed Allowance involved
This software and associated files (the "Software") may only be
used
(executed, modified, executed after modifications) if you have
purchased a
valid license from the authors, typically via Odoo Apps,
or if you
have
received a written agreement from the authors of the
Software (see the
COPYRIGHT file).
You may develop Odoo modules that use the Software as a library
(typically
by depending on it, importing it and using its
resources), but
without
copying any source code or material from the
Software. You may distribute
those modules under the license of your
choice, provided that this
license
is compatible with the terms of
the Odoo Proprietary License (For
example:
LGPL, MIT, or proprietary
licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell
copies of the
Software or modified copies of the Software.
Thông báo bản quyền và chấp thuận nêu trên buộc phải được bao gồm trong tất cả các bản sao hoặc các phần quan trọng của Phần mềm.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT
SHALL THE
AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING
FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE
SOFTWARE.