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)
| Nome | Onde nasce | Uso |
|---|---|---|
| Saldo físico | último FAPOB.balance do par produto+local+filial | kardex, posição |
| Reservado | FARES01 ACTIVE (reserved − consumed) | empenho de PV/OP |
| Indisponível (lote) | QUARANTINE EXPIRED BLOCKED RECALLED | fora do FEFO |
| Incoming | NF FAR01 ainda CREATED | ainda não confirmada |
| Disponível | ver fórmula abaixo | pode vender / OP |
| ATP | disponível + incoming | atendimento futuro |
Fórmula (API 1.0.169)
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
- Kardex do produto no local.
- Tela de reservas filtrando o código.
- Se
lotControl:/apps/stock/lots— status do lote. - Curl ATP (headers de tenant):
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.
