[update]: repayment schedule table
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from datetime import datetime, timezone
|
||||
from itertools import product
|
||||
from app.extensions import db
|
||||
from sqlalchemy.orm import relationship
|
||||
from dateutil.relativedelta import relativedelta
|
||||
@@ -8,13 +9,14 @@ class LoanRepaymentSchedule(db.Model):
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
loan_id = db.Column(db.Integer, nullable=False)
|
||||
product_id = db.Column(db.String(20), nullable=True)
|
||||
installment_number = db.Column(db.Integer, nullable=False)
|
||||
due_date = db.Column(db.DateTime, nullable=False)
|
||||
principal_amount = db.Column(db.Float, default=0.0)
|
||||
interest_amount = db.Column(db.Float, default=0.0)
|
||||
total_installment = db.Column(db.Float, default=0.0)
|
||||
installment_amount= db.Column(db.Float, default=0.0)
|
||||
total_repayment_amount = db.Column(db.Float, default=0.0)
|
||||
paid = db.Column(db.Boolean, default=False)
|
||||
paid_at = db.Column(db.DateTime, nullable=True)
|
||||
|
||||
created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc))
|
||||
updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc))
|
||||
|
||||
@@ -27,19 +29,12 @@ class LoanRepaymentSchedule(db.Model):
|
||||
|
||||
|
||||
@classmethod
|
||||
def add_repayment_schedule(cls, loan, Offer, charges):
|
||||
def add_repayment_schedule(cls, loan, tenor):
|
||||
"""
|
||||
Add repayment schedules for a given loan.
|
||||
"""
|
||||
|
||||
now = datetime.now(timezone.utc)
|
||||
schedules = []
|
||||
interest_fee = charges["interest"]
|
||||
|
||||
tenor = Offer.tenor // 30
|
||||
|
||||
principal = loan.initial_loan_amount / tenor
|
||||
interest = interest_fee["fee"] / tenor
|
||||
|
||||
for i in range(tenor):
|
||||
due_date = now + relativedelta(months=i + 1)
|
||||
@@ -47,9 +42,9 @@ class LoanRepaymentSchedule(db.Model):
|
||||
loan_id=loan.id,
|
||||
installment_number=i + 1,
|
||||
due_date=due_date,
|
||||
principal_amount=round(principal, 2),
|
||||
interest_amount=round(interest, 2),
|
||||
total_installment=round(loan.installment_amount, 2)
|
||||
total_repayment_amount = round(loan.repayment_amount, 2),
|
||||
installment_amount=round(loan.installment_amount, 2),
|
||||
product_id = loan.product_id
|
||||
)
|
||||
|
||||
db.session.add(schedule)
|
||||
|
||||
Reference in New Issue
Block a user