3MPC check

This commit is contained in:
CHIEFSOFT\ameye
2025-11-07 18:02:35 -05:00
parent 9f2daad7c8
commit ff5cbcc49d
2 changed files with 29 additions and 1 deletions
+14 -1
View File
@@ -51,6 +51,14 @@ class EligibilityCheckService(BaseService):
db.session.flush()
# Determine if there is any loan of 0 days active
current_loan = EligibilityCheckService.get_current_active_loans_by_account_id(account_id = account_id)
if current_loan:
logger.info(f"Account {current_loan['accountId']} has active loan {current_loan}")
if current_loan['product_id'] =='3MPC':
return ResponseHelper.error(result_description="Max loan count for 3MPC reached")
# Determine Loan count
is_eligible = EligibilityCheckService.check_loan_limits(customer_id)
@@ -167,7 +175,12 @@ class EligibilityCheckService(BaseService):
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()
@staticmethod
def get_current_active_loans_by_account_id(account_id):
current_loan = Loan.get_current_active_loans_by_account_id(account_id)
return current_loan
@staticmethod
def check_loan_limits(customer_id):
+15
View File
@@ -204,6 +204,21 @@ class Loan(db.Model):
return active_loans
@classmethod
def get_current_active_loans_by_account_id(cls, account_id):
"""
Get the first active loan based on the accountID.
"""
first_active_loan = cls.query.filter(
cls.account_id == account_id,
or_(
cls.status == LoanStatus.ACTIVE.value,
cls.status == LoanStatus.START_REPAY.value,
cls.status == LoanStatus.ACTIVE_PARTIAL.value,
)
).order_by(cls.id.desc()).first()
return first_active_loan
@classmethod
def update_status(cls, loan_id, status):