added a new penal charge endpoint

This commit was merged in pull request #63.
This commit is contained in:
Chinenye Nmoh
2026-01-22 22:41:06 +01:00
parent f048dd99ba
commit 03c12fd9b5
5 changed files with 68 additions and 3 deletions
+16 -1
View File
@@ -1,4 +1,4 @@
from datetime import datetime, timezone
from datetime import datetime, timedelta, timezone
from app.extensions import db
from app.utils.logger import logger
from sqlalchemy.exc import SQLAlchemyError
@@ -115,6 +115,21 @@ class LoanRepaymentSchedule(db.Model):
logger.error(f"Error fetching active overdue repayment schedules: {e}")
return []
@classmethod
def get_overdue_repayment_schedule_with_grace_period(cls, grace_period_days):
"""
Get all overdue repayment schedules that are not repaid and beyond the grace period.
"""
try:
grace_period_date = datetime.now(timezone.utc) - timedelta(days=grace_period_days)
return cls.query.filter(
cls.due_date < grace_period_date,
cls.paid == False
).order_by(cls.due_date.asc()).all()
except Exception as e:
logger.error(f"Error fetching overdue repayment schedules with grace period: {e}")
return []
@classmethod
def get_partially_paid_overdue_repayment_schedule(cls):
"""
Get all overdue repayment schedules that are partially paid.