CD_OPERESTORNOSAI — Operação de Estorno de Saída
Tela de configuração: MEQ001 — Parâmetros de Estoque Localização: Aba "Operações Padrão" Tabela / Campo:
PARMESTOQUE.CD_OPERESTORNOSAI(INTEGER) Chave estrangeira:RPARMESTOQUE_OPERESTORNOSAI→OPERACAO.CD_OPERACAOComponente:edtCD_OPERESTORNOSAI(TDBEdit)
Finalidade
Armazena a operação de estoque do tipo Saída utilizada para estornos (reversão) de movimentações de produção. Quando uma Ordem de Produção é classificada como tipo Estorno (TP_ORDEMPRODUCAO = 'E'), o sistema substitui a operação de saída padrão por este código, gerando uma movimentação de estoque inversa.
Campos envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
CD_OPERESTORNOSAI | PARMESTOQUE | INTEGER (FK) | Código da operação de estorno de saída |
DS_OPERESTORNOSAI | — | LOOKUP | Descrição da operação (via JOIN OPERACAO.DS_OPERACAO) |
TP_ORDEMPRODUCAO | ORDEMPRODUCAO | CHAR(1) | Tipo da ordem; quando 'E' ativa o uso desta operação |
Telas impactadas
| Tela | Efeito |
|---|---|
| MEQ001 | Configuração do parâmetro (tela atual) |
| MEQ006 | Persiste CD_OPERESTORNOSAI ao salvar parâmetros de estoque via btnSalvarClick |
Opções disponíveis
O campo é editável e aceita qualquer código de operação de estoque do tipo Saída com Preço Médio ativo. Não se trata de uma lista fixa de opções — o valor é um código numérico que referencia a tabela OPERACAO.
| O que faz | Detalhe |
|---|---|
| Editável | Sim — campo numérico com busca via <F9> |
| Exige | Operação válida do tipo Saída (Tp_Operacao = 'S') com Preço Médio ativo (St_PrecoMedio = 'S') |
| Restrição | Se a operação informada não atender os critérios, o sistema exibe erro de validação |
| Pode ficar vazio | Sim — campo opcional; se vazio, a reversão de estoque em ordens de estorno pode não ser processada corretamente |
Simulação passo a passo
- Acesse MEQ001 — Parâmetros de Estoque.
- Navegue até a aba Operações Padrão.
- Localize o campo Operação de Estorno Saída (
CD_OPERESTORNOSAI). - Pressione
<F9>no campo para abrir a busca de operações. - Selecione uma operação do tipo Saída com Preço Médio ativo (ex: operação de código
5). - O sistema preenche automaticamente a descrição da operação no campo
DS_OPERESTORNOSAIao lado. - Salve os parâmetros.
Resultado esperado: O código da operação selecionada é gravado em PARMESTOQUE.CD_OPERESTORNOSAI. A partir desse momento, toda Ordem de Produção cujo tipo seja Estorno (TP_ORDEMPRODUCAO = 'E') utilizará esta operação para a movimentação de estoque de saída, em vez da operação de saída padrão (CD_OPERPRODSAI).
Exceção / Importante: Se o campo ficar vazio e uma Ordem de Produção do tipo Estorno for confirmada, o sistema pode gerar movimentação sem operação de estoque válida. Sempre preencha este parâmetro quando o módulo de Produção estiver ativo.
Simulação — Validação com operação inválida
- Acesse MEQ001 → aba Operações Padrão.
- No campo Operação de Estorno Saída, digite o código de uma operação que seja do tipo Entrada (em vez de Saída).
- Saia do campo (Tab).
Resultado esperado: O sistema exibe uma mensagem de erro indicando que a operação informada não é do tipo Saída ou não possui Preço Médio ativo, impedindo a gravação.
Simulação — Busca via <F9>
- Acesse MEQ001 → aba Operações Padrão.
- Posicione o cursor no campo Operação de Estorno Saída.
- Pressione
<F9>.
Resultado esperado: Abre a tela de busca de operações de estoque, já filtrada para exibir apenas operações do tipo Saída com Preço Médio ativo. Selecione a operação desejada e o código é preenchido automaticamente no campo.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Evidência |
|---|---|---|---|
TfrmMEQ001.edtCD_OPERESTORNOSAIKeyDown | UMEQ001.pas | 1733 | Busca operação via <F9> (filtro: Saída + Preço Médio) |
TdmMEQ001.tabPARMESTOQUECD_OPERESTORNOSAIValidate | UdmMEQ001.pas | 1324 | Valida operação: Tp_Operacao = 'S', St_PrecoMedio = 'S' |
TfrmMEQ006.btnSalvarClick | UMEQ006.pas | 1092 | Persiste CD_OPERESTORNOSAI ao salvar parâmetros |
Referências SQL diretas ao campo
| Procedure/Script | Arquivo | Linha | Evidência |
|---|---|---|---|
GERA_ORDEMPRODUCAO | GERA_ORDEMPRODUCAO.sql | 114 | Lê CD_OPERESTORNOSAI de PARMESTOQUE |
GERA_ORDEMPRODUCAO | GERA_ORDEMPRODUCAO.sql | 347 | Usa operação de estorno quando TP_ORDEMPRODUCAO = 'E' |
GERA_ORDEMPRODUCAO | GERA_ORDEMPRODUCAO.sql | 856 | Usa operação de estorno quando TP_ORDEMPRODUCAO = 'E' (segundo bloco) |
Candidatas por uso da tabela PARMESTOQUE
Diversas procedures fazem SELECT/JOIN em PARMESTOQUE sem citar o campo CD_OPERESTORNOSAI literalmente. Não foi encontrada referência direta ao campo além das rotinas listadas acima.
Comportamento no script GERA_ORDEMPRODUCAO
O script GERA_ORDEMPRODUCAO é o principal consumidor deste parâmetro:
- Leitura: Ao iniciar, o script lê
CD_OPERESTORNOSAIda tabelaPARMESTOQUEpara a empresa informada (linha 114). - Aplicação: Se o tipo da Ordem de Produção for Estorno (
TP_ORDEMPRODUCAO = 'E'), a variávelV_CD_OPERACAOrecebe o valor deCD_OPERESTORNOSAI, substituindo a operação de saída padrão (CD_OPERPRODSAI). - Efeito: A movimentação de estoque gerada pela confirmação da ordem utiliza esta operação de estorno em vez da operação de saída normal, produzindo um lançamento reverso.
Exceção / Importante: No script
GERA_ORDEMPRODUCAO.sql(linhas 113–120), observa-se que as variáveisV_CD_OPERESTORNOSAIeV_CD_OPERESTORNOENTestão invertidas na cláusulaINTOem relação aoSELECT. Ou seja, o valor deCD_OPERESTORNOENTdo banco é atribuído aV_CD_OPERESTORNOSAIe vice-versa. Isso significa que, na prática, quando o código verificaV_CD_OPERESTORNOSAInas linhas 347 e 856, ele está utilizando o valor deCD_OPERESTORNOENT. Este comportamento deve ser considerado ao analisar o impacto real do parâmetro na geração de Ordens de Produção.