[fix]: loan amount

This commit is contained in:
VivianDee
2025-04-25 15:33:58 +01:00
parent ddbabcaca9
commit 851422c335
2 changed files with 9 additions and 10 deletions
+5 -8
View File
@@ -4,10 +4,7 @@ from app.models.customer import Customer
from app.models.account import Account from app.models.account import Account
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.models.loan_charge import LoanCharge from dateutil.relativedelta import relativedelta
from dateutil.relativedelta import relativedelta
from app.models.loan_repayment_schedule import LoanRepaymentSchedule # Make sure this import exists
class Loan(db.Model): class Loan(db.Model):
@@ -45,18 +42,19 @@ class Loan(db.Model):
loan_charges = relationship( loan_charges = relationship(
"LoanCharge", "LoanCharge",
primaryjoin="Loan.id == LoanCharge.loan_id", primaryjoin="LoanCharge.loan_id == Loan.id",
foreign_keys="LoanCharge.loan_id", foreign_keys="LoanCharge.loan_id",
back_populates="loan", back_populates="loan",
) )
loan_repayent_schedules = relationship( loan_repayment_schedules = relationship(
"LoanRepaymentSchedule", "LoanRepaymentSchedule",
primaryjoin="Loan.id == LoanRepaymentSchedule.loan_id", primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id",
foreign_keys="LoanRepaymentSchedule.loan_id", foreign_keys="LoanRepaymentSchedule.loan_id",
back_populates="loan", back_populates="loan",
) )
@classmethod @classmethod
def create_loan( def create_loan(
cls, cls,
@@ -70,7 +68,6 @@ class Loan(db.Model):
upfront_fee, upfront_fee,
repayment_amount, repayment_amount,
installment_amount, installment_amount,
tenor,
status="pending", status="pending",
): ):
# Check if customer exists # Check if customer exists
+4 -2
View File
@@ -1,6 +1,7 @@
from datetime import datetime, timezone from datetime import datetime, timezone
from app.extensions import db from app.extensions import db
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from dateutil.relativedelta import relativedelta
class LoanRepaymentSchedule(db.Model): class LoanRepaymentSchedule(db.Model):
__tablename__ = 'loan_repayment_schedules' __tablename__ = 'loan_repayment_schedules'
@@ -24,12 +25,13 @@ class LoanRepaymentSchedule(db.Model):
back_populates="loan_repayment_schedules", back_populates="loan_repayment_schedules",
) )
@classmethod @classmethod
def add_repayment_schedule(cls, loan, Offer, charges): def add_repayment_schedule(cls, loan, Offer, charges):
""" """
Add repayment schedules for a given loan. Add repayment schedules for a given loan.
""" """
if not loan.amount or not loan.installment_amount: if not loan.initial_loan_amount or not loan.installment_amount:
raise ValueError("Loan must have amount and installment_amount set.") raise ValueError("Loan must have amount and installment_amount set.")
now = datetime.now(timezone.utc) now = datetime.now(timezone.utc)
@@ -38,7 +40,7 @@ class LoanRepaymentSchedule(db.Model):
tenor = Offer.tenor // 30 tenor = Offer.tenor // 30
principal = loan.amount / tenor principal = loan.initial_loan_amount / tenor
interest = interest_fee["fee"] / tenor interest = interest_fee["fee"] / tenor
for i in range(tenor): for i in range(tenor):