import { Head, Link, useForm } from '@inertiajs/react';
import { InventoryNotice, ReceiptProgressTable } from '@/components/inventory';
import {
FormErrors,
PageTitle,
Panel,
controlClass,
} from '@/components/procurement';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { quantity, qualityStates, receiptStates } from '@/types/inventory';
import type {
Receipt,
ReceiptProgress,
StockItem,
Warehouse,
} from '@/types/inventory';
type Line = {
include: boolean;
purchase_order_item_id: number;
received_quantity: string;
accepted_quantity: string;
quality_status: string;
notes: string;
stock_item_id: string;
};
type Props = {
order: { id: number; number: string };
supplier_name: string;
progress: ReceiptProgress;
receipts: Receipt[];
warehouses: Warehouse[];
stockItems: StockItem[];
canConfirm: boolean;
};
export default function ReceiveOrder({
order,
supplier_name,
progress,
receipts,
warehouses,
stockItems,
canConfirm,
}: Props) {
const form = useForm({
idempotency_key: crypto.randomUUID(),
delivery_note: '',
received_on: '',
warehouse_id: '',
items: progress.lines.map((line) => ({
include: false,
purchase_order_item_id: line.id,
received_quantity: '',
accepted_quantity: '',
quality_status: 'compliant',
notes: '',
stock_item_id: '',
})),
});
const change = (index: number, updates: Partial
As quantidades rejeitadas contam como conferidas, mas não entram em stock. Substituições ou reposições após rejeição não são autorizadas automaticamente.
{outstanding ? 'A confirmação exige o perfil Recepção / Armazém e uma pessoa distinta do emitente.' : 'Não existem quantidades de entrega pendentes nesta ordem.'}
)}Ainda não há recepções confirmadas.
)}