Files
enterprise-addons/l10n_sk_hr_payroll/data/hr_salary_rule_data.xml
T

464 lines
22 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--
Sources:
https://www.lano.io/global-payroll-guide/slovakia
https://accace.com/labour-law-and-employment-in-slovakia/
-->
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_basic_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.BASIC"/>
<field name="name">Basic Salary</field>
<field name="sequence">1</field>
<field name="code">BASIC</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = payslip.paid_amount
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_meal_voucher_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_meal_vouchers_employee"/>
<field name="name">Meal Vouchers</field>
<field name="code">MEALEMPLOYEE</field>
<field name="sequence">80</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result_qty = 'WORK100' in worked_days and worked_days['WORK100'].number_of_days
result = version.l10n_sk_meal_voucher_employee
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_meal_voucher_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_meal_vouchers_employer"/>
<field name="name">Meal Vouchers (Employer)</field>
<field name="code">MEALEMPLOYER</field>
<field name="sequence">81</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result_qty = 'WORK100' in worked_days and worked_days['WORK100'].number_of_days
result = -version.l10n_sk_meal_voucher_employer
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<!-- GROSS -->
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_gross_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.GROSS"/>
<field name="name">Taxable Salary</field>
<field name="sequence">100</field>
<field name="code">GROSS</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['BASIC'] + categories['ALW']
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_sickness_insurance_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee"/>
<field name="name">Sickness Insurance</field>
<field name="code">SICK</field>
<field name="sequence">110</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = -1.4
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_sickness_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Sickness Insurance (Employer)</field>
<field name="code">SICKEMPLOYER</field>
<field name="sequence">110</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 1.4
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_pension_contribution_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee"/>
<field name="name">Pension Contribution</field>
<field name="code">PENSION</field>
<field name="sequence">115</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = -4
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_pension_contribution_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Pension Contribution (Employer)</field>
<field name="code">PENSIONEMPLOYER</field>
<field name="sequence">115</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 14
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_disability_insurance_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee"/>
<field name="name">Disability Insurance</field>
<field name="code">DISABILITY</field>
<field name="sequence">120</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = -3
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_disability_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Disability Insurance (Employer)</field>
<field name="code">DISABILITYEMPLOYER</field>
<field name="sequence">120</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 3
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_unemployment_insurance_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee"/>
<field name="name">Unemployment Insurance</field>
<field name="code">UNEMPLOYMENT</field>
<field name="sequence">125</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = -1
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_unemployment_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Unemployment Insurance (Employer)</field>
<field name="code">UNEMPLOYMENTEMPLOYER</field>
<field name="sequence">125</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 0.5
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_short_time_work_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Insurance to Finance Support during Short-Time Work (Employer)</field>
<field name="code">SHORTTIMEEMPLOYER</field>
<field name="sequence">130</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 0.5
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_guarantee_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Guarantee Insurance (Employer)</field>
<field name="code">GUARANTEEEMPLOYER</field>
<field name="sequence">135</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 0.25
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_accident_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Accident Insurance (Employer)</field>
<field name="code">ACCIDENT</field>
<field name="sequence">140</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
result_rate = 0.80
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_reserve_fund_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Reserve Fund (Employer)</field>
<field name="code">RESERVEFUNDEMPLOYER</field>
<field name="sequence">145</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(categories['GROSS'], payslip._rule_parameter('l10n_sk_monthly_taxable_max'))
result_rate = 4.75
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_health_insurance_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee"/>
<field name="name">Health Insurance</field>
<field name="code">HEALTH</field>
<field name="sequence">150</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
result_rate = -4
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_health_insurance_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer"/>
<field name="name">Health Insurance (Employer)</field>
<field name="code">HEALTHEMPLOYER</field>
<field name="sequence">150</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
result_rate = 10
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_income_tax_19_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_income_tax_employee"/>
<field name="name">Income Tax</field>
<field name="code">INCOMETAX19</field>
<field name="sequence">170</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
taxable = categories['GROSS']
already_taxed = payslip.search([
('employee_id', '=', payslip.employee_id.id),
('state', 'in', ['paid', 'validated']),
('date_from', '&gt;=', payslip.date_from + relativedelta(day=1, month=1)),
('date_to', '&lt;=', payslip.date_from + relativedelta(day=31, months=-1)),
])._get_line_values(['GROSS'], compute_sum=True)['GROSS']['sum']['total']
threshold = payslip._rule_parameter('l10n_sk_income_tax_threshold')
if already_taxed &gt; threshold:
result = 0
else:
result = max(min(threshold - already_taxed, taxable), 0)
result_rate = -19
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_income_tax_25_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_income_tax_employee"/>
<field name="name">Income Tax</field>
<field name="code">INCOMETAX25</field>
<field name="sequence">170</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
taxable = categories['GROSS']
already_taxed = payslip.search([
('employee_id', '=', payslip.employee_id.id),
('state', 'in', ['paid', 'validated']),
('date_from', '&gt;=', payslip.date_from + relativedelta(day=1, month=1)),
('date_to', '&lt;=', payslip.date_from + relativedelta(day=31, months=-1)),
])._get_line_values(['GROSS'], compute_sum=True)['GROSS']['sum']['total']
threshold = payslip._rule_parameter('l10n_sk_income_tax_threshold')
if already_taxed &gt; threshold:
result = taxable
else:
result = max(already_taxed + taxable - threshold, 0)
result_rate = -25
</field>
<field name="appears_on_payslip" eval="True"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_attachment_of_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">Attachment of Salary</field>
<field name="sequence">174</field>
<field name="code">ATTACH_SALARY</field>
<field name="condition_select">python</field>
<field name="condition_python">result = 'ATTACH_SALARY' in inputs</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -inputs['ATTACH_SALARY'].amount
result_name = inputs['ATTACH_SALARY'].name
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_assignment_of_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">Assignment of Salary</field>
<field name="sequence">174</field>
<field name="code">ASSIG_SALARY</field>
<field name="condition_select">python</field>
<field name="condition_python">result = 'ASSIG_SALARY' in inputs</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -inputs['ASSIG_SALARY'].amount
result_name = inputs['ASSIG_SALARY'].name
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_child_support" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">Child Support</field>
<field name="code">CHILD_SUPPORT</field>
<field name="amount_select">code</field>
<field name="sequence">174</field>
<field name="condition_select">python</field>
<field name="condition_python">result = 'CHILD_SUPPORT' in inputs</field>
<field name="amount_python_compute">
result = -inputs['CHILD_SUPPORT'].amount
result_name = inputs['CHILD_SUPPORT'].name
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_deduction_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">Deduction</field>
<field name="sequence">198</field>
<field name="code">DEDUCTION</field>
<field name="condition_select">python</field>
<field name="condition_python">result = 'DEDUCTION' in inputs</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -inputs['DEDUCTION'].amount
result_name = inputs['DEDUCTION'].name
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_reimbursement_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="name">Reimbursement</field>
<field name="sequence">199</field>
<field name="code">REIMBURSEMENT</field>
<field name="condition_select">python</field>
<field name="condition_python">result = 'REIMBURSEMENT' in inputs</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = inputs['REIMBURSEMENT'].amount
result_name = inputs['REIMBURSEMENT'].name
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_hr_payroll_structure_sk_employee_salary_net_salary" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.NET"/>
<field name="name">Net Salary</field>
<field name="sequence">200</field>
<field name="code">NET</field>
<field name="appears_on_employee_cost_dashboard" eval="True"/>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = max(
0,
BASIC + categories['ALW'] + categories['DED']
- result_rules['MEALEMPLOYEE']['total'] - result_rules['MEALEMPLOYER']['total']
)
</field>
<field name="struct_id" ref="hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_social_security_total_employee" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employee_total"/>
<field name="name">Social Security Total (Employee)</field>
<field name="code">SOCIALEMPLOYEETOTAL</field>
<field name="sequence">500</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['SOCIALEMPLOYEE']
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_social_security_total_employer" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_social_security_employer_total"/>
<field name="name">Social Security Total (Employer)</field>
<field name="code">SOCIALEMPLOYERTOTAL</field>
<field name="sequence">500</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['SOCIALEMPLOYER']
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
<record id="l10n_sk_income_tax_total" model="hr.salary.rule">
<field name="category_id" ref="l10n_sk_hr_payroll.hr_payroll_income_tax_employee_total"/>
<field name="name">Income Tax Total</field>
<field name="code">INCOMETAXTOTAL</field>
<field name="sequence">510</field>
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -categories['INCOMETAX']
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_sk_hr_payroll.hr_payroll_structure_sk_employee_salary"/>
</record>
</odoo>