import { Link, useForm } from '@inertiajs/react'; import { Panel, FormErrors, controlClass } from '@/components/procurement'; import { Button } from '@/components/ui/button'; export type OrderCancellationState = { enabled: boolean; state: string; canRequest: boolean; }; export default function OrderCancellationRequest({ orderId, state, }: { orderId: number; state: OrderCancellationState; }) { const form = useForm({ operation_key: crypto.randomUUID(), reason: '', evidence: '', }); if (!state.enabled && state.state === 'issued') return null; return (

{state.state === 'cancelled' ? 'Ordem cancelada. O documento emitido e as suas aprovações são preservados.' : state.state === 'cancellation_pending' ? 'Cancelamento pendente. Novas recepções e facturas estão bloqueadas.' : 'Ordem emitida. Cancelamento sujeito a política própria publicada e decisão independente de Finanças.'}

{state.enabled && ( Acompanhar pedidos e política de cancelamento )} {state.enabled && state.canRequest && state.state === 'issued' && (
Pedir cancelamento integral
{ event.preventDefault(); form.post(`/ordens/${orderId}/cancelamento`); }} >

Só para ordens sem qualquer recepção, factura ou pagamento. O pedido suspende nova execução até à decisão.