import { useEffect, useState } from 'react'; import { Alert, Button, Group, Modal, Stack, Text, TextInput } from '@mantine/core'; import { Info } from 'lucide-react'; import { useMutation } from '@tanstack/react-query'; import { api } from '@/services/api'; import { useToast } from '@/hooks/use-toast'; import type { WarehouseInventoryItem } from '@/types/warehouse'; import { extractErrorMessage } from './options'; interface ReleaseOrderModalProps { opened: boolean; onClose: () => void; item: WarehouseInventoryItem | null; } export function ReleaseOrderModal({ opened, onClose, item }: ReleaseOrderModalProps) { const { toast } = useToast(); const releaseMutation = useMutation(api.warehouses.release.mutationOptions()); const [reference, setReference] = useState(''); useEffect(() => { if (opened) setReference(item?.releaseOrderReference ?? ''); }, [opened, item]); const handleSubmit = async () => { if (!item) return; try { await releaseMutation.mutateAsync({ id: item.id, payload: { reference: reference.trim() || undefined } }); toast({ title: 'Release order issued' }); onClose(); } catch (error) { toast({ variant: 'destructive', title: 'Release failed', description: extractErrorMessage(error) }); } }; return ( } color="orange" variant="light"> Records the delivery order / release order sent to the customer. Once issued, the goods can be picked up and delivered. setReference(e.currentTarget.value)} /> ); }