'use client'; import { useState } from 'react'; import { Collection } from '@/lib/types'; import { cn, formatCurrency } from '@/lib/utils'; import { X, Minus, Plus } from 'lucide-react'; interface CollectModalProps { collection: Collection | null; isOpen: boolean; onClose: () => void; onConfirm: (collection: Collection, receivedQty: number, notes: string) => void; } export default function CollectModal({ collection, isOpen, onClose, onConfirm, }: CollectModalProps) { const [receivedQty, setReceivedQty] = useState(''); const [notes, setNotes] = useState(''); const [error, setError] = useState(''); if (!isOpen || !collection) return null; const expectedQty = collection.quantity || collection.expand?.order_item?.quantity || 0; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setError(''); const qty = parseFloat(receivedQty); if (isNaN(qty) || qty <= 0) { setError('Please enter a valid quantity'); return; } onConfirm(collection, qty, notes); setReceivedQty(''); setNotes(''); setError(''); }; const adjustQty = (delta: number) => { const current = parseFloat(receivedQty) || 0; const newQty = Math.max(0, current + delta); setReceivedQty(newQty.toString()); }; const isPartial = parseFloat(receivedQty) > 0 && parseFloat(receivedQty) < expectedQty; return (

Collect Item

{collection.is_manual ? collection.description : collection.expand?.order_item?.description || 'Unknown item'}

Expected: {expectedQty} {collection.unit || collection.expand?.order_item?.unit || 'units'}

{collection.expand?.order_item?.selling_price && (

Unit price: {formatCurrency(collection.expand.order_item.selling_price)}

)}
setReceivedQty(e.target.value)} className="flex-1 p-3 text-center text-lg font-semibold border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-transparent" placeholder="0.00" autoFocus />
{isPartial && (

Partial collection: {receivedQty} of {expectedQty} units

)} {error &&

{error}

}