[IMP] l10n_be_hr_payroll: Introduce a new 'Intellectual Property' advantage
Intellectual property rights guarantee their holders a temporary and territorially restricted, exclusive exploitation of their intellectual property. This monopoly stimulates innovations that are indispensable for economic growth, but can go against the right of free competition which is indispensable for the free market economy.
This commit is contained in:
@@ -84,6 +84,18 @@
|
||||
<field name="code">SSC</field>
|
||||
<field name="parent_id" ref="hr_payroll.DED"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_salary_rule_category_ip_part" model="hr.salary.rule.category">
|
||||
<field name="name">IP. Part.</field>
|
||||
<field name="code">IP. PART</field>
|
||||
<field name="parent_id" ref="hr_payroll.ALW"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_salary_rule_category_gross_with_ip" model="hr.salary.rule.category">
|
||||
<field name="name">Total Gross</field>
|
||||
<field name="code">GROSSIP</field>
|
||||
</record>
|
||||
|
||||
<!-- HR SALARY RULES-->
|
||||
<record id="hr_payroll_rules_maj" model="hr.salary.rule">
|
||||
<field name="category_id" ref="hr_payroll_head_salary"/>
|
||||
@@ -152,6 +164,33 @@ elif salary <= 2510.47:
|
||||
result = 213.48 - (0.2369 * (salary - 1609.47))
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_salary_rule_gross_with_ip" model="hr.salary.rule">
|
||||
<field name="name">Total Gross</field>
|
||||
<field name="sequence">90</field>
|
||||
<field name="code">GROSSIP</field>
|
||||
<field name="category_id" ref="l10n_be_hr_payroll.hr_salary_rule_category_gross_with_ip"/>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python">result = bool(contract.ip)</field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="amount_python_compute">result = categories.BASIC + categories.ALW</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_salary_rule_ip_part" model="hr.salary.rule">
|
||||
<field name="category_id" ref="hr_salary_rule_category_ip_part"/>
|
||||
<field name="name">Intellectual Property</field>
|
||||
<field name="code">IP.PART</field>
|
||||
<field name="sequence">91</field>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python">
|
||||
result = bool(contract.ip)
|
||||
</field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="amount_python_compute">
|
||||
result = - categories.GROSSIP * contract.ip_wage_rate / 100.0
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_payroll_rules_mis_ex_onss_1" model="hr.salary.rule">
|
||||
<field name="category_id" ref="hr_salary_rule_category_spec_soc_contribution"/>
|
||||
<field name="name">Special social cotisation</field>
|
||||
@@ -500,6 +539,34 @@ result = -contract.car_atn
|
||||
<field name="condition_python">result = bool(contract.representation_fees)</field>
|
||||
<field name="amount_python_compute">result = contract.representation_fees</field>
|
||||
</record>
|
||||
<record id="hr_salary_rule_ip" model="hr.salary.rule">
|
||||
<field name="category_id" ref="l10n_be_hr_payroll.hr_payroll_head_div_net"/>
|
||||
<field name="name">Intellectual Property</field>
|
||||
<field name="code">IP</field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="sequence">172</field>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python">result = bool(contract.ip)</field>
|
||||
<field name="amount_python_compute">result = categories.GROSSIP * contract.ip_wage_rate / 100.0</field>
|
||||
</record>
|
||||
<record id="hr_salary_rule_ip_deduction" model="hr.salary.rule">
|
||||
<field name="category_id" ref="l10n_be_hr_payroll.hr_payroll_head_div_net"/>
|
||||
<field name="name">Intellectual Property Income Deduction</field>
|
||||
<field name="code">IP.DED</field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="sequence">173</field>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python">result = bool(contract.ip)</field>
|
||||
<field name="amount_python_compute">
|
||||
tax_rate = 0.15
|
||||
ip_amount = categories.GROSSIP * contract.ip_wage_rate / 100.0
|
||||
if ip_amount >= 0.0 and ip_amount <= 15660:
|
||||
tax_rate = tax_rate / 2.0
|
||||
elif ip_amount > 15660 and ip_amount <=31320:
|
||||
tax_rate = tax_rate * 3.0 / 4.0
|
||||
result = -min(ip_amount * tax_rate, 11745)
|
||||
</field>
|
||||
</record>
|
||||
<record id="hr_payroll_rules_suppl_net" model="hr.salary.rule">
|
||||
<field name="category_id" ref="hr_payroll_head_div_net"/>
|
||||
<field name="name">Net Supplement</field>
|
||||
@@ -546,7 +613,10 @@ result = -contract.car_atn
|
||||
ref('hr_payroll_rules_suppl_net'),
|
||||
ref('hr_payroll_rules_retained_net'),
|
||||
ref('hr_salary_rule_pp_reduction_employees'),
|
||||
|
||||
ref('hr_salary_rule_ip'),
|
||||
ref('hr_salary_rule_ip_deduction'),
|
||||
ref('hr_salary_rule_ip_part'),
|
||||
ref('hr_salary_rule_gross_with_ip')
|
||||
])]" name="rule_ids"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="parent_id" ref="hr_payroll.structure_base"/>
|
||||
|
||||
@@ -85,6 +85,13 @@ class HrContract(models.Model):
|
||||
eco_checks = fields.Monetary("Eco Vouchers",
|
||||
default=lambda self: self.get_attribute('eco_checks', 'default_value'),
|
||||
help="Yearly amount the employee receives in the form of eco vouchers.")
|
||||
ip = fields.Boolean(default=False, track_visibility="onchange")
|
||||
ip_wage_rate = fields.Float(string="IP percentage", help="Should be between 0 and 100 %")
|
||||
|
||||
@api.constrains('ip_wage_rate')
|
||||
def _check_ip_wage_rate(self):
|
||||
if self.filtered(lambda contract: contract.ip_wage_rate < 0 or contract.ip_wage_rate > 100):
|
||||
raise ValidationError(_('The IP rate on wage should be between 0 and 100'))
|
||||
|
||||
@api.depends('holidays', 'wage', 'final_yearly_costs')
|
||||
def _compute_wage_with_holidays(self):
|
||||
|
||||
@@ -117,6 +117,13 @@
|
||||
</div>
|
||||
<field name="holidays_compensation" invisible="1"/>
|
||||
</group>
|
||||
<group name="salary_and_advantages" position="inside">
|
||||
<field name="ip_wage_rate"/>
|
||||
<label for="ip" attrs="{'invisible': [('ip_wage_rate', '=', 0.0)]}"/>
|
||||
<div class="o_row" attrs="{'invisible': [('ip_wage_rate', '=', 0.0)]}">
|
||||
<field name="ip" nolabel="1"/>
|
||||
</div>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user