Pular para o conteúdo principal

Entrada de Material

Homologação dos fluxos alcançáveis a partir de /entrada-material, /entrada-material/novo e /conferencia-entrada/:id. Inclui integrações reais e protótipos/mock onde ainda não há API.


/entrada-material (lista de entradas)

  • Cabeçalho e CTA — Título, descrição e botão “Nova Movimentação de Entrada” → /entrada-material/novo.
  • PermissãoStockView (rota em App.tsx).
  • Resumo — Cartões Pendentes, Em Conf., Em aberto (nº de cartões da lista atual), Conferidos — alimentados por useEntryMovementsSummary e lista; validar coerência com API.
  • Filtro de busca — Campo envia searchTerm à query de movimentações (tipo Entrada).
  • Filtro de status — “Todos” usa entriesOpenOnly (Pendente + Em progresso na API); status específico (Pendente, Em Conferência, Conferido, Cancelado) desativa entriesOpenOnly e filtra por statusId.
  • Listagem — Cartões com #id, badge de status, endereço, datas criado/atualizado, observações; botão Conferir ou Ver Detalhes se Completed.
  • Navegação para conferênciaConferir / Ver Detalhes/conferencia-entrada/{movement.id}.
  • Estados — Loading (skeletons), erro (“Não foi possível carregar…”), vazio (“Nenhuma movimentação de entrada em aberto”).
  • OrdenaçãocreatedAt descendente na API.

/entrada-material/novo (novo pedido de compra)

  • Voltar — Retorno à lista /entrada-material.
  • Dados do pedido — Fornecedor (select), data prevista, valor total, observações.
  • Itens — Modal adicionar produto + quantidade; lista com remover; validação “pelo menos um item”.
  • Nota fiscal — Upload imagem, preview, remover; validação tipo imagem.
  • Salvar — Validações (fornecedor, data, valor, itens); toast sucesso; navigate("/entrada-material").
    Hoje: dados mock (produtos/fornecedores); comentário no código indica lógica de persistência futura. (pendência — POST movimentação/pedido real)
  • Após integração API — Criar movimentação tipo Entrada pendente; aparecer na lista; permitir conferência com dados reais.

/conferencia-entrada/:id (conferência)

  • Voltar — Para /entrada-material.
  • Cabeçalho — Código pedido, fornecedor (hoje mock fixo), barra de progresso global (itens completos / total).
  • Tabs — “Item Atual” e “Todos (N)”.
  • Item atual — Esperado vs conferido; status Pendente/Parcial/Conferido; adicionar lote (código + qtd, Enter); lista de lotes com remover; navegação Anterior/Próximo.
  • Tab Todos — Visão/resumo por item e atalhos se existirem.
  • Finalizar — Diálogo com observações; só permitir se regra de negócio satisfeita (ex.: todos completos — todosConferidos no código).
    Hoje: handleFinalizar só toast + navigate; sem PATCH de status nem gravação de lotes na API. (pendência crítica)
  • Parâmetro :id — Carregar pedido/movimentação real pelo id; hoje UI usa mock estático independente do id. (pendência)

Fluxos transversais

  • Papel do utilizador — Operador de doca vs aprovador; auditoria de quem conferiu.
  • Reimpressão / histórico — Acesso a entradas conferidas pela lista com filtro Conferido.

Atualize este documento quando NovoPedidoCompra e ConferenciaEntrada deixarem de usar mock e persistirem na API de stock movements.