You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
# -*- coding: utf-8 -*-
|
|
from odoo import models, fields, api
|
|
|
|
|
|
class HrPayslip(models.Model):
|
|
_inherit = 'hr.payslip'
|
|
|
|
@api.one
|
|
def compute_total_paid(self):
|
|
"""This compute the total paid amount of Loan.
|
|
"""
|
|
total = 0.0
|
|
for line in self.loan_ids:
|
|
if line.paid:
|
|
total += line.amount
|
|
self.total_paid = total
|
|
|
|
loan_ids = fields.One2many('hr.loan.line', 'payslip_id', string="Loans")
|
|
total_paid = fields.Float(string="Total Loan Amount", compute='compute_total_paid')
|
|
|
|
@api.multi
|
|
def get_loan(self):
|
|
"""This gives the installment lines of an employee where the state is not in paid.
|
|
"""
|
|
loan_list = []
|
|
loan_ids = self.env['hr.loan.line'].search([('employee_id', '=', self.employee_id.id), ('paid', '=', False)])
|
|
for loan in loan_ids:
|
|
if loan.loan_id.state == 'approve':
|
|
loan_list.append(loan.id)
|
|
self.loan_ids = loan_list
|
|
return loan_list
|
|
|
|
@api.multi
|
|
def action_payslip_done(self):
|
|
loan_list = []
|
|
for line in self.loan_ids:
|
|
if line.paid:
|
|
loan_list.append(line.id)
|
|
else:
|
|
line.payslip_id = False
|
|
self.loan_ids = loan_list
|
|
return super(HrPayslip, self).action_payslip_done()
|
|
|