From 976c95b5fd011cef4389dd10116c500600cdf0c7 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sun, 9 Nov 2025 14:26:20 -0500 Subject: [PATCH] Loan Repayment --- src/components/loanscom/LoansCom.jsx | 1 + .../transactionDetails/LoanDetails.jsx | 51 +++++-- .../RepaymentScheduleDetails.jsx | 142 +++++++++++------- src/services/siteEventService.js | 23 ++- 4 files changed, 143 insertions(+), 74 deletions(-) diff --git a/src/components/loanscom/LoansCom.jsx b/src/components/loanscom/LoansCom.jsx index 14cdfe5..fa6d4ae 100644 --- a/src/components/loanscom/LoansCom.jsx +++ b/src/components/loanscom/LoansCom.jsx @@ -133,6 +133,7 @@ export default function LoansCom() { {/*
{formatNumber(item?.initial_loan_amount)}
*/}
#{formatNumber(item?.initial_loan_amount)}
+
{item?.status}
diff --git a/src/components/transactionDetails/LoanDetails.jsx b/src/components/transactionDetails/LoanDetails.jsx index e9d9da1..64a38b4 100644 --- a/src/components/transactionDetails/LoanDetails.jsx +++ b/src/components/transactionDetails/LoanDetails.jsx @@ -9,7 +9,7 @@ import {getLoans} from '../../services/siteServices' import getDateFromDateString from '../../helpers/GetDateFromDateString'; import formatNumber from '../../helpers/formatNumber' import getTimeFromDateString from "../../helpers/GetTimeFromDateString"; -import { initiateDisburseRetrials } from "../../services/siteEventService" +import {initiateDisburseRetrials, initiateDisburseVerify} from "../../services/siteEventService" export default function LoanDetails({transactionID}) { @@ -22,12 +22,21 @@ export default function LoanDetails({transactionID}) { // const loansCount = allLoans?.data?.count // LOANS LIST COUNT const handleClick = (transactioID) => { - // alert(transactioID) - const fields={ + // alert(transactioID) + const fields = { "transactionId": transactioID } return initiateDisburseRetrials(fields) - // console.log('Button clicked!'); + // console.log('Button clicked!'); + }; + + const handleRetryClick = (transactioID) => { + alert(transactioID) + const fields = { + "transactionId": transactioID + } + return initiateDisburseVerify(fields) + // console.log('Button clicked!'); }; return ( @@ -43,7 +52,8 @@ export default function LoanDetails({transactionID}) {

{error.message}

: (loans && loans.length > 0) ? -
+

Loan

@@ -150,12 +160,31 @@ export default function LoanDetails({transactionID}) {
Disburse Result : {item?.disburseResult}

-
Disburse Verify - Date: {getDateFromDateString(item?.disburseVerify)} {getTimeFromDateString(item?.disburseVerify)}
-
Verify Description - : {item?.verifyDescription}
-
Verify Result - : {item?.verifyResult}
+
+
+
Disburse Verify + Date: {getDateFromDateString(item?.disburseVerify)} {getTimeFromDateString(item?.disburseVerify)}
+
Verify Description + : {item?.verifyDescription}
+
Verify Result + : {item?.verifyResult}
+
+
+ +
+
+ + + {/*
Disburse Verify*/} + {/* Date: {getDateFromDateString(item?.disburseVerify)} {getTimeFromDateString(item?.disburseVerify)}
*/} + {/*
Verify Description*/} + {/* : {item?.verifyDescription}
*/} + {/*
Verify Result*/} + {/* : {item?.verifyResult}
*/} diff --git a/src/components/transactionDetails/RepaymentScheduleDetails.jsx b/src/components/transactionDetails/RepaymentScheduleDetails.jsx index 85ad2b4..2d1ef66 100644 --- a/src/components/transactionDetails/RepaymentScheduleDetails.jsx +++ b/src/components/transactionDetails/RepaymentScheduleDetails.jsx @@ -1,14 +1,15 @@ -import React, { useEffect, useState } from 'react' -import { useQuery } from "@tanstack/react-query"; +import React, {useEffect, useState} from 'react' +import {useQuery} from "@tanstack/react-query"; import Icons from '../Icons' import Avatar from '../../assets/user_avatar.jpg' import queryKeys from '../../services/queryKeys' -import { getRepaymentSchedule } from '../../services/siteServices' +import {getRepaymentSchedule} from '../../services/siteServices' import getDateFromDateString from '../../helpers/GetDateFromDateString'; import formatNumber from '../../helpers/formatNumber'; import localSiteIcons from "../../helpers/localSiteIcons"; +import {initiateLoanPayment } from "../../services/siteEventService" export default function RepaymentScheduleDetails({transactionID}) { const [page, setPage] = useState(1) @@ -22,23 +23,31 @@ export default function RepaymentScheduleDetails({transactionID}) { const repaymentSchedule = data?.data?.repayment_schedules // LOAN CHARGES LIST // const pagination = data?.data?.pagination + const handleClick = (transactioID) => { + alert(transactioID) + const fields = { + "transactionId": transactioID + } + return initiateLoanPayment(fields) + // console.log('Button clicked!'); + }; - useEffect(()=>{ - - },[]) + useEffect(() => { + + }, []) return (

Repayment Schedule

- {isFetching ? - <> -

Loading...

- - : isError ? -

{error.message}

- : -
- + {isFetching ? + <> +

Loading...

+ + : isError ? +

{error.message}

+ : +
+ + - - + + {(repaymentSchedule && repaymentSchedule.length > 0) ? repaymentSchedule?.map((item, index) => ( - - - - - - - + + + + + + + + + )) + : + + - )) - : - - - } - -
ID/TrxID @@ -61,55 +70,72 @@ export default function RepaymentScheduleDetails({transactionID}) { Paid ? + +
-
-
{item?.loan_id || ''}
-
{item?.transaction_id || ''}
-
-
-
-
{formatNumber(item?.total_repayment_amount)}
-
-
-
-
{formatNumber(item?.installment_amount)}
-
-
-
-
{getDateFromDateString(item?.due_date)}
-
-
-
-
{item?.paid_at ? getDateFromDateString(item?.paid_at) : 'Not available'}
-
-
-
-
{item?.paid || 'false'}
+
+
+
{item?.loan_id || ''}
+
{item?.transaction_id || ''}
+
+
+
+
{formatNumber(item?.total_repayment_amount)}
+
+
+
+
{formatNumber(item?.installment_amount)}
+
+
+
+
{getDateFromDateString(item?.due_date)}
+
+
+
+
{item?.paid_at ? getDateFromDateString(item?.paid_at) : 'Not available'}
+
+
+
+
{item?.paid || 'false'}
+
+
+
+ + +
+
+
+ No Record Found
-
- No Record Found -
-
+ + }
) diff --git a/src/services/siteEventService.js b/src/services/siteEventService.js index a73150d..b43b78d 100644 --- a/src/services/siteEventService.js +++ b/src/services/siteEventService.js @@ -14,8 +14,8 @@ axios.interceptors.request.use( return Promise.reject(error); } ); -const postAuxEnd = (path, postData, media=false) => { - const basePath = media ? process.env.REACT_APP_EVENT_API : process.env.REACT_APP_EVENT_API +const postAuxEnd = (path, postData, media = false) => { + const basePath = media ? process.env.REACT_APP_EVENT_API : process.env.REACT_APP_EVENT_API return axios.post(`${basePath}${path}`, postData).then(res => { return res }).catch(err => { @@ -24,10 +24,10 @@ const postAuxEnd = (path, postData, media=false) => { }) } -const getAuxEnd = (path, reqData= null) => { - const basePath = media ? process.env.REACT_APP_EVENT_API : process.env.REACT_APP_EVENT_API +const getAuxEnd = (path, reqData = null) => { + const basePath = media ? process.env.REACT_APP_EVENT_API : process.env.REACT_APP_EVENT_API - return axios.get(`${basePath}${path}`,{ params: reqData }).then(res => { + return axios.get(`${basePath}${path}`, {params: reqData}).then(res => { return res // localStorage.clear(); // window.location.href = `/login?sessionExpired=true`; @@ -45,3 +45,16 @@ export const initiateDisburseRetrials = (reqData) => { } return postAuxEnd('/autocall/retry-disbursement', postData, false) } +export const initiateDisburseVerify = (reqData) => { + let postData = { + ...reqData + } + return postAuxEnd('/autocall/verify-disbursement', postData, false) +} + +export const initiateLoanPayment = (reqData) => { + let postData = { + ...reqData + } + return postAuxEnd('/autocall/start-repayment', postData, false) +} \ No newline at end of file