added overdue loan methods #61

Merged
ameye merged 1 commits from test into master 2025-11-28 10:25:48 +00:00
4 changed files with 48 additions and 5 deletions
+39 -2
View File
@@ -89,13 +89,50 @@ class LoanRepaymentSchedule(db.Model):
@classmethod
def get_overdue_repayment_schedule(cls):
"""
Get all overdue repayment schedules.
Get all overdue repayment schedules that are not repaid.
"""
try:
return cls.query.filter(cls.due_date < datetime.now(timezone.utc), cls.paid == False).all()
return cls.query.filter(cls.due_date < datetime.now(timezone.utc), cls.paid == False).order_by(cls.due_date.asc()).all()
except Exception as e:
logger.error(f"Error fetching overdue repayment schedules: {e}")
return []
@classmethod
def get_active_overdue_repayment_schedule(cls):
"""
Get all overdue repayment schedules that are active.
"""
try:
return (
cls.query
.filter(
cls.due_date < datetime.now(timezone.utc),
cls.paid_status == RepaymentScheduleStatus.ACTIVE
)
.order_by(cls.due_date.asc())
.all()
)
except Exception as e:
logger.error(f"Error fetching active overdue repayment schedules: {e}")
return []
@classmethod
def get_partially_paid_overdue_repayment_schedule(cls):
"""
Get all overdue repayment schedules that are partially paid.
"""
try:
return (
cls.query
.filter(
cls.due_date < datetime.now(timezone.utc),
cls.paid_status == RepaymentScheduleStatus.PARTIALLY_PAID
)
.order_by(cls.due_date.asc())
.all()
)
except Exception as e:
logger.error(f"Error fetching partially paid overdue repayment schedules: {e}")
return []
@classmethod
def get_repayment_schedule_by_transaction_id(cls, transaction_id):
+2 -2
View File
@@ -443,8 +443,8 @@ def report():
@autocall_bp.route("/overdue-loans", methods=["GET"])
def overdue_loans():
try:
# Step 1: Get all overdue loans
overdue_loans = LoanRepaymentScheduleService.get_overdue_repayment_schedule()
# Step 1: Get all active overdue loans
overdue_loans = LoanRepaymentScheduleService.get_active_overdue_repayment_schedule()
logger.info(f"Found {len(overdue_loans)} overdue loans.")
if not overdue_loans:
+1 -1
View File
@@ -58,7 +58,7 @@ class LoanService:
@classmethod
def set_disbursement_loan_description(cls,loan_id,description):
return Loan.set_disbursement_message(loan_id, result, description)
return Loan.set_disbursement_message(loan_id, description)
@classmethod
+6
View File
@@ -13,6 +13,12 @@ class LoanRepaymentScheduleService:
def get_overdue_repayment_schedule(cls):
return LoanRepaymentSchedule.get_overdue_repayment_schedule()
@classmethod
def get_active_overdue_repayment_schedule(cls):
return LoanRepaymentSchedule.get_active_overdue_repayment_schedule()
@classmethod
def get_partially_paid_overdue_repayment_schedule(cls):
return LoanRepaymentSchedule.get_partially_paid_overdue_repayment_schedule()
@classmethod
def get_repayment_schedule_by_id_and_transaction_id(cls, id, transaction_id):
return LoanRepaymentSchedule.get_repayment_schedule_by_id_and_transaction_id(id, transaction_id)