Como efetuar o controle de estoque

Rotinas do módulo Estoque no M3R: cadastro, armazém, entrada, transferência, ajuste, inventário, reserva, kardex e custo FIFO.

Dúvida: como efetuar o controle de estoque no M3R?

Ambiente: M3R ONE — módulo Estoque (código 02) — todas as filiais do tenant. O saldo é por filial e por armazém (código de 3 dígitos, ex. 001). Não existe saldo “da empresa” somado automaticamente na operação de saída; a consulta F7 do produto soma armazéns só para visualização.

Solução: não há uma única rotina que “controle o estoque”. Cada empresa combina as rotinas abaixo. O M3R não edita um campo Saldo no cadastro do produto: cada movimento grava uma linha nova no razão FAPOB (append-only). O saldo atual é o registro de maior id para (produto, armazém, filial).

Durante a explicação, cada rotina aponta para o artigo com campos, passos e o que o sistema grava. Estas são as rotinas usadas no dia a dia — não o catálogo inteiro do sidebar.

1º Cadastro de produtos

Menu: Estoque → Cadastros → Produtos (/apps/product). Inclusão: /apps/product/add.

Cadastra o SKU (FAPOA): código único por empresa, descrição, marca, categoria, tipo (MP PI PA ME BN SC MC), armazém padrão, UM de estoque, NCM/CFOP/CEST, preço de venda, controles de lote e validade.

Sem produto não há movimento, NF, pedido nem OP. Artigo: Cadastro de produtos.

2º Cadastro de armazéns

Menu: Estoque → Cadastros → Armazéns (/apps/stock/warehouses).

O armazém (local) identifica o depósito da filial. Código + nome + status ACTIVE / BLOCKED. Transferência, inventário, NF e OP exigem um local ativo. Artigo: Armazéns.

3º Entrada de documentos (NF)

Menu: Estoque → Operações → Entrada de Documentos (/apps/entry-document). Fila SEFAZ: /apps/nfe-entrada.

É a rotina que aumenta saldo de compra. O pedido de compra (FAC009) não lança FAPOB. Só a confirmação da NF (FAR01) cria movimento origem ENTRY_DOCUMENT, camada FIFO FACL01, CP e lote (se lotControl). Artigo: Entrada de NF e Compras — documento de entrada.

4º Transferência entre armazéns

Menu: Estoque → Operações → Movimentação → Transferências (/apps/stock/transfers).

Move saldo dentro da mesma filial, de um local para outro. Não transfere entre filiais. Fluxo: rascunho → Aprovar → Concluir (aí sim grava dois FAPOB: saída na origem + entrada no destino, mesmo document). Artigo: Transferência.

5º Ajustes (movimentação interna)

Menu: Estoque → Operações → Movimentação → Ajustes (/apps/stock/adjustments).

Entrada ou saída interna sem NF (requisição, devolução ao armazém, correção). Motivos: avaria, perda, encontrado, diferença de contagem, correção, outro. Item POSITIVE (entra) ou NEGATIVE (sai). Rascunho não mexe no saldo; Aprovar gera FAPOB origem ADJUSTMENT. Redução sempre exige quantidade e motivo. Artigo: Ajuste.

Doação de lote não usa esta tela: origem DONATION, flag industrial.donation.enabled. Ver qualidade industrial.

6º Inventário (contagem física)

Menu: Estoque → Inventário (/apps/stock/inventory). Detalhe: /apps/stock/inventory/[id].

Contagem física × saldo do sistema. Tipos: Completo, Parcial, Cíclico, Pontual. Passos: Rascunho → Em andamento (digitar quantidades) → Contado (revisar divergências) → Aprovado (o sistema gera o ajuste para a quantidade contada a partir do saldo atual, não reaplica o delta do snapshot). Artigo: Inventário.

7º Reservas

Menu: Estoque → Operações → Movimentação → Reservas (/apps/stock/reservations).

Empenho (FARES01) para pedido, OP, transferência ou manual. Disponível para vender = físico (ou lotes ACTIVE) menos reserva ACTIVE. Pedido de venda reserva; orçamento não. Artigo: Reservas e ATP e Saldo e ATP.

8º Kardex físico-financeiro

Menu: Estoque → Relatórios → Kardex Físico-Financeiro (/apps/stock/reports/kardex).

Mostra entradas, saídas, custo do movimento e saldo quantidade/valor a partir do razão e das camadas FIFO. Artigo: Kardex.

9º Custo (FIFO)

Não há tela “Recalcular custo médio”. Na entrada, cria-se camada FACL01. Na saída (faturamento, OP, ajuste negativo, doação), consumeFIFO() consome a camada mais antiga (entryDate, depois id). Sem camada, usa Product.averageCost. Nunca usa preço de venda. Artigo: Custo FIFO.

10º Produção, lote, MRP

Menu: Estoque → Produção → Ordens de Produção / MRP / Central industrial.

BOM, OP, FEFO, recall e doação são o caminho industrial (flags OFF por padrão). Hub: Produção e lotes.

Relatórios e API

Relatórios de saldo, posição, ABC, giro · API (razões, ATP, transferência, ajuste, contagem).

IPs

IP.STOCK.MOVEMENT.BEFORE_POST / AFTER_POST existem no catálogo e não estão wired. O writer já serializa o razão com lock. Lista: IPs.