1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/l10n_lu_hr_payroll/models/hr_employee.py
2024-12-10 09:04:09 +07:00

66 lines
2.6 KiB
Python

# -*- coding:utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date
from odoo import api, fields, models
class HrEmployee(models.Model):
_inherit = 'hr.employee'
l10n_lu_tax_classification = fields.Selection(
[('1', '1'),
('1a', '1a'),
('2', '2')
], string="Tax Classification",
compute='_compute_l10n_lu_tax_classification', store=True, readonly=False,
groups="hr_payroll.group_hr_payroll_user")
l10n_lu_travel_expense = fields.Float(
"Travel Expense Monthly Compensation", groups="hr_payroll.group_hr_payroll_user")
l10n_lu_tax_card_number = fields.Char("Tax Card Number", groups="hr_payroll.group_hr_payroll_user")
@api.depends('children', 'marital', 'birthday')
def _compute_l10n_lu_tax_classification(self):
def _get_age_on_2017(employee):
start = employee.birthday or date.today()
end = date(2017, 1, 1)
age = end.year - start.year - ((end.month, end.day) < (start.month, start.day))
return age
# Source: https://impotsdirects.public.lu/dam-assets/fr/baremes/recueil-bareme-01012017.pdf
for employee in self:
if employee.company_country_code != 'LU':
continue
result = ''
if employee.marital == 'single':
if not employee.children:
result = '1'
elif employee.children:
result = '1a'
if _get_age_on_2017(employee) >= 64:
result = '1a'
elif employee.marital in ['married', 'cohabitant']:
if not employee.children:
result = '2'
elif employee.children:
result = '2'
if _get_age_on_2017(employee) >= 64:
result = '2'
elif employee.marital == 'divorced':
if not employee.children:
result = '1'
elif employee.children:
result = '1a'
if _get_age_on_2017(employee) >= 64:
result = '1a'
elif employee.marital == 'widower':
if not employee.children:
result = '1a'
elif employee.children:
result = '1a'
if _get_age_on_2017(employee) >= 64:
result = '1a'
if result and result != employee.l10n_lu_tax_classification:
employee.l10n_lu_tax_classification = result