Pular para o conteúdo principal

MEQ008 — Transferência de Local (enriquecimento)

Menu: Estoque > Movimentações > Transferência de Local

Objetivo​

A tela Transferência de Local movimenta um produto entre dois locais de armazenagem no estoque, registrando automaticamente um lançamento de saída no local de origem e um de entrada no local de destino via GERA_ESTOQUE. Suporta produtos simples, com controle de lote/semente (rateio automático de lotes) e com grade (rateio por item de grade), e permite transferência entre empresas diferentes quando o parâmetro ST_TRANSFEMPRESAS está habilitado em Parâmetros de Estoque (MEQ001).

Fluxo principal​

  1. Ao abrir a tela, o sistema já inicia um novo registro automaticamente (equivalente a clicar em Novo). (Transferência de Local) — source/MEQ008/UMEQ008.pas:180-180 (iniciar)
  2. Informa ou pesquisa (F9) o Produto a transferir; o sistema valida se está ativo, se não controla serial e carrega unidade/lote/grade. (Transferência de Local) — source/MEQ008/UdmMEQ008.pas:163-200 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)
  3. Informa a Quantidade a transferir (campo travado quando o produto tem grade, pois é definida pelo rateio). (Transferência de Local) — source/MEQ008/UMEQ008.pas:289-290 (TfrmMEQ008.btnSalvarClick)
  4. Informa/pesquisa (F9) Tipo de Local e Local de Saída (origem), dentro da empresa de origem. (Transferência de Local) — source/MEQ008/UMEQ008.pas:735-747 (TfrmMEQ008.edtCD_TIPOLOCALKeyDown)
  5. Se o parâmetro ST_TRANSFEMPRESAS estiver habilitado, informa/pesquisa a Empresa Destino; senão o sistema já usa a empresa da sessão. (Transferência de Local) — source/MEQ008/UMEQ008.pas:640-679 (TfrmMEQ008.btnNovoClick)
  6. Informa/pesquisa Tipo de Local e Local de Entrada (destino). (Transferência de Local) — source/MEQ008/UdmMEQ008.pas:274-302 (TdmMEQ008.tabMOVESTOQUECD_LOCALENTValidate)
  7. Informa o Histórico de Saída (e Entrada, quando aplicável), que deve estar ativo e ser do tipo Estoque. (Transferência de Local) — source/MEQ008/UdmMEQ008.pas:392-413 (TdmMEQ008.tabMOVESTOQUECD_HISTSAIValidate)
  8. Clica em Salvar (F6); o sistema confere campos obrigatórios e gera o movimento de saída e de entrada em GERA_ESTOQUE, exibindo mensagem de sucesso. (Transferência de Local) — source/MEQ008/UMEQ008.pas:613-620 (TfrmMEQ008.btnSalvarClick)

Campos obrigatórios​

CampoCondiçãoMensagemFonte
Produto (CD_ITEM)sempre obrigatório para salvarO Produto deve ser Informado!source/MEQ008/UMEQ008.pas:287-288 (TfrmMEQ008.btnSalvarClick)
Quantidade (QT_ESTOQUE)deve ser maior que zeroA Quantidade deve ser maior que Zero!source/MEQ008/UMEQ008.pas:289-290 (TfrmMEQ008.btnSalvarClick)
Tipo de Local de Saída (CD_TIPOLOCAL)sempre obrigatórioO Tipo de Local de Saída deve ser Informado!source/MEQ008/UMEQ008.pas:292-293 (TfrmMEQ008.btnSalvarClick)
Local de Saída (CD_LOCAL)sempre obrigatórioO Local de Saída deve ser Informado!source/MEQ008/UMEQ008.pas:294-295 (TfrmMEQ008.btnSalvarClick)
Tipo de Local de Entrada (CD_TIPOLOCALENT)sempre obrigatórioO Tipo de Local de Entrada deve ser Informado!source/MEQ008/UMEQ008.pas:297-298 (TfrmMEQ008.btnSalvarClick)
Local de Entrada (CD_LOCALENT)sempre obrigatórioO Local de Entrada deve ser Informado!source/MEQ008/UMEQ008.pas:299-300 (TfrmMEQ008.btnSalvarClick)
Empresa Origem / Empresa Destinopreenchidas automaticamente com a empresa da sessão quando ST_TRANSFEMPRESAS='N'; editáveis e obrigatórias para validar locais quando ='S'source/MEQ008/UMEQ008.pas:640-654 (TfrmMEQ008.btnNovoClick)

Mensagens: causa e ação​

A Quantidade deve ser maior que Zero!​

Causa: O campo Quantidade está vazio, zero ou negativo ao tentar salvar.

Ação: Informe uma quantidade maior que zero antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:289-290 (TfrmMEQ008.btnSalvarClick)

O Código da Empresa não está Cadastrada [ADM002]!​

Causa: O código de empresa (origem ou destino) informado não existe na tabela de Empresas.

Ação: Verifique o cadastro de empresas em ADM002 ou corrija o código informado.

Fonte: source/MEQ008/UdmMEQ008.pas:336-344 (TdmMEQ008.tabMOVESTOQUECD_EMPRESAORValidate)

O Histórico deve ser do Tipo Estoque [TCB003]!​

Causa: O histórico selecionado tem tipo diferente de 'Estoque' no cadastro.

Ação: Selecione ou cadastre um histórico do tipo Estoque em TCB003.

Fonte: source/MEQ008/UdmMEQ008.pas:404-405 (TdmMEQ008.tabMOVESTOQUECD_HISTSAIValidate)

O Histórico não está Ativo [TCB003]!​

Causa: O histórico informado está inativo no cadastro TCB003.

Ação: Ative o histórico em TCB003 ou escolha outro.

Fonte: source/MEQ008/UdmMEQ008.pas:402-403 (TdmMEQ008.tabMOVESTOQUECD_HISTSAIValidate)

O Histórico não está Cadastrado [TCB003]!​

Causa: O código de histórico digitado não existe na tabela HISTORICO.

Ação: Cadastre o histórico em TCB003 ou use F9 para escolher um existente.

Fonte: source/MEQ008/UdmMEQ008.pas:408-409 (TdmMEQ008.tabMOVESTOQUECD_HISTSAIValidate)

O Local de Entrada deve ser Informado!​

Causa: O campo Local de Entrada (destino) está vazio ao salvar.

Ação: Informe o local de entrada antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:299-300 (TfrmMEQ008.btnSalvarClick)

O Local de Saída deve ser Diferente do Local de Entrada. Verifique!​

Causa: Tipo de local e local de saída são iguais ao tipo de local e local de entrada, dentro da mesma empresa.

Ação: Escolha um local de destino diferente do de origem, ou informe uma empresa de destino diferente (se ST_TRANSFEMPRESAS habilitado).

Fonte: source/MEQ008/UMEQ008.pas:302-306 (TfrmMEQ008.btnSalvarClick)

O Local de Saída deve ser Informado!​

Causa: O campo Local de Saída (origem) está vazio ao salvar.

Ação: Informe o local de saída antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:294-295 (TfrmMEQ008.btnSalvarClick)

O Produto %s não está Associado ao Tipo de Local e Local [TPO001] ou o Usuário (%s) não possui acesso ao Local informado [ADM001].​

Causa: O produto não está vinculado a esse tipo de local/local no cadastro, ou o usuário logado não tem acesso liberado a esse local.

Ação: Verifique o vínculo do produto ao local em TPO001, ou libere o acesso do usuário ao local em ADM001.

Fonte: source/MEQ008/UdmMEQ008.pas:118-127 (TdmMEQ008.tabMOVESTOQUECD_TIPOLOCALValidate)

O Produto [%s] possui controle de serial [TPO001]. Não é possível fazer lançamento avulso de estoque para produtos que controlam Serial. Verifique! [MNF001]​

Causa: O produto está configurado com controle de série no cadastro.

Ação: Use um processo específico para produtos serializados; este módulo não trata transferência avulsa de itens com serial.

Fonte: source/MEQ008/UdmMEQ008.pas:182-184 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)

O Produto deve ser Informado!​

Causa: O campo Produto está vazio ao tentar salvar.

Ação: Informe o produto antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:287-288 (TfrmMEQ008.btnSalvarClick)

O Produto não está Ativo [TPO001]!​

Causa: O produto informado está inativo no cadastro.

Ação: Ative o produto no cadastro (TPO001) ou escolha outro produto.

Fonte: source/MEQ008/UdmMEQ008.pas:179-180 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)

O Produto não está Cadastrado [TPO001]!​

Causa: O código de produto digitado não existe na tabela ITEM.

Ação: Cadastre o produto ou use F9 para pesquisar um produto existente.

Fonte: source/MEQ008/UdmMEQ008.pas:262-263 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)

O Tipo de Local de Entrada deve ser Informado!​

Causa: O campo Tipo de Local de Entrada está vazio ao salvar.

Ação: Informe o tipo de local de entrada antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:297-298 (TfrmMEQ008.btnSalvarClick)

O Tipo de Local de Saída deve ser Informado!​

Causa: O campo Tipo de Local de Saída está vazio ao salvar.

Ação: Informe o tipo de local de saída antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:292-293 (TfrmMEQ008.btnSalvarClick)

Produto não Cadastrado [TPO001]!​

Causa: O código de barras lido não corresponde a nenhum produto retornado por VALIDA_CODIGOBARRA.

Ação: Verifique se o código de barras está corretamente cadastrado no produto em TPO001.

Fonte: source/MEQ008/UdmMEQ008.pas:380-381 (TdmMEQ008.tabMOVESTOQUECD_CODIGOBARRAValidate)

Rateio da Grade do Produto Cancelado!​

Causa: O usuário fechou ou cancelou a tela de rateio de grade sem concluir a divisão das quantidades por item da grade.

Ação: Informe o produto novamente e conclua o rateio da grade, informando as quantidades por item.

Fonte: source/MEQ008/UdmMEQ008.pas:248-249 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)

Rateio de Lotes Cancelado!​

Causa: O usuário cancelou a tela de rateio de lotes/sementes ao tentar salvar a transferência.

Ação: Refaça a transferência e conclua o rateio de lotes antes de salvar.

Fonte: source/MEQ008/UMEQ008.pas:325-326 (TfrmMEQ008.btnSalvarClick)

É Obrigatório informar a Empresa Destino para validar os Tipos de Locais de Armazenagem!​

Causa: O usuário tentou informar o tipo de local/local de entrada sem preencher a Empresa Destino.

Ação: Informe a Empresa Destino antes do tipo de local/local de entrada.

Fonte: source/MEQ008/UdmMEQ008.pas:283-284 (TdmMEQ008.tabMOVESTOQUECD_LOCALENTValidate)

É Obrigatório informar a Empresa Origem para validar os Tipos de Locais de Armazenagem!​

Causa: O usuário tentou informar o tipo de local/local de saída sem preencher a Empresa Origem.

Ação: Informe a Empresa Origem antes do tipo de local/local de saída.

Fonte: source/MEQ008/UdmMEQ008.pas:115-116 (TdmMEQ008.tabMOVESTOQUECD_TIPOLOCALValidate)

É Obrigatório informar Empresa Origem/Destino para Utilizar a Lista dos Locais de Armazenagem!​

Causa: O usuário pressionou F9 para listar tipos de local sem antes informar a empresa correspondente.

Ação: Informe a empresa de origem ou destino antes de usar a lista (F9).

Fonte: source/MEQ008/UMEQ008.pas:192-193 (Lista_TipoLocal)

É Obrigatório informar o Produto para a Validação do Local de Armazenagem!​

Causa: O usuário tentou informar/validar o Local sem o Produto preenchido.

Ação: Informe o produto antes do local.

Fonte: source/MEQ008/UdmMEQ008.pas:140-141 (TdmMEQ008.tabMOVESTOQUECD_LOCALValidate)

É Obrigatório informar o Produto para a Validação do Tipo de Local de Armazenagem!​

Causa: O usuário tentou informar/validar o Tipo de Local sem o Produto preenchido.

Ação: Informe o produto antes do tipo de local.

Fonte: source/MEQ008/UdmMEQ008.pas:113-114 (TdmMEQ008.tabMOVESTOQUECD_TIPOLOCALValidate)

É Obrigatório informar o Produto para Utilizar a Lista dos Tipos de Locais de Armazenagem!​

Causa: O usuário pressionou F9 na lista de tipo de local sem o produto informado.

Ação: Informe o produto antes de usar a lista (F9).

Fonte: source/MEQ008/UMEQ008.pas:190-191 (Lista_TipoLocal)

É Obrigatório informar o Tipo de Local para a Validação do Local de Armazenagem!​

Causa: O usuário tentou informar o Local sem o Tipo de Local preenchido antes.

Ação: Informe o tipo de local antes do local.

Fonte: source/MEQ008/UdmMEQ008.pas:144-145 (TdmMEQ008.tabMOVESTOQUECD_LOCALValidate)

É Obrigatório informar o Tipo de Local para Utilizar a Lista dos Locais de Armazenagem!​

Causa: O usuário pressionou F9 na lista de locais sem o tipo de local selecionado.

Ação: Informe o tipo de local antes de usar a lista (F9) de locais.

Fonte: source/MEQ008/UMEQ008.pas:223-224 (Lista_Local)

Regras de negócio​

  • MEQ008.R001 (ver regras/MEQ008/MEQ008.R001.md)
  • MEQ008.R002 (ver regras/MEQ008/MEQ008.R002.md)
  • MEQ008.R003 (ver regras/MEQ008/MEQ008.R003.md)
  • MEQ008.R004 (ver regras/MEQ008/MEQ008.R004.md)
  • MEQ008.R005 (ver regras/MEQ008/MEQ008.R005.md)
  • MEQ008.R006 (ver regras/MEQ008/MEQ008.R006.md)
  • MEQ008.R007 (ver regras/MEQ008/MEQ008.R007.md)
  • MEQ008.R008 (ver regras/MEQ008/MEQ008.R008.md)
  • MEQ008.R009 (ver regras/MEQ008/MEQ008.R009.md)
  • MEQ008.R010 (ver regras/MEQ008/MEQ008.R010.md)
  • MEQ008.R011 (ver regras/MEQ008/MEQ008.R011.md)
  • MEQ008.R012 (ver regras/MEQ008/MEQ008.R012.md)
  • MEQ008.R013 (ver regras/MEQ008/MEQ008.R013.md)
  • MEQ008.R014 (ver regras/MEQ008/MEQ008.R014.md)
  • MEQ008.R015 (ver regras/MEQ008/MEQ008.R015.md)
  • MEQ008.R016 (ver regras/MEQ008/MEQ008.R016.md)
  • MEQ008.R017 (ver regras/MEQ008/MEQ008.R017.md)
  • MEQ008.R018 (ver regras/MEQ008/MEQ008.R018.md)
  • MEQ008.R019 (ver regras/MEQ008/MEQ008.R019.md)

Perguntas frequentes​

P: Por que não consigo salvar a transferência mesmo preenchendo o produto? R: Além do produto, é preciso informar quantidade maior que zero, tipo de local e local de saída, e tipo de local e local de entrada; qualquer um vazio impede salvar. Fonte: source/MEQ008/UMEQ008.pas:287-300 (TfrmMEQ008.btnSalvarClick)

P: Por que aparece 'O Local de Saída deve ser Diferente do Local de Entrada'? R: O sistema não permite transferência para o mesmo tipo de local/local dentro da mesma empresa; escolha um local de destino diferente. Fonte: source/MEQ008/UMEQ008.pas:302-306 (TfrmMEQ008.btnSalvarClick)

P: Por que o sistema diz que o produto não está associado ao Tipo de Local/Local mesmo o local existindo? R: Pode ser falta de vínculo do produto a esse local no cadastro (TPO001) ou o usuário logado não ter acesso liberado a esse local (ADM001); verifique as duas hipóteses. Fonte: source/MEQ008/UdmMEQ008.pas:118-127 (TdmMEQ008.tabMOVESTOQUECD_TIPOLOCALValidate)

P: Por que não consigo transferir para outra empresa/filial? R: A transferência entre empresas só é permitida se o parâmetro ST_TRANSFEMPRESAS estiver habilitado em Parâmetros de Estoque (MEQ001); caso contrário os campos de empresa e histórico de entrada ficam bloqueados na empresa da sessão. Fonte: source/MEQ008/UMEQ008.pas:640-679 (TfrmMEQ008.btnNovoClick)

P: Por que os campos de Empresa e Histórico de Entrada aparecem cinza/bloqueados? R: Porque o parâmetro ST_TRANSFEMPRESAS está desabilitado (N) para a empresa; nesse caso a transferência é sempre dentro da mesma empresa. Fonte: source/MEQ008/UMEQ008.pas:640-659 (TfrmMEQ008.btnNovoClick)

P: Por que recebo mensagem dizendo que o produto controla serial e não consigo lançar a transferência? R: O módulo de Transferência de Local não trata produtos com controle de série (serial); esse tipo de produto exige outro processo de movimentação. Fonte: source/MEQ008/UdmMEQ008.pas:182-184 (TdmMEQ008.tabMOVESTOQUECD_ITEMValidate)

P: Por que abre uma tela pedindo para dividir a quantidade entre lotes? R: O produto informado controla lote/semente (ST_SEMENTE = S ou P) e o sistema exige o rateio automático da quantidade entre os lotes disponíveis antes de salvar. Fonte: source/MEQ008/UMEQ008.pas:313-326 (TfrmMEQ008.btnSalvarClick)

P: Por que a leitura do código de barras não encontra o produto? R: A procedure VALIDA_CODIGOBARRA não localizou nenhum item para esse código; confira se o código de barras está cadastrado corretamente no produto (TPO001). Fonte: source/MEQ008/UdmMEQ008.pas:372-381 (TdmMEQ008.tabMOVESTOQUECD_CODIGOBARRAValidate)

P: Por que a transferência não sai quando o local de origem fica com saldo negativo? R: Se o local de armazenagem não permite saldo negativo, a procedure GERA_ESTOQUE recusa o movimento de saída quando a quantidade deixaria o saldo negativo na data do lançamento. Fonte: Scripts/GERA_ESTOQUE.sql:425-444 (GERA_ESTOQUE)

P: Onde configuro a operação de estoque usada na Transferência de Local? R: Nos Parâmetros de Estoque (MEQ001), campos CD_TRANSFSAI (operação de saída) e CD_TRANSFENT (operação de entrada); sem isso o módulo bloqueia os botões Novo/Salvar. Fonte: source/MEQ008/UdmMEQ008.pas:89-104 (Busca_Parametros)

P: Por que aparece 'Os Parâmetros do Estoque para a Empresa ... não estão Cadastrados [MEQ001]!' e a tela abre travada? R: Não existe registro de PARMESTOQUE para a empresa da sessão; cadastre os parâmetros de estoque da empresa em MEQ001 antes de usar a transferência. Fonte: source/MEQ008/UdmMEQ008.pas:100-103 (Busca_Parametros), source/MEQ008/UMEQ008.pas:154-161 (iniciar)

Dúvidas em aberto (o código não responde)​

  • Onde é verificada a licença erpEstoque exigida para acessar o módulo? — O briefing informa a licença exigida, mas essa verificação não aparece no código lido de UMEQ008.pas/UdmMEQ008.pas — provavelmente é feita fora do módulo, no carregamento do menu.
  • O campo Histórico de Saída (CD_HISTSAI) é realmente obrigatório para salvar? — Não há checagem explícita de CD_HISTSAI vazio em TfrmMEQ008.btnSalvarClick; não está claro se GERA_ESTOQUE aceita histórico nulo ou gera erro de banco.
  • Quais critérios exatos o rateio de lotes (RateioLoteProducao) e o rateio de grade (RateioGrade) usam para distribuir a quantidade? — Essas rotinas estão nas units jLote/jGrade, não lidas nesta sessão; só se sabe que cancelamento pelo usuário aborta a operação.
  • O que exatamente VALIDA_CODIGOBARRA faz quando o código corresponde a uma caixa/embalagem (múltiplos itens)? — O código só foi inspecionado parcialmente (grep); o corpo completo da lógica de código de barras por caixa não foi lido.