48 lines
2.1 KiB
Python
48 lines
2.1 KiB
Python
from random import randint
|
|
from odoo import fields, models, api, _
|
|
|
|
|
|
class FamilyDebits(models.Model):
|
|
_name = 'family.debits'
|
|
_description = "Family - Debits"
|
|
|
|
|
|
loan_giver = fields.Many2one("loan.giver",string='Loan Giver')
|
|
loan_amount = fields.Float(string='Loan Amount')
|
|
loan_total_paid = fields.Float(string='Loan Total Paid')
|
|
loan_remaining = fields.Float(string='Loan Remaining',compute='_compute_loan_remaining',store=True)
|
|
monthly_installment = fields.Float(string='Monthly Installment')
|
|
number_of_installments = fields.Integer(string='Number of installments')
|
|
last_paid_amount = fields.Float(string='Last Paid Amount')
|
|
last_paid_amount_date = fields.Date(string='Last Paid Amount Date')
|
|
loan_start_date = fields.Date(string='Loan Start Date')
|
|
loan_end_date = fields.Date(string='Loan End Date')
|
|
loan_reason = fields.Many2one("loan.reason",string='Loan Reason')
|
|
benefit_id = fields.Many2one("grant.benefit")
|
|
mother_benefit_id = fields.Many2one('grant.benefit',string="Mother Benefit",ondelete='cascade')
|
|
currency_id = fields.Many2one('res.currency', related='benefit_id.currency_id')
|
|
loan_attach = fields.Binary(attachment=True,string='Loan Attach')
|
|
description = fields.Char(string='Description')
|
|
state = fields.Selection(string='Status', selection=[('accepted', 'Accepted'), ('refused', 'Refused')])
|
|
deduct_from_family_income = fields.Boolean(string="Deduct from Family Income")
|
|
|
|
def action_accept(self):
|
|
self.state = 'accepted'
|
|
|
|
def action_refuse(self):
|
|
self.state = 'refused'
|
|
|
|
@api.depends('loan_amount','loan_total_paid')
|
|
def _compute_loan_remaining(self):
|
|
for rec in self:
|
|
rec.loan_remaining = rec.loan_amount - rec.loan_total_paid
|
|
|
|
@api.onchange('loan_amount','number_of_installments')
|
|
def get_monthly_installment(self):
|
|
for rec in self:
|
|
if rec.loan_amount and rec.number_of_installments > 0 :
|
|
rec.monthly_installment = rec.loan_amount / rec.number_of_installments
|
|
else:
|
|
rec.monthly_installment = 0
|
|
|