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.
				
				The above copyright notice and this permission notice must be
					included in
					all copies or substantial portions of the Software.
				
				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.