worked on balance

This commit was merged in pull request #31.
This commit is contained in:
Chinenye Nmoh
2025-06-24 22:21:58 +01:00
parent 35e4580313
commit 340132d8ad
3 changed files with 91 additions and 43 deletions
+29 -34
View File
@@ -11,6 +11,8 @@ from app.services.repayment import RepaymentService
from app.extensions import db
from app.services.repayments_data import RepaymentsData
from app.services.salary import SalaryService
from app.enums.loan_status import LoanStatus
from decimal import Decimal, ROUND_HALF_UP
class SimbrellaClient:
@@ -277,48 +279,41 @@ class SimbrellaClient:
"fbnTransactionId": result.get('fbnTransactionId') or collect_loan_data.get('fbnTransactionId'),
"accountId": result.get('accountId') or collect_loan_data.get('accountId'),
"customerId": result.get('customerId') or collect_loan_data.get('customerId'),
"amountCollected": result.get('amountCollected'),
"amountCollected": float(result.get('amountCollected', 0)),
"repaymentAmount": collect_loan_data.get('collectAmount'),
"responseCode": result.get('responseCode'),
"responseDescr": result.get('responseMessage'),
"balance":result.get('lienAmount')
"balance": round(float(result.get('lienAmount', 0)), 2)
}
new_repayment_data = RepaymentsData.add_repayment_data(data_to_add)
logger.info(f"Repayment data added successfully: {new_repayment_data.to_dict()}")
if not new_repayment_data:
logger.info(f"Failed to add repayment data")
return ResponseHelper.success(response.json(), "Successful")
if new_repayment_data:
logger.info(f"Repayment data added successfully: {new_repayment_data.to_dict()}")
else:
logger.warning("Failed to add repayment data")
# Process loan update only if successful
if result.get('responseCode') == '00':
amount_collected = Decimal(str(result.get('amountCollected', 0))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
logger.info(f'amount collected {amount_collected}')
updated_loan = LoanService.update_loan_balance(int(loan_data['debtId']), amount_collected)
logger.info(f'updated loan {updated_loan}')
updated_balance = Decimal(str(updated_loan['balance'])).quantize(Decimal('0.01'))
logger.info(f'updated balance {updated_balance}')
if updated_balance <= Decimal('0.00'):
repaid = LoanService.update_status(updated_loan['debtId'], LoanStatus.REPAID)
logger.info(f'updated loan with repaid {repaid}')
else:
LoanService.update_status(updated_loan['debtId'], LoanStatus.ACTIVE_PARTIAL)
logger.info(f'updated loan with partial ')
return ResponseHelper.success(result, "Successful")
except Exception as e:
logger.info(f"Failed to call CollectLoan endpoint: {e}")
logger.exception("Failed to call CollectLoan endpoint")
return ResponseHelper.error("Failed to call CollectLoan endpoint")
@staticmethod
def refresh_disbursement(data):
try:
logger.info(f"Here is your Disbursement Request data ***** : {data}")
return ResponseHelper.success(data, "Successful")
except Exception as e:
logger.info(f"Failed to call Disbursement endpoint: {e}")
raise
@staticmethod
def payment_callback(data):
try:
logger.info(f"Here is your Payment Callback Request data ***** : {data}")
return ResponseHelper.success(data, "Successful")
except Exception as e:
logger.info(f"Failed to call Payment Callback endpoint: {e}")
raise
@staticmethod
def penal_charge(data):