mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-12-24 13:21:46 +00:00
638 lines
31 KiB
XML
638 lines
31 KiB
XML
<flectra>
|
|
<data noupdate="0">
|
|
<!-- <record id="DEDUCTION" model="hr.salary.rule.category">-->
|
|
<!-- <field name="name">Deduction</field>-->
|
|
<!-- <field name="code">DED</field>-->
|
|
<!-- <field name="parent_id" eval="False"/>-->
|
|
<!-- </record>-->
|
|
|
|
<record id="hr_rule_basic" model="hr.salary.rule">
|
|
<field name="name">Basic Salary</field>
|
|
<field name="sequence" eval="1"/>
|
|
<field name="code">BASIC</field>
|
|
<field name="category_id" ref="BASIC"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_python">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = contract.wage</field>
|
|
</record>
|
|
|
|
<record id="hr_rule_taxable" model="hr.salary.rule">
|
|
<field name="name">Gross</field>
|
|
<field name="sequence" eval="100"/>
|
|
<field name="code">GROSS</field>
|
|
<field name="category_id" ref="GROSS"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = categories.BASIC + categories.ALW + categories.HRA + categories.Travel</field>
|
|
</record>
|
|
|
|
<record id="hr_rule_net" model="hr.salary.rule">
|
|
<field name="name">Net Salary</field>
|
|
<field name="sequence" eval="200"/>
|
|
<field name="code">NET</field>
|
|
<field name="category_id" ref="NET"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = categories.BASIC + categories.ALW + categories.HRA + categories.Travel + categories.GROSS + categories.Medical + categories.DED </field>
|
|
<field name="register_id" ref="contrib_register_employees"/>
|
|
</record>
|
|
|
|
<record id="hr_rule_hra" model="hr.salary.rule">
|
|
<field name="name">House Rent Allowance</field>
|
|
<field name="sequence" eval="3"/>
|
|
<field name="code">HRA</field>
|
|
<field name="category_id" ref="HRA"/>
|
|
<field name="condition_select">none</field>
|
|
<!-- <field name="amount_select">code</field>-->
|
|
<!-- <field name="amount_python_compute">result = contract.hra</field>-->
|
|
<field name="amount_select">percentage</field>
|
|
<field name="amount_percentage_base">contract.wage</field>
|
|
<field name="amount_percentage">30</field>
|
|
</record>
|
|
|
|
<record id="hr_rule_da" model="hr.salary.rule">
|
|
<field name="name">Dearness Allowance</field>
|
|
<field name="sequence" eval="5"/>
|
|
<field name="code">DA</field>
|
|
<field name="category_id" ref="DA"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = contract.da</field>
|
|
</record>
|
|
|
|
<record id="hr_rule_travel" model="hr.salary.rule">
|
|
<field name="name">Travel Allowance</field>
|
|
<field name="sequence" eval="7"/>
|
|
<field name="code">Travel</field>
|
|
<field name="category_id" ref="Travel"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">fix</field>
|
|
<field name="amount_fix">3000</field>
|
|
<!-- <field name="amount_select">code</field>-->
|
|
<!-- <field name="amount_python_compute">result = contract.travel_allowance</field>-->
|
|
</record>
|
|
|
|
<record id="hr_rule_meal" model="hr.salary.rule">
|
|
<field name="name">Meal Allowance</field>
|
|
<field name="sequence" eval="9"/>
|
|
<field name="code">Meal</field>
|
|
<field name="category_id" ref="Meal"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = contract.meal_allowance</field>
|
|
</record>
|
|
|
|
<record id="hr_rule_medical" model="hr.salary.rule">
|
|
<field name="name">Medical Allowance</field>
|
|
<field name="sequence" eval="11"/>
|
|
<field name="code">Medical</field>
|
|
<field name="category_id" ref="Medical"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = contract.medical_allowance</field>
|
|
</record>
|
|
|
|
<!-- <record id="hr_rule_pf" model="hr.salary.rule">-->
|
|
<!-- <field name="name">Provident Fund</field>-->
|
|
<!-- <field name="sequence" eval="150"/>-->
|
|
<!-- <field name="code">PF</field>-->
|
|
<!-- <field name="category_id" ref="hr_payroll.DED"/>-->
|
|
<!-- <field name="condition_select">none</field>-->
|
|
<!--<!– <field name="amount_select">code</field>–>-->
|
|
<!--<!– <field name="amount_python_compute">result = contract.wage</field>–>-->
|
|
<!-- <field name="amount_select">fix</field>-->
|
|
<!-- <field name="amount_fix">-300</field>-->
|
|
<!-- </record>-->
|
|
|
|
<record id="hr_rule_ec" model="hr.salary.rule">
|
|
<field name="name">Employee Contribution</field>
|
|
<field name="sequence" eval="150"/>
|
|
<field name="code">EC</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="condition_select">none</field>
|
|
<!-- <field name="amount_select">code</field>-->
|
|
<!-- <field name="amount_python_compute">result = contract.wage</field>-->
|
|
<field name="amount_select">fix</field>
|
|
<field name="amount_fix">-300</field>
|
|
</record>
|
|
|
|
|
|
<record id="hr_rule_other" model="hr.salary.rule">
|
|
<field name="name">Other Allowance</field>
|
|
<field name="sequence" eval="1"/>
|
|
<field name="code">Other</field>
|
|
<field name="category_id" ref="Other"/>
|
|
<field name="condition_select">none</field>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">result = contract.other_allowance</field>
|
|
</record>
|
|
|
|
|
|
<!-- Swiss Salary Rules -->
|
|
|
|
<record id="AC" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5020</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="name">UI</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">120</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
|
|
|
|
<record id="AC" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5020</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="name">UI</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">120</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="AC_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5020_C</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">UI Company</field>
|
|
<field name="amount_python_compute">
|
|
per_in_limit = employee.company_id.ac_per_in_limit / 100
|
|
result = ((categories.BASIC + categories.ALW)*per_in_limit)
|
|
</field>
|
|
<field name="amount_percentage_base">min(categories.BASIC + categories.ALW, employee.company_id.ac_limit)</field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">121</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="AC"/>
|
|
</record>
|
|
<record id="AC_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5020_E</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">UI Employee</field>
|
|
<field name="amount_python_compute">
|
|
per_in_limit = employee.company_id.ac_per_in_limit / 100
|
|
result = ((categories.BASIC + categories.ALW)*per_in_limit)
|
|
</field>
|
|
<field name="amount_percentage_base">min(categories.BASIC + categories.ALW, employee.company_id.ac_limit)</field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">121</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="AC"/>
|
|
</record>
|
|
<record id="AC_SOL" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5030</field>
|
|
<field name="condition_python">
|
|
result = (categories.BASIC + categories.ALW) > employee.company_id.ac_limit and (categories.BASIC + categories.ALW) - employee.company_id.ac_limit > 0
|
|
</field>
|
|
<field name="name">UI SOL</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">122</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="AC_C_SOL" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5030_C</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">
|
|
result = (categories.BASIC + categories.ALW) > employee.company_id.ac_limit and (categories.BASIC + categories.ALW) - employee.company_id.ac_limit > 0
|
|
</field>
|
|
<field name="name">UI Company's Solidarity</field>
|
|
<field name="amount_python_compute">
|
|
limit = employee.company_id.ac_limit
|
|
per_off_limit = employee.company_id.ac_per_off_limit / 100
|
|
result = (((categories.BASIC + categories.ALW) - limit)*per_off_limit)
|
|
</field>
|
|
<field name="amount_percentage_base">(categories.BASIC + categories.ALW) - employee.company_id.ac_limit</field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">123</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="AC_SOL"/>
|
|
</record>
|
|
<record id="AC_E_SOL" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5030_E</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">
|
|
result = (categories.BASIC + categories.ALW) > employee.company_id.ac_limit and (categories.BASIC + categories.ALW) - employee.company_id.ac_limit > 0
|
|
</field>
|
|
<field name="name">UI Employee's Solidarity</field>
|
|
<field name="amount_python_compute">
|
|
limit = employee.company_id.ac_limit
|
|
per_off_limit = employee.company_id.ac_per_off_limit / 100
|
|
result = (((categories.BASIC + categories.ALW) - limit)*per_off_limit)
|
|
</field>
|
|
<field name="amount_percentage_base">(categories.BASIC + categories.ALW) - employee.company_id.ac_limit</field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">123</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="AC_SOL"/>
|
|
</record>
|
|
<record id="ALFA" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">3030</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = contract.employee_id.children + contract.employee_id.children_student > 0</field>
|
|
<field name="name">Family Allowances</field>
|
|
<field name="amount_python_compute">
|
|
result = 0
|
|
result += contract.employee_id.children * employee.company_id.fa_amount_child
|
|
result += contract.employee_id.children_student * employee.company_id.fa_amount_student
|
|
min_number_childs = employee.company_id.fa_min_number_childs - 1
|
|
if contract.employee_id.children + contract.employee_id.children_student > min_number_childs:
|
|
child_supp = contract.employee_id.children + contract.employee_id.children_student - min_number_childs
|
|
result += child_supp * employee.company_id.fa_amount_additional
|
|
</field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">50</field>
|
|
<field name="category_id" ref="FALW"/>
|
|
</record>
|
|
<record id="AVS" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5010</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">OAI/II/IC</field>
|
|
<field name="note">Old Age Insurance, Invalidity Insurance, Income Compensation</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">110</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="AVS_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5010_C</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">OAI/II/IC Company</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.avs_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">111</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="AVS"/>
|
|
</record>
|
|
<record id="AVS_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5010_E</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">OAI/II/IC Employee</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.avs_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">111</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="AVS"/>
|
|
</record>
|
|
<record id="FADMIN" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">6030</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Administrative Fees</field>
|
|
<field name="note">Administrative Fees to the OAI</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.fadmin_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">210</field>
|
|
<field name="category_id" ref="COSTS"/>
|
|
</record>
|
|
<record id="IMP_SRC" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5060</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = contract.imp_src > 0</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Source Tax</field>
|
|
<field name="amount_python_compute">
|
|
per = contract.imp_src
|
|
result = -(per*(categories.BASIC + categories.ALW + categories.FALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW + categories.FALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">160</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="LAA" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5041</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AI</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">140</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="LAA_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5041_C</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AI Company</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.laa_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">141</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="LAA"/>
|
|
</record>
|
|
<record id="LAA_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5041_E</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AI Employee</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.laa_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">141</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="LAA"/>
|
|
</record>
|
|
<record id="LCA" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5042</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">SDA</field>
|
|
<field name="note">Sickness Daily Allowance</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">150</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="LCA_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5042_C</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">SDA Company</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.lca_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">151</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="LCA"/>
|
|
</record>
|
|
<record id="LCA_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5042_E</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">SDA Employee</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.lca_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">151</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="LCA"/>
|
|
</record>
|
|
<record id="LPP" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5050</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">OBP</field>
|
|
<field name="amount_python_compute"></field>
|
|
<field name="quantity">1</field>
|
|
<field name="condition_range">categories.BASIC + categories.ALW</field>
|
|
<field name="sequence">130</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="LPP_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5050_C</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = (contract.lpp_rate or contract.lpp_amount) > 0</field>
|
|
<field name="name">OBP Company</field>
|
|
<field name="amount_python_compute">
|
|
minimum_legal = employee.company_id.lpp_min
|
|
maximum_range = employee.company_id.lpp_max
|
|
amount = contract.wage_fulltime * 12
|
|
if contract.lpp_rate != 0:
|
|
if contract.lpp_contract_id:
|
|
amount = amount - contract.lpp_contract_id.dc_amount
|
|
amount = amount / 12
|
|
amount = amount * (contract.occupation_rate / 100)
|
|
amount = amount * (payslip.working_rate / 100)
|
|
if amount > maximum_range:
|
|
result = -(maximum_range)*((contract.lpp_rate)/100)
|
|
elif amount < minimum_legal and not contract.lpp_contract_id:
|
|
result = -(minimum_legal)*((contract.lpp_rate)/100)
|
|
else:
|
|
result = -(amount)*((contract.lpp_rate)/100)
|
|
else:
|
|
result = -contract.lpp_amount
|
|
</field>
|
|
<field name="amount_percentage_base">
|
|
-contract.lpp_amount or ((((contract.wage_fulltime*12) - (contract.lpp_contract_id.dc_amount or 0))/12)*(contract.occupation_rate/100)*(payslip.working_rate/100))
|
|
</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">132</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="LPP"/>
|
|
</record>
|
|
<record id="LPP_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5050_E</field>
|
|
<field name="condition_select">python</field>
|
|
<field name="condition_python">result = (contract.lpp_rate or contract.lpp_amount) > 0</field>
|
|
<field name="name">OBP Employee</field>
|
|
<field name="amount_python_compute">
|
|
minimum_legal = employee.company_id.lpp_min
|
|
maximum_range = employee.company_id.lpp_max
|
|
amount = contract.wage_fulltime * 12
|
|
if contract.lpp_rate != 0:
|
|
if contract.lpp_contract_id:
|
|
amount = amount - contract.lpp_contract_id.dc_amount
|
|
amount = amount / 12
|
|
amount = amount * (contract.occupation_rate / 100)
|
|
amount = amount * (payslip.working_rate / 100)
|
|
if amount > maximum_range:
|
|
result = -(maximum_range)*((contract.lpp_rate)/100)
|
|
elif amount < minimum_legal and not contract.lpp_contract_id:
|
|
result = -(minimum_legal)*((contract.lpp_rate)/100)
|
|
else:
|
|
result = -(amount)*((contract.lpp_rate)/100)
|
|
else:
|
|
result = -contract.lpp_amount
|
|
</field>
|
|
<field name="amount_percentage_base">
|
|
-contract.lpp_amount or ((((contract.wage_fulltime*12) - (contract.lpp_contract_id.dc_amount or 0))/12)*(contract.occupation_rate/100)*(payslip.working_rate/100))
|
|
</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">131</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="LPP"/>
|
|
</record>
|
|
<record id="PC_F_VD" model="hr.salary.rule">
|
|
<field name="amount_select">fix</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5063_VD</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AS Families (VD)</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">165</field>
|
|
<field name="category_id" ref="DED"/>
|
|
</record>
|
|
<record id="PC_F_VD_C" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">False</field>
|
|
<field name="code">5063_VD_C</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AS Families (VD) Company</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.pc_f_vd_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">166</field>
|
|
<field name="category_id" ref="COMP"/>
|
|
<field name="parent_rule_id" ref="PC_F_VD"/>
|
|
</record>
|
|
<record id="PC_F_VD_E" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5063_VD_E</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">AS Families (VD) Employee</field>
|
|
<field name="amount_python_compute">
|
|
per = employee.company_id.pc_f_vd_per
|
|
result = (per*(categories.BASIC + categories.ALW))/100
|
|
</field>
|
|
<field name="amount_percentage_base">categories.BASIC + categories.ALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">166</field>
|
|
<field name="category_id" ref="DED"/>
|
|
<field name="parent_rule_id" ref="PC_F_VD"/>
|
|
</record>
|
|
<record id="BASIC_CH" model="hr.salary.rule">
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">1000</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Basic CH</field>
|
|
<field name="sequence" eval="1"/>
|
|
<field name="amount_select">code</field>
|
|
<field name="amount_python_compute">
|
|
if payslip.wage_type == 'hour':
|
|
result = contract.wage*payslip.worked_hours
|
|
else:
|
|
result = contract.wage*payslip.working_rate/100
|
|
</field>
|
|
<field name="category_id" ref="BASIC"/>
|
|
</record>
|
|
<record id="GROSS_CH" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">5000</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Gross CH</field>
|
|
<field name="amount_python_compute">result = categories.BASIC + categories.ALW + categories.FALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">100</field>
|
|
<field name="category_id" ref="GROSS"/>
|
|
</record>
|
|
<record id="NET_CH" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">6500</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Net CH</field>
|
|
<field name="amount_python_compute">result = categories.BASIC + categories.ALW + categories.DED + categories.FALW</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">200</field>
|
|
<field name="category_id" ref="NET"/>
|
|
</record>
|
|
<record id="TOTAL_DED" model="hr.salary.rule">
|
|
<field name="amount_select">code</field>
|
|
<field name="appears_on_payslip">True</field>
|
|
<field name="code">TOTAL_DED</field>
|
|
<field name="condition_select">none</field>
|
|
<field name="condition_range_max">999999</field>
|
|
<field name="name">Total Deduction</field>
|
|
<field name="amount_python_compute">result = categories.DED</field>
|
|
<field name="quantity">1</field>
|
|
<field name="sequence">195</field>
|
|
<field name="category_id" ref="INFO"/>
|
|
</record>
|
|
|
|
|
|
<!-- Salary Structure -->
|
|
|
|
<record id="structure_base" model="hr.payroll.structure">
|
|
<field name="code">BASE</field>
|
|
<field name="name">Base for new structures</field>
|
|
<field eval="[(6, 0, [ref('hr_rule_basic'), ref('hr_rule_taxable'),ref('hr_rule_net')])]" name="rule_ids"/>
|
|
<field name="company_id" ref="base.main_company"/>
|
|
</record>
|
|
|
|
<record id="structure_regular_pay" model="hr.payroll.structure">
|
|
<field name="code">REGULAR</field>
|
|
<field name="name">Regular Pay</field>
|
|
<field eval="[(6, 0, [ref('hr_rule_basic'), ref('hr_rule_hra'),
|
|
ref('hr_rule_travel'),ref('hr_rule_taxable'),
|
|
ref('hr_rule_ec'),ref('hr_rule_net')])]" name="rule_ids"/>
|
|
<field name="company_id" ref="base.main_company"/>
|
|
</record>
|
|
</data>
|
|
</flectra> |