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

+4
View File
@@ -0,0 +1,4 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
+1
View File
@@ -0,0 +1 @@
{'name': 'Morocco - Payroll', 'countries': ['ma'], 'category': 'Human Resources/Payroll', 'depends': [], 'auto_install': True, 'version': '1.0', 'description': '\nMorocco Payroll Rules.\n=========================\n\n * Employee Details\n * Employee Contracts\n ', 'data': ['data/hr_salary_rule_category_data.xml', 'data/hr_payroll_structure_type_data.xml', 'data/hr_payroll_structure_data.xml', 'data/res_partner_data.xml', 'data/hr_rule_parameters_data.xml', 'data/hr_payslip_input_type_data.xml', 'data/hr_salary_rule_data.xml', 'views/hr_contract_template_views.xml', 'views/hr_employee_views.xml', 'views/res_config_settings_views.xml', 'views/report_payslip_templates.xml'], 'demo': ['data/l10n_ma_hr_payroll_demo.xml'], 'author': 'Odoo S.A.', 'license': 'LGPL-3'}
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_payroll_salary_ma_structure_base" model="hr.payroll.structure">
<field name="code">MARMONTHLY</field>
<field name="name">Moroccan Payroll Structure</field>
<field name="type_id" ref="l10n_ma_hr_payroll.structure_type_employee_mar"/>
<field name="country_id" ref="base.ma"/>
<field name="rule_ids" eval="[]"/>
</record>
<record id="l10n_ma_hr_payroll.structure_type_employee_mar" model="hr.payroll.structure.type">
<field name="default_struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
</data>
</odoo>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="structure_type_employee_mar" model="hr.payroll.structure.type">
<field name="name">Morocco: 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.ma"/>
</record>
</data>
</odoo>
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="AVS" model="hr.payslip.input.type">
<field name="code">AVS</field>
<field name="name">Avance sur Salaire</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
<record id="input_extra_hours_25" model="hr.payslip.input.type">
<field name="code">EXTRA_HOURS_25</field>
<field name="name">Extra Hours 25%</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
<record id="input_extra_hours_50" model="hr.payslip.input.type">
<field name="code">EXTRA_HOURS_50</field>
<field name="name">Extra Hours 50%</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
<record id="input_extra_hours_100" model="hr.payslip.input.type">
<field name="code">EXTRA_HOURS_100</field>
<field name="name">Extra Hours 100%</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
<record id="input_INDMTD" model="hr.payslip.input.type">
<field name="code">INDMTD</field>
<field name="name">Miscellaneous taxable indemnity</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
<record id="input_INDMNTD" model="hr.payslip.input.type">
<field name="code">INDMNTD</field>
<field name="name">Miscellaneous non-taxable indemnity</field>
<field name="country_id" ref="base.ma"/>
<field name="struct_ids" eval="[(4, ref('l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base'))]"/>
</record>
</data>
</odoo>
@@ -0,0 +1,251 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="l10n_ma_rule_parameter_seniority" model="hr.rule.parameter">
<field name="name">Morocco: Seniority</field>
<field name="code">l10n_ma_seniority</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_seniority_value" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 0, 2, 0 ),
( 2, 5, 0.05),
( 5, 12, 0.10),
(12, 20, 0.15),
(20, 25, 0.20),
(25,100, 0.25),
]</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_seniority"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_cnss" model="hr.rule.parameter">
<field name="name">CNSS Value (%)</field>
<field name="code">l10n_ma_cnss</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_cnss_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">4.48</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_cnss"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_cnss_max" model="hr.rule.parameter">
<field name="name">CNSS Value Max</field>
<field name="code">l10n_ma_cnss_max</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_cnss_max_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">6000</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_cnss_max"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_job_loss" model="hr.rule.parameter">
<field name="name">Job Loss Allowance (%)</field>
<field name="code">l10n_ma_job_loss</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_job_loss_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">0.19</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_job_loss"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_job_loss_max" model="hr.rule.parameter">
<field name="name">Job Loss Allowance Max</field>
<field name="code">l10n_ma_job_loss_max</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_job_loss_max_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">6000</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_job_loss_max"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_amo" model="hr.rule.parameter">
<field name="name">Employee AMO (%)</field>
<field name="code">l10n_ma_amo</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_amo_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">2.26</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_amo"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_medical_alw" model="hr.rule.parameter">
<field name="name">Medical Allowance (%)</field>
<field name="code">l10n_ma_medical_alw</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_medical_alw_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">2.26</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_medical_alw"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_cimr" model="hr.rule.parameter">
<field name="name">CIMR (%)</field>
<field name="code">l10n_ma_cimr</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_cimr_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">3</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_cimr"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_cimr_max" model="hr.rule.parameter">
<field name="name">CIMR Maximum</field>
<field name="code">l10n_ma_cimr_max</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_cimr_max_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">2500</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_cimr_max"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_pro_contribution" model="hr.rule.parameter">
<field name="name">Professional Contribution (%)</field>
<field name="code">l10n_ma_pro_contribution</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_pro_contribution_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">20</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_pro_contribution"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_family_allocation_employer" model="hr.rule.parameter">
<field name="name">Family Allocation: Employer Cost (%)</field>
<field name="code">l10n_ma_family_allocation_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_family_allocation_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">6.4</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_family_allocation_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_social_benefit_employer" model="hr.rule.parameter">
<field name="name">Social Benefit: Employer Cost (%)</field>
<field name="code">l10n_ma_social_benefit_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_social_benefit_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">8.98</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_social_benefit_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_social_benefit_employer_max" model="hr.rule.parameter">
<field name="name">Social Benefit Maximum: Employer Cost</field>
<field name="code">l10n_ma_social_benefit_employer_max</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_social_benefit_employer_max_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">6000</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_social_benefit_employer_max"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_professional_training_employer" model="hr.rule.parameter">
<field name="name">Professional Training: Employer Cost (%)</field>
<field name="code">l10n_ma_professional_training_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_professional_training_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">1.6</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_professional_training_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_amo_employer" model="hr.rule.parameter">
<field name="name">AMO Participation: Employer Cost (%)</field>
<field name="code">l10n_ma_amo_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_amo_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">4.11</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_amo_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_mutuality_employer" model="hr.rule.parameter">
<field name="name">Mutuality: Employer Cost (%)</field>
<field name="code">l10n_ma_mutuality_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_mutuality_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">2.59</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_mutuality_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_cimr_employer" model="hr.rule.parameter">
<field name="name">CIMR: Employer Cost (%)</field>
<field name="code">l10n_ma_cimr_employer</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_cimr_employer_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">3.9</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_cimr_employer"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_income_tax_breakdown" model="hr.rule.parameter">
<field name="name">Morocco: Income Tax Breakdown</field>
<field name="code">l10n_ma_income_tax_breakdown</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_income_tax_breakdown_values_2017" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 2501.00, 0, 0.00),
( 4167.00, 10, 250.00),
( 5001.00, 20, 666.67),
( 6667.00, 30, 1166.67),
( 15000.00, 34, 1433.33),
(9999999999.99, 38, 2033.00),
]</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_income_tax_breakdown"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_social_contribution_coef" model="hr.rule.parameter">
<field name="name">Social Contribution (%)</field>
<field name="code">l10n_ma_social_contribution_coef</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_social_contribution_coef_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">1.5</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_social_contribution_coef"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_min_net_for_soc_contr" model="hr.rule.parameter">
<field name="name">Social Contribution: Minimum Net Salary</field>
<field name="code">l10n_ma_min_net_for_soc_contr</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_min_net_for_soc_contr_value_2017" model="hr.rule.parameter.value">
<field name="parameter_value">20000</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_min_net_for_soc_contr"/>
<field name="date_from" eval="datetime(2017, 1, 1).date()"/>
</record>
<record id="l10n_ma_rule_parameter_social_security_ceil" model="hr.rule.parameter">
<field name="name">Social Security Ceiling</field>
<field name="code">l10n_ma_social_security_ceil</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="l10n_ma_rule_parameter_social_security_ceil_value_2021" model="hr.rule.parameter.value">
<field name="parameter_value">40000</field>
<field name="rule_parameter_id" ref="l10n_ma_rule_parameter_social_security_ceil"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
</odoo>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="SALC" model="hr.salary.rule.category">
<field name="name">Salary Costs</field>
<field name="code">SALC</field>
<field name="parent_id" ref="hr_payroll.DED"/>
<field name="country_id" ref="base.ma"/>
</record>
<record id="DEDIRPP" model="hr.salary.rule.category">
<field name="name">Tax deduction</field>
<field name="code">DEDIRPP</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="UNTAXABLE_DED" model="hr.salary.rule.category">
<field name="name">Untaxed Deductions</field>
<field name="code">UNTAXABLE_DED</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="INCOME_TAX" model="hr.salary.rule.category">
<field name="name">Income Tax</field>
<field name="code">INCOME_TAX</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="O_TOTAL" model="hr.salary.rule.category">
<field name="name">Others</field>
<field name="code">O_TOTALS</field>
<field name="country_id" ref="base.ma"/>
</record>
</data>
</odoo>
@@ -0,0 +1,460 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- BASIC -->
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_basic_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.BASIC"/>
<field name="name">Basic Salary</field>
<field name="sequence">0</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_salary_ma_structure_base"/>
</record>
<!-- ALLOWANCES -->
<record id="l10n_ma_hr_rule_extra_hours_25" model="hr.salary.rule">
<field name="name">Extra Hours 25%</field>
<field name="code">EXTRA_HOURS_25</field>
<field name="sequence">1</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_25"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_25"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_extra_hours_50" model="hr.salary.rule">
<field name="name">Extra Hours 50%</field>
<field name="code">EXTRA_HOURS_50</field>
<field name="sequence">2</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_50"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_50"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_extra_hours_100" model="hr.salary.rule">
<field name="name">Extra Hours 100%</field>
<field name="code">EXTRA_HOURS_100</field>
<field name="sequence">3</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">input</field>
<field name="condition_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_100"/>
<field name="amount_select">input</field>
<field name="amount_other_input_id" ref="l10n_ma_hr_payroll.input_extra_hours_100"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_seniority" model="hr.salary.rule">
<field name="name">Seniority</field>
<field name="code">SENIORITY</field>
<field name="sequence">4</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">
months = (payslip.date_from.year - employee._get_first_version_date().year) * 12 + (payslip.date_from.month - employee._get_first_version_date().month)
result = months >= 24
</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
months = (payslip.date_from.year - employee._get_first_version_date().year) * 12 + (payslip.date_from.month - employee._get_first_version_date().month)
years = months / 12
basic_salary = categories['BASIC']
result = 0
for low, high, rate in payslip._rule_parameter('l10n_ma_seniority'):
if low &lt;= years &lt;= high:
result = basic_salary * rate
break
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_kilometric_exemption" model="hr.salary.rule">
<field name="name">Kilometric Exemption</field>
<field name="code">KILOMETRIC_EXEMPTION</field>
<field name="sequence">5</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_kilometric_exemption</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = version.l10n_ma_kilometric_exemption
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_transportation_exemption" model="hr.salary.rule">
<field name="name">Transportation Exemption</field>
<field name="code">TRANSPORT_EXEMPTION</field>
<field name="sequence">6</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_transport_exemption</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = version.l10n_ma_transport_exemption
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_hra" model="hr.salary.rule">
<field name="name">House Rent Allowance</field>
<field name="code">HRA</field>
<field name="sequence">7</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_hra</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = version.l10n_ma_hra</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_da" model="hr.salary.rule">
<field name="name">Dearness Allowance</field>
<field name="code">DA</field>
<field name="sequence">8</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_da</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = version.l10n_ma_da</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_meal" model="hr.salary.rule">
<field name="name">Meal Allowance</field>
<field name="code">MEAL_A</field>
<field name="sequence">9</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_meal_allowance</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(version.l10n_ma_meal_allowance, 0.2 * result_rules['BASIC']['total'])
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_medical" model="hr.salary.rule">
<field name="name">Medical Allowance</field>
<field name="code">MED_A</field>
<field name="sequence">10</field>
<field name="category_id" ref="hr_payroll.ALW"/>
<field name="condition_select">python</field>
<field name="condition_python">result = version.l10n_ma_medical_allowance</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = version.l10n_ma_medical_allowance</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<!-- GROSS -->
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_gross_salary_rule" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.GROSS"/>
<field name="name">Taxable Salary</field>
<field name="sequence">20</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_salary_ma_structure_base"/>
</record>
<!-- UNTAXABLE DEDUCTIONS -->
<record id="l10n_ma_hr_payroll_rules_employee_cnss" model="hr.salary.rule">
<field name="name">Employee CNSS</field>
<field name="code">E_CNSS</field>
<field name="sequence">21</field>
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
cnss_coef = payslip._rule_parameter('l10n_ma_cnss') / 100
cnss_ceil = payslip._rule_parameter('l10n_ma_cnss_max')
result = min(cnss_ceil, gross_salary) * cnss_coef
</field>
<field name="partner_id" ref="hr_CNSS_register"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_job_loss_allowance" model="hr.salary.rule">
<field name="name">Job Loss Allowance</field>
<field name="code">JOB_LOSS_ALW</field>
<field name="sequence">22</field>
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
job_loss_coef = payslip._rule_parameter('l10n_ma_job_loss') / 100
job_loss_ceil = payslip._rule_parameter('l10n_ma_job_loss_max')
result = min(job_loss_ceil, gross_salary * job_loss_coef)
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_employee_amo" model="hr.salary.rule">
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="name">Employee AMO</field>
<field name="code">E_AMO</field>
<field name="sequence">23</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
amo_coef = payslip._rule_parameter('l10n_ma_job_loss') / 100
result = gross_salary * amo_coef
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_medical_alw" model="hr.salary.rule">
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="name">Medical Allowance</field>
<field name="code">MEDICAL_ALW</field>
<field name="sequence">24</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
medical_alw_coef = payslip._rule_parameter('l10n_ma_medical_alw') / 100
result = gross_salary * medical_alw_coef
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_cimr" model="hr.salary.rule">
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="name">CIMR</field>
<field name="code">CIMR</field>
<field name="sequence">25</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
cimr_coef = payslip._rule_parameter('l10n_ma_cimr') / 100
cimr_ceil = payslip._rule_parameter('l10n_ma_cimr_max')
result = min(cimr_ceil, gross_salary * cimr_coef)
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_pro_contribution" model="hr.salary.rule">
<field name="category_id" ref="l10n_ma_hr_payroll.UNTAXABLE_DED"/>
<field name="name">Professional Contribution</field>
<field name="code">PRO_CONTRIBUTION</field>
<field name="sequence">26</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_salary = result_rules['GROSS']['total']
cimr_coef = payslip._rule_parameter('l10n_ma_cimr') / 100
result = gross_salary * cimr_coef
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_rules_total_untaxable_ded" model="hr.salary.rule">
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">Total Untaxable Deductions</field>
<field name="code">TOTAL_UT_DED</field>
<field name="sequence">30</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = categories['UNTAXABLE_DED']
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<!-- GROSS TAXABLE -->
<record id="l10n_ma_hr_rule_taxable_gross" model="hr.salary.rule">
<field name="name">Gross Taxable</field>
<field name="code">GROSS_TAXABLE</field>
<field name="sequence">40</field>
<field name="category_id" ref="hr_payroll.GROSS"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = min(
result_rules['GROSS']['total'] - categories['UNTAXABLE_DED'],
payslip._rule_parameter('l10n_ma_social_security_ceil')
)
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<!-- INCOME TAX -->
<record id="l10n_ma_hr_rule_gross_income_tax" model="hr.salary.rule">
<field name="name">Gross Income Tax</field>
<field name="code">GROSS_INCOME_TAX</field>
<field name="sequence">50</field>
<field name="category_id" ref="l10n_ma_hr_payroll.INCOME_TAX"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
tax_breakdown = payslip._rule_parameter('l10n_ma_income_tax_breakdown')
gross = result_rules['GROSS_TAXABLE']['total']
result = 0
for max_gross, coef, deduction in tax_breakdown:
if gross > max_gross:
continue
result = gross * (coef / 100) - deduction
break
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_family_charge" model="hr.salary.rule">
<field name="name">Family Charge</field>
<field name="code">FAMILY_CHARGE</field>
<field name="sequence">51</field>
<field name="category_id" ref="l10n_ma_hr_payroll.INCOME_TAX"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = 0
if version.employee_id.marital == 'married':
result+=30
if version.employee_id.children:
result+=min(180, 30*version.employee_id.children)
</field>
<field name="appears_on_payslip" eval="False"/>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_rule_net_income_tax" model="hr.salary.rule">
<field name="name">Net Income Tax</field>
<field name="code">NET_INCOME_TAX</field>
<field name="sequence">60</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
gross_ic = result_rules['GROSS_INCOME_TAX']['total']
fam_charge = result_rules['FAMILY_CHARGE']['total']
result = max(0, gross_ic - fam_charge)
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<!-- DEDUCTIONS -->
<record id="l10n_ma_hr_rule_social_contribution" model="hr.salary.rule">
<field name="name">Social Contribution</field>
<field name="code">SOCIAL_CONTRIBUTION</field>
<field name="sequence">61</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="amount_select">code</field>
<field name="amount_python_compute">
virtual_net = result_rules['GROSS']['total'] - categories['UNTAXABLE_DED'] - result_rules['NET_INCOME_TAX']['total']
coef = payslip._rule_parameter('l10n_ma_social_contribution_coef') / 100
min = payslip._rule_parameter('l10n_ma_min_net_for_soc_contr')
result = 0
if virtual_net > min:
result = coef * virtual_net
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_salary_rule_av_sal" model="hr.salary.rule">
<field name="code">AVS</field>
<field name="name">Avance sur Salaire</field>
<field name="sequence">62</field>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="condition_select">python</field>
<field name="amount_select">code</field>
<field name="condition_python">result = 'AVS' in inputs > 0</field>
<field name="amount_python_compute">
result = -inputs['AVS'].amount
result_name = inputs['AVS'].name
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_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_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_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_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_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_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_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_salary_ma_structure_base"/>
</record>
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_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_salary_ma_structure_base"/>
</record>
<!-- NET -->
<record id="l10n_ma_hr_payroll_salary_ma_structure_base_net_salary_rule" 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="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">
result = result_rules['GROSS']['total'] - categories['DED'] - result_rules['NET_INCOME_TAX']['total']
</field>
<field name="struct_id" ref="hr_payroll_salary_ma_structure_base"/>
</record>
</data>
</odoo>
@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="base.partner_demo_company_ma" model="res.partner" forcecreate="1">
<field name="name">My Moroccan Company</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="base.demo_company_ma" model="res.company" forcecreate="1">
<field name="name">My Moroccan Company</field>
<field name="partner_id" ref="base.partner_demo_company_ma"/>
<field name="currency_id" ref="base.MAD"/>
<field name="street">14000 Avenue Mokhtar Gazoulit</field>
<field name="zip">10000</field>
<field name="city">Rabat</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="base.user_admin" model="res.users">
<field name="company_ids" eval="[(4, ref('base.demo_company_ma'))]"/>
</record>
<record id="base.user_demo" model="res.users">
<field name="company_ids" eval="[(4, ref('base.demo_company_ma'))]"/>
</record>
<record id="ma_hr_department_rd" model="hr.department">
<field name="name">R&amp;D MA</field>
<field name="company_id" ref="base.demo_company_ma"/>
</record>
<record id="res_partner_sufyan" model="res.partner">
<field name="name">Sufyan Harrak</field>
<field name="street">436, Avenue Mohammed El Fassi </field>
<field name="city">Rabat</field>
<field name="zip">10100</field>
<field name="country_id" ref="base.ma"/>
<field name="phone">0993 784 912</field>
<field name="company_id" ref="base.demo_company_ma"/>
</record>
<record id="res_partner_sufyan" model="res.partner">
<field name="email" model="res.partner" eval="'demo.' + obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).name.split(' ')[-1].lower() + '@example.com'"/>
</record>
<record id="res_partner_meryem" model="res.partner">
<field name="name">Meryem Kadiri</field>
<field name="street">14000 Avenue Mokhtar Gazoulit</field>
<field name="city">Rabat</field>
<field name="zip">10000</field>
<field name="country_id" ref="base.ma"/>
<field name="phone">0991 842 900</field>
<field name="company_id" ref="base.demo_company_ma"/>
</record>
<record id="res_partner_meryem" model="res.partner">
<field name="email" model="res.partner" eval="'demo.' + obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name.split(' ')[-1].lower() + '@example.com'"/>
</record>
<record id="user_meryem" model="res.users">
<field name="partner_id" ref="l10n_ma_hr_payroll.res_partner_meryem"/>
<!-- [email protected] -->
<field name="login" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name.replace(' ', '.').lower() + '@example.com'"/>
<field name="signature" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name.split(' ')[0][0] + '. ' + obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name.split(' ')[-1]"/>
<field name="company_ids" eval="[(4, ref('base.demo_company_ma'))]"/>
<field name="company_id" ref="base.demo_company_ma"/>
<field name="group_ids" eval="[(6,0,[ref('base.group_user')])]"/>
<field name="image_1920" type="base64" file="l10n_ma_hr_payroll/static/img/hr_employee_meryem.jpg"/>
</record>
<record id="ma_res_bank_attijariwafa" model="res.bank">
<field name="name">Attijariwafa Bank</field>
<field name="bic">BCMAMAMCXXX</field>
<field name="street">Attijariwafa Bank Rd</field>
<field name="city">Rabat</field>
<field name="zip">129019</field>
<field name="country" ref="base.ma"/>
<field name="phone">0993 438 127</field>
</record>
<record id="ma_res_bank_attijariwafa" model="res.bank">
<field name="email" model="res.bank" eval="obj(ref('l10n_ma_hr_payroll.ma_res_bank_attijariwafa')).name.replace(' ', '.').lower() + '@example.com'"/>
</record>
<record id="ma_res_bank_banque_populaire" model="res.bank">
<field name="name">Banque Populaire</field>
<field name="bic">BCPOMAMCXXX</field>
<field name="street">Banque Populaire Street</field>
<field name="city">Rabat</field>
<field name="zip">10283</field>
<field name="country" ref="base.ma"/>
<field name="phone">0991 908 032</field>
</record>
<record id="ma_res_bank_banque_populaire" model="res.bank">
<field name="email" model="res.bank" eval="obj(ref('l10n_ma_hr_payroll.ma_res_bank_banque_populaire')).name.replace(' ', '.').lower() + '@example.com'"/>
</record>
<record id="res_partner_bank_account_sufyan" model="res.partner.bank">
<field name="acc_number">MA030103599935698356</field>
<field name="allow_out_payment" eval="True"/>
<field name="bank_id" ref="l10n_ma_hr_payroll.ma_res_bank_attijariwafa"/>
<field name="partner_id" ref="l10n_ma_hr_payroll.res_partner_sufyan"/>
<field name="company_id" ref="base.demo_company_ma"/>
<field name="currency_id" ref="base.EUR"/>
</record>
<record id="res_partner_bank_account_meryem" model="res.partner.bank">
<field name="acc_number">MA64031419000001205000892323</field>
<field name="allow_out_payment" eval="True"/>
<field name="bank_id" ref="l10n_ma_hr_payroll.ma_res_bank_banque_populaire"/>
<field name="partner_id" ref="l10n_ma_hr_payroll.res_partner_meryem"/>
<field name="company_id" ref="base.demo_company_ma"/>
<field name="currency_id" ref="base.MAD"/>
</record>
<record id="hr_employee_sufyan" model="hr.employee">
<field name="name" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).name"/>
<field name="image_1920" type="base64" file="l10n_ma_hr_payroll/static/img/hr_employee_sufyan.jpg"/>
<field name="work_phone">0994 000 111</field>
<field name="work_email" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).name.replace(' ', '.').lower() + '@example.com'"/>
<field name="work_contact_id" ref="l10n_ma_hr_payroll.res_partner_sufyan"/>
<field name="company_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).company_id"/>
<field name="resource_calendar_id" ref="resource.resource_calendar_std"/>
<field name="tz">Africa/Casablanca</field>
<field name="private_street" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).street"/>
<field name="private_city" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).city"/>
<field name="private_zip" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).zip"/>
<field name="private_state_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).state_id"/>
<field name="private_country_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).country_id"/>
<field name="private_email" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).email"/>
<field name="private_phone" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).phone"/>
<field name="distance_home_work">17</field>
<field name="country_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).country_id"/>
<field name="identification_id">9993083335496</field>
<field name="sex">male</field>
<field name="birthday" eval="datetime(1975, 3, 21).date()"/>
<field name="place_of_birth">Marrakesh</field>
<field name="country_of_birth" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_sufyan')).country_id"/>
<field name="emergency_contact">Abdou Harrak</field>
<field name="emergency_phone">0999 274 891</field>
<field name="certificate">doctor</field>
<field name="study_field">Physiology</field>
<field name="study_school">Al Akhawayn University</field>
<field name="marital">single</field>
<field name="l10n_ma_cin_number">1000-274</field>
<field name="l10n_ma_cnss_number">1000-149</field>
<field name="l10n_ma_cimr_number">1000-784</field>
<field name="l10n_ma_mut_number">1000-893</field>
<field name="bank_account_ids" eval="[(4, ref('l10n_ma_hr_payroll.res_partner_bank_account_sufyan'))]"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="department_id" ref="l10n_ma_hr_payroll.ma_hr_department_rd"/>
<field name="structure_type_id" ref="l10n_ma_hr_payroll.structure_type_employee_mar"/>
<field name="wage_type">monthly</field>
<field name="wage">3250</field>
<field name="hr_responsible_id" ref="base.user_demo"/>
<field name="date_version" eval="(DateTime.today() + relativedelta(years=-3, month=1, day=1))"/>
<field name="contract_date_start" eval="(DateTime.today() + relativedelta(years=-3, month=1, day=1))"/>
<field name="resource_calendar_id" model="resource.calendar" eval="obj().search([('company_id', '=', obj().env.ref('base.demo_company_ma').id)], limit=1)"/>
</record>
<record id="hr_employee_meryem" model="hr.employee">
<field name="name" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name"/>
<field name="image_1920" type="base64" file="l10n_ma_hr_payroll/static/img/hr_employee_meryem.jpg"/>
<field name="work_phone">0994 000 112</field>
<field name="work_email" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).name.replace(' ', '.').lower() + '@example.com'"/>
<field name="parent_id" ref="l10n_ma_hr_payroll.hr_employee_sufyan"/>
<field name="user_id" ref="l10n_ma_hr_payroll.user_meryem"/>
<field name="company_id" ref="base.demo_company_ma"/>
<field name="resource_calendar_id" ref="resource.resource_calendar_std"/>
<field name="tz">Africa/Casablanca</field>
<field name="private_street" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).street"/>
<field name="private_city" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).city"/>
<field name="private_zip" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).zip"/>
<field name="private_state_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).state_id"/>
<field name="private_country_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).country_id"/>
<field name="private_email" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).email"/>
<field name="private_phone" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).phone"/>
<field name="distance_home_work">1</field>
<field name="country_id" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).country_id"/>
<field name="identification_id">9992027365496</field>
<field name="sex">female</field>
<field name="birthday" eval="datetime(1961, 7, 28).date()"/>
<field name="place_of_birth">Casablanca</field>
<field name="country_of_birth" model="res.partner" eval="obj(ref('l10n_ma_hr_payroll.res_partner_meryem')).country_id"/>
<field name="emergency_contact">Nawal Kadiri</field>
<field name="emergency_phone">0999 123 123</field>
<field name="certificate">master</field>
<field name="study_field">Electrical Engineering</field>
<field name="study_school">Université Mundiapolis Casablanca</field>
<field name="marital">single</field>
<field name="l10n_ma_cin_number">1000-123</field>
<field name="l10n_ma_cnss_number">1000-123</field>
<field name="l10n_ma_cimr_number">1000-123</field>
<field name="l10n_ma_mut_number">1000-123</field>
<field name="bank_account_ids" eval="[(4, ref('l10n_ma_hr_payroll.res_partner_bank_account_meryem'))]"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="department_id" ref="l10n_ma_hr_payroll.ma_hr_department_rd"/>
<field name="structure_type_id" ref="l10n_ma_hr_payroll.structure_type_employee_mar"/>
<field name="wage_type">monthly</field>
<field name="wage">5000</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_ma').id)], limit=1)"/>
</record>
<function name="create_version" model="hr.employee">
<value eval="[ref('l10n_ma_hr_payroll.hr_employee_meryem')]"/>
<value eval="{
'date_version': DateTime.today() + relativedelta(years=-1, month=1, day=1, days=-2) + relativedelta(days=1),
'contract_date_start': DateTime.today() + relativedelta(years=-1, month=1, day=1, days=-2) + relativedelta(days=1),
'contract_date_end': False,
'wage': 5600.00
}"/>
</function>
<record id="hr_payslip_batch_morocco" model="hr.payslip.run">
<field name="name" eval="'Batch salary ' + (DateTime.today() + relativedelta(months=-1)).strftime('%B %Y')"/>
<field name="date_start" eval="(DateTime.today() + relativedelta(months=-1, day=1)).strftime('%Y-%m-%d')"/>
<field name="date_end" eval="(DateTime.today() + relativedelta(day=1, days=-1)).strftime('%Y-%m-%d')"/>
<field name="company_id" ref="base.main_company"/>
</record>
</odoo>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_CNSS_register" model="res.partner">
<field name="name">National Social Security Fund</field><!-- Caisse Nationale de Sécurité Sociale -->
<field name="street">649, Bd Mohammed V - BP</field>
<field name="city">Casablanca</field>
<field name="zip">10726</field>
<field name="phone">+212(0)522547054</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="hr_retraite_register" model="res.partner">
<field name="name">Supplementary Pension Organization CIMR</field><!-- Organisme de retraite complementaire CIMR -->
<field name="street">Intersection Boulevard de l'Aéropostale et boulevard Main street - Casa Anfa.</field>
<field name="city">Hay Hassani. Casablanca</field>
<field name="zip">20230</field>
<field name="phone">+212(0)522424888</field>
<field name="country_id" ref="base.ma"/>
</record>
<record id="hr_cci_register" model="res.partner">
<field name="name">Chamber of Commerce and Industry</field><!-- Chambre du commerce et de l'industrie -->
<!-- Depends on the region -->
<field name="country_id" ref="base.ma"/>
</record>
<record id="hr_prevoyance_register" model="res.partner">
<field name="name">Mutual and Prevoyance Organization</field><!-- Organisme de Mutuelle et prévoyance -->
<field name="country_id" ref="base.ma"/>
</record>
</data>
</odoo>
+388
View File
@@ -0,0 +1,388 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ma_hr_payroll
#
# Weblate <[email protected]>, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
"PO-Revision-Date: 2026-04-20 07:17+0000\n"
"Last-Translator: Weblate <[email protected]>\n"
"Language-Team: Arabic <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_ma_hr_payroll/ar/>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 5.16.2\n"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "<span>/ month</span>"
msgstr "<span>/ شهر</span>"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_assignment_of_salary_rule
msgid "Assignment of Salary"
msgstr "تعيين الراتب"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_attachment_of_salary_rule
msgid "Attachment of Salary"
msgstr "مرفق الراتب"
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.AVS
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_salary_rule_av_sal
msgid "Avance sur Salaire"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_basic_salary_rule
msgid "Basic Salary"
msgstr "الراتب الأساسي"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_cimr
msgid "CIMR"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "CIMR Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "CIN Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "CNSS Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_child_support
msgid "Child Support"
msgstr "دعم الطفل"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_collective_agreement
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_collective_agreement
msgid "Collective agreement"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_company
msgid "Companies"
msgstr "الشركات"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Company Information"
msgstr "معلومات الشركة"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_config_settings
msgid "Config Settings"
msgstr "تهيئة الإعدادات"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "DA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_da
msgid "Dearness Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "Dearness allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_deduction_salary_rule
msgid "Deduction"
msgstr "الخصم"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__display_name
msgid "Display Name"
msgstr "اسم العرض"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_employee
msgid "Employee"
msgstr "الموظف"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_amo
msgid "Employee AMO"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_cnss
msgid "Employee CNSS"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_version
msgid "Employee Contract"
msgstr "عقد الموظف"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_employer_contribution
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_employer_contribution
msgid "Employer's contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_100
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_100
msgid "Extra Hours 100%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_25
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_25
msgid "Extra Hours 25%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_50
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_50
msgid "Extra Hours 50%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_family_charge
msgid "Family Charge"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_gross_income_tax
msgid "Gross Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_taxable_gross
msgid "Gross Taxable"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "HRA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_hra
msgid "House Rent Allowance"
msgstr "بدل سكن"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "House rent allowance."
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__id
msgid "ID"
msgstr "المُعرف"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.INCOME_TAX
msgid "Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_job_loss_allowance
msgid "Job Loss Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_kilometric_exemption
msgid "Kilometric Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_meal
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_medical_alw
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_medical
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMNTD
msgid "Miscellaneous non-taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMTD
msgid "Miscellaneous taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "Moroccan Interprofessional Retirement Fund"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Moroccan Localization"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payroll.structure,name:l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base
msgid "Moroccan Payroll Structure"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_mut_number
msgid "Mutual Insurance Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "National Identity Card Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_net_income_tax
msgid "Net Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_net_salary_rule
msgid "Net Salary"
msgstr "صافي المرتب"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Offical Company Information"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "Options"
msgstr "الخيارات"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.O_TOTAL
msgid "Others"
msgstr "غير ذلك"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_payslip
msgid "Pay Slip"
msgstr "إيصال الدفع"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_pro_contribution
msgid "Professional Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.department,name:l10n_ma_hr_payroll.ma_hr_department_rd
msgid "R&D MA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_reimbursement_salary_rule
msgid "Reimbursement"
msgstr "إعادة الأموال"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.SALC
msgid "Salary Costs"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_seniority
msgid "Seniority"
msgstr "الأقدمية"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_social_contribution
msgid "Social Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "Social Security National Fund Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_social_security_organization
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_social_security_organization
msgid "Social security organization"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.DEDIRPP
msgid "Tax deduction"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_gross_salary_rule
msgid "Taxable Salary"
msgstr "راتب خاضع للضريبة"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_total_untaxable_ded
msgid "Total Untaxable Deductions"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_transportation_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_transport_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_transport_exemption
msgid "Transportation Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.UNTAXABLE_DED
msgid "Untaxed Deductions"
msgstr ""
+387
View File
@@ -0,0 +1,387 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ma_hr_payroll
#
# Weblate <[email protected]>, 2025, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
"PO-Revision-Date: 2026-04-20 07:27+0000\n"
"Last-Translator: Weblate <[email protected]>\n"
"Language-Team: French <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_ma_hr_payroll/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.16.2\n"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "<span>/ month</span>"
msgstr "<span>/ mois</span>"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_assignment_of_salary_rule
msgid "Assignment of Salary"
msgstr "Cession de salaire"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_attachment_of_salary_rule
msgid "Attachment of Salary"
msgstr "Saisie sur salaire"
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.AVS
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_salary_rule_av_sal
msgid "Avance sur Salaire"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_basic_salary_rule
msgid "Basic Salary"
msgstr "Salaire de base"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_cimr
msgid "CIMR"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "CIMR Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "CIN Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "CNSS Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_child_support
msgid "Child Support"
msgstr "Pension alimentaire"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_collective_agreement
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_collective_agreement
msgid "Collective agreement"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Company Information"
msgstr "Informations de la société"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de configuration"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "DA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_da
msgid "Dearness Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "Dearness allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_deduction_salary_rule
msgid "Deduction"
msgstr "Déduction"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_employee
msgid "Employee"
msgstr "Employé"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_amo
msgid "Employee AMO"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_cnss
msgid "Employee CNSS"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_version
msgid "Employee Contract"
msgstr "Contrat de l'employé"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_employer_contribution
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_employer_contribution
msgid "Employer's contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_100
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_100
msgid "Extra Hours 100%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_25
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_25
msgid "Extra Hours 25%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_50
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_50
msgid "Extra Hours 50%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_family_charge
msgid "Family Charge"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_gross_income_tax
msgid "Gross Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_taxable_gross
msgid "Gross Taxable"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "HRA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_hra
msgid "House Rent Allowance"
msgstr "Allocation logement"
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "House rent allowance."
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.INCOME_TAX
msgid "Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_job_loss_allowance
msgid "Job Loss Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_kilometric_exemption
msgid "Kilometric Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_meal
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_medical_alw
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_medical
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMNTD
msgid "Miscellaneous non-taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMTD
msgid "Miscellaneous taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "Moroccan Interprofessional Retirement Fund"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Moroccan Localization"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payroll.structure,name:l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base
msgid "Moroccan Payroll Structure"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_mut_number
msgid "Mutual Insurance Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "National Identity Card Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_net_income_tax
msgid "Net Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_net_salary_rule
msgid "Net Salary"
msgstr "Salaire net"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Offical Company Information"
msgstr "Informations officielles sur l'entreprise"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "Options"
msgstr "Options"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.O_TOTAL
msgid "Others"
msgstr "Autres"
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_payslip
msgid "Pay Slip"
msgstr "Fiche de Paie"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_pro_contribution
msgid "Professional Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.department,name:l10n_ma_hr_payroll.ma_hr_department_rd
msgid "R&D MA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_reimbursement_salary_rule
msgid "Reimbursement"
msgstr "Remboursement"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.SALC
msgid "Salary Costs"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_seniority
msgid "Seniority"
msgstr "Ancienneté"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_social_contribution
msgid "Social Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "Social Security National Fund Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_social_security_organization
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_social_security_organization
msgid "Social security organization"
msgstr "Organisme de sécurité sociale"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.DEDIRPP
msgid "Tax deduction"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_gross_salary_rule
msgid "Taxable Salary"
msgstr "Salaire imposable"
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_total_untaxable_ded
msgid "Total Untaxable Deductions"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_transportation_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_transport_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_transport_exemption
msgid "Transportation Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.UNTAXABLE_DED
msgid "Untaxed Deductions"
msgstr ""
@@ -0,0 +1,383 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ma_hr_payroll
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:08+0000\n"
"PO-Revision-Date: 2025-12-30 19:08+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "<span>/ month</span>"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_assignment_of_salary_rule
msgid "Assignment of Salary"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_attachment_of_salary_rule
msgid "Attachment of Salary"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.AVS
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_salary_rule_av_sal
msgid "Avance sur Salaire"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_basic_salary_rule
msgid "Basic Salary"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_cimr
msgid "CIMR"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "CIMR Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "CIN Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "CNSS Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_child_support
msgid "Child Support"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_collective_agreement
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_collective_agreement
msgid "Collective agreement"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Company Information"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "DA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_da
msgid "Dearness Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_da
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_da
msgid "Dearness allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_deduction_salary_rule
msgid "Deduction"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_employee
msgid "Employee"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_amo
msgid "Employee AMO"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_employee_cnss
msgid "Employee CNSS"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_version
msgid "Employee Contract"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_employer_contribution
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_employer_contribution
msgid "Employer's contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_100
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_100
msgid "Extra Hours 100%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_25
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_25
msgid "Extra Hours 25%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_extra_hours_50
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_extra_hours_50
msgid "Extra Hours 50%"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_family_charge
msgid "Family Charge"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_gross_income_tax
msgid "Gross Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_taxable_gross
msgid "Gross Taxable"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "HRA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_hra
msgid "House Rent Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_hra
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_hra
msgid "House rent allowance."
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_payslip__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__id
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__id
msgid "ID"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.INCOME_TAX
msgid "Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_job_loss_allowance
msgid "Job Loss Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_kilometric_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_kilometric_exemption
msgid "Kilometric Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_meal
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_meal_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_meal_allowance
msgid "Meal allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_medical_alw
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_medical
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical Allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_medical_allowance
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_version__l10n_ma_medical_allowance
msgid "Medical allowance"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMNTD
msgid "Miscellaneous non-taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payslip.input.type,name:l10n_ma_hr_payroll.input_INDMTD
msgid "Miscellaneous taxable indemnity"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cimr_number
msgid "Moroccan Interprofessional Retirement Fund"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Moroccan Localization"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.payroll.structure,name:l10n_ma_hr_payroll.hr_payroll_salary_ma_structure_base
msgid "Moroccan Payroll Structure"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_mut_number
msgid "Mutual Insurance Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cin_number
msgid "National Identity Card Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_net_income_tax
msgid "Net Income Tax"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_net_salary_rule
msgid "Net Salary"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.res_config_settings_view_form
msgid "Offical Company Information"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_contract_template_view_form
#: model_terms:ir.ui.view,arch_db:l10n_ma_hr_payroll.hr_employee_form_l10n_ma_payroll
msgid "Options"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.O_TOTAL
msgid "Others"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model,name:l10n_ma_hr_payroll.model_hr_payslip
msgid "Pay Slip"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_pro_contribution
msgid "Professional Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.department,name:l10n_ma_hr_payroll.ma_hr_department_rd
msgid "R&D MA"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_reimbursement_salary_rule
msgid "Reimbursement"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.SALC
msgid "Salary Costs"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_seniority
msgid "Seniority"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_social_contribution
msgid "Social Contribution"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,help:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_cnss_number
msgid "Social Security National Fund Number"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_company__l10n_ma_social_security_organization
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_res_config_settings__l10n_ma_social_security_organization
msgid "Social security organization"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.DEDIRPP
msgid "Tax deduction"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_salary_ma_structure_base_gross_salary_rule
msgid "Taxable Salary"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_payroll_rules_total_untaxable_ded
msgid "Total Untaxable Deductions"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule,name:l10n_ma_hr_payroll.l10n_ma_hr_rule_transportation_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_employee__l10n_ma_transport_exemption
#: model:ir.model.fields,field_description:l10n_ma_hr_payroll.field_hr_version__l10n_ma_transport_exemption
msgid "Transportation Exemption"
msgstr ""
#. module: l10n_ma_hr_payroll
#: model:hr.salary.rule.category,name:l10n_ma_hr_payroll.UNTAXABLE_DED
msgid "Untaxed Deductions"
msgstr ""
+8
View File
@@ -0,0 +1,8 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import hr_version
from . import hr_employee
from . import res_company
from . import hr_payslip
from . import res_config_settings
+19
View File
@@ -0,0 +1,19 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, fields
class HrEmployee(models.Model):
_inherit = 'hr.employee'
l10n_ma_cin_number = fields.Char(string="CIN Number", help="National Identity Card Number", groups="hr.group_hr_user")
l10n_ma_cnss_number = fields.Char(string="CNSS Number", help="Social Security National Fund Number", groups="hr.group_hr_user")
l10n_ma_cimr_number = fields.Char(string="CIMR Number", help="Moroccan Interprofessional Retirement Fund", groups="hr.group_hr_user")
l10n_ma_mut_number = fields.Char(string="Mutual Insurance Number", groups="hr.group_hr_user")
l10n_ma_kilometric_exemption = fields.Monetary(readonly=False, related="version_id.l10n_ma_kilometric_exemption", inherited=True, groups="hr_payroll.group_hr_payroll_user")
l10n_ma_transport_exemption = fields.Monetary(readonly=False, related="version_id.l10n_ma_transport_exemption", inherited=True, groups="hr_payroll.group_hr_payroll_user")
l10n_ma_hra = fields.Monetary(readonly=False, related="version_id.l10n_ma_hra", inherited=True, groups="hr_payroll.group_hr_payroll_user")
l10n_ma_da = fields.Monetary(readonly=False, related="version_id.l10n_ma_da", inherited=True, groups="hr_payroll.group_hr_payroll_user")
l10n_ma_meal_allowance = fields.Monetary(readonly=False, related="version_id.l10n_ma_meal_allowance", inherited=True, groups="hr_payroll.group_hr_payroll_user")
l10n_ma_medical_allowance = fields.Monetary(readonly=False, related="version_id.l10n_ma_medical_allowance", inherited=True, groups="hr_payroll.group_hr_payroll_user")
+21
View File
@@ -0,0 +1,21 @@
# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class HrPayslip(models.Model):
_inherit = 'hr.payslip'
def _get_data_files_to_update(self):
# Note: file order should be maintained
return super()._get_data_files_to_update() + [(
'l10n_ma_hr_payroll', [
'data/hr_salary_rule_category_data.xml',
'data/hr_payroll_structure_type_data.xml',
'data/hr_payroll_structure_data.xml',
'data/hr_rule_parameters_data.xml',
'data/res_partner_data.xml',
'data/hr_salary_rule_data.xml',
'data/hr_payslip_input_type_data.xml',
])]
+30
View File
@@ -0,0 +1,30 @@
from odoo import api, fields, models
class HrVersion(models.Model):
_inherit = 'hr.version'
l10n_ma_kilometric_exemption = fields.Monetary(
string='Kilometric Exemption', groups="hr_payroll.group_hr_payroll_user",
tracking=True)
l10n_ma_transport_exemption = fields.Monetary(
string='Transportation Exemption', groups="hr_payroll.group_hr_payroll_user",
tracking=True)
l10n_ma_hra = fields.Monetary(string='HRA', tracking=True, help="House rent allowance.", groups="hr_payroll.group_hr_payroll_user")
l10n_ma_da = fields.Monetary(string="DA", help="Dearness allowance", groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_ma_meal_allowance = fields.Monetary(string="Meal Allowance", help="Meal allowance", groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_ma_medical_allowance = fields.Monetary(string="Medical Allowance", help="Medical allowance", groups="hr_payroll.group_hr_payroll_user", tracking=True)
@api.model
def _get_whitelist_fields_from_template(self):
whitelisted_fields = super()._get_whitelist_fields_from_template() or []
if self.env.company.country_id.code == "MA":
whitelisted_fields += [
"l10n_ma_da",
"l10n_ma_hra",
"l10n_ma_kilometric_exemption",
"l10n_ma_meal_allowance",
"l10n_ma_medical_allowance",
"l10n_ma_transport_exemption",
]
return whitelisted_fields
+12
View File
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResCompany(models.Model):
_inherit = 'res.company'
l10n_ma_employer_contribution = fields.Float(string="Employer's contribution")
l10n_ma_social_security_organization = fields.Char(string="Social security organization")
l10n_ma_collective_agreement = fields.Char(string="Collective agreement")
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
l10n_ma_employer_contribution = fields.Float(related="company_id.l10n_ma_employer_contribution")
l10n_ma_social_security_organization = fields.Char(related="company_id.l10n_ma_social_security_organization")
l10n_ma_collective_agreement = fields.Char(related="company_id.l10n_ma_collective_agreement")
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

+3
View File
@@ -0,0 +1,3 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import test_contract_template_whitelist
@@ -0,0 +1,49 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import TransactionCase, tagged
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestWhitelistFromTemplate(TransactionCase):
def setUp(self):
super().setUp()
self.company_ma = self.env['res.company'].create({
'name': 'MA Co',
'country_id': self.env.ref('base.ma').id,
})
self.employee_ma = self.env['hr.employee'].create({
'name': 'MA Employee',
'company_id': self.company_ma.id,
})
def test_ma_contract_template_loading(self):
Version = self.env['hr.version'].with_company(self.company_ma)
template = Version.create({
'name': 'MA Template',
'l10n_ma_kilometric_exemption': 1200.0,
'l10n_ma_transport_exemption': 800.0,
'l10n_ma_hra': 5000.0,
'l10n_ma_da': 2000.0,
'l10n_ma_meal_allowance': 1500.0,
'l10n_ma_medical_allowance': 3000.0,
})
contract = self.employee_ma.version_id
self.assertEqual(contract.l10n_ma_kilometric_exemption, 0.0)
self.assertEqual(contract.l10n_ma_transport_exemption, 0.0)
self.assertEqual(contract.l10n_ma_hra, 0.0)
self.assertEqual(contract.l10n_ma_da, 0.0)
self.assertEqual(contract.l10n_ma_meal_allowance, 0.0)
self.assertEqual(contract.l10n_ma_medical_allowance, 0.0)
wizard = self.env['hr.version.wizard']\
.with_company(self.company_ma)\
.with_context(active_model='hr.employee', active_id=self.employee_ma.id)\
.create({'contract_template_id': template.id})
wizard.action_load_template()
for field in Version._get_whitelist_fields_from_template():
self.assertEqual(contract[field], template[field])
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="hr_contract_template_view_form" model="ir.ui.view">
<field name="name">hr.contract.template.view.form.inherit.l10_ma_hr_payroll</field>
<field name="model">hr.version</field>
<field name="priority">20</field>
<field name="inherit_id" ref="hr.hr_contract_template_form_view"/>
<field name="arch" type="xml">
<group name="salary_info" position="inside">
<group string="Options" invisible="country_code != 'MA'">
<label for="l10n_ma_hra"/>
<div class="o_row">
<field name="l10n_ma_hra" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_da"/>
<div class="o_row">
<field name="l10n_ma_da" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_meal_allowance"/>
<div class="o_row">
<field name="l10n_ma_meal_allowance" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_medical_allowance"/>
<div class="o_row">
<field name="l10n_ma_medical_allowance" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_kilometric_exemption"/>
<div class="o_row">
<field name="l10n_ma_kilometric_exemption" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_transport_exemption"/>
<div class="o_row">
<field name="l10n_ma_transport_exemption" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
</group>
</group>
</field>
</record>
</data>
</odoo>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_employee_form_l10n_ma_payroll" model="ir.ui.view">
<field name="name">hr.employee.form.l10n_ma_payroll</field>
<field name="model">hr.employee</field>
<field name="priority">30</field>
<field name="inherit_id" ref="hr_payroll.payroll_hr_employee_view_form"/>
<field name="arch" type="xml">
<group name="citizenship" position="inside">
<field name="l10n_ma_cin_number" invisible="company_country_code != 'MA'"/>
<field name="l10n_ma_cnss_number" invisible="company_country_code != 'MA'"/>
<field name="l10n_ma_cimr_number" invisible="company_country_code != 'MA'"/>
<field name="l10n_ma_mut_number" invisible="company_country_code != 'MA'"/>
</group>
<group name="payroll_group" position="inside">
<group string="Options" invisible="country_code != 'MA'">
<label for="l10n_ma_hra"/>
<div class="o_row">
<field name="l10n_ma_hra" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_da"/>
<div class="o_row">
<field name="l10n_ma_da" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_meal_allowance"/>
<div class="o_row">
<field name="l10n_ma_meal_allowance" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_medical_allowance"/>
<div class="o_row">
<field name="l10n_ma_medical_allowance" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_kilometric_exemption"/>
<div class="o_row">
<field name="l10n_ma_kilometric_exemption" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
<label for="l10n_ma_transport_exemption"/>
<div class="o_row">
<field name="l10n_ma_transport_exemption" class="o_hr_narrow_field"/>
<span>/ month</span>
</div>
</group>
</group>
</field>
</record>
</odoo>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_payslip_ma" inherit_id="hr_payroll.report_payslip" primary="True">
</template>
<template id="report_payslip_ma_lang">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-set="o" t-value="o.with_context(lang=o.employee_id.lang or o.env.lang)"/>
<t t-call="l10n_ma_hr_payroll.report_payslip_ma" t-lang="o.env.lang"/>
</t>
</t>
</template>
</odoo>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.l10n_ma_hr_payroll</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="45"/>
<field name="inherit_id" ref="hr_payroll.res_config_settings_view_form"/>
<field name="arch" type="xml">
<block id="hr_payroll_accountant" position="after">
<field name="company_country_code" invisible="1"/>
<block title="Moroccan Localization" invisible="company_country_code != 'MA'">
<setting string="Company Information" company_dependent="1">
<div class="text-muted">
Offical Company Information
</div>
<group class="mt16">
<field name="l10n_ma_employer_contribution"/>
<field name="l10n_ma_social_security_organization"/>
<field name="l10n_ma_collective_agreement"/>
</group>
</setting>
</block>
</block>
</field>
</record>
</odoo>