FAQ TOTVS Protheus: MV_TPSALDO desconta B2_QEMP na MATA241?
Na MATA241 (Movimentação Interna Modelo 2), a validação de saldo nem sempre olha só o estoque físico.
Parte do saldo pode estar empenhada em B2_QEMP. Este FAQ explica qual parâmetro controla esse desconto e como montar a configuração correta.
B2_QEMP na MATA241, configure MV_TPSALDO = S.
1. O que é o MV_TPSALDO no Protheus?
O parâmetro MV_TPSALDO define o tipo de saldo considerado nos movimentos internos.
Na prática, ele decide se a rotina usa a composição completa via SaldoSB2() ou uma fórmula simplificada.
2. Qual parâmetro desconta o campo B2_QEMP?
MV_TPSALDO = S
Com esse valor, a MATA241 passa por SaldoMov() → SaldoSB2(), e o empenho entra no cálculo do saldo disponível:
nEmpenho := B2_QEMP
saldo disponível -= nEmpenho
Também desconta com MV_TPSALDO = C, desde que MV_SLDEMPE não esteja como S.
3. A MATA241 usa o MV_TPSALDO?
Sim. O parâmetro é utilizado nas validações de saldo das funções A241CHECK e A241LINOK.
MATA241
└── A241CHECK / A241LINOK
└── SaldoMov()
└── lê MV_TPSALDO
├── S ou C → SaldoSB2() → desconta B2_QEMP
└── Q → B2_QATU - B2_QACLASS - B2_RESERVA
4. Quais valores do MV_TPSALDO existem?
| Valor | Como calcula | Desconta B2_QEMP? |
|---|---|---|
S |
Usa SaldoSB2() na posição atual |
Sim |
Q |
B2_QATU - B2_QACLASS - B2_RESERVA |
Não |
C |
Usa SaldoSB2() com data de referência (CalcEst) |
Sim* |
*Exceto quando MV_SLDEMPE = S.
5. Tabela da verdade: quando o B2_QEMP é descontado?
| MV_TPSALDO | MV_SLDEMPE | MV_SLDRESE | Desconta B2_QEMP? | Desconta B2_RESERVA? | Quando usar |
|---|---|---|---|---|---|
S |
— | N |
Sim | Não | Produção com empenho ativo |
S |
— | S |
Sim | Sim | Empenho + reserva no disponível |
Q |
— | (na fórmula) | Não | Sim | Cálculo simples, sem empenho |
C |
N |
N |
Sim | Não | Movimento retroativo com empenho |
C |
N |
S |
Sim | Sim | Retroativo com empenho e reserva |
C |
S |
N ou S |
Não | Depende de MV_SLDRESE |
Retroativo sem descontar empenho |
6. Qual configuração usar na prática?
Quero considerar empenho (B2_QEMP)
MV_TPSALDO = S
Não quero considerar empenho
MV_TPSALDO = Q
Uso saldo por data e quero considerar empenho
MV_TPSALDO = C
MV_SLDEMPE = N
Uso saldo por data e NÃO quero considerar empenho
MV_TPSALDO = C
MV_SLDEMPE = S
7. O MV_SLDEMPE também controla o empenho?
Sim, mas só no cenário MV_TPSALDO = C.
MV_SLDEMPE = S→ não desconta empenho (lEmpenho := .F.)MV_SLDEMPE = N(padrão) → desconta empenho
Com MV_TPSALDO = S, o empenho já é considerado via SaldoSB2();
o MV_SLDEMPE não é o parâmetro principal nesse caso.
8. O MV_SLDRESE desconta B2_QEMP?
Não. O MV_SLDRESE controla a reserva (B2_RESERVA), não o empenho.
| Parâmetro | Campo impactado |
|---|---|
MV_TPSALDO / MV_SLDEMPE |
B2_QEMP (empenho) |
MV_SLDRESE |
B2_RESERVA (reserva) |
9. Quais campos de empenho entram no SaldoSB2()?
Além de B2_QEMP, o cálculo pode considerar:
B2_QEMPPRJ— empenho de projetoB2_QEMPSA— empenho de solicitação ao armazémB2_QEMPN— conforme parâmetroMV_QEMPNF
Também pode entrar composição com MV_QTDPREV (OPs previstas).
10. Por que aparece “saldo insuficiente” mesmo com estoque físico?
Porque o saldo físico (B2_QATU) não é necessariamente o saldo disponível.
| Campo | Quantidade |
|---|---|
B2_QATU |
100 |
B2_QEMP |
70 |
Disponível com MV_TPSALDO = S |
30 |
11. Checklist rápido de diagnóstico
- Confirme a rotina: MATA241
- Verifique
MV_TPSALDOno SX6 - Se estiver
C, verifique tambémMV_SLDEMPE - Confira no SB2:
B2_QATU,B2_QEMP,B2_RESERVA,B2_QACLASS - Recalcule o disponível conforme a tabela da verdade
Conclusão
Quem desconta B2_QEMP na MATA241 é o
MV_TPSALDO = S
(ou C com MV_SLDEMPE ≠ S).
Se o ambiente tem produção e empenhos ativos, a configuração recomendada para validar saldo de forma correta é:
MV_TPSALDO = S
1. MV_TPSALDO: como descontar B2_QEMP na MATA241 (FAQ Protheus)
2. Protheus MATA241: qual parâmetro considera empenho no saldo?
3. FAQ TOTVS: MV_TPSALDO = S desconta B2_QEMP? Tabela da verdade
4. Saldo insuficiente na MATA241: B2_QEMP e MV_TPSALDO explicados
Conceito e utilização do parâmetro MV_TPSALDO