Pular para o conteúdo principal

CD_EMPRESTOQUE — Empresa Global de Estoque

Tela de configuração: MEQ001 — Parâmetros de Estoque Localização: Aba &Estoque Tabela: PARMESTOQUE.CD_EMPRESTOQUE Tipo: 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​

CampoTabelaDescrição
CD_EMPRESTOQUEPARMESTOQUECódigo da empresa que centraliza o estoque
CD_EMPRESAPARMESTOQUEEmpresa do parâmetro (chave primária)
NM_EMPRESTOQUEPARMESTOQUENome 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 fazDetalhe
Cada empresa gerencia seu próprio estoqueCOALESCE(NULL, CD_EMPRESA) → usa a própria empresa

Simulação passo a passo​

  1. Acesse MEQ001 — Parâmetros de Estoque.
  2. Localize o campo Empresa Global na aba &Estoque.
  3. Certifique-se de que o campo esteja vazio (sem código informado).
  4. Salve o registro.
  5. Gere uma movimentação de estoque (ex.: entrada de nota fiscal ou requisição).
  6. 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_EMPRESA como fallback automaticamente.

Código de Empresa — Estoque Centralizado​

O que fazDetalhe
Redireciona estoque para outra empresaExige código válido em EMPRESA
Validação automáticaSistema busca CD_EMPRESA + NM_EMPRESA em EMPRESA
Erro se empresa inexistenteMensagem: "A Empresa não está Cadastrada [ADM002]!"

Simulação passo a passo​

  1. Acesse MEQ001 — Parâmetros de Estoque.
  2. Localize o campo Empresa Global na aba &Estoque.
  3. Digite o código de outra empresa (ex.: 2) ou pressione <F9> para pesquisar.
  4. Na pesquisa, selecione a empresa desejada e confirme.
  5. O campo Nome da Empresa será preenchido automaticamente.
  6. Salve o registro.
  7. Gere uma movimentação de estoque para esta empresa.
  8. 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​

TelaEfeito
MEQ001Configuraçã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ópria CD_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​

RotinaArquivoComportamento
TdmMEQ001.tabPARMESTOQUECD_EMPRESTOQUEValidateUMEQ001.pasValida se empresa existe em EMPRESA; preenche NM_EMPRESTOQUE; lança exceção se inexistente
TfrmMEQ001.edtCD_EMPRESTOQUEKeyDownUMEQ001.pasHabilita pesquisa com <F9> na tabela EMPRESA
TfrmMEQ002.btnSalvarClickUMEQ002.pasUsa COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) para consultar saldo
TfrmMEQ007.btnSalvarClickUMEQ007.pasUsa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA) para consultar saldo
TfrmMEQ035.btnSalvarClickUMEQ035.pasUsa COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA) para consultar saldo
TfrmMEQ066.geraEstoqueItemProcessadoUMEQ066.pasVerifica se CD_EMPRESTOQUE está preenchido antes de gerar estoque
TfrmMEQ066.InsereProcessadoTransferenciaUMEQ066.pasVerifica se CD_EMPRESTOQUE está preenchido antes de inserir transferência
TfrmMEQ066.IncluiProdutoUMEQ066.pasVerifica se CD_EMPRESTOQUE está preenchido antes de incluir produto
TfrmMEQ066.IncluiAcabadoUMEQ066.pasVerifica se CD_EMPRESTOQUE está preenchido antes de incluir acabado
TfrmMEQ070.geraEstoquePerdaTransfUMEQ070.pasVerifica se CD_EMPRESTOQUE está preenchido antes de gerar estoque de perda
TfrmMEQ070.cancelaEstoquePerdaTransfUMEQ070.pasUsa COALESCE(I.CD_EMPRESTOQUE, I.CD_EMPRESA) para cancelar
TfrmMEQ070.TransfereItemEtapaUMEQ070.pasVerifica se CD_EMPRESTOQUE está preenchido antes de transferir
TfrmMEQ070.TransferePerdaParaParcialUMEQ070.pasVerifica se CD_EMPRESTOQUE está preenchido antes de transferir perda
TfrmCNF005.btnProcurarClickUCNF005.pasFiltra por COALESCE(PME.CD_EMPRESTOQUE, N.CD_EMPRESA)
TfrmCNF005.montaConsultaNotasVendaUCNF005.pasFiltra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
TfrmCNF010.sqlMediaVendasCalcFieldsUCNF010.pasConsulta CD_EMPRESTOQUE diretamente
TfrmCPD002.btnReaberturaClickUCPD002.pasJoin com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA)
TdmMCO006.montaSQLUdmMCO006.pasJoin com COALESCE(PEQ.CD_EMPRESTOQUE, PEQ.CD_EMPRESA)
TdmMCO008.montaSQLUdmMCO008.pasJoin com COALESCE(PEQ.CD_EMPRESTOQUE, PEQ.CD_EMPRESA)
TfrmFRETENF.btnOKClickUFRETENF.pasConsulta COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
TfrmMNF035.btnExcluirClickUMNF035.pasPassa CD_EMPRESTOQUE para CANCELA_ESTOQUE
TfrmMNF035.btnFinalizarConferenciaClickUMNF035.pasConsulta PM.CD_EMPRESTOQUE
GeraEstoque (MOF001)UMOF001.pasConsulta COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA)
TfrmMPD023.btnProcurarClickUMPD023.pasUsa COALESCE(PM.CD_EMPRESTOQUE, IP.CD_EMPRESA)
TfrmMPD043.btnGerarPedidoClickUMPD043.pasVerifica se CD_EMPRESTOQUE está preenchido
TfrmMPD044.btnExcluirClickUMPD044.pasJoin com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA)
TfrmMPD069.btnExcluirClickUMPD069.pasJoin com COALESCE(P.CD_EMPRESTOQUE, P.CD_EMPRESA)
TfrmAcerto.btnOKClickUFechamento.pasJoin com ME.CD_EMPRESA = MV.CD_EMPRESTOQUE

Scripts SQL com referência direta ao campo​

Procedure/ViewArquivoComportamento
GERA_ESTOQUEGERA_ESTOQUE.sqlLê CD_EMPRESTOQUE dos parâmetros para gerar movimentação
GERA_ESTOQUE_NOTAFISCALGERA_ESTOQUE_NOTAFISCAL.sqlLê CD_EMPRESTOQUE para gerar estoque de nota fiscal
GERA_NOTAFISCALESTOQUEGERA_NOTAFISCALESTOQUE.sqlLê CD_EMPRESTOQUE para gerar nota fiscal de estoque
CANCELA_NOTAFISCALCANCELA_NOTAFISCAL.sqlPassa CD_EMPRESTOQUE para CANCELA_ESTOQUE
CONFIRMA_ORDEMSERVICOCONFIRMA_ORDEMSERVICO.sqlLê CD_EMPRESTOQUE; se nulo, usa CD_EMPRESA; passa para GERA_ORDEMPRODUCAO
CONFIRMA_ORDEMSERVICOMETALCONFIRMA_ORDEMSERVICOMETAL.sqlMesmo padrão de CONFIRMA_ORDEMSERVICO
ATUALIZA_CONSUMOMEDIOATUALIZA_CONSUMOMEDIO.sqlUsa COALESCE(PEQO.CD_EMPRESTOQUE, PEQO.CD_EMPRESA) para calcular consumo
GRAVA_AVISOSGRAVA_AVISOS.sqlJoin com COALESCE(PARMESTOQUE.CD_EMPRESTOQUE, PARMESTOQUE.CD_EMPRESA)
POPULA_ITEMFRETENOTAPOPULA_ITEMFRETENOTA.sqlDeclara e usa V_CD_EMPRESTOQUE
PROCESSA_ETIQUETAPROCESSA_ETIQUETA.sqlInsere CD_EMPRESTOQUE em registros de produção
PRODUCAO_RESTAURANTEPRODUCAO_RESTAURANTE.sqlDeclara e usa V_CD_EMPRESTOQUE
RECALCULA_ESTOQUEDIARECALCULA_ESTOQUEDIA.sqlDeclara e usa I_CD_EMPRESTOQUE
RETORNA_ANALISEMENORQTDRETORNA_ANALISEMENORQTD.sqlUsa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
RETORNA_ESTATISTICAITEMRETORNA_ESTATISTICAITEM.sqlConsulta ps.CD_EMPRESTOQUE
RETORNA_ESTOQUECOMPEMPRESARETORNA_ESTOQUECOMPEMPRESA.sqlVerifica IIF(PE.CD_EMPRESTOQUE <> PE.CD_EMPRESA, 'N','S') para identificar estoque compartilhado
RETORNA_ESTOQUECOMPROMETGRADERETORNA_ESTOQUECOMPROMETGRADE.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_ESTOQUECOMPROMETIDORETORNA_ESTOQUECOMPROMETIDO.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_ESTOQUECOMPROMETLOCALRETORNA_ESTOQUECOMPROMETLOCAL.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_ITEMESTOQUECOMPROMETIDORETORNA_ITEMESTOQUECOMPROMETIDO.sqlJoin com COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
RETORNA_ITENSOPRETORNA_ITENSOP.sqlUsa COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
RETORNA_QTDECOMPROMETIDARETORNA_QTDECOMPROMETIDA.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_QTDEESTOQUEGRADERETORNA_QTDEESTOQUEGRADE.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_SALDO_LOCACAORETORNA_SALDO_LOCACAO.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_SALDOCOMPROMETLOCALRETORNA_SALDOCOMPROMETLOCAL.sqlFiltra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
RETORNA_SALDOESTOQUERETORNA_SALDOESTOQUE.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_SALDOESTOQUE_IMPOSTORETORNA_SALDOESTOQUE_IMPOSTO.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_SALDOESTOQUEGRADERETORNA_SALDOESTOQUEGRADE.sqlDeclara e usa V_CD_EMPRESTOQUE
RETORNA_SALDOPRODUTOPEDIDORETORNA_SALDOPRODUTOPEDIDO.sqlFiltra por COALESCE(PE.CD_EMPRESTOQUE, PE.CD_EMPRESA)
VIEW_REQ012VIEW_REQ012.sqlDeclara 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árioCD_EMPRESTOQUEEmpresa usada no estoqueEfeito
Cada empresa com estoque próprioNULLPrópria CD_EMPRESAEstoque isolado por empresa
Estoque centralizadoCódigo válido (ex.: 2)Empresa informadaMúltiplas empresas compartilham estoque de uma empresa
Empresa inexistenteCódigo inválido—Erro: "A Empresa não está Cadastrada [ADM002]!"