ST_CUSTONEGATIVO — Permite Custo Negativo
Tela de configuração: MEQ001 — Parâmetros de Estoque Aba: &Estoque Componente:
cmbST_CUSTONEGATIVO(combobox) Tabela / Campo:PARMESTOQUE.ST_CUSTONEGATIVOTipo: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
| Campo | Descrição |
|---|---|
ST_CUSTONEGATIVO | Flag S/N que habilita ou bloqueia custo negativo |
Opções disponíveis
N — Não permite custo negativo (padrão)
| O que faz | Detalhe |
|---|---|
| Bloqueia custo negativo | Valores 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
- Acesse MEQ001 → aba &Estoque.
- No campo Custo Negativo, selecione Não.
- Salve o registro.
- 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.
- 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_ESTOQUEeRECALCULA_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 faz | Detalhe |
|---|---|
| Libera custo negativo | O sistema mantém os valores de custo conforme calculados, mesmo que resultem em números negativos. |
Simulação passo a passo
- Acesse MEQ001 → aba &Estoque.
- No campo Custo Negativo, selecione Sim.
- Salve o registro.
- Realize uma movimentação de estoque (saída, transferência ou produção) que resultaria em custo unitário negativo.
- 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
| Rotina | Arquivo | Linha | Evidência |
|---|---|---|---|
TdmMEQ001.tabPARMESTOQUEAfterInsert | source/MEQ001/UdmMEQ001.pas | 280 | Define valor padrão 'N' ao inserir novo registro |
Scripts SQL com referência direta ao campo ST_CUSTONEGATIVO
| Procedure/Script | Arquivo | Linhas de uso | Efeito |
|---|---|---|---|
GERA_ESTOQUE | Scripts/GERA_ESTOQUE.sql | 65, 148, 152, 262, 687 | Aplica ABS() em I_VL_ESTOQUE (linha 263) e em I_VL_PRECOMEDIO / I_VL_ULTIMOCUSTO (linhas 688–689) quando 'N' |
RECALCULA_ESTOQUE | Scripts/RECALCULA_ESTOQUE.sql | 73, 138, 142, 278, 814 | Aplica ABS() em I_VL_ULTIMOCUSTO (linha 279) e em I_VL_CUSTOMEDIO / I_VL_ULTIMOCUSTO (linhas 815–816) quando 'N' |
RECALCULA_ESTOQUEDIA | Scripts/RECALCULA_ESTOQUEDIA.sql | 81, 123, 126, 312, 893, 907 | Aplica 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âmetro | Onde configurar | Relação |
|---|---|---|
TP_CUSTOESTOQUE | MEQ001 — aba &Estoque | Define 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_LOTENEGATIVO | MEQ001 — aba &Estoque | Controla saldo negativo de lote. Complementa ST_CUSTONEGATIVO mas trata quantidade, não valor. |