From 851422c33581c423a7721428a38d85bd0b21fa74 Mon Sep 17 00:00:00 2001 From: VivianDee <115420678+VivianDee@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:33:58 +0100 Subject: [PATCH] [fix]: loan amount --- app/models/loan.py | 13 +++++-------- app/models/loan_repayment_schedule.py | 6 ++++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/models/loan.py b/app/models/loan.py index 79c86b8..e625bee 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -4,10 +4,7 @@ from app.models.customer import Customer from app.models.account import Account from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import relationship -from app.models.loan_charge import LoanCharge -from dateutil.relativedelta import relativedelta -from app.models.loan_repayment_schedule import LoanRepaymentSchedule # Make sure this import exists - +from dateutil.relativedelta import relativedelta class Loan(db.Model): @@ -45,18 +42,19 @@ class Loan(db.Model): loan_charges = relationship( "LoanCharge", - primaryjoin="Loan.id == LoanCharge.loan_id", + primaryjoin="LoanCharge.loan_id == Loan.id", foreign_keys="LoanCharge.loan_id", back_populates="loan", ) - loan_repayent_schedules = relationship( + loan_repayment_schedules = relationship( "LoanRepaymentSchedule", - primaryjoin="Loan.id == LoanRepaymentSchedule.loan_id", + primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id", foreign_keys="LoanRepaymentSchedule.loan_id", back_populates="loan", ) + @classmethod def create_loan( cls, @@ -70,7 +68,6 @@ class Loan(db.Model): upfront_fee, repayment_amount, installment_amount, - tenor, status="pending", ): # Check if customer exists diff --git a/app/models/loan_repayment_schedule.py b/app/models/loan_repayment_schedule.py index aeb1923..eee9e23 100644 --- a/app/models/loan_repayment_schedule.py +++ b/app/models/loan_repayment_schedule.py @@ -1,6 +1,7 @@ from datetime import datetime, timezone from app.extensions import db from sqlalchemy.orm import relationship +from dateutil.relativedelta import relativedelta class LoanRepaymentSchedule(db.Model): __tablename__ = 'loan_repayment_schedules' @@ -24,12 +25,13 @@ class LoanRepaymentSchedule(db.Model): back_populates="loan_repayment_schedules", ) + @classmethod def add_repayment_schedule(cls, loan, Offer, charges): """ 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.") now = datetime.now(timezone.utc) @@ -38,7 +40,7 @@ class LoanRepaymentSchedule(db.Model): tenor = Offer.tenor // 30 - principal = loan.amount / tenor + principal = loan.initial_loan_amount / tenor interest = interest_fee["fee"] / tenor for i in range(tenor):