diff --git a/addons/l10n_be_hr_payroll/data/l10n_be_hr_payroll_data.xml b/addons/l10n_be_hr_payroll/data/l10n_be_hr_payroll_data.xml
index ce4b3ee50fd..5eca5bb34e4 100644
--- a/addons/l10n_be_hr_payroll/data/l10n_be_hr_payroll_data.xml
+++ b/addons/l10n_be_hr_payroll/data/l10n_be_hr_payroll_data.xml
@@ -44,14 +44,19 @@
ONSS
+
+ Employment Bonus
+ EmpBonus
+
+
Misc. Taxable
DIV. IMPOS
- Withholding Tax Grid 2011 (Precompte Professionnel Bareme 2011)
- P.P.
+ Withholding Tax Grid 2017 (Precompte Professionnel Bareme 2017)
+ PP
@@ -61,10 +66,24 @@
Child Allowance Belgium
- Ch.A
+ ChA
+
+
+
+ Reduction for special family charges
+ FamRed
+
+
+
+ Withholding Tax Reduction
+ PPRed
+
+
+
+ Special social contribution
+ SSC
-
@@ -76,11 +95,12 @@
- Employee Salary
+ Gross Salary
SALARY
none
code
- result = contract.wage * 1
+ result = contract.wage * 1 + contract.car_atn + contract.mobile + contract.mobile_plus + contract.internet
+ 20
@@ -93,19 +113,87 @@
SALARY
-13.07
-
-
-
- Withholding Tax Grid 2011
- P.P
- 120
- fix
- none
-
+
+
+ Employment Bonus
+ EmpBonus.1
+ 42
+ python
+ result = categories.BRUT <= 2431.27
+ code
+
+salary = categories.BRUT
+if salary <= 1577.89:
+ result = 193.79
+elif salary <= 2461.27:
+ result = 193.79 - (0.2194 * (salary - 1577.89))
+
+
+
+
+ Employment Bonus
+ EmpBonus.2
+ 42
+ python
+ result = categories.BRUT + categories.ONSS <= 2431.27
+ code
+
+salary = categories.BRUT
+if salary <= 1577.89:
+ result = 209.29
+elif salary <= 2461.27:
+ result = 209.29 - (0.2369 * (salary - 1577.89))
+
+
+
+
+ Special social cotisation
+ M.ONSS.1
+ fix
+ 165
+ python
+
+ result = (((employee.marital=='single') or (employee.marital=='married' and employee.spouse_fiscal_status=='without income')) and (employee.resident_bool!=True))
+ code
+
+if contract.wage >= 0.01 and contract.wage <= 1095.09:
+ result = 0.0
+elif contract.wage >= 1095.10 and contract.wage <= 1945.38:
+ result = 0.0
+elif contract.wage >= 1945.39 and contract.wage <= 2190.18:
+ result = -min((contract.wage - 1945.38) * 0.076, 18.60)
+elif contract.wage >= 2190.19 and contract.wage <= 6038.82:
+ result = -min(18.60 + (contract.wage - 2190.18) * 0.011, 60.94)
+else:
+ result = -60.94
+
+
+
+
+ Special social cotisation
+ M.ONSS.2
+ fix
+ 165
+ python
+
+ result = (((employee.marital=='married' and employee.spouse_fiscal_status=='with income')) and (employee.resident_bool!=True))
+ code
+
+if contract.wage >= 0.01 and contract.wage <= 1095.09:
+ result = 0.0
+elif contract.wage >= 1095.10 and contract.wage <= 1945.38:
+ result = -9.30
+elif contract.wage >= 1945.39 and contract.wage <= 2190.18:
+ result = -min(max((contract.wage - 1945.38) * 0.076, 9.30), 18.60)
+elif contract.wage >= 2190.19 and contract.wage <= 6038.82:
+ result = -min(18.60 + (contract.wage - 2190.18) * 0.011, 51.64)
+else:
+ result = -51.64
+
+
-
Withholding Tax
B.I.
fix
@@ -116,7 +204,6 @@
-
Withholding Tax
B.II
fix
@@ -127,7 +214,6 @@
-
Withholding Tax
B.III
fix
@@ -136,17 +222,63 @@
result = employee.resident_bool==True
+
+
+ Withholding Tax Reduction for Low Salaries
+ PPRed.0
+ 131
+ python
+ result = categories.GROSS <= 2027.86 and categories.GROSS > 565.02
+ code
+
+result = 5.83
+
+
+
+
+ Withholding Tax Reduction for Low Salaries (ONSS)
+ PPRed.1
+ 132
+ python
+ result = categories.BRUT <= 2431.27
+ code
+
+salary = categories.BRUT
+percentage = 0.2803
+if salary <= 1577.89:
+ result = 193.79 * percentage
+elif salary <= 2461.27:
+ result = (193.79 - (0.2194 * (salary - 1577.89))) * percentage
+
+
+
+
+ Withholding Tax Reduction for Low Salaries (ONSS)
+ PPRed.2
+ 133
+ python
+ result = categories.BRUT <= 2431.27
+ code
+
+salary = categories.BRUT
+percentage = 0.2803
+if salary <= 1577.89:
+ result = 209.29 * percentage
+elif salary <= 2461.27:
+ result = (209.29 - (0.2369 * (salary - 1577.89))) * percentage
+
+
-
+
Child Allowance Belgium
Child.Allowance
140
fix
python
- result = bool(employee.children)
+ result = bool(employee.dependent_children)
-
+
Child Allowance Belgium
Ch.A
@@ -160,114 +292,195 @@
a) Reduction for dependent children
python
- result = bool(employee.children)
+ result = bool(employee.dependent_children)
-
-
-
- Child Allowance for the Disabled Belgium
- Ch.Handicap
- fix
+
+
+ Other family charges reductions
+ Oth.Fam.Red
143
- "Disabled child" means:
-
- the child reaches at least 66% of failure or reduced physical or mental capacity
- the head of one or more conditions;
-
-
- the child that is established, regardless of age, that due to developments and recognized
- before age 65
- python
- result = bool(employee.disabled_children_number)
+ fix
+ python
+ result = True
+
+
+
+
+ Reduction for isolated people
+ Red.Iso
+ 144
+ python
+ result = (employee.marital == 'single') and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(25.00, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for isolated parent
+ Red.Iso.Par
+ 144
+ python
+ result = (employee.marital == 'widower' or (employee.marital in ['divorced', 'single', 'widower'] and employee.dependent_children)) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(35.00, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for disabled employee
+ Red.Dis
+ 145
+ python
+ result = (employee.disabled) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(35.00, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for dependent seniors
+ Red.Seniors
+ 146
+ python
+ result = (employee.other_dependent_people and employee.dependent_seniors) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(71.0 * employee.dependent_seniors, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for dependent juniors
+ Red.Juniors
+ 147
+ python
+ result = (employee.other_dependent_people and employee.dependent_juniors) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(35.0 * employee.dependent_juniors, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for low spouse revenue
+ Red.Spouse.Net
+ 148
+ python
+ result = (employee.marital == 'married' and employee.spouse_net_revenue <= 221.0) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(110.50, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
+
+
+
+ Reduction for low spouse other revenue
+ Red.Spouse.Oth.Net
+ 149
+ python
+ result = (employee.marital == 'married' and not employee.spouse_net_revenue and employee.spouse_other_net_revenue <= 440.0) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ result = min(220.0, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
+
Disabled Spouse Allowance
Sp.handicap
- fix
- 145
- 31
+ 150
python
- result = employee.disabled_spouse_bool==True
-
-
-
- Company Car
- car
- fix
- 15
- none
-
+ result = (employee.disabled_spouse_bool==True) and (categories.PP + categories.PPRed + categories.FamRed + categories.ChA < 0.0)
+ code
+ min(35.0, - (categories.PP + categories.PPRed + categories.FamRed + categories.ChA))
- Company car
-
- CAR 1
+ ATN Company Car
+ ATN.CAR
15
python
- result = bool(contract.car_employee_deduction)
+
+result = bool(contract.transport_mode == 'company_car' and contract.car_atn)
+
code
- result = contract.car_employee_deduction
+
+result = contract.car_atn
+
+
+
+
+ ATN Internet
+ ATN.INT
+ 16
+ python
+ result = bool(contract.internet)
+ code
+ result = 5.0
+
+
+
+ ATN Mobile
+ ATN.MOB
+ 17
+ python
+ result = bool(contract.mobile)
+ code
+ result = 12.0
- Retenue Company car
-
- CAR 2
+ ATN Company Car
+ ATN.CAR.2
160
python
- result = contract.car_employee_deduction
+
+result = bool(contract.transport_mode == 'company_car' and contract.car_atn)
+
code
- result = -contract.car_employee_deduction
+
+result = -contract.car_atn
+
-
-
- Company car, Company part
-
- CAR 3
- 160
- python
- result = bool(contract.car_company_amount)
- code
- result = -contract.car_company_amount
-
-
-
+
- Meal Voucher
- MEAL_V
- fix
- 165
- none
-
-
-
-
-
- Meal Voucher, Company Part
- MEAL_V_COMP
- fix
- 165
- code
- result = -(contract.meal_voucher_amount - contract.meal_voucher_employee_deduction) * worked_days.WORK100.number_of_days
+ ATN Internet
+ ATN.INT.2
+ 161
python
- result = bool(contract.meal_voucher_amount)
+ result = contract.internet
+ code
+ result = -5.0
+
+
+
+ ATN Mobile
+ ATN.MOB.2
+ 162
+ python
+ result = contract.mobile
+ code
+ result = -12.0
+
+
+
+ Commission on Target
+ COM
+ 170
+ python
+ result = bool(contract.commission_on_target)
+ code
+ result = contract.warrant_value_employee / 12.0
-
Retain on Meal Voucher
-
MEAL_V_EMP
165
python
- result = bool(contract.meal_voucher_employee_deduction)
+ result = bool(contract.meal_voucher_amount)
percentage
-100.0
- contract.meal_voucher_employee_deduction
- worked_days.WORK100.number_of_days
+ contract.meal_voucher_amount - contract.meal_voucher_paid_by_employer
+ worked_days.WORK100 and worked_days.WORK100.number_of_days
@@ -278,38 +491,18 @@
code
65
python
- result = bool(contract.travel_reimbursement_amount)
- result = contract.travel_reimbursement_amount
+ result = bool(contract.others_reimbursed_amount)
+ result = contract.others_reimbursed_amount
-
-
- Miscellaneous exempt ONSS
- M.ONSS
+
+
+ Representation Fees
+ REP.FEES
code
- 165
+ 171
python
- result = bool(contract.misc_onss_deduction)
- result = -contract.misc_onss_deduction
-
-
-
- Insurance
- Ins
- code
- 165
- python
- result = bool(contract.insurance_employee_deduction)
- result = -contract.insurance_employee_deduction
-
-
-
- Benefits of various nature
- Ben
- code
- 10
- python
- result = bool(contract.misc_advantage_amount)
- result = contract.misc_advantage_amount
+ result = bool(contract.representation_fees)
+ result = contract.representation_fees
@@ -334,15 +527,119 @@
C.P.218
Belgian Employee
-
+
C.P.219
Belgian Worker
-
+
+
+
+
+ Check Value Meal
+ meal_voucher_amount
+ 7.45
+
+
+ Internet
+ internet
+ 38.0
+
+
+ Mobile
+ mobile
+ 30.0
+
+
+ Mobile +
+ mobile_plus
+ 50.0
+
+
+ Net supplements
+ additional_net_amount
+
+
+ Net retained
+ retained_net_amount
+
+
+ Commission on target
+ commission_on_target
+ 1000.0
+
+
+ Fuel card
+ fuel_card
+ 150.0
+ 0.0
+ 500.0
+
+
+ Holidays duration
+ holidays
+ 20.0
+ 0.0
+ 30.0
+
+
+ Representation fees
+ representation_fees
+ 150.0
+
+
+ Eco-checks
+ eco_checks
+ 250.0
+
+