Pular para o conteúdo principal

MV_TPSALDO: como descontar B2_QEMP na MATA241 (FAQ Protheus)

FAQ TOTVS · Protheus · Estoque

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.

Resposta rápida: para descontar 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 = Snã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 projeto
  • B2_QEMPSA — empenho de solicitação ao armazém
  • B2_QEMPN — conforme parâmetro MV_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
Se a MATA241 tentar movimentar 40, o sistema bloqueia — corretamente — por falta de saldo disponível, não por falta de saldo físico.

11. Checklist rápido de diagnóstico

  1. Confirme a rotina: MATA241
  2. Verifique MV_TPSALDO no SX6
  3. Se estiver C, verifique também MV_SLDEMPE
  4. Confira no SB2: B2_QATU, B2_QEMP, B2_RESERVA, B2_QACLASS
  5. 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
Títulos SEO alternativos:
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
Referências úteis: documentação TOTVS sobre MATA241 e parâmetro MV_TPSALDO (Central de Atendimento / TDN).
Conceito e utilização do parâmetro MV_TPSALDO

Postagens mais visitadas deste blog

SB9 Protheus x Fechamentos incorretos (Sem endereço ou lote)

Uebá!!! Montei essa query um tempo atrás para localizar fechamento incorreto no protheus, o fechamento acontece na SB9, que é feito todo mês. Let's Share! https://centraldeatendimento.totvs.com/hc/pt-br/articles/360006558492-MP-SIGAEST-Roteiro-para-a-realiza%C3%A7%C3%A3o-da-virada-de-saldos-no-estoque-MATA280 SELECT * FROM ( SELECT B9_FILIAL,B9_COD,B9_LOCAL,B9_DATA,B9_QINI, --ULTIMO FECHAMENTO ANTES DO MES ATUAL ( SELECT ISNULL(B9_QINI,0) FROM SB9050 SB9X WHERE SB9X.B9_COD =SB9.B9_COD AND SB9X.B9_LOCAL = SB9.B9_LOCAL AND SB9X.D_E_L_E_T_ = ' ' AND MONTH(SB9X.B9_DATA) = MONTH(DATEADD(month,-1,convert(datetime,SB9.B9_DATA,103))) AND YEAR(SB9X.B9_DATA) = YEAR(DATEADD(month,-1,convert(datetime,SB9.B9_DATA,103))) --SELECT * FROM SF4050 WHERE F4_CODIGO = '618' )-( --MOVIMENTACAO DO ESTOQUE SELECT ISNULL(SUM(CASE WHEN LEFT(SD3.D3_CF,1)='R' THEN SD3.D3_QUANT ELSE SD3.D3_QUANT * -1 END),0) FROM S...

Recursividade Minha Linda! Estrutura Produtos Protheus SG1

Fato! Depois que você conhece recursividade em sua vida tudo fica mais leve (rss... ) a recursividade pode ser infinita (pode não ta!) se for infinita vai dar problema, não pode. Mas a recursividade nos ajuda a deixar nosso sistema mais flexível e dinâmico para montar uma série de regras de negócio. Hoje vou falar exatamente da SG1, tabela TOTVS Microsiga Protheus que é utilizada para montar a estrutura de um produto dentro PCP (Planejamento e Controle de Produção). Isso séria algo que a recursividade iria ajudar. Na SG1 temos o campos G1_COD (Pai) e G1_COMP (Filho). G1_COD->G1_COMP->G1_COD->G1_COMP->G1_COD->G1_COMP Seria assim o fluxo da informação. Sem mais delongas, abaixo vou deixar o script para MSSQL para apresentar esses dados. Inté! WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM ,TRT ,RECNO, NIVEL ) AS ( SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, 1 AS NIVEL FR...

Acentuando no Protheus

No Protheus existe a possíbilidade de se trabalhar com palavras acentuada, apenas alterando um parametro, o MV_ACENTO de 'N' para 'S', desta forma as palavras que forem acentuadas serão aprentadas desta forma dentro de sistema. FONTE:  http://efacildemais.blogspot.com.br