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

38 lines
1.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class HrPayslipInput(models.Model):
_inherit = "hr.payslip.input"
amount = fields.Float(compute="_compute_amount", readonly=False, store=True)
l10n_au_is_default_allowance = fields.Boolean() # True if line is added as a default structure allowance
@api.depends("input_type_id")
def _compute_amount(self):
for inpt in self:
inpt.amount = inpt.input_type_id.l10n_au_default_amount
@api.model_create_multi
def create(self, vals_list):
inputs = super().create(vals_list)
loading_ref = self.env.ref("l10n_au_hr_payroll.input_leave_loading_lump")
for inpt in inputs:
if inpt.input_type_id == loading_ref and not inpt.amount:
inpt.amount = inpt._l10n_au_get_leave_loading_lump_sum()
return inputs
def _l10n_au_get_leave_loading_lump_sum(self):
self.ensure_one()
start_year = self.payslip_id._l10n_au_get_financial_year_start(fields.Date.today())
employee_allocations = self.env["hr.leave.allocation"].search([
("employee_id", "=", self.payslip_id.employee_id.id),
("date_from", ">=", start_year),
("holiday_status_id", "in", self.payslip_id.contract_id.l10n_au_leave_loading_leave_types.ids),
])
year_expected_leaves = sum(employee_allocations.mapped("number_of_days_display"))
leave_rate = self.payslip_id.contract_id.l10n_au_leave_loading_rate
usual_daily_wage = round(self.payslip_id.get_daily_wage(), 2)
return year_expected_leaves * (usual_daily_wage * (1 + leave_rate / 100))