Pragiva — Tecnologia na prática

Saldo disponível menor que o saldo atual no Protheus: o que o F4 desconta

No F4 do produto, o disponível sai menor que o saldo atual. A conta desconta reserva, empenho e outras quantidades já comprometidas. Veja quais e onde MV_TPSALDO entra.

Protheus Guia de processo 4 min de leitura

Assista o vídeo Ver o fluxograma

Resposta rápida

Resposta curta
o “Disponível” do F4 é o saldo atual menos reserva, empenho e outras quantidades já comprometidas daquele armazém.
O parâmetro
MV_TPSALDO não muda essa tela. Ele muda a conta de outras validações, e é aí que aparecem as duas respostas diferentes.
Antes de mexer em parâmetro
confira as quantidades do armazém na tela do produto.
Nesta página5 seções

Você consulta o produto com F4 (por exemplo, na movimentação interna) e vê Saldo Atual 100 e Qtd. Disponível 70. Nada está errado: o saldo físico continua 100, e 30 já têm destino.

O que a tela desconta

De onde vem o Disponível do F4
descontadescontadescontamnão entramSaldo Atual100Disponível70ReservaEmpenhoQtd.a Endere · Emp. SAEmp. PrjPedido de vendaentrada prevista

A tela “Saldos em Estoque” lista um armazém por linha. Armazém com saldo indisponível (status 2) nem aparece na lista. Para os demais, o Disponível é o Saldo Atual menos:

Quantidade (título na tela)Quando desconta
Qtd. ReservaSempre
EmpenhoSempre
Qtd.a EndereSempre (quantidade que já está no estoque, mas ainda não foi endereçada)
Qtd. Emp. SASempre
Qtd.Emp.Prj.Sempre
Empen. PreviSó se o parâmetro de empenho previsto estiver ligado
Qtd. Emp. NFSó se o parâmetro de empenho por nota estiver ligado

Não entram na conta, mesmo aparecendo na tela: pedidos de venda, entrada prevista e quantidades de terceiros. Um pedido de venda em carteira, sozinho, não reduz o Disponível: o que reduz é a reserva ou o empenho já gravados, venham de onde vierem. O total do rodapé é a soma dos armazéns listados.

Erro comum: achar que o parâmetro explica a tela

O parâmetro define o tipo de saldo usado nas validações de movimento interno (requisição, baixa). O F4 não passa por ele, e por isso a reserva sempre é descontada ali.

A consequência é uma divergência legítima entre duas telas do mesmo produto:

MV_TPSALDOO que a validação do movimento desconta
Q (padrão do dicionário)Reserva e quantidade a endereçar; não desconta o empenho
SQuase a mesma conta do F4, mas a reserva só sai se for S
CSaldo recalculado até a data de referência, com reserva conforme MV_SLDRESE

No exemplo da abertura, se os 30 comprometidos forem só reserva e o ambiente usar S com MV_SLDRESE = N, o F4 mostra 70 e a movimentação aceita tirar até 100. O inverso também vale: com Q, o empenho não entra na validação, mas entra no F4.

Qual valor vale no seu ambiente é decisão de quem configura; não mude sem entender o efeito nas requisições e baixas.

Se o número ainda não fecha

  • Personalização: o padrão prevê pontos de entrada que alteram o disponível mostrado e as colunas da tela, e um que muda a regra de subtração da reserva. Se a TI do seu ambiente os usa, a conta acima é só a base.
  • Empenho que parece sumir: a tela usa o empenho gravado no saldo do armazém. Só rotinas que calculam o saldo “até uma data” (ou o tipo C) leem o empenho direto da tabela de empenhos por data; o F4 não faz isso.
  • Saldo físico errado, não disponível: se o Saldo Atual não bate com lotes e endereços, o assunto é outro. Veja como comparar SB2, SB8 e SBF.

Solução de problemas

SintomaCausa provávelO que conferir
Disponível menor que o saldo, tudo certo no físicoReserva ou empenho abertosQtd. Reserva e Empenho do armazém
Armazém sumiu do F4Saldo do armazém indisponível (status 2)Status do saldo do armazém
F4 e a validação da movimentação discordamValor de MV_TPSALDO e MV_SLDRESEConsulta de parâmetros abaixo
Disponível diferente do que a tabela calculaParâmetro de empenho previsto ou por nota, ou ponto de entradaMesma consulta e a TI

Para TI e consultor: onde ver isso no banco

A tela lê a , um registro por produto e armazém. A conta do F4, com os valores de fábrica dos parâmetros, é:

TEXT
Disponível = B2_QATU - B2_RESERVA - B2_QEMP - B2_QACLASS
             - B2_QEMPSA - B2_QEMPPRJ

= 2 esconde o armazém. (empenho previsto) só subtrai se = S, e (empenho por nota) só se = T (e sem a integração de pedido com operação, ligado com a tabela ). Ficam fora da conta , , , e .

Na validação do movimento: com Q a conta é B2_QATU - B2_QACLASS - B2_RESERVA; com S o empenho sai (com opção de limitar por data, via ); com C o empenho pode ser ignorado com = S. O MV_SLDRESE só vale com MV_TPSALDO igual a S ou C.

Os parâmetros e seus valores:

Confira no seu ambienteSQL
SELECT X6_VAR, X6_TIPO, X6_DESCRIC, X6_CONTEUD
  FROM SX6010
 WHERE X6_VAR IN ('MV_TPSALDO', 'MV_SLDRESE', 'MV_SLDEMPE',
                  'MV_QTDPREV', 'MV_QEMPNF', 'MV_CONDEMP', 'MV_PVCOMOP')
   AND D_E_L_E_T_ = ' '

Os campos da SB2 e a conta do F4 para um produto, trocando filial e código:

Confira no seu ambienteSQL
SELECT B2_LOCAL, B2_QATU, B2_RESERVA, B2_QEMP, B2_QACLASS,
       B2_QEMPSA, B2_QEMPPRJ, B2_QEMPPRE, B2_QEMPN,
       B2_QATU - B2_RESERVA - B2_QEMP - B2_QACLASS
               - B2_QEMPSA - B2_QEMPPRJ AS DISPONIVEL
  FROM SB2010
 WHERE B2_FILIAL = '01' AND B2_COD = 'P-001'
   AND B2_STATUS <> '2' AND D_E_L_E_T_ = ' '
 ORDER BY B2_LOCAL

DISPONIVEL é a conta acima sem B2_QEMPPRE e B2_QEMPN. Se MV_QTDPREV for S, subtraia também B2_QEMPPRE; se MV_QEMPNF for T, subtraia B2_QEMPN. A coluna X6_CONTEUD pode estar vazia ou com outro valor no seu ambiente: o padrão do dicionário é só ponto de partida.

Continue por aqui