diff --git a/src/custom/pages/RequestDetail.tsx b/src/custom/pages/RequestDetail.tsx index 1cb2459..4db5c85 100644 --- a/src/custom/pages/RequestDetail.tsx +++ b/src/custom/pages/RequestDetail.tsx @@ -658,6 +658,7 @@ function CustomRequestDetailInner({ requestId: propRequestId, onBack, dynamicReq pausedByUserId={request?.pauseInfo?.pausedBy?.userId} currentUserId={(user as any)?.userId} apiRequest={apiRequest} + hideApproveReject={isDealer} /> )} diff --git a/src/dealer-claim/components/request-detail/WorkflowTab.tsx b/src/dealer-claim/components/request-detail/WorkflowTab.tsx index ad71461..fcd0774 100644 --- a/src/dealer-claim/components/request-detail/WorkflowTab.tsx +++ b/src/dealer-claim/components/request-detail/WorkflowTab.tsx @@ -10,7 +10,7 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Progress } from '@/components/ui/progress'; -import { TrendingUp, Clock, CheckCircle, CircleCheckBig, Upload, Mail, Download, Receipt, Activity, AlertTriangle, AlertOctagon, XCircle, History, ChevronDown, ChevronUp, RefreshCw, RotateCw, Eye, FileSpreadsheet, X, Loader2 } from 'lucide-react'; +import { TrendingUp, Clock, CheckCircle, CheckCircle2, CircleCheckBig, Upload, Mail, Download, Receipt, Activity, AlertTriangle, AlertOctagon, XCircle, History, ChevronDown, ChevronUp, RefreshCw, RotateCw, Eye, FileSpreadsheet, X, Loader2 } from 'lucide-react'; import { formatDateTime, formatDateDDMMYYYY } from '@/utils/dateFormatter'; import { formatHoursMinutes } from '@/utils/slaTracker'; import { @@ -26,7 +26,7 @@ import { // InitiatorActionModal - Removed, using direct buttons instead } from './modals'; import { toast } from 'sonner'; -import { submitProposal, updateIODetails, submitCompletion, updateEInvoice, sendCreditNoteToDealer } from '@/services/dealerClaimApi'; +import { submitProposal, updateIODetails, submitCompletion, updateEInvoice, sendCreditNoteToDealer, retriggerWFMPush } from '@/services/dealerClaimApi'; import { getWorkflowDetails, approveLevel, rejectLevel, handleInitiatorAction, getWorkflowHistory } from '@/services/workflowApi'; import { uploadDocument } from '@/services/documentApi'; import { TokenManager } from '@/utils/tokenManager'; @@ -1510,6 +1510,25 @@ export function DealerClaimWorkflowTab({ loadCompletionDocuments(); }, [request]); + const handleRetrigger = async () => { + try { + toast.loading('Retriggering WFM push...', { id: 'wfm-retrigger' }); + await retriggerWFMPush(request.id); + toast.success('WFM push re-triggered successfully', { id: 'wfm-retrigger' }); + + // Refresh the request data if onRefresh is provided + if (onRefresh) { + onRefresh(); + } else { + // Fallback or full page refresh + window.location.reload(); + } + } catch (error: any) { + console.error('Error retriggering WFM push:', error); + toast.error(error.message || 'Failed to re-trigger WFM push', { id: 'wfm-retrigger' }); + } + }; + const handleDownloadCSV = async () => { try { const requestId = request.id || request.requestId; @@ -1764,23 +1783,63 @@ export function DealerClaimWorkflowTab({ ); })()} - {/* CSV Export Button (Requestor Claim Approval) */} - {(() => { - const isRequestorClaimStep = (step.levelName || step.title || '').toLowerCase().includes('requestor claim') || - (step.levelName || step.title || '').toLowerCase().includes('requestor - claim'); - const hasInvoice = request?.invoice || (request?.irn && step.status === 'approved'); - return isRequestorClaimStep && hasInvoice && ( - - ); - })()} + {/* CSV Export & WFM Push Status (Requestor Claim Approval) */} + {(() => { + const isRequestorClaimStep = (step.levelName || step.title || '').toLowerCase().includes('requestor claim') || + (step.levelName || step.title || '').toLowerCase().includes('requestor - claim'); + const hasInvoice = request?.invoice || (request?.irn && step.status === 'approved'); + const wfmStatus = request?.invoice?.wfmPushStatus || (request?.invoice as any)?.wfmPushStatus; + const wfmError = request?.invoice?.wfmPushError || (request?.invoice as any)?.wfmPushError; + + return isRequestorClaimStep && hasInvoice && ( +
{step.approver}
{step.description}
diff --git a/src/dealer-claim/pages/Dashboard.tsx b/src/dealer-claim/pages/Dashboard.tsx index b9f5377..57fba41 100644 --- a/src/dealer-claim/pages/Dashboard.tsx +++ b/src/dealer-claim/pages/Dashboard.tsx @@ -230,13 +230,6 @@ export function DealerDashboard({ onNavigate, onNewRequest: _onNewRequest }: Das