From 684b75702b734bb70202ababe7865c1ac311e141 Mon Sep 17 00:00:00 2001 From: laxmanhalaki Date: Thu, 12 Mar 2026 17:01:35 +0530 Subject: [PATCH] credit note detail now is showin in the request detail screen --- .../claim-cards/ProcessDetailsCard.tsx | 28 ++++++++++++++++++ src/hooks/useRequestDetails.ts | 29 +++++++++++++++++-- src/utils/claimDataMapper.ts | 2 ++ 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/dealer-claim/components/request-detail/claim-cards/ProcessDetailsCard.tsx b/src/dealer-claim/components/request-detail/claim-cards/ProcessDetailsCard.tsx index 354f2a0..bd1ce18 100644 --- a/src/dealer-claim/components/request-detail/claim-cards/ProcessDetailsCard.tsx +++ b/src/dealer-claim/components/request-detail/claim-cards/ProcessDetailsCard.tsx @@ -31,6 +31,7 @@ interface DMSDetails { ackNo?: string; ackDate?: string; signedInvoiceUrl?: string; + creditNoteWfmData?: any[]; } interface ClaimAmountDetails { @@ -99,6 +100,7 @@ export function ProcessDetailsCard({ const hasContent = (visibility.showIODetails && ioDetails) || (visibility.showDMSDetails && dmsDetails) || + (dmsDetails?.creditNoteWfmData && dmsDetails.creditNoteWfmData.length > 0) || (visibility.showClaimAmount && claimAmount && claimAmount.amount !== undefined && claimAmount.amount !== null) || (estimatedBudgetBreakdown && estimatedBudgetBreakdown.length > 0) || (closedExpensesBreakdown && closedExpensesBreakdown.length > 0); @@ -227,6 +229,32 @@ export function ProcessDetailsCard({ )} + {/* Credit Note Validation */} + {dmsDetails?.creditNoteWfmData && dmsDetails.creditNoteWfmData.length > 0 && ( +
+
+ + +
+
+ {dmsDetails.creditNoteWfmData.map((cn: any, idx: number) => ( +
+
+ Credit Note No: {cn.DOC_NO || 'N/A'} + + {cn.MSG_TYP === 'E' ? 'Error' : (cn.MSG_TYP === 'S' ? 'Success' : cn.MSG_TYP || 'Unknown')} + +
+
Txn: {cn.TRNS_UNIQ_NO || 'N/A'}
+
{cn.MESSAGE || 'No Message'}
+
+ ))} +
+
+ )} + {/* Claim Amount */} {visibility.showClaimAmount && claimAmount && (
diff --git a/src/hooks/useRequestDetails.ts b/src/hooks/useRequestDetails.ts index 2464e2b..6a793d1 100644 --- a/src/hooks/useRequestDetails.ts +++ b/src/hooks/useRequestDetails.ts @@ -2,6 +2,7 @@ import { useState, useEffect, useMemo, useCallback } from 'react'; import workflowApi, { getPauseDetails } from '@/services/workflowApi'; import apiClient from '@/services/authApi'; import { getSocket } from '@/utils/socket'; +import { isClaimManagementRequest } from '@/utils/claimRequestUtils'; /** * Custom Hook: useRequestDetails @@ -239,8 +240,18 @@ export function useRequestDetails( let completionDetails = null; let internalOrder = null; let internalOrders = []; + let creditNoteWfmData = null; + + if (isClaimManagementRequest(wf)) { + // Fetch Credit Note independently + try { + const cnResponse = await apiClient.get(`/dealer-claims/${wf.requestId}/credit-note-wfm`); + const responseData = cnResponse.data ?? cnResponse; + creditNoteWfmData = Array.isArray(responseData?.data) ? responseData.data : (Array.isArray(responseData) ? responseData : []); + } catch (cnError) { + console.warn('[useRequestDetails] Error fetching credit note WFM data:', cnError); + } - if (wf.workflowType === 'CLAIM_MANAGEMENT' || wf.templateType === 'claim-management') { try { const claimResponse = await apiClient.get(`/dealer-claims/${wf.requestId}`); @@ -264,6 +275,7 @@ export function useRequestDetails( (claimDetails as any).invoice = invoice; (claimDetails as any).creditNote = creditNote; (claimDetails as any).completionExpenses = completionExpenses; + (claimDetails as any).creditNoteWfmData = creditNoteWfmData; } // Extracted details processed @@ -333,6 +345,7 @@ export function useRequestDetails( budgetTracking: (claimDetails as any)?.budgetTracking || null, invoice: claimDetails?.invoice || (claimDetails as any)?.invoice || null, creditNote: (claimDetails as any)?.creditNote || null, + creditNoteWfmData: creditNoteWfmData || (claimDetails as any)?.creditNoteWfmData || null, completionExpenses: (claimDetails as any)?.completionExpenses || null, templateType: wf.templateType || wf.template_type, form16Submission: details.form16Submission || null, @@ -523,8 +536,18 @@ export function useRequestDetails( let completionDetails = null; let internalOrder = null; let internalOrders = []; + let creditNoteWfmData = null; + + if (isClaimManagementRequest(wf)) { + // Fetch Credit Note independently + try { + const cnResponse = await apiClient.get(`/dealer-claims/${wf.requestId}/credit-note-wfm`); + const responseData = cnResponse.data ?? cnResponse; + creditNoteWfmData = Array.isArray(responseData?.data) ? responseData.data : (Array.isArray(responseData) ? responseData : []); + } catch (cnError) { + console.warn('[useRequestDetails] Error fetching credit note WFM data:', cnError); + } - if (wf.workflowType === 'CLAIM_MANAGEMENT' || wf.templateType === 'claim-management') { try { const claimResponse = await apiClient.get(`/dealer-claims/${wf.requestId}`); @@ -547,6 +570,7 @@ export function useRequestDetails( (claimDetails as any).invoice = invoice; (claimDetails as any).creditNote = creditNote; (claimDetails as any).completionExpenses = completionExpenses; + (claimDetails as any).creditNoteWfmData = creditNoteWfmData; } // Initial load - Extracted details processed @@ -603,6 +627,7 @@ export function useRequestDetails( budgetTracking: (claimDetails as any)?.budgetTracking || null, invoice: (claimDetails as any)?.invoice || null, creditNote: (claimDetails as any)?.creditNote || null, + creditNoteWfmData: creditNoteWfmData || (claimDetails as any)?.creditNoteWfmData || null, completionExpenses: (claimDetails as any)?.completionExpenses || null, templateType: wf.templateType || wf.template_type, form16Submission: details.form16Submission || null, diff --git a/src/utils/claimDataMapper.ts b/src/utils/claimDataMapper.ts index 715eeec..b43bd8e 100644 --- a/src/utils/claimDataMapper.ts +++ b/src/utils/claimDataMapper.ts @@ -95,6 +95,7 @@ export interface ClaimManagementRequest { ackDate?: string; signedInvoiceUrl?: string; taxBreakdown?: any; + creditNoteWfmData?: any[]; }; // Claim Amount @@ -298,6 +299,7 @@ export function mapToClaimManagementRequest( ackDate: invoice.ackDate || claimDetails.ackDate, signedInvoiceUrl: invoice.signedInvoiceUrl || claimDetails.signedInvoiceUrl, taxBreakdown: invoice.taxBreakdown || claimDetails.taxBreakdown, + creditNoteWfmData: apiRequest.creditNoteWfmData || claimDetails.creditNoteWfmData || [], }; // Map claim amounts