[add]: Penal Charges

This commit was merged in pull request #23.
This commit is contained in:
VivianDee
2026-03-16 11:29:25 +01:00
parent 7f6a6350eb
commit 8638510458
4 changed files with 20 additions and 0 deletions
@@ -82,6 +82,9 @@ class LoanRepaymentScheduleService:
'total_repayment_amount': schedule.total_repayment_amount, 'total_repayment_amount': schedule.total_repayment_amount,
'paid': schedule.paid, 'paid': schedule.paid,
'paid_at': schedule.paid_at.isoformat() if schedule.paid_at else None, 'paid_at': schedule.paid_at.isoformat() if schedule.paid_at else None,
'penal_charge': schedule.penal_charge,
'penal_count': schedule.penal_count,
'last_penal_date': schedule.last_penal_date.isoformat() if schedule.last_penal_date else None,
'created_at': schedule.created_at.isoformat() if schedule.created_at else None, 'created_at': schedule.created_at.isoformat() if schedule.created_at else None,
'updated_at': schedule.updated_at.isoformat() if schedule.updated_at else None 'updated_at': schedule.updated_at.isoformat() if schedule.updated_at else None
}) })
+2
View File
@@ -116,6 +116,8 @@ class LoanService:
'verifyDescription': loan.verify_description, 'verifyDescription': loan.verify_description,
'disburseDate': loan.disburse_date.isoformat() if loan.disburse_date else None, 'disburseDate': loan.disburse_date.isoformat() if loan.disburse_date else None,
'disburseVerify': loan.disburse_verify.isoformat() if loan.disburse_verify else None, 'disburseVerify': loan.disburse_verify.isoformat() if loan.disburse_verify else None,
'totalPenalCharge': loan.total_penal_charge,
'lastPenalDate': loan.last_penal_date.isoformat() if loan.last_penal_date else None,
}) })
# Calculate total pages # Calculate total pages
+6
View File
@@ -45,6 +45,10 @@ class Loan(db.Model):
reference = db.Column(db.String(50), nullable=True) reference = db.Column(db.String(50), nullable=True)
balance = db.Column(db.Float, nullable=True, default=0.0) balance = db.Column(db.Float, nullable=True, default=0.0)
total_penal_charge = db.Column(db.Float, default=0.0)
last_penal_date = db.Column(db.DateTime, nullable=True)
customer = relationship( customer = relationship(
"Customer", "Customer",
primaryjoin="Customer.id == Loan.customer_id", primaryjoin="Customer.id == Loan.customer_id",
@@ -169,6 +173,8 @@ class Loan(db.Model):
'disburseVerify': self.disburse_verify.isoformat() if self.disburse_verify else None, 'disburseVerify': self.disburse_verify.isoformat() if self.disburse_verify else None,
'reference': self.reference, 'reference': self.reference,
'balance': self.balance, 'balance': self.balance,
'totalPenalCharge': self.total_penal_charge,
'lastPenalDate': self.last_penal_date.isoformat() if self.last_penal_date else None,
} }
def __repr__(self): def __repr__(self):
+9
View File
@@ -20,6 +20,12 @@ class LoanRepaymentSchedule(db.Model):
created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) 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)) updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc))
penal_charge = db.Column(db.Float, default=0.0)
penal_count = db.Column(db.Integer, default=0)
last_penal_date = db.Column(db.DateTime, nullable=True)
# loan = relationship( # loan = relationship(
# "Loan", # "Loan",
# primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id", # primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id",
@@ -96,6 +102,9 @@ class LoanRepaymentSchedule(db.Model):
'total_repayment_amount': self.total_repayment_amount, 'total_repayment_amount': self.total_repayment_amount,
'paid': self.paid, 'paid': self.paid,
'paid_at': self.paid_at.isoformat() if self.paid_at else None, 'paid_at': self.paid_at.isoformat() if self.paid_at else None,
'penal_charge': self.penal_charge,
'penal_count': self.penal_count,
'last_penal_date': self.last_penal_date.isoformat() if self.last_penal_date else None,
'created_at': self.created_at.isoformat() if self.created_at else None, 'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None 'updated_at': self.updated_at.isoformat() if self.updated_at else None
} }