diff --git a/src/pages/RequestDetail/RequestDetail.tsx b/src/pages/RequestDetail/RequestDetail.tsx index dbd8aa7..8a88e9c 100644 --- a/src/pages/RequestDetail/RequestDetail.tsx +++ b/src/pages/RequestDetail/RequestDetail.tsx @@ -54,7 +54,6 @@ import { WorkNotesTab } from './components/tabs/WorkNotesTab'; import { SummaryTab } from './components/tabs/SummaryTab'; import { IOTab } from './components/tabs/IOTab'; import { isClaimManagementRequest } from '@/utils/claimRequestUtils'; -import { determineUserRole } from '@/utils/claimDataMapper'; import { QuickActionsSidebar } from './components/QuickActionsSidebar'; import { RequestDetailModals } from './components/RequestDetailModals'; import { RequestDetailProps } from './types/requestDetail.types'; diff --git a/src/pages/RequestDetail/components/QuickActionsSidebar.tsx b/src/pages/RequestDetail/components/QuickActionsSidebar.tsx index af10148..c24cddf 100644 --- a/src/pages/RequestDetail/components/QuickActionsSidebar.tsx +++ b/src/pages/RequestDetail/components/QuickActionsSidebar.tsx @@ -364,7 +364,9 @@ export function QuickActionsSidebar({
- {activityInfo.closedExpensesBreakdown.map((item, index) => ( + {activityInfo.closedExpensesBreakdown.map((item: { description: string; amount: number }, index: number) => (
{item.description} @@ -150,7 +150,7 @@ export function ActivityInformationCard({ activityInfo, className }: ActivityInf Total {formatCurrency( - activityInfo.closedExpensesBreakdown.reduce((sum, item) => sum + item.amount, 0) + activityInfo.closedExpensesBreakdown.reduce((sum: number, item: { description: string; amount: number }) => sum + item.amount, 0) )}
diff --git a/src/pages/RequestDetail/components/modals/CreditNoteSAPModal.tsx b/src/pages/RequestDetail/components/modals/CreditNoteSAPModal.tsx index e7ad310..d6babc2 100644 --- a/src/pages/RequestDetail/components/modals/CreditNoteSAPModal.tsx +++ b/src/pages/RequestDetail/components/modals/CreditNoteSAPModal.tsx @@ -51,7 +51,7 @@ export function CreditNoteSAPModal({ dealerInfo, activityName, requestNumber, - requestId, + requestId: _requestId, dueDate, }: CreditNoteSAPModalProps) { const [downloading, setDownloading] = useState(false); diff --git a/src/pages/RequestDetail/components/modals/DealerCompletionDocumentsModal.tsx b/src/pages/RequestDetail/components/modals/DealerCompletionDocumentsModal.tsx index 8742235..4865523 100644 --- a/src/pages/RequestDetail/components/modals/DealerCompletionDocumentsModal.tsx +++ b/src/pages/RequestDetail/components/modals/DealerCompletionDocumentsModal.tsx @@ -52,7 +52,7 @@ export function DealerCompletionDocumentsModal({ onSubmit, dealerName = 'Jaipur Royal Enfield', activityName = 'Activity', - requestId, + requestId: _requestId, }: DealerCompletionDocumentsModalProps) { const [activityCompletionDate, setActivityCompletionDate] = useState(''); const [numberOfParticipants, setNumberOfParticipants] = useState(''); diff --git a/src/pages/RequestDetail/components/modals/DealerProposalSubmissionModal.tsx b/src/pages/RequestDetail/components/modals/DealerProposalSubmissionModal.tsx index 9b994c5..a215845 100644 --- a/src/pages/RequestDetail/components/modals/DealerProposalSubmissionModal.tsx +++ b/src/pages/RequestDetail/components/modals/DealerProposalSubmissionModal.tsx @@ -48,7 +48,7 @@ export function DealerProposalSubmissionModal({ onSubmit, dealerName = 'Jaipur Royal Enfield', activityName = 'Activity', - requestId, + requestId: _requestId, }: DealerProposalSubmissionModalProps) { const [proposalDocument, setProposalDocument] = useState(null); const [costItems, setCostItems] = useState([ @@ -135,12 +135,13 @@ export function DealerProposalSubmissionModal({ } // Calculate final completion date if using days mode - let finalCompletionDate = expectedCompletionDate; + let finalCompletionDate: string = expectedCompletionDate || ''; if (timelineMode === 'days' && numberOfDays) { const days = parseInt(numberOfDays); const date = new Date(); date.setDate(date.getDate() + days); - finalCompletionDate = date.toISOString().split('T')[0]; + const isoString = date.toISOString(); + finalCompletionDate = isoString.split('T')[0] as string; } try { diff --git a/src/pages/RequestDetail/components/modals/DeptLeadIOApprovalModal.tsx b/src/pages/RequestDetail/components/modals/DeptLeadIOApprovalModal.tsx index a6cbb42..c7e8248 100644 --- a/src/pages/RequestDetail/components/modals/DeptLeadIOApprovalModal.tsx +++ b/src/pages/RequestDetail/components/modals/DeptLeadIOApprovalModal.tsx @@ -40,7 +40,7 @@ export function DeptLeadIOApprovalModal({ onApprove, onReject, requestTitle, - requestId, + requestId: _requestId, }: DeptLeadIOApprovalModalProps) { const [actionType, setActionType] = useState<'approve' | 'reject'>('approve'); const [ioNumber, setIoNumber] = useState(''); diff --git a/src/pages/RequestDetail/components/tabs/ClaimManagementOverviewTab.tsx b/src/pages/RequestDetail/components/tabs/ClaimManagementOverviewTab.tsx index 57f766d..bdb48d8 100644 --- a/src/pages/RequestDetail/components/tabs/ClaimManagementOverviewTab.tsx +++ b/src/pages/RequestDetail/components/tabs/ClaimManagementOverviewTab.tsx @@ -4,7 +4,6 @@ * Uses modular card components for flexible rendering based on role and request state */ -import { useState } from 'react'; import { ActivityInformationCard, DealerInformationCard, @@ -16,7 +15,6 @@ import { mapToClaimManagementRequest, determineUserRole, getRoleBasedVisibility, - type ClaimManagementRequest, type RequestRole, } from '@/utils/claimDataMapper'; @@ -30,11 +28,11 @@ interface ClaimManagementOverviewTabProps { } export function ClaimManagementOverviewTab({ - request, + request: _request, apiRequest, currentUserId, - isInitiator, - onEditClaimAmount, + isInitiator: _isInitiator, + onEditClaimAmount: _onEditClaimAmount, className = '', }: ClaimManagementOverviewTabProps) { // Check if this is a claim management request diff --git a/src/pages/RequestDetail/components/tabs/ClaimManagementWorkflowTab.tsx b/src/pages/RequestDetail/components/tabs/ClaimManagementWorkflowTab.tsx index e07f2b8..c2e468e 100644 --- a/src/pages/RequestDetail/components/tabs/ClaimManagementWorkflowTab.tsx +++ b/src/pages/RequestDetail/components/tabs/ClaimManagementWorkflowTab.tsx @@ -160,7 +160,7 @@ export function ClaimManagementWorkflowTab({
- {steps.map((step, index) => ( + {steps.map((step) => (
s.status === 'approved').length; - // Check if current user is the dealer (for steps 1 and 5) const userEmail = (user as any)?.email?.toLowerCase() || ''; const dealerEmail = ( @@ -370,14 +368,6 @@ export function DealerClaimWorkflowTab({ ); const isDealer = dealerEmail && userEmail === dealerEmail; - // Check if current user is the approver for each step based on logged-in email - const getStepApproverEmail = (stepNumber: number) => { - const level = approvalFlow.find((l: any) => - (l.step || l.levelNumber || l.level_number) === stepNumber - ); - return (level?.approverEmail || '').toLowerCase(); - }; - // Check if current user is the approver for the current step const currentApprovalLevel = approvalFlow.find((level: any) => (level.step || level.levelNumber || level.level_number) === currentStep @@ -823,7 +813,6 @@ export function DealerClaimWorkflowTab({ // Step is active if it's pending or in_progress and matches currentStep const isActive = (step.status === 'pending' || step.status === 'in_progress') && step.step === currentStep; const isCompleted = step.status === 'approved'; - const isWaiting = step.status === 'waiting'; // Debug logging for Step 1 if (step.step === 1) { diff --git a/src/pages/RequestDetail/types/claimManagement.types.ts b/src/pages/RequestDetail/types/claimManagement.types.ts new file mode 100644 index 0000000..6424d23 --- /dev/null +++ b/src/pages/RequestDetail/types/claimManagement.types.ts @@ -0,0 +1,31 @@ +/** + * Claim Management TypeScript interfaces + * Types for Claim Management request components + */ + +export interface ClaimActivityInfo { + activityName: string; + activityType: string; + requestedDate?: string; + location: string; + period?: { + startDate: string; + endDate: string; + }; + estimatedBudget?: number; + closedExpenses?: number; + closedExpensesBreakdown?: Array<{ + description: string; + amount: number; + }>; + description?: string; +} + +export interface DealerInfo { + dealerCode: string; + dealerName: string; + email?: string; + phone?: string; + address?: string; +} + diff --git a/src/services/workflowApi.ts b/src/services/workflowApi.ts index 0ce6ca5..1ba5e45 100644 --- a/src/services/workflowApi.ts +++ b/src/services/workflowApi.ts @@ -275,7 +275,7 @@ export async function listClosedByMe(params: { page?: number; limit?: number; se }; } -export async function getWorkflowDetails(requestId: string, workflowType?: string) { +export async function getWorkflowDetails(requestId: string, _workflowType?: string) { const res = await apiClient.get(`/workflows/${requestId}/details`); return res.data?.data || res.data; } diff --git a/src/utils/claimDataMapper.ts b/src/utils/claimDataMapper.ts index 3da56dd..58b3bf9 100644 --- a/src/utils/claimDataMapper.ts +++ b/src/utils/claimDataMapper.ts @@ -96,7 +96,7 @@ export interface RoleVisibility { */ export function mapToClaimManagementRequest( apiRequest: any, - currentUserId: string + _currentUserId: string ): ClaimManagementRequest | null { try { if (!isClaimManagementRequest(apiRequest)) {