added repayment_schedule
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import random
|
||||
import string
|
||||
from app.services.repayment import RepaymentService
|
||||
from app.services.loan import LoanService
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
from app.utils.logger import logger
|
||||
|
||||
class CollectLoanHelper:
|
||||
@staticmethod
|
||||
def _validate_repayment_and_loan(data):
|
||||
repayment = RepaymentService.get_repayment_by_id(id=data['Id'])
|
||||
if not repayment:
|
||||
logger.info(f"Repayment id: {data['Id']}, was not found")
|
||||
return None, None, ResponseHelper.error("Repayment not found")
|
||||
|
||||
repayment_data = repayment.to_dict()
|
||||
loan = LoanService.get_loan_by_loan_id(loan_id=int(repayment_data['loanId']))
|
||||
if not loan:
|
||||
logger.info(f"Loan id: {repayment_data['loanId']}, was not found")
|
||||
return None, None, ResponseHelper.error("Loan not found")
|
||||
|
||||
loan
|
||||
return repayment_data, loan, None
|
||||
|
||||
@staticmethod
|
||||
def _build_collect_loan_payload(loan_data, repayment_data, data, collectionMethod):
|
||||
debtId = str(loan_data.get('debtId', "")).strip().zfill(6)
|
||||
t_id = ''.join(random.choices(string.ascii_uppercase, k=22))
|
||||
|
||||
return {
|
||||
"transactionId": t_id,
|
||||
"fbnTransactionId": loan_data['transactionId'],
|
||||
"debtId": debtId,
|
||||
"customerId": repayment_data['customerId'],
|
||||
"accountId": loan_data['accountId'],
|
||||
"productId": repayment_data['productId'],
|
||||
"collectAmount": (
|
||||
data['overdueLoanScheduleAmount']
|
||||
if data.get('overdueLoanScheduleAmount')
|
||||
is not None else loan_data.get('balance', 0)
|
||||
),
|
||||
"penalCharge": 0,
|
||||
"channel": "USSD",
|
||||
"collectionMethod": collectionMethod,
|
||||
"lienAmount": 0,
|
||||
"countryId": "NG",
|
||||
"comment": "COLLECT LOAN"
|
||||
}
|
||||
Reference in New Issue
Block a user