Pular para o conteúdo principal

ST_CUSTONEGATIVO — Permite Custo Negativo

Tela de configuração: MEQ001 — Parâmetros de Estoque Aba: &Estoque Componente: cmbST_CUSTONEGATIVO (combobox) Tabela / Campo: PARMESTOQUE.ST_CUSTONEGATIVO Tipo: CHAR(1), NOT NULL, padrão 'N'

Controla se o sistema permite valores de custo negativos nos cálculos de estoque. Quando desativado (N), qualquer valor negativo de custo é convertido para o valor absoluto (módulo) antes de ser gravado.


Campos envolvidos​

CampoDescrição
ST_CUSTONEGATIVOFlag S/N que habilita ou bloqueia custo negativo

Opções disponíveis​

N — Não permite custo negativo (padrão)​

O que fazDetalhe
Bloqueia custo negativoValores negativos de custo (VL_ESTOQUE, VL_PRECOMEDIO, VL_ULTIMOCUSTO, VL_CUSTOMEDIO) são convertidos para o módulo (valor absoluto) antes de serem gravados.

Simulação passo a passo​

  1. Acesse MEQ001 → aba &Estoque.
  2. No campo Custo Negativo, selecione Não.
  3. Salve o registro.
  4. Realize uma movimentação de estoque (saída, transferência ou produção) que resultaria em custo unitário negativo — por exemplo, um produto com último custo de R$ 10,00 e uma saída que gera apuração de R$ −5,00.
  5. Consulte o saldo do produto após a gravação da movimentação.

Resultado esperado: O custo negativo é convertido automaticamente para o valor absoluto (R$ 5,00). Os campos VL_ULTIMOCUSTO, VL_CUSTOMEDIO e VL_ESTOQUE nunca ficam negativos.

Excecao / Importante: A conversão para absoluto ocorre nas procedures GERA_ESTOQUE, RECALCULA_ESTOQUE e RECALCULA_ESTOQUEDIA. Isso significa que o bloqueio vale tanto para movimentações em tempo real quanto para recálculos retroativos de estoque.


S — Permite custo negativo​

O que fazDetalhe
Libera custo negativoO sistema mantém os valores de custo conforme calculados, mesmo que resultem em números negativos.

Simulação passo a passo​

  1. Acesse MEQ001 → aba &Estoque.
  2. No campo Custo Negativo, selecione Sim.
  3. Salve o registro.
  4. Realize uma movimentação de estoque (saída, transferência ou produção) que resultaria em custo unitário negativo.
  5. Consulte o saldo do produto após a gravação da movimentação.

Resultado esperado: O custo negativo é mantido como calculado. Os campos VL_ULTIMOCUSTO, VL_CUSTOMEDIO e VL_ESTOQUE podem apresentar valores negativos.


Procedures impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoLinhaEvidência
TdmMEQ001.tabPARMESTOQUEAfterInsertsource/MEQ001/UdmMEQ001.pas280Define valor padrão 'N' ao inserir novo registro

Scripts SQL com referência direta ao campo ST_CUSTONEGATIVO​

Procedure/ScriptArquivoLinhas de usoEfeito
GERA_ESTOQUEScripts/GERA_ESTOQUE.sql65, 148, 152, 262, 687Aplica ABS() em I_VL_ESTOQUE (linha 263) e em I_VL_PRECOMEDIO / I_VL_ULTIMOCUSTO (linhas 688–689) quando 'N'
RECALCULA_ESTOQUEScripts/RECALCULA_ESTOQUE.sql73, 138, 142, 278, 814Aplica ABS() em I_VL_ULTIMOCUSTO (linha 279) e em I_VL_CUSTOMEDIO / I_VL_ULTIMOCUSTO (linhas 815–816) quando 'N'
RECALCULA_ESTOQUEDIAScripts/RECALCULA_ESTOQUEDIA.sql81, 123, 126, 312, 893, 907Aplica ABS() em I_VL_ULTIMOCUSTO (linhas 313, 894) e em I_VL_CUSTOMEDIO (linha 908) quando 'N'

Candidatas por uso da tabela (sem referência direta ao campo)​

As procedures/views abaixo utilizam a tabela PARMESTOQUE mas não citam o campo ST_CUSTONEGATIVO no código-fonte analisado. Não há impacto funcional direto confirmado:

AJUSTA_ORDEMPRODPEDANTECIPADO, ALTERACAO_BANDA, ATUALIZA_CONSUMOMEDIO, ATUALIZA_ESTOQUEDIAPESSOA, CALCULA_FORMACAOPRECOVENDA, CANCELA_ESTOQUE, CONFIRMA_ORDEMSERVICO, CONFIRMA_ORDEMSERVICOMETAL, GERA_ESTOQUE_NOTAFISCAL, GERA_ESTOQUEPSALT, GERA_NOTAFISCALESTOQUE, GERA_ORDEMPRODUCAO, GERA_PRODENVELOPAMENTO, GERA_PRODLOTEPRODUCAO, GERA_PRODMONTAGEMRECAP, GERA_PRODVULCANIZACAO, GERA_SPEDBLOCOL, GERA_SPEDECFBLOCOL, GRAVA_AVISOS, MONTA_ORDEMPRODITEMPEDIDOGRADE.


Parâmetros relacionados​

ParâmetroOnde configurarRelação
TP_CUSTOESTOQUEMEQ001 — aba &EstoqueDefine se o custo apurado é M (Médio) ou Ú (Último Custo). O ST_CUSTONEGATIVO atua sobre ambos os valores (VL_CUSTOMEDIO e VL_ULTIMOCUSTO) independentemente de qual tipo estiver selecionado.
ST_LOTENEGATIVOMEQ001 — aba &EstoqueControla saldo negativo de lote. Complementa ST_CUSTONEGATIVO mas trata quantidade, não valor.