Saldo físico, disponível e ATP

Dúvida: por que o kardex mostra quantidade e o pedido ainda recusa — fórmula do disponível e do ATP (API 1.0.169).

Dúvida: o que é saldo físico, disponível e ATP?

Ambiente: consulta no produto (F7 / aba Estoque), GET /stock/product-balance/:filialId/:code, GET /inventory/availability/:code e .../:code/atp. Central: /apps/stock.

Três números (não são o mesmo)

NomeOnde nasceUso
Saldo físicoúltimo FAPOB.balance do par produto+local+filialkardex, posição
ReservadoFARES01 ACTIVE (reserved − consumed)empenho de PV/OP
Indisponível (lote)QUARANTINE EXPIRED BLOCKED RECALLEDfora do FEFO
IncomingNF FAR01 ainda CREATEDainda não confirmada
Disponívelver fórmula abaixopode vender / OP
ATPdisponível + incomingatendimento futuro

Fórmula (API 1.0.169)

Se existe saldo em FALOT01 (produto com lote no local):
  available = soma lotes ACTIVE com validade nula ou ≥ hoje − reserva ACTIVE
Senão:
  available = FAPOB − reserva − lotes indisponíveis

ATP = available + incoming

Configuração allowNegativeStock da filial: padrão false. Exceção: backordered_quantity em venda futura.

Consulta F7: total na tela = soma dos armazéns; cada linha de movimento é o saldo daquele local. Filtre o armazém para não misturar.

Exemplo homologado (HML)

Pão HML-IND-PAO, depósito 001: razão physical_stock = 0, lote ACTIVE 180 UN → ATP 180. Farinha com 14 kg RECALLED → ATP 0; FEFO recusa.

Passo a passo para conferir um SKU

  1. Kardex do produto no local.
  2. Tela de reservas filtrando o código.
  3. Se lotControl: /apps/stock/lots — status do lote.
  4. Curl ATP (headers de tenant):
curl -s -H "Authorization: Bearer $TOKEN" \
  -H "x-company-id: $COMPANY" -H "x-filial-id: $FILIAL" \
  "$API/inventory/availability/CODIGO/atp?filialId=$FILIAL&locationCode=001"

Campos do DTO: physical_stock, reserved_stock, unavailable_lot_stock, available_stock, incoming_stock, atp. Rota /atp antes de /:productCode no Nest.

POST /inventory/availability/bulk — { "filialId", "productCodes": [] }.

Alertas

GET /stock/alerts/:filialId — mínimo, ponto de pedido, segurança do cadastro vs saldo.

Saiba mais

Reservas · API industrial ATP · Lotes