overdue loans
This commit was merged in pull request #45.
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
from app.models import Loan, LoanCharge
|
||||
from app.utils.logger import logger
|
||||
from app.enums.loan_status import LoanStatus
|
||||
from decimal import Decimal, ROUND_HALF_UP
|
||||
from app.services.loan_repayment_schedule import LoanRepaymentScheduleService
|
||||
|
||||
class LoanService:
|
||||
|
||||
@@ -106,5 +110,29 @@ class LoanService:
|
||||
Get all overdue loans.
|
||||
"""
|
||||
return Loan.get_overdue_loans()
|
||||
@staticmethod
|
||||
def _update_loan_after_collection(loan, loan_data, updated_loan, amount_collected, data, response_message):
|
||||
if loan.balance is None or loan.balance <= 0:
|
||||
logger.warning(f"Loan ID {loan.id} has no balance. Skipping loan update.")
|
||||
updated_loan = loan.to_dict()
|
||||
else:
|
||||
updated_loan = LoanService.update_loan_balance(int(loan_data['debtId']), amount_collected)
|
||||
updated_balance = Decimal(str(updated_loan['balance'])).quantize(Decimal('0.01'))
|
||||
|
||||
if updated_balance <= Decimal('0.00'):
|
||||
updated_loan = LoanService.update_status(updated_loan['debtId'], LoanStatus.REPAID)
|
||||
else:
|
||||
updated_loan = LoanService.update_status(updated_loan['debtId'], LoanStatus.ACTIVE_PARTIAL)
|
||||
logger.info(f"Updated loan status: {updated_loan.get('status')}")
|
||||
# lets update the loan repayment schedule
|
||||
LoanRepaymentScheduleService.handle_schedule_updates(
|
||||
updated_loan=updated_loan,
|
||||
data=data,
|
||||
amount_collected=amount_collected,
|
||||
message=response_message,
|
||||
loan_data=loan_data
|
||||
)
|
||||
return updated_loan
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user