[fix]: loan amount
This commit is contained in:
+5
-8
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user