chore: import enterprise addons 19.0 bulk snapshot

This commit is contained in:
1b-agent committed 2026-09-16 10:13:08 +00:00
commit ca4af030d3
39951 files changed
+15570005

No files matched your search

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_payroll_structure_my_employee_salary" model="hr.payroll.structure">
<field name="name">Malaysia: Regular Pay</field>
<field name="code">MYMONTHLY</field>
<field name="country_id" ref="base.my"/>
<field name="type_id" ref="l10n_my_hr_payroll.structure_type_employee_my"/>
<field name="rule_ids" eval="[]"/>
</record>
<record id="l10n_my_hr_payroll.structure_type_employee_my" model="hr.payroll.structure.type">
<field name="default_struct_id" ref="hr_payroll_structure_my_employee_salary"/>
</record>
</odoo>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="structure_type_employee_my" model="hr.payroll.structure.type">
<field name="name">Malaysia: Employee</field>
<field name="default_resource_calendar_id" eval="ref('resource.resource_calendar_std', raise_if_not_found=False)"/>
<field name="country_id" ref="base.my"/>
</record>
</odoo>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="l10n_my_hr_payroll_input_generic" model="hr.payslip.input.type">
<field name="name">Allowance</field>
<field name="code">MY_GENERIC_ALW</field>
<field name="country_id" ref="base.my"/>
<field name="struct_ids" eval="[(4, ref('l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary'))]"/>
</record>
<record id="l10n_my_hr_payroll_dearness_allowance" model="hr.payslip.input.type">
<field name="name">Dearness Allowance</field>
<field name="code">MY_DA</field>
<field name="country_id" ref="base.my"/>
<field name="struct_ids" eval="[(4, ref('l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary'))]"/>
</record>
<record id="l10n_my_hr_payroll_house_rent_allowance" model="hr.payslip.input.type">
<field name="name">House Rent Allowance</field>
<field name="code">MY_HRA</field>
<field name="country_id" ref="base.my"/>
<field name="struct_ids" eval="[(4, ref('l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary'))]"/>
</record>
<record id="l10n_my_hr_payroll_conveyance_allowance" model="hr.payslip.input.type">
<field name="name">Conveyance Allowance</field>
<field name="code">MY_CONV_ALW</field>
<field name="country_id" ref="base.my"/>
<field name="struct_ids" eval="[(4, ref('l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary'))]"/>
</record>
</data>
</odoo>
@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- EPF Rate - Employee -->
<record id="rule_parameter_my_epf_rate_employee" model="hr.rule.parameter">
<field name="name">MY: EPF Rate Employee</field>
<field name="code">l10n_my_epf_rate_employee</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_epf_rate_employee_2015" model="hr.rule.parameter.value">
<field name="parameter_value">11</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employee"/>
<field name="date_from" eval="datetime(2015, 1, 1).date()"/>
</record>
<record id="rule_parameter_my_epf_rate_employee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employee"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_epf_rate_employee_2021" model="hr.rule.parameter.value">
<field name="parameter_value">9</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employee"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<record id="rule_parameter_my_epf_rate_employee_2022" model="hr.rule.parameter.value">
<field name="parameter_value">11</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employee"/>
<field name="date_from" eval="datetime(2022, 6, 1).date()"/>
</record>
<!-- EPF Rates and Theshold - Employer -->
<record id="rule_parameter_my_epf_threshold_employer" model="hr.rule.parameter">
<field name="name">MY: EPF Threshold Employer</field>
<field name="code">l10n_my_epf_threshold_employer</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_epf_threshold_employer_2020" model="hr.rule.parameter.value">
<field name="parameter_value">5000</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_threshold_employer"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_epf_rate_employer_low" model="hr.rule.parameter">
<field name="name">MY: EPF Rate Employer Low</field>
<field name="code">l10n_my_epf_rate_employer_low</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_epf_rate_employer_low_2020" model="hr.rule.parameter.value">
<field name="parameter_value">13</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employer_low"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_epf_rate_employer_high" model="hr.rule.parameter">
<field name="name">MY: EPF Rate Employer High</field>
<field name="code">l10n_my_epf_rate_employer_high</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_epf_rate_employer_high_2020" model="hr.rule.parameter.value">
<field name="parameter_value">12</field>
<field name="rule_parameter_id" ref="rule_parameter_my_epf_rate_employer_high"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_socso_act_800_employee" model="hr.rule.parameter">
<field name="name">MY: SOCSO Act 800 Employee</field>
<field name="code">l10n_my_socso_act_800_employee</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_socso_act_800_rates_employee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
(30, 0.05), (50, 0.10), (70, 0.15), (100, 0.20), (140, 0.25), (200, 0.35), (300, 0.50),
(400, 0.70), (500, 0.90), (600, 1.10), (700, 1.30), (800, 1.50), (900, 1.70), (1000, 1.90),
(1100, 2.10), (1200, 2.30), (1300, 2.50), (1400, 2.70), (1500, 2.90), (1600, 3.10), (1700, 3.30),
(1800, 3.50), (1900, 3.70), (2000, 3.90), (2100, 4.10), (2200, 4.30), (2300, 4.50), (2400, 4.70),
(2500, 4.90), (2600, 5.10), (2700, 5.30), (2800, 5.50), (2900, 5.70), (3000, 5.90), (3100, 6.10),
(3200, 6.30), (3300, 6.50), (3400, 6.70), (3500, 6.90), (3600, 7.10), (3700, 7.30), (3800, 7.50),
(3900, 7.70), (4000, 7.90), (4100, 8.10), (4200, 8.30), (4300, 8.50), (4400, 8.70), (4500, 8.90),
(4600, 9.10), (4700, 9.30), (4800, 9.50), (4900, 9.70), (5000, 9.90), (5100, 10.10), (5200, 10.30),
(5300, 10.50), (5400, 10.70), (5500, 10.90), (5600, 11.10), (5700, 11.30), (5800, 11.50),
(5900, 11.70), (6000, 11.90), (999999999999999, 11.90),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_my_socso_act_800_employee"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_socso_act_4_first_category_employee" model="hr.rule.parameter">
<field name="name">MY: SOCSO Act 4 - First Category Employee</field>
<field name="code">l10n_my_socso_act_4_first_category_employee</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_socso_act_4_first_category_employee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
(30, 0.10), (50, 0.20), (70, 0.30), (100, 0.40), (140, 0.60), (200, 0.85), (300, 1.25),
(400, 1.75), (500, 2.25), (600, 2.75), (700, 3.25), (800, 3.75), (900, 4.25), (1000, 4.75),
(1100, 5.25), (1200, 5.75), (1300, 6.25), (1400, 6.75), (1500, 7.25), (1600, 7.75), (1700, 8.25),
(1800, 8.75), (1900, 9.25), (2000, 9.75), (2100, 10.25), (2200, 10.75), (2300, 11.25), (2400, 11.75),
(2500, 12.25), (2600, 12.75), (2700, 13.25), (2800, 13.75), (2900, 14.25), (3000, 14.75), (3100, 15.25),
(3200, 15.75), (3300, 16.25), (3400, 16.75), (3500, 17.25), (3600, 17.75), (3700, 18.25), (3800, 18.75),
(3900, 19.25), (4000, 19.75), (4100, 20.25), (4200, 20.75), (4300, 21.25), (4400, 21.75), (4500, 22.25),
(4600, 22.75), (4700, 23.25), (4800, 23.75), (4900, 24.25), (5000, 24.75), (5100, 25.25), (5200, 25.75),
(5300, 26.25), (5400, 26.75), (5500, 27.25), (5600, 27.75), (5700, 28.25), (5800, 28.75), (5900, 29.25),
(6000, 29.75), (999999999999999, 29.75),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_my_socso_act_4_first_category_employee"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_socso_act_4_first_category_employer" model="hr.rule.parameter">
<field name="name">MY: SOCSO Act 4 - First Category Employer</field>
<field name="code">l10n_my_socso_act_4_first_category_employer</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_socso_act_4_first_category_employer_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
(30, 0.40), (50, 0.70), (70, 1.10), (100, 1.50), (140, 2.10), (200, 2.95), (300, 4.35),
(400, 6.15), (500, 7.85), (600, 9.65), (700, 11.35), (800, 13.15), (900, 14.85), (1000, 16.65),
(1100, 18.35), (1200, 20.15), (1300, 21.85), (1400, 23.65), (1500, 25.35), (1600, 27.15), (1700, 28.85),
(1800, 30.65), (1900, 32.35), (2000, 34.15), (2100, 35.85), (2200, 37.65), (2300, 39.35), (2400, 41.15),
(2500, 42.85), (2600, 44.65), (2700, 46.35), (2800, 48.15), (2900, 49.85), (3000, 51.65), (3100, 53.35),
(3200, 55.15), (3300, 56.85), (3400, 58.65), (3500, 60.35), (3600, 62.15), (3700, 63.15), (3800, 65.65),
(3900, 67.35), (4000, 69.15), (4100, 70.85), (4200, 72.65), (4300, 74.35), (4400, 76.15), (4500, 77.85),
(4600, 79.65), (4700, 81.35), (4800, 83.15), (4900, 84.85), (5000, 86.65), (5100, 88.35), (5200, 90.15),
(5300, 91.85), (5400, 93.65), (5500, 95.35), (5600, 97.15), (5700, 98.85), (5800, 100.65), (5900, 102.35),
(6000, 104.15), (999999999999999, 104.15),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_my_socso_act_4_first_category_employer"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<record id="rule_parameter_my_socso_act_4_second_category_employer" model="hr.rule.parameter">
<field name="name">MY: SOCSO Act 4 - Second Category Employer</field>
<field name="code">l10n_my_socso_act_4_second_category_employer</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_socso_act_4_second_category_employer_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
(30, 0.30), (50, 0.50), (70, 0.80), (100, 1.10), (140, 1.50), (200, 2.10), (300, 3.10),
(400, 4.40), (500, 5.60), (600, 6.90), (700, 8.10), (800, 9.40), (900, 10.60), (1000, 11.90),
(1100, 13.10), (1200, 14.40), (1300, 15.60), (1400, 16.90), (1500, 18.10), (1600, 19.40), (1700, 20.60),
(1800, 21.90), (1900, 23.10), (2000, 24.40), (2100, 25.60), (2200, 26.90), (2300, 28.10), (2400, 29.40),
(2500, 30.60), (2600, 31.90), (2700, 33.10), (2800, 34.40), (2900, 35.60), (3000, 36.90), (3100, 38.10),
(3200, 39.40), (3300, 40.60), (3400, 41.90), (3500, 43.10), (3600, 44.40), (3700, 45.60), (3800, 46.90),
(3900, 48.10), (4000, 49.40), (4100, 50.60), (4200, 51.90), (4300, 53.10), (4400, 54.40), (4500, 55.60),
(4600, 56.90), (4700, 58.10), (4800, 59.40), (4900, 60.60), (5000, 61.90), (5100, 63.10), (5200, 64.40),
(5300, 65.60), (5400, 66.90), (5500, 68.10), (5600, 69.40), (5700, 70.60), (5800, 71.90), (5900, 73.10),
(6000, 74.40), (999999999999999, 74.40),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_my_socso_act_4_second_category_employer"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<!-- EIS Rate - Employee -->
<record id="rule_parameter_my_eis_rate_employee" model="hr.rule.parameter">
<field name="name">MY: EIS Rate Employee</field>
<field name="code">l10n_my_eis_rate_employee</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_eis_rate_employee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.2</field>
<field name="rule_parameter_id" ref="rule_parameter_my_eis_rate_employee"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
<!-- EIS Rate - Employer -->
<record id="rule_parameter_my_eis_rate_employer" model="hr.rule.parameter">
<field name="name">MY: EIS Rate Employer</field>
<field name="code">l10n_my_eis_rate_employer</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="rule_parameter_my_eis_rate_employer_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.2</field>
<field name="rule_parameter_id" ref="rule_parameter_my_eis_rate_employer"/>
<field name="date_from" eval="datetime(2020, 4, 1).date()"/>
</record>
</data>
</odoo>
@@ -0,0 +1,16 @@
<odoo>
<record id="hr_payroll_socso_employee" model="hr.salary.rule.category">
<field name="name">SOCSO Employee Share</field>
<field name="code">SOCSO_EMP</field>
<field name="country_id" ref="base.my"/>
<field name="parent_id" ref="hr_payroll.DED"/>
</record>
<record id="hr_payroll_socso_employer" model="hr.salary.rule.category">
<field name="name">SOCSO Employer Share</field>
<field name="code">SOCSO_EMPLR</field>
<field name="country_id" ref="base.my"/>
<field name="parent_id" ref="hr_payroll.COMP"/>
</record>
</odoo>
@@ -0,0 +1,338 @@
<odoo>
<data>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_rule_basic_allowance" model="hr.salary.rule">
<field name="name">Allowance</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="code">MY_GENERIC_ALW</field>
<field name="sequence">5</field>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_input_generic"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_input_generic"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_dearness_allowance" model="hr.salary.rule">
<field name="name">Dearness Allowance</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="code">MY_DA</field>
<field name="sequence">6</field>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_dearness_allowance"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_dearness_allowance"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_house_rent_allowance" model="hr.salary.rule">
<field name="name">House Rent Allowance</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="code">MY_HRA</field>
<field name="sequence">6</field>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_house_rent_allowance"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_house_rent_allowance"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_conveyance_allowance" model="hr.salary.rule">
<field name="name">Conveyance Allowance</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="code">MY_CONV_ALW</field>
<field name="sequence">6</field>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_conveyance_allowance"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_my_hr_payroll.l10n_my_hr_payroll_conveyance_allowance"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<!-- EPF -->
<record id="l10n_my_rule_epf_employee" model="hr.salary.rule">
<field name="name">EPF</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="code">EPF_EMP</field>
<field name="sequence">110</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -ceil(categories['GROSS'] * payslip._rule_parameter("l10n_my_epf_rate_employee") / 100)
</field>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<!-- EPF - Employer -->
<record id="l10n_my_rule_epf_employer" model="hr.salary.rule">
<field name="name">EPF - Employer</field>
<field name="category_id" ref="hr_payroll.COMP"/>
<field name="code">EPF_EMPLR</field>
<field name="sequence">115</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
rate = 0
if result &lt;= payslip._rule_parameter("l10n_my_epf_threshold_employer"):
rate = payslip._rule_parameter("l10n_my_epf_rate_employer_low")
else:
rate = payslip._rule_parameter("l10n_my_epf_rate_employer_high")
result = ceil(result * rate / 100)
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<!-- SOCSO -->
<record id="l10n_my_rule_socso_800_employee" model="hr.salary.rule">
<field name="name">SOCSO - Act 800</field>
<field name="category_id" ref="hr_payroll_socso_employee"/>
<field name="code">SOCSO_800_EMP</field>
<field name="sequence">120</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
def _find_contribution(wage, contributions):
for (limit, contribution) in contributions:
if wage &lt;= limit:
return contribution
if employee.l10n_my_socso_exempted:
result = 0
else:
contributions = payslip._rule_parameter('l10n_my_socso_act_800_employee')
wage = categories['GROSS']
result = -_find_contribution(wage, contributions)
</field>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_socso_800_employer" model="hr.salary.rule">
<field name="name">SOCSO - Act 800 - Employer</field>
<field name="category_id" ref="hr_payroll_socso_employer"/>
<field name="code">SOCSO_800_EMPLR</field>
<field name="sequence">121</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
if employee.l10n_my_socso_exempted:
result = 0
else:
result = -result_rules['SOCSO_800_EMP']['total']
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_socso_4_employee" model="hr.salary.rule">
<field name="name">SOCSO - Act 4</field>
<field name="category_id" ref="hr_payroll_socso_employee"/>
<field name="code">SOCSO_4_EMP</field>
<field name="sequence">125</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
def _find_contribution(wage, contributions):
for (limit, contribution) in contributions:
if wage &lt;= limit:
return contribution
if employee.l10n_my_socso_exempted:
result = 0
else:
contributions = payslip._rule_parameter('l10n_my_socso_act_4_first_category_employee')
wage = categories['GROSS']
result = -_find_contribution(wage, contributions)
</field>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_socso_4_employer" model="hr.salary.rule">
<field name="name">SOCSO - Act 4 - Employer</field>
<field name="category_id" ref="hr_payroll_socso_employer"/>
<field name="code">SOCSO_4_EMPLR</field>
<field name="sequence">126</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
def _find_contribution(wage, contributions):
for (limit, contribution) in contributions:
if wage &lt;= limit:
return contribution
wage = categories['GROSS']
if employee.l10n_my_socso_exempted:
contributions = payslip._rule_parameter('l10n_my_socso_act_4_second_category_employer')
result = -_find_contribution(wage, contributions)
else:
contributions = payslip._rule_parameter('l10n_my_socso_act_4_first_category_employer')
result = -_find_contribution(wage, contributions)
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_socso_employee" model="hr.salary.rule">
<field name="name">SOCSO Employee Share</field>
<field name="category_id" ref="hr_payroll_socso_employee"/>
<field name="code">SOCSO_EMP</field>
<field name="sequence">150</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = -categories['SOCSO_EMP']
</field>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_rule_socso_employer" model="hr.salary.rule">
<field name="name">SOCSO Employer Share</field>
<field name="category_id" ref="hr_payroll_socso_employer"/>
<field name="code">SOCSO_EMPLR</field>
<field name="sequence">151</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['SOCSO_EMPLR']
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<!-- EIS -->
<record id="l10n_my_rule_eis_employee" model="hr.salary.rule">
<field name="name">EIS</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="code">EIS_EMP</field>
<field name="sequence">160</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
result_rate = -payslip._rule_parameter("l10n_my_eis_rate_employee")
</field>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<!-- EIS - Employer -->
<record id="l10n_my_rule_eis_employer" model="hr.salary.rule">
<field name="name">EIS - Employer</field>
<field name="category_id" ref="hr_payroll.COMP"/>
<field name="code">EIS_EMPLR</field>
<field name="sequence">161</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['GROSS']
result_rate = payslip._rule_parameter("l10n_my_eis_rate_employer")
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="l10n_my_hr_payroll.hr_payroll_structure_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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_my_employee_salary"/>
</record>
<record id="l10n_my_hr_payroll_structure_my_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 = categories['BASIC'] + categories['ALW'] + categories['DED']
</field>
<field name="struct_id" ref="hr_payroll_structure_my_employee_salary"/>
</record>
</data>
</odoo>
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="base.demo_company_my" model="res.company" forcecreate="1">
<field name="name">My Malaysian Company</field>
<field name="currency_id" ref="base.MYR"/>
<field name="street">2 Wisma Stephens Jln Raja Chulan</field>
<field name="zip">50200</field>
<field name="city">Kuala Lumpur</field>
<field name="country_id" ref="base.my"/>
</record>
<record id="base.user_admin" model="res.users">
<field name="company_ids" eval="[(4, ref('base.demo_company_my'))]"/>
</record>
<record id="base.user_demo" model="res.users">
<field name="company_ids" eval="[(4, ref('base.demo_company_my'))]"/>
</record>
<record id="hr_department_rdmy" model="hr.department">
<field name="name">RD MY</field>
<field name="company_id" ref="base.demo_company_my"/>
</record>
<record id="hr_employee_kah_yoon_ooi" model="hr.employee">
<field name="name">Kah Yoon Ooi</field>
<field name="job_id" ref="hr.job_developer"/>
<field name="country_id" ref="base.my"/>
<field name="company_id" ref="base.demo_company_my"/>
<field name="image_1920" type="base64" file="l10n_my_hr_payroll/static/img/hr_employee_kah_yoon_ooi.jpg"/>
<field name="sex">male</field>
<field name="structure_type_id" ref="l10n_my_hr_payroll.structure_type_employee_my"/>
</record>
<record id="res_partner_xiu_mei_lee" model="res.partner">
<field name="name">Xiu Mei Lee</field>
<field name="street">11 Jalan Bunga Melati 16A Taman Seraya Cheras</field>
<field name="city">Kuala Lumpur</field>
<field name="zip">56100</field>
<field name="country_id" ref="base.my"/>
<field name="phone">(603) 42915114</field>
<field name="email">xiu_mei_lee@example.com</field>
<field name="company_id" ref="base.demo_company_my"/>
</record>
<record id="user_xiu_mei_lee" model="res.users">
<field name="partner_id" ref="l10n_my_hr_payroll.res_partner_xiu_mei_lee"/>
<field name="login">xiu_mei_lee@example.com</field>
<field name="signature" type="html"><span>--<br/>+Xiu Mei Lee</span></field>
<field name="company_ids" eval="[(4, ref('base.demo_company_my'))]"/>
<field name="company_id" ref="base.demo_company_my"/>
<field name="group_ids" eval="[(6,0,[ref('base.group_user')])]"/>
<field name="image_1920" type="base64" file="l10n_my_hr_payroll/static/img/hr_employe_xiu_mei_lee.jpg"/>
</record>
<record id="res_partner_xiu_mei_lee_work_address" model="res.partner">
<field name="name">MY Offices</field>
<field name="street">M 10 Jln Ss21/39 Ss21 Petaling Jaya</field>
<field name="city">Petaling Jaya</field>
<field name="zip">47400</field>
<field name="country_id" ref="base.my"/>
<field name="company_id" ref="base.demo_company_my"/>
</record>
<record id="res_partner_xiu_mei_lee_private_address" model="res.partner">
<field name="name">Xiu Mei Lee</field>
<field name="company_id" ref="base.demo_company_my"/>
</record>
<record id="res_partner_bank_account_norberta" model="res.partner.bank">
<field name="acc_number">MY3193779311764615225576</field>
<field name="bank_id" ref="base.bank_ing"/>
<field name="partner_id" ref="l10n_my_hr_payroll.res_partner_xiu_mei_lee_private_address"/>
<field name="company_id" ref="base.demo_company_my"/>
</record>
<record id="hr_employee_xiu_mei_lee" model="hr.employee">
<field name="name">Xiu Mei Lee (XML)</field>
<field name="sex">female</field>
<field name="marital">single</field>
<field name="private_street">no 15-1 kuchai business centre jalan kuchai lama</field>
<field name="private_city">Kuala Lumpur</field>
<field name="private_zip">58200</field>
<field name="private_country_id" ref="base.my"/>
<field name="private_phone">012 3200 599</field>
<field name="private_email">xiu_mei_lee@example.com</field>
<field name="address_id" ref="l10n_my_hr_payroll.res_partner_xiu_mei_lee_work_address"/>
<field name="emergency_contact">Yan Nie Chan</field>
<field name="emergency_phone">+60 (0)3 4251-0670</field>
<field name="birthday">1991-07-28</field>
<field name="distance_home_work">25</field>
<field name="place_of_birth">Muar</field>
<field name="country_of_birth" ref="base.my"/>
<field name="certificate">master</field>
<field name="study_field">Civil Engineering</field>
<field name="study_school">Kuala Lumpur University</field>
<field name="parent_id" ref="l10n_my_hr_payroll.hr_employee_kah_yoon_ooi"/>
<field name="country_id" ref="base.my"/>
<field name="identification_id">8752027365496</field>
<field name="bank_account_ids" eval="[(4, ref('l10n_my_hr_payroll.res_partner_bank_account_norberta'))]"/>
<field name="image_1920" type="base64" file="l10n_my_hr_payroll/static/img/hr_employe_xiu_mei_lee.jpg"/>
<field name="company_id" ref="base.demo_company_my"/>
<field name="user_id" ref="l10n_my_hr_payroll.user_xiu_mei_lee"/>
<field name="department_id" ref="hr_department_rdmy"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="structure_type_id" ref="l10n_my_hr_payroll.structure_type_employee_my"/>
<field name="wage">7000</field>
<field name="hr_responsible_id" ref="base.user_demo"/>
<field name="date_version" eval="(DateTime.today() + relativedelta(years=-2, month=1, day=1))"/>
<field name="contract_date_start" eval="(DateTime.today() + relativedelta(years=-2, month=1, day=1))"/>
<field name="contract_date_end" eval="(DateTime.today() + relativedelta(years=-1, month=1, day=1, days=-2))"/>
<field name="resource_calendar_id" model="resource.calendar" eval="obj().search([('company_id', '=', obj().env.ref('base.demo_company_my').id)], limit=1)"/>
</record>
<function name="create_version" model="hr.employee">
<value eval="[ref('l10n_my_hr_payroll.hr_employee_xiu_mei_lee')]"/>
<value eval="{
'date_version': DateTime.today() + relativedelta(years=-1, month=1, day=1, days=-1),
'contract_date_start': DateTime.today() + relativedelta(years=-1, month=1, day=1, days=-1),
'contract_date_end': False,
'wage': 10000.00
}"/>
</function>
</odoo>