ST_ZERAVALORSALDO — Zerar Valor ao Zerar Saldo Automaticamente
Tela de configuração: MEQ001 — Parâmetros de Estoque Localização: Parâmetros → Aba &Estoque → Combobox "Zerar valor ao zerar saldo automaticamente" Tabela / Campo:
PARMESTOQUE.ST_ZERAVALORSALDO—CHAR(1),DEFAULT 'N' NOT NULLValor padrão:N(Não)
Visão Geral
Controla se o sistema deve zerar automaticamente o valor (custo) do saldo de estoque quando a quantidade do saldo chega a zero após uma movimentação. Quando habilitado, o sistema ajusta o valor do movimento para que o saldo em valor também fique zerado, evitando resíduos monetários em produtos sem quantidade.
Campos Envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
ST_ZERAVALORSALDO | PARMESTOQUE | CHAR(1) | Habilita/desabilita o zereamento automático do valor |
Opções Disponíveis
S — Sim (Zerar Valor Automaticamente)
| O que faz | Detalhe |
|---|---|
| Zera o valor do saldo | Quando uma movimentação deixa o saldo em quantidade = 0, o sistema ajusta o valor do movimento para que o saldo em valor também fique = 0 |
| Condição — Saída | Aplica quando a operação é de saída e o saldo anterior em valor é positivo |
| Condição — Entrada | Aplica quando a operação é de entrada e o saldo anterior em valor é negativo |
| Ajuste automático | Marca internamente o movimento como ajuste automático (ST_AJUSTEAUTOMATICO = 'S') |
Simulação Passo a Passo
- Acesse MEQ001 → aba &Estoque.
- No campo "Zerar valor ao zerar saldo automaticamente", selecione Sim.
- Salve o registro.
- Localize um produto cujo saldo em quantidade seja 1 un e o valor do saldo seja R$ 15,00.
- Realize uma saída de 1 un desse produto.
- Após a confirmação da movimentação, consulte o saldo do produto.
- Observe que o saldo em quantidade = 0 e o saldo em valor = R$ 0,00.
- O movimento foi ajustado automaticamente para que o valor não fique residual.
Resultado esperado: O saldo do produto fica com quantidade = 0 e valor = R$ 0,00, sem resíduos monetários. O sistema registra o movimento com o ajuste de valor aplicado automaticamente.
N — Não (Não Zerar Valor)
| O que faz | Detalhe |
|---|---|
| Não altera o valor do saldo | Mesmo quando a quantidade chega a zero, o valor residual permanece no saldo |
| Comportamento padrão | Valor padrão ao inserir novo registro em PARMESTOQUE |
Simulação Passo a Passo
- Acesse MEQ001 → aba &Estoque.
- No campo "Zerar valor ao zerar saldo automaticamente", selecione Não.
- Salve o registro.
- Localize um produto cujo saldo em quantidade seja 1 un e o valor do saldo seja R$ 15,00.
- Realize uma saída de 1 un desse produto.
- Após a confirmação da movimentação, consulte o saldo do produto.
- Observe que o saldo em quantidade = 0, mas o saldo em valor pode manter um resíduo (ex: R$ 0,01 ou outro valor residual).
Resultado esperado: O saldo em quantidade fica zerado, mas o valor residual permanece. Para zerar o valor, será necessário um ajuste manual ou utilizar o processo de recálculo de estoque.
Excecao / Importante:
- Este parâmetro atua em conjunto com
ST_AJUSTACUSTONEGATIVO(configurado em MEQ001, aba &Estoque), que controla o ajuste automático de custos negativos.- O zereamento automático do valor ocorre tanto no processo de geração de estoque (
GERA_ESTOQUE) quanto no recálculo de estoque (RECALCULA_ESTOQUE).- Ajustes de custo médio e último custo para zero também são aplicados quando o parâmetro está ativo e há condições específicas de custo negativo.
Telas Impactadas
| Tela | Impacto |
|---|---|
| MEQ001 — Parâmetros de Estoque | Tela de configuração do parâmetro |
| Movimentações de Estoque (geração) | Afeta o cálculo de valores ao zerar saldo em quantidade durante GERA_ESTOQUE |
| Recálculo de Estoque | Afeta o cálculo de valores ao zerar saldo em quantidade durante RECALCULA_ESTOQUE |
Procedures Impactadas
Rotinas Delphi
| Rotina | Arquivo | Evidência |
|---|---|---|
TdmMEQ001.tabPARMESTOQUEAfterInsert | source/MEQ001/UdmMEQ001.pas:301 | Define valor padrão 'N' ao inserir novo registro |
Scripts SQL com Referência Direta ao Campo
| Procedure | Arquivo | Evidência |
|---|---|---|
GERA_ESTOQUE | Scripts/GERA_ESTOQUE.sql:86,567 | Declara variável I_ST_ZERAVALORSALDO e verifica = 'S' para zerar valor do movimento |
RECALCULA_ESTOQUE | Scripts/RECALCULA_ESTOQUE.sql:98,717 | Declara variável I_ST_ZERAVALORSALDO e verifica = 'S' para zerar valor do movimento |
Candidatas por Uso da Tabela PARMESTOQUE
Nenhuma referência direta ao campo ST_ZERAVALORSALDO foi encontrada nas demais procedures que acessam a tabela PARMESTOQUE. As candidatas listadas abaixo usam a tabela mas não citam o campo — não há impacto funcional direto documentado.
Lógica de Negócio (Referência Técnica)
Quando ST_ZERAVALORSALDO = 'S', o sistema aplica a seguinte regra após cada movimentação:
SE saldo_quantidade = 0 E saldo_valor <> 0 ENTÃO
SE (operação = Saída E saldo_valor_anterior > 0)
OU (operação = Entrada E saldo_valor_anterior < 0) ENTÃO
valor_movimento = ABS(saldo_valor_anterior)
saldo_valor = 0
marca_ajuste_automatico = 'S'
FIM
FIM