Compare commits

...

2 Commits

Author SHA1 Message Date
Chinenye Nmoh 4070dbadf7 added loan_repayment_schedule 2025-11-20 14:24:47 +01:00
Chinenye Nmoh ee87614f6e added loan_repayment_schedule 2025-11-20 14:18:47 +01:00
6 changed files with 13 additions and 29 deletions
-26
View File
@@ -1,26 +0,0 @@
VALID_APP_ID=**********
VALID_API_KEY=*************
BASIC_AUTH_USERNAME=******
BASIC_AUTH_PASSWORD=******
SWAGGER_URL="/documentation"
API_URL="/swagger.json"
JWT_SECRET_KEY=******
JWT_ACCESS_TOKEN_EXPIRES=******
JWT_REFRESH_TOKEN_EXPIRES=******
DATABASE_USER=*****
DATABASE_PASSWORD=*****
DATABASE_HOST=******
DATABASE_PORT=******
DATABASE_NAME=*****
# Flask Configuration
FLASK_APP=wsgi.py
FLASK_ENV=development
APP_PORT=4500
SIMBRELLA_BASE_URL=***************
+2 -2
View File
@@ -17,6 +17,6 @@ EXPOSE 5000
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN chmod +x scripts/entrypoint.sh
RUN chmod +x scripts/entry.sh
ENTRYPOINT ["scripts/entrypoint.sh"]
ENTRYPOINT ["scripts/entry.sh"]
+2 -1
View File
@@ -1,2 +1,3 @@
from .transaction_type import TransactionType
from .loan_status import LoanStatus
from .loan_status import LoanStatus
from .repayment_schedule_status import RepaymentScheduleStatus
@@ -0,0 +1,6 @@
from enum import Enum
class RepaymentScheduleStatus(str, Enum):
ACTIVE = "active"
PARTIALLY_PAID = "partially_paid"
REPAID = "repaid"
+3
View File
@@ -3,6 +3,7 @@ from app.extensions import db
from sqlalchemy.orm import relationship
from dateutil.relativedelta import relativedelta
from sqlalchemy.sql import func
from app.api.enums.repayment_schedule_status import RepaymentScheduleStatus
class LoanRepaymentSchedule(db.Model):
__tablename__ = 'loan_repayment_schedules'
@@ -51,6 +52,7 @@ class LoanRepaymentSchedule(db.Model):
installment_amount=round(loan.installment_amount, 2),
product_id = loan.product_id,
transaction_id = transaction_id,
paid_status = RepaymentScheduleStatus.ACTIVE,
created_at=datetime.now(timezone.utc),
updated_at=datetime.now(timezone.utc)
)
@@ -68,6 +70,7 @@ class LoanRepaymentSchedule(db.Model):
'dueDate': self.due_date.isoformat(),
'principalAmount': self.principal_amount,
'interestAmount': self.interest_amount,
'paid_status': self.paid_status,
'totalInstallment': self.total_installment,
'paid': self.paid,
'paidAt': self.paid_at.isoformat() if self.paid_at else None
View File