CD_EMPRESTOQUE — Empresa Global de Estoque
Tela de configuração: MEQ001 — Parâmetros de Estoque Localização: Aba &Estoque Tabela:
PARMESTOQUE.CD_EMPRESTOQUETipo:DOM_INTEGER(inteiro, editável) Valor padrão:NULL(sem empresa global — cada empresa usa seu próprio estoque)
Resumo
Define uma empresa centralizadora de estoque para a empresa do parâmetro. Quando preenchido, todas as operações de estoque (movimentações, saldos, consultas) da empresa atual são redirecionadas para a empresa informada neste campo.
O mecanismo funciona via padrão SQL recorrente:
COALESCE(PARMESTOQUE.CD_EMPRESTOQUE, PARMESTOQUE.CD_EMPRESA)
Se CD_EMPRESTOQUE for NULL, o sistema utiliza a própria CD_EMPRESA (comportamento padrão sem centralização).
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
CD_EMPRESTOQUE | PARMESTOQUE | Código da empresa que centraliza o estoque |
CD_EMPRESA | PARMESTOQUE | Empresa do parâmetro (chave primária) |
NM_EMPRESTOQUE | PARMESTOQUE | Nome da empresa selecionada (preenchido automaticamente) |
Opções disponíveis
Este campo não possui lista fixa de opções. Aceita qualquer código de empresa válido cadastrado em EMPRESA (ADM002) ou ficar vazio (NULL).
Vazio (NULL) — Estoque Próprio (Padrão)
| O que faz | Detalhe |
|---|---|
| Cada empresa gerencia seu próprio estoque | COALESCE(NULL, CD_EMPRESA) → usa a própria empresa |
Simulação passo a passo
- Acesse MEQ001 — Parâmetros de Estoque.
- Localize o campo Empresa Global na aba &Estoque.
- Certifique-se de que o campo esteja vazio (sem código informado).
- Salve o registro.
- Gere uma movimentação de estoque (ex.: entrada de nota fiscal ou requisição).
- Acesse o saldo de estoque da empresa.
Resultado esperado: A movimentação e o saldo ficam registrados na própria empresa do parâmetro. Se a empresa for a 1, o estoque fica na empresa 1.
Excecao / Importante: Este é o comportamento default. Quando o campo está vazio, todas as procedures usam
CD_EMPRESAcomo fallback automaticamente.
Código de Empresa — Estoque Centralizado
| O que faz | Detalhe |
|---|---|
| Redireciona estoque para outra empresa | Exige código válido em EMPRESA |
| Validação automática | Sistema busca CD_EMPRESA + NM_EMPRESA em EMPRESA |
| Erro se empresa inexistente | Mensagem: "A Empresa não está Cadastrada [ADM002]!" |
Simulação passo a passo
- Acesse MEQ001 — Parâmetros de Estoque.
- Localize o campo Empresa Global na aba &Estoque.
- Digite o código de outra empresa (ex.:
2) ou pressione<F9>para pesquisar. - Na pesquisa, selecione a empresa desejada e confirme.
- O campo Nome da Empresa será preenchido automaticamente.
- Salve o registro.
- Gere uma movimentação de estoque para esta empresa.
- Consulte o saldo de estoque.
Resultado esperado: A movimentação é registrada na empresa 2 (a empresa global), mesmo que a operação tenha origem na empresa 1. O saldo é consolidado na empresa 2.
Excecao / Importante: Se múltiplas empresas apontarem para a mesma empresa global, todas compartilham o mesmo estoque. Isso é o comportamento esperado para filiais que centralizam estoque em um depósito único.
Telas impactadas
| Tela | Efeito |
|---|---|
| MEQ001 | Configuração do parâmetro |
| MEQ002 (Baixa de Estoque) | Consulta saldo usando COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
| MEQ007 (Ajuste de Estoque) | Consulta saldo usando COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
| MEQ035 (Inventário) | Consulta saldo usando COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
| MEQ066 (Processamento de OP) | Gera estoque na empresa global quando configurado |
| MEQ070 (Perda/Transferência) | Gera estoque e cancela usando empresa global |
| CNF005 (Conferência de Notas) | Filtra movimentações pela empresa global |
| CNF010 (Média de Vendas) | Consulta CD_EMPRESTOQUE para cálculo de média |
| MNF001 (Frete NF) | Consulta empresa global para operações de frete |
| MNF035 (Conferência de Itens) | Cancela estoque usando empresa global |
| MOF001 (Ordens de Produção) | Gera estoque na empresa global |
| MCO006/MCO008 (Consultas) | Filtra itens por empresa global |
| CPD002 (Reabertura) | Filtra movimentações por empresa global |
| MPD023/MPD043/MPD044/MPD069 (Pedidos) | Consultas e exclusões usam empresa global |
| MTR005 (Acerto Equipamentos) | Relaciona movimento com empresa global |
Regra Geral
O campo segue o padrão COALESCE em todo o sistema:
COALESCE(PARMESTOQUE.CD_EMPRESTOQUE, PARMESTOQUE.CD_EMPRESA)
- Preenchido → usa o código informado como empresa de estoque.
- Vazio (
NULL) → usa a própriaCD_EMPRESA.
Não há validação de autorização específica para este campo. Qualquer usuário com acesso à tela MEQ001 pode alterá-lo.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Comportamento |
|---|---|---|
TdmMEQ001.tabPARMESTOQUECD_EMPRESTOQUEValidate | UMEQ001.pas | Valida se empresa existe em EMPRESA; preenche NM_EMPRESTOQUE; lança exceção se inexistente |
TfrmMEQ001.edtCD_EMPRESTOQUEKeyDown | UMEQ001.pas | Habilita pesquisa com <F9> na tabela EMPRESA |
TfrmMEQ002.btnSalvarClick | UMEQ002.pas | Usa COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) para consultar saldo |
TfrmMEQ007.btnSalvarClick | UMEQ007.pas | Usa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) para consultar saldo |
TfrmMEQ035.btnSalvarClick | UMEQ035.pas | Usa COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) para consultar saldo |
TfrmMEQ066.geraEstoqueItemProcessado | UMEQ066.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de gerar estoque |
TfrmMEQ066.InsereProcessadoTransferencia | UMEQ066.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de inserir transferência |
TfrmMEQ066.IncluiProduto | UMEQ066.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de incluir produto |
TfrmMEQ066.IncluiAcabado | UMEQ066.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de incluir acabado |
TfrmMEQ070.geraEstoquePerdaTransf | UMEQ070.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de gerar estoque de perda |
TfrmMEQ070.cancelaEstoquePerdaTransf | UMEQ070.pas | Usa COALESCE(I.CD_EMPRESTOQUE, I.CD_EMPRESA) para cancelar |
TfrmMEQ070.TransfereItemEtapa | UMEQ070.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de transferir |
TfrmMEQ070.TransferePerdaParaParcial | UMEQ070.pas | Verifica se CD_EMPRESTOQUE está preenchido antes de transferir perda |
TfrmCNF005.btnProcurarClick | UCNF005.pas | Filtra por COALESCE(PME.CD_EMPRESTOQUE, N.CD_EMPRESA) |
TfrmCNF005.montaConsultaNotasVenda | UCNF005.pas | Filtra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
TfrmCNF010.sqlMediaVendasCalcFields | UCNF010.pas | Consulta CD_EMPRESTOQUE diretamente |
TfrmCPD002.btnReaberturaClick | UCPD002.pas | Join com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
TdmMCO006.montaSQL | UdmMCO006.pas | Join com COALESCE(PEQ.CD_EMPRESTOQUE, PEQ.CD_EMPRESA) |
TdmMCO008.montaSQL | UdmMCO008.pas | Join com COALESCE(PEQ.CD_EMPRESTOQUE, PEQ.CD_EMPRESA) |
TfrmFRETENF.btnOKClick | UFRETENF.pas | Consulta COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
TfrmMNF035.btnExcluirClick | UMNF035.pas | Passa CD_EMPRESTOQUE para CANCELA_ESTOQUE |
TfrmMNF035.btnFinalizarConferenciaClick | UMNF035.pas | Consulta PM.CD_EMPRESTOQUE |
GeraEstoque (MOF001) | UMOF001.pas | Consulta COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
TfrmMPD023.btnProcurarClick | UMPD023.pas | Usa COALESCE(PM.CD_EMPRESTOQUE, IP.CD_EMPRESA) |
TfrmMPD043.btnGerarPedidoClick | UMPD043.pas | Verifica se CD_EMPRESTOQUE está preenchido |
TfrmMPD044.btnExcluirClick | UMPD044.pas | Join com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
TfrmMPD069.btnExcluirClick | UMPD069.pas | Join com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) |
TfrmAcerto.btnOKClick | UFechamento.pas | Join com ME.CD_EMPRESA = MV.CD_EMPRESTOQUE |
Scripts SQL com referência direta ao campo
| Procedure/View | Arquivo | Comportamento |
|---|---|---|
GERA_ESTOQUE | GERA_ESTOQUE.sql | Lê CD_EMPRESTOQUE dos parâmetros para gerar movimentação |
GERA_ESTOQUE_NOTAFISCAL | GERA_ESTOQUE_NOTAFISCAL.sql | Lê CD_EMPRESTOQUE para gerar estoque de nota fiscal |
GERA_NOTAFISCALESTOQUE | GERA_NOTAFISCALESTOQUE.sql | Lê CD_EMPRESTOQUE para gerar nota fiscal de estoque |
CANCELA_NOTAFISCAL | CANCELA_NOTAFISCAL.sql | Passa CD_EMPRESTOQUE para CANCELA_ESTOQUE |
CONFIRMA_ORDEMSERVICO | CONFIRMA_ORDEMSERVICO.sql | Lê CD_EMPRESTOQUE; se nulo, usa CD_EMPRESA; passa para GERA_ORDEMPRODUCAO |
CONFIRMA_ORDEMSERVICOMETAL | CONFIRMA_ORDEMSERVICOMETAL.sql | Mesmo padrão de CONFIRMA_ORDEMSERVICO |
ATUALIZA_CONSUMOMEDIO | ATUALIZA_CONSUMOMEDIO.sql | Usa COALESCE(PEQO.CD_EMPRESTOQUE, PEQO.CD_EMPRESA) para calcular consumo |
GRAVA_AVISOS | GRAVA_AVISOS.sql | Join com COALESCE(PARMESTOQUE.CD_EMPRESTOQUE, PARMESTOQUE.CD_EMPRESA) |
POPULA_ITEMFRETENOTA | POPULA_ITEMFRETENOTA.sql | Declara e usa V_CD_EMPRESTOQUE |
PROCESSA_ETIQUETA | PROCESSA_ETIQUETA.sql | Insere CD_EMPRESTOQUE em registros de produção |
PRODUCAO_RESTAURANTE | PRODUCAO_RESTAURANTE.sql | Declara e usa V_CD_EMPRESTOQUE |
RECALCULA_ESTOQUEDIA | RECALCULA_ESTOQUEDIA.sql | Declara e usa I_CD_EMPRESTOQUE |
RETORNA_ANALISEMENORQTD | RETORNA_ANALISEMENORQTD.sql | Usa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
RETORNA_ESTATISTICAITEM | RETORNA_ESTATISTICAITEM.sql | Consulta ps.CD_EMPRESTOQUE |
RETORNA_ESTOQUECOMPEMPRESA | RETORNA_ESTOQUECOMPEMPRESA.sql | Verifica IIF(PE.CD_EMPRESTOQUE <> PE.CD_EMPRESA, 'N','S') para identificar estoque compartilhado |
RETORNA_ESTOQUECOMPROMETGRADE | RETORNA_ESTOQUECOMPROMETGRADE.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_ESTOQUECOMPROMETIDO | RETORNA_ESTOQUECOMPROMETIDO.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_ESTOQUECOMPROMETLOCAL | RETORNA_ESTOQUECOMPROMETLOCAL.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_ITEMESTOQUECOMPROMETIDO | RETORNA_ITEMESTOQUECOMPROMETIDO.sql | Join com COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
RETORNA_ITENSOP | RETORNA_ITENSOP.sql | Usa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
RETORNA_QTDECOMPROMETIDA | RETORNA_QTDECOMPROMETIDA.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_QTDEESTOQUEGRADE | RETORNA_QTDEESTOQUEGRADE.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_SALDO_LOCACAO | RETORNA_SALDO_LOCACAO.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_SALDOCOMPROMETLOCAL | RETORNA_SALDOCOMPROMETLOCAL.sql | Filtra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
RETORNA_SALDOESTOQUE | RETORNA_SALDOESTOQUE.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_SALDOESTOQUE_IMPOSTO | RETORNA_SALDOESTOQUE_IMPOSTO.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_SALDOESTOQUEGRADE | RETORNA_SALDOESTOQUEGRADE.sql | Declara e usa V_CD_EMPRESTOQUE |
RETORNA_SALDOPRODUTOPEDIDO | RETORNA_SALDOPRODUTOPEDIDO.sql | Filtra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) |
VIEW_REQ012 | VIEW_REQ012.sql | Declara e usa V_CD_EMPRESTOQUE |
Candidatas por uso da tabela (sem referência direta ao campo)
As procedures abaixo acessam a tabela PARMESTOQUE mas não citam o campo CD_EMPRESTOQUE literalmente no código analisado. Podem ser impactadas indiretamente caso o campo seja alterado e afete o COALESCE em joins ou filtros downstream.
<details> <summary>Ver lista completa (20 procedures)</summary>
AJUSTA_ORDEMPRODPEDANTECIPADO, ALTERACAO_BANDA, ATUALIZA_ESTOQUEDIAPESSOA, CALCULA_FORMACAOPRECOVENDA, CANCELA_ESTOQUE, GERA_ESTOQUEPSALT, GERA_ORDEMPRODUCAO, GERA_PRODENVELOPAMENTO, GERA_PRODLOTEPRODUCAO, GERA_PRODMONTAGEMRECAP, GERA_PRODVULCANIZACAO, GERA_SPEDBLOCOL, GERA_SPEDECFBLOCOL, MONTA_ORDEMPRODITEMPEDIDOGRADE, MONTA_ORDEMPRODUCAOPEDIDO, MONTA_ORDEMPRODUCAOSERVICO, RECALCULA_ESTOQUE, RETORNA_ANALISEPRODUCAO, RETORNA_CUSTOITEMFORMPRECOVENDA, RETORNA_CUSTOMPFORMPRECOVENDA
</details>
Tabela Comparativa Resumida
| Cenário | CD_EMPRESTOQUE | Empresa usada no estoque | Efeito |
|---|---|---|---|
| Cada empresa com estoque próprio | NULL | Própria CD_EMPRESA | Estoque isolado por empresa |
| Estoque centralizado | Código válido (ex.: 2) | Empresa informada | Múltiplas empresas compartilham estoque de uma empresa |
| Empresa inexistente | Código inválido | — | Erro: "A Empresa não está Cadastrada [ADM002]!" |