import React, { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '../ui/dialog'; import { Button } from '../ui/button'; import { Label } from '../ui/label'; import { Input } from '../ui/input'; import { Textarea } from '../ui/textarea'; import { Badge } from '../ui/badge'; import { CheckCircle, AlertCircle, DollarSign, FileText } from 'lucide-react'; import { toast } from 'sonner@2.0.3'; interface InitiatorVerificationModalProps { isOpen: boolean; onClose: () => void; onSubmit: (data: { approvedAmount: string; verificationComments: string; }) => Promise; activityName: string; requestedAmount?: string; documents?: any[]; } export function InitiatorVerificationModal({ isOpen, onClose, onSubmit, activityName, requestedAmount = 'TBD', documents = [] }: InitiatorVerificationModalProps) { const [approvedAmount, setApprovedAmount] = useState(requestedAmount === 'TBD' ? '' : requestedAmount.replace(/[₹,]/g, '')); const [verificationComments, setVerificationComments] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const formatCurrency = (value: string) => { // Remove non-numeric characters const numericValue = value.replace(/[^0-9]/g, ''); if (!numericValue) return ''; // Format with commas const number = parseInt(numericValue); return `₹${number.toLocaleString('en-IN')}`; }; const handleAmountChange = (e: React.ChangeEvent) => { const value = e.target.value.replace(/[^0-9]/g, ''); setApprovedAmount(value); }; const handleSubmit = async () => { // Validation if (!approvedAmount || approvedAmount === '0') { toast.error('Please enter a valid approved amount'); return; } if (!verificationComments.trim()) { toast.error('Please add verification comments'); return; } setIsSubmitting(true); try { await onSubmit({ approvedAmount: formatCurrency(approvedAmount), verificationComments }); onClose(); } catch (error) { console.error('Error submitting verification:', error); } finally { setIsSubmitting(false); } }; const isAmountModified = requestedAmount !== 'TBD' && formatCurrency(approvedAmount) !== requestedAmount; return ( Initiator Verification & Approval

Activity: {activityName}

Review the dealer's completion documents and approve the final amount for E-invoice generation.

{/* Completion Documents Review */}
{documents.length > 0 ? (
{documents.slice(0, 5).map((doc, index) => (

{doc.name}

{doc.size} • Uploaded by {doc.uploadedBy}

))}
) : (
No completion documents uploaded yet
)}
{/* Amount Approval Section */}
{isAmountModified && ( Amount Modified )}
{requestedAmount !== 'TBD' && (

{requestedAmount}

)}

Enter the final amount to be approved for E-invoice generation

{approvedAmount && (

Formatted: {formatCurrency(approvedAmount)}

)}
{isAmountModified && (

Amount has been modified

Please provide justification in the verification comments below.

)}
{/* Verification Comments */}