Files
enterprise-addons/l10n_eg_hr_payroll/models/hr_version.py
T

52 lines
2.9 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class HrVersion(models.Model):
_inherit = 'hr.version'
l10n_eg_housing_allowance = fields.Monetary(string='Egypt Housing Allowance', groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_eg_transportation_allowance = fields.Monetary(string='Egypt Transportation Allowance', groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_eg_other_allowances = fields.Monetary(string='Egypt Other Allowances', groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_eg_number_of_days = fields.Integer(
string='Provision number of days', groups="hr_payroll.group_hr_payroll_user", tracking=True,
help='Number of days of basic salary to be added to the end of service provision per year')
l10n_eg_total_number_of_days = fields.Integer(
string='Total Number of Days', groups="hr_payroll.group_hr_payroll_user", tracking=True,
help='Number of days of basic salary to be added to the end of service benefit')
l10n_eg_total_eos_benefit = fields.Integer(
string='Total End of service benefit', groups="hr_payroll.group_hr_payroll_user",
compute='_compute_end_of_service')
l10n_eg_social_insurance_reference = fields.Monetary(string='Social Insurance Reference Amount', groups="hr_payroll.group_hr_payroll_user", tracking=True)
l10n_eg_total_leave_days = fields.Float(string='Total Leave Days', default=21, groups="hr_payroll.group_hr_payroll_user", tracking=True)
@api.depends('l10n_eg_total_number_of_days', 'l10n_eg_other_allowances', 'l10n_eg_transportation_allowance', 'wage')
def _compute_end_of_service(self):
for version in self:
version.l10n_eg_total_eos_benefit = ((version._get_contract_wage() + version.l10n_eg_transportation_allowance + version.l10n_eg_other_allowances) / 30) * version.l10n_eg_total_number_of_days
_check_l10n_eg_number_of_days_positive = models.Constraint(
'CHECK(l10n_eg_number_of_days >= 0)',
"Provision Number of Days must be equal to or greater than 0",
)
_check_l10n_eg_total_number_of_days_positive = models.Constraint(
'CHECK(l10n_eg_total_number_of_days >= 0)',
"Benefit Number of Days must be equal to or greater than 0",
)
@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 == "EG":
whitelisted_fields += [
"l10n_eg_housing_allowance",
"l10n_eg_number_of_days",
"l10n_eg_other_allowances",
"l10n_eg_social_insurance_reference",
"l10n_eg_total_leave_days",
"l10n_eg_total_number_of_days",
"l10n_eg_transportation_allowance",
]
return whitelisted_fields