1
0

[add]: transaction id and due date

This commit is contained in:
VivianDee
2025-04-17 11:31:05 +01:00
parent e14e290ff9
commit 2c8fda1792
2 changed files with 20 additions and 6 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ class ProvideLoanService(BaseService):
]
loan_id = loan.id
loan_charges = LoanCharge.create_charges_for_loan(loan_id = loan_id, charges = charges)
loan_charges = LoanCharge.create_charges_for_loan(loan_id = loan_id, transaction_id = transaction_id, charges = charges)
# logger.error(f"********* We need to develop the fee array here")
+19 -5
View File
@@ -1,4 +1,4 @@
from datetime import datetime, timezone
from datetime import datetime, timezone, timedelta
from app.extensions import db
from sqlalchemy.orm import relationship
@@ -8,11 +8,13 @@ class LoanCharge(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
loan_id = db.Column(db.Integer, nullable=False)
transaction_id = db.Column(db.String(50), nullable=True)
code = db.Column(db.String(50), nullable=False)
amount = db.Column(db.Float, default=0.0)
percent = db.Column(db.Float, default=0.0)
description = db.Column(db.Text, nullable=True)
due = db.Column(db.Integer, nullable=False)
due_date = 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))
@@ -24,7 +26,7 @@ class LoanCharge(db.Model):
)
@classmethod
def create_charges_for_loan(cls, loan_id, charges):
def create_charges_for_loan(cls, loan_id, transaction_id, referenced_amount = 0.0, charges):
"""
Create loan charges for a given loan.
@@ -40,15 +42,27 @@ class LoanCharge(db.Model):
raise ValueError("loan_id cannot be None")
loan_charges = []
now = datetime.now(timezone.utc)
for charge in charges:
due_days = charge.get("due", 0)
amount = charge.get("amount", 0.0)
percent = charge.get("percent", 0.0)
if amount == 0.0:
amount = (percent / 100.0) * referenced_amount
charge_obj = cls(
loan_id=loan_id,
transaction_id=charge.get("transaction_id"),
code=charge.get("code"),
amount=charge.get("amount", 0.0),
percent=charge.get("percent", 0.0),
amount=amount,
percent=percent,
description=charge.get("description", ""),
due=charge.get("due", 0)
due=due_days,
due_date=now + timedelta(days=due_days)
)
db.session.add(charge_obj)
loan_charges.append(charge_obj)