Páginas filhas
  • ER LOGWMS01-716 ME 10 Separação Com Etiqueta BRA

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                            

Informações Gerais

Especificação

Produto

LOGIX

Módulo

WMS

Segmento Executor

Supply Chain

Projeto1

LOGWMS01

IRM1

Jira
serverJIRA Produção
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-545

Requisito1

Jira
serverJIRA Produção
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-716

Subtarefa1

 

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

Não se Aplica

Objetivo

Realizar ajustes nas rotinas de separação para atrelar o palete no processo atual e criar uma nova forma de conferência onde será possível informar o mesmo.

No processo de separação já existente, o palete será a referência de onde o estoque está sendo "colocado", ou seja, o palete físico que está sendo utilizado para movimentar o estoque.

Será criado um novo processo de conferência com coletor com base no processo atual de conferência manual por documento, e incluída a possibilidade de realizar a conferência por palete.

Definição da Regra de Negócio

 Aqui mapa mental utilizado como base

 

Na tabela a seguir serão listadas as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina.

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMS60018

Alteração

Contrato / Expedição - Separação/Conferência

 

WMS60030AlteraçãoFunção de cópia de contrato 
 WMS6770 AlteraçãoAtualização de Registros padrões (inclusão do tipo de processo 315) 
 WMS6167 AlteraçãoFunção para validação de operação (inclusão do tipo de processo 315) 
 WMS6377 AlteraçãoFunção para busca dos processos de expedição (inclusão do tipo de processo 315) 
 WMSR120 AlteraçãoRNL Inventário rotativo (inclusão do tipo de processo 315) 
 WMSR44AlteraçãoCancelamento Expedição (inclusão do tipo de processo 315) 
 WMSR60 AlteraçãoSequencia Atividades Expedição (inclusão do tipo de processo 315) 
 WMSR70 AlteraçãoGeração OS Onda Separação(inclusão do tipo de processo 315) 
 WMSR88 AlteraçãoWizard  (inclusão do tipo de processo 315) 
WMS7001C AlteraçãoWizard (inclusão do tipo de processo 315) 
WMS70006 AlteraçãoWizard (inclusão do tipo de processo 315) 
WMS70007Alteração  Wizard (inclusão do tipo de processo 315) 
WMS70007bAlteração  Wizard (inclusão do tipo de processo 315) 
    

WMS6214

Alteração

Separação coletor

Ajuste para gravar o palete informado

WMSR41AlteraçãoSeparação no pickingAjuste para gravar o palete informado

WMSRXX1

Inclusão

RNL para validar palete informado na separação

 

WMSRXX2InclusãoRNL para validar/realizar processo de conferencia por palete 

1 - Parametrização

1.1 - Ajustes no contrato - WMS60013 - Inclusão de parâmetros no processo de separação e conferência - WMS60018

Serão criados dois parâmetros: 

  • Informa palete destino(inf_palete_destino_separacao - Opções: S ou N): Quando marcado esse parâmetro o palete deverá ser informado em todo movimento de separação. Antes de informar a etiqueta de origem da coleta (pode ser uma identificação de estoque ou uma etiqueta de endereço quando a separação ocorrer em endereço de picking) será obrigatório informar o palete. Ele será gravado diretamente na tabela wms_identif_estoque correspondendo ao palete de cada ID separada. Deverá atender as mesmas regras de uso de palete existentes em outros pontos do sistema.

     

  • Modo conferência palete (modo_conf_palete - Opções: 1,2, 3 ou 34): Ele irá indicar qual a forma de conferência que poderá ser utilizada. As opções são:
    1. Somente pede confirmação: após bipar o palete, envia mensagem para o usuário "Confirma a conferência do palete XXXXXXX como XX SKUs?" já com o campo de resposta como S. Em caso afirmativo, todos os itens do palete serão listados como conferidos. Caso contrário, volta para a tela principal do processo de conferência em questão.
    2.  Informa quantidade total de SKU:
     após
    1.  após bipar o palete, abre tela onde deverá ser informada a quantidade total de SKUs do palete independente do item. Não será permitida informar uma quantidade de caixas diferentes da que compõe o palete. Não será exibida a quantidade esperada em nenhuma tecla, caso seja necessário identificar essa informação deverá ser utilizado o WMS6170(desktop) ou WMS6181(coletor) pesquisando pelo palete. Se o palete possuir algum item que não controla SKU, automaticamente, caso essa opção esteja marcada, será utilizada a opção 3"Informa itens e quantidade".
    2.  Informa itens e quantidade: após bipar o palete, abre uma tela para informar o código do item e na sequencia a quantidade total do mesmo no palete. A cada item será validado essa informação e não poderá ser informado novamente o mesmo código do item. Apenas quando todos os itens do palete forem conferidos é que o estoque do palete será conferido. Caso ocorra uma interrupção ou queda de sinal nesse processo, será necessário iniciar novamente a conferência do palete. A unidade de medida da quantidade será solicitada com base no parâmetro principal do processo de conferência. (Não informa, informa quantidade em itens, e informa quantidade em SKUs).
    3. Informa itens, quantidade e dimensionais: passará por todas as etapas do modo anterior, sendo que após informar a quantidade, irá verificar se o item controla dimensionais e se está utilizando o parâmetro restringe dimensionais.

Os parâmetros serão gravados na tabela WMS_PARAMETRO_SEPARACAO, conforme descrição realizada na parte "Dicionário de dados", e na sessão protótipo são exibidas as imagens de como ficará a tela do contrato - separação/conferência (Protótipo 1 e Protótipo 2).

 

Ajustar também outros pontos de validação com o tipo de processo 305

 1.2 - Ajustes na cópia do contrato - WMS60030

Alterar a função wms60030_copia_contrato para ler os novos campos criados relacionados ao contrato de origem da cópia e gravar os valores lidos para para o contrato destino da cópia.

1.3 - Ajuste nos registros padrões - WMS6770

 Alterar a função wms6770_processa_tip_processos para incluir o novo tipo de processo criado 315. Conferencia coletor palete

Bloco de código
titleExemplo da validação
collapsetrue
-- Inclusão do novo tipo de processo
 
  IF NOT wms6770_grava_wms_tip_processo(315,
                                        "CONF MANUAL COLETOR PALETE",
                                        "CONF.COL PALETE",
                                        "EFETUAR A CONFERENCIA DE SOLICITACOES DE CARGA, PELO COLETOR, UTILIZANDO AS REGRAS DA CONFENCIA MANUAL  PODENDO INFORMAR O PALETE SEPARADO.",
                                        "E",
                                        "WMS6636",
                                        "S") THEN
     RETURN FALSE
  END IF

1.4 - Ajuste na função de validação de operação - WMS6067

 Alterar todas as validações para considerar o novo tipo de conferência 315. Utilizar como base o tipo de processo 305, uma vez que essa nova conferência, terá como base esse tipo já existe e mais a possibilidade de informar o palete separado.

1.5 - Ajuste na função de busca de processos da proposta do depositante - WMS6377

 Incluir na função wms6377_busca_processos_proposta_depositante o tipo de processo 315.

 

 1.6 - Ajuste no Wizard- WMS70006

  Incluir na função wms70006_carrega_temporaria o novo tipo de processo 315.  

Bloco de código
titleExemplo da validação
collapsetrue
-- Incluir o insert na função
    WHENEVER ERROR CONTINUE
   INSERT INTO tt_wms70006_ativ (tip_estrutura,tip_processo,ies_checked,descricao_tip_processo) VALUES('EXP', 315, 'S', 'CONF MANUAL COLETOR PALETE')
   WHENEVER ERROR STOP
   IF sqlca.sqlcode <> 0 THEN
      RETURN FALSE
   END IF


1.7 - Ajuste no Wizard- WMS70007b

 Incluir em todas as validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  

 

1.8 - Ajuste no Wizard - WMS70001 (função WMS7001C)

 Incluir na função wms7001c_busca_dados o novo tipo de processo 315. Incluir na validação da função wms7001c_validacoes o tipo de processo 315.

 

Bloco de código
titleExemplo da validação
collapsetrue
-- Função wms7001c_busca_dados incluir novo tipo de processo
     LET l_ind = l_ind + 1
     LET ma_dados[l_ind].gerar            = 'S'
     LET ma_dados[l_ind].tip_processo     = 315
     LET ma_dados[l_ind].des_processo     = 'Conf Manual Coletor Palete'
     LET ma_dados[l_ind].classe_operacao  = 'Expedição'
 
--Incluir novo tipo de conferência na função wms7001c_validacoes
#Validações para somente marcar um tipo de conferência
   WHENEVER ERROR CONTINUE
    SELECT COUNT(*)
      INTO l_count_proc
      FROM tt_wms70007_estr
     WHERE tip_processo IN (304,305,308,310,311,312,313,314,315) #Conferências
   WHENEVER ERROR STOP
   IF sqlca.sqlcode <> 0 THEN
      CALL log003_err_sql("SELECT COUNT","tt_wms70007_estr")
      RETURN FALSE
   END IF

  

1.9 - Ajuste na função de inventário rotativo - WMSR120

  Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  


1.10 - Ajuste na função de cancelamento de expedição- WMSR44

Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  


1.10 - Ajuste na função de sequencia de execução das atividades de expedição - WMSR60

Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  

 

1.11 - Ajuste na função de geração de ordem de serviço de expedição - WMSR70

Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  


1.11 - Ajuste na função de wizard - WMSR88

 Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.  


1.12 - Ajuste na função de validação de parâmetros da separação/conferencia - WMS60018

 Incluir na  função wms60014_valida_medicao_tempo_atividade uma nova consistência para o tipo 315.  

 

Bloco de código
titleExemplo da validação
collapsetrue
-- Inclusão de validação
     
 WHEN 315 #-- CONFERÊNCIA COLETOR PALETE--#
            IF ma_wms_ativ[l_ind_selected].medicao_tempo_atividade <> 1 AND
               ma_wms_ativ[l_ind_selected].medicao_tempo_atividade <> 4 AND
               ma_wms_ativ[l_ind_selected].medicao_tempo_atividade <> 5 AND
               ma_wms_ativ[l_ind_selected].medicao_tempo_atividade <> 6 THEN
               LET l_mensagem = "Para atividade de CONFERÊNCIA somente é permitida a medição de tempo por: DOCUMENTO, PESO, METRO CÚBICO ou QTD.ITENS."
               CALL log0030_mensagem(l_mensagem, "exclamation")
               RETURN FALSE
            END IF

 

 

WMS6770 - ATUALIZAÇÃO DE REGISTROS PADRÕES
WMS6167 - Função de validação operacional
WMS6377 - Função de geração do plano de separação
WMS60014 - Validação de configuração de medição de tempo
WMS60018 - Ajuste nas validações e parâmetros da conferência
WMS6008 - Programa de cadastro da tabela WMS_SERVICO_ATIV
WMS6025 - Programa de cadastro da tabela WMS_SERVICO_ATIV_PROPOSTA
WMS6200 - Funções de validação da tabela WMS_PARAMETRO_SEPARACAO
WMS6242 - Programa "Capa" da conferência para realizar a chamada do novo programa
WMS6345 - Programa de cadastro da tabela WMS_FORMA_EXPEDICAO
WMS6609 - WIZARD - Análises Tempo Médio Separação

Wizard
WMS70006 - Inclusão da atividade
WMS70007 - Inclusão da estrutura
WMS70007b - Validações para inclusão da configuração operacional
WMS70001c- Instalação de cadastros por depositante
WMSR88 - RNL Wizard
WMS6225 - Geração da estrutura padrão de OS

WMSR120 - RNL Inventário Rotativo
WMSR44 - RNL cancelamento Expedição
WMSR60 - RNL sequencia atividades Expedição
WMSR70 - RNL geração OS Expedição

 

 

2 - Ajustes na rotina de separação - WMS6214

No processo de separação, quando acessar a tela indicando a origem da separação, deverá solicitar o palete antes da etiqueta de estoque.

Na função wms6214_inicia_movimento existem duas telas que são chamadas:

  • WMS62143 - Etiqueta Origem - Controla SKU 
  • WMS6214k - Etiqueta Origem - Não Controla SKU. 

Criar duas novas telas com base nas atuais, onde serão excluídos os campos área e tipo de estoque que são exibidos atualmente para permitir a inclusão do campo palete destino, conforme protótipo 3 e 4:

Para realizar a validação da utilização do palete informado, criar duas funções dentro da nova RNL WMSRXX1:

  • WMSRXX1_valida_palete: será chamada após informar o palete(after field do campo). Valida apenas o palete informado, sem saber a relação dele com o estoque que será colocado sobre o mesmo. Deverá ser validado se o mesmo pode ser utilizado seguindo as mesmas regras do WMS6182, campo palete receptor. 

    Bloco de código
    titleExemplo da validação
    collapsetrue
    1) Remover enter no campo 
     
    Criar função idêntica a essa dentro da RNL 
    CALL wms6182_remove_enter(m_identif_palete) 
    RETURNING m_identif_palete   
     
    2) Verificar caracteres especiais 
    
    IF m_identif_palete MATCHES "*'*"
               OR m_identif_palete MATCHES "*""*"
               OR m_identif_palete MATCHES "*%*"
               OR m_identif_palete MATCHES "*(*"
               OR m_identif_palete MATCHES "*)*"
               OR m_identif_palete MATCHES "*=*"
               OR m_identif_palete MATCHES "*|*"
               OR m_identif_palete MATCHES "*<*"
               OR m_identif_palete MATCHES "*>*" THEN
                  LET m_titulo     = 'Divis/Fusao estoque'
                  LET m_sub_titulo = 'Palete receptor invalido.'
                  LET m_msg        = 'Nao e permitido informar caracteres especiais no palete receptor.'
                  CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                  CURRENT WINDOW IS w_WMS6182_principal
                  NEXT FIELD m_identif_palete
               END IF 
     
    3) Verificação de inventário no palete 
    #rotina para verificar se o palete esta em processo de inventario 
            IF wmsr51_f2_verifica_emp_palet(p_cod_empresa, m_identif_palete) THEN
               LET m_titulo     = 'Divis/Fusao estoque'
               LET m_sub_titulo = ''
               CALL wms6085_help(m_titulo, m_sub_titulo, 'Nao e possivel realizar divisao/fusao de estoque, pois o palete possui identificacoes de estoque que estao em processo de inventario.')
               CURRENT WINDOW IS w_WMS6182_principal
               NEXT FIELD m_identif_palete
            END IF 
     
    4) Verificar se o palete informado é curinga ou permite usar qualquer etiqueta (Cria curinga com o palete) 
    # Validar se o receptor é uma etiqueta curinga
               IF wmsm53_wms_etiq_curinga_leitura(p_cod_empresa,m_identif_palete,TRUE,1) THEN
                  # Se atender estas condições a etiqueta não pode ser utilizada
                  IF wmsm53_wms_etiq_curinga_get_dat_habil() IS NULL THEN
                     LET m_titulo     = 'Divis/Fusao estoque'
                     LET m_sub_titulo = 'Palete receptor invalido'
                     LET m_msg        = 'A etiqueta informada nao esta habilitada.'
                     CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                     CURRENT WINDOW IS w_WMS6182_principal
                     NEXT FIELD m_identif_palete
                  END IF
               ELSE
                  IF m_indica_aceita_etiq_nao_cadas = 'S' THEN
                     IF wmsm53_wms_etiq_curinga_leitura(p_cod_empresa,m_identif_cedente,TRUE,1) THEN
                        LET l_endereco         = wmsm53_wms_etiq_curinga_get_endereco()
                     END IF
                     IF wmsm133_wms_identif_estoque_leitura(p_cod_empresa,m_identif_cedente,TRUE,1) THEN
                        CALL wmsm53_wms_etiq_curinga_set_ctr_ent_sai_veic(wmsm133_wms_identif_estoque_get_ctr_ent_sai_veic_docum())
                        CALL wmsm53_wms_etiq_curinga_set_deposit(wmsm133_wms_identif_estoque_get_depositante())
                     END IF
                     CALL wmsm53_wms_etiq_curinga_set_dat_habil(TODAY)
                     CALL wmsm53_wms_etiq_curinga_set_empresa(p_cod_empresa)
                     CALL wmsm53_wms_etiq_curinga_set_endereco(l_endereco)
                     CALL wmsm53_wms_etiq_curinga_set_etiq_curinga(m_identif_palete)
                     CALL wmsm53_wms_etiq_curinga_set_etiq_pallet(m_identif_palete)
                     CALL wmsm53_wms_etiq_curinga_set_identif('P')
                     CALL wmsm53_wms_etiq_curinga_set_item(m_cod_item)
                     CALL wmsm53_wms_etiq_curinga_set_livre_1(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_livre_2(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_livre_3(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_livre_4(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_livre_5(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_livre_6(NULL)
                     CALL wmsm53_wms_etiq_curinga_set_lote_geracao(1)
                     CALL wmsm53_wms_etiq_curinga_set_sku(l_sku)
                     CALL wmsm53_wms_etiq_curinga_set_utiliz('S')
                     #LET m_etiqueta_tem_estoque = FALSE
                     IF NOT wmst53_wms_etiq_curinga_inclui(TRUE,1) THEN
                        LET m_titulo     = 'Divis/Fusao estoque'
                        LET m_sub_titulo = 'Etiqueta curinga'
                        LET m_msg        = 'Problemas na inclusao da etiqueta curinga.'
                        CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                        CURRENT WINDOW IS w_WMS6182_principal
                        NEXT FIELD m_identif_palete
                     END IF
                  ELSE
                     LET m_titulo     = 'Divis/Fusao estoque'
                     LET m_sub_titulo = 'Etiqueta curinga'
                     LET m_msg        = 'Nova identificacao de estoque nao cadastrada como etiqueta curinga.'
                     CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                     CURRENT WINDOW IS w_WMS6182_principal
                     NEXT FIELD m_identif_palete
                  END IF
               END IF
            END IF
    
  • WMSRXX1_valida_palete_com_id: antes de executar o processamento, deverá ser validado novamente, se foi possível utilizar o palete para o processo em questão, similar ao que é realizado no WMS6182 após preencher todos os campos da tela. Nesse ponto, será validado o palete e a ID que o mesmo será atrelado, seja ela física ou virtual.

    Bloco de código
    titleExemplo da validação
    collapsetrue
    Fazer novamente todas as validações da função WMSRXX1_valida_palete   
     
    Utilizando já o palete e ID que será colocada no palete   
     
    1) Verificar se o Palete já está sendo usado como ID de estoque de outra ID que não a separada
    WHENEVER ERROR CONTINUE
               SELECT DISTINCT 1
                 FROM estoque_lote_ender
                WHERE estoque_lote_ender.cod_empresa = p_cod_empresa
                  AND estoque_lote_ender.identif_estoque = m_identif_palete
                  AND qtd_saldo > 0
               WHENEVER ERROR STOP
               IF sqlca.sqlcode = 0 THEN
                  LET m_titulo     = 'Divis/Fusao estoque'
                  LET m_sub_titulo = 'ID cedente'
                  LET m_msg        = 'Palete unico nao pode receber outra ID.'
                  CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                  CURRENT WINDOW IS w_WMS6182_principal
                  NEXT FIELD m_identif_palete
               END IF 
    
    2) Verificar depositante do palete 
    IF wmsm117_wms_palete_get_deposit() <> m_deposit THEN
                  LET m_titulo     = 'Divis/Fusao estoque'
                  LET m_sub_titulo = 'Palete receptor invalido.'
                  LET m_msg        = 'Palete receptor informado nao pertence ao mesmo depositante da identificacao cedente.'
                  CALL wms6085_help(m_titulo, m_sub_titulo, m_msg)
                  CURRENT WINDOW IS w_WMS6182_principal
                  NEXT FIELD m_identif_palete
               END IF
     

     

O palete informado nesse processo será gravado no campo palete da tabela wms_identif_estoque da identificação de estoque que está sendo separada no movimento.

Ajustar o programa para executar o processo utilizado GET e SET sem precisar passar mais parâmetros para as funções.

As funções wmsr27_gera_palete_com_identif_estoque e wmsr18_divisao_fusao_estoque deverão utilizar o palete informado em tela para a criação do palete.

É necessário alterar também a  wmsr41_separacao_picking que chama as funções wmsr27_gera_palete_com_identif_estoque e wmsr18_divisao_fusao_estoque.

Verificar parametrização que deve ser passada para a função: wmsr18_set_m_verifica_divisao_estoque

OBS: apenas lembrar que ao consultar o estoque no WMS6170 pelo equipamento ou palete o mesmo poderá ser visualizado conforme executado na separação.

3 - Ajustes na rotina de conferência - WMS6242

Em todos os programas de conferência, na tela de processamento, no campo EAN/SKU, será possível bipar um palete para realizar a conferência automática do mesmo. 

Essa validação apenas será chamada se o parâmetro no contrato estiver ativo, caso contrário, processo atual.Na sessão 4 serão listados em detalhes os programas que serão alterados.

3.1 - Validações no palete informado, antes de realizar a conferência

Para realizar a validação da utilização do palete informado criar uma nova função dentro da RNL WMSRXX2.

A primeira validação que será feita no palete informado, é verificar se o mesmo já foi conferido anteriormente, e na sequencia, caso o palete ainda não tenha sido conferido, é verificado se o mesmo pode ser conferido.

  • Verificar se o palete não foi conferido anteriormente. Mensagem: Esse palete já foi conferido! Deseja cancelar a conferência do mesmo? Em casa afirmativo, será realizado o cancelamento da conferência de todos os itens do palete, similar a exclusão de volumes. Não serão solicitadas informações adicionais, e ao final será enviado a mensagem "Palete cancelado com sucesso" ou "Não foi possível cancelar a conferencia do palete" conforme resultado do processamento da função. E voltará para a tela de palete, onde caso o usuário desejar, poderá realizar novamente a conferência do mesmo.
Bloco de código
languagecpp
titleExemplo da validação
collapsetrue
1) Verificar se o palete não foi conferido anteriormente
SELECT  situacao_palete
  FROM WMS_CONFERENCIA_PALETE
 WHERE empresa = 'XX'
   AND palete = 'XXXXXXXXXXXXXXXXXX'
   AND sequencial_conferencia = 99
 
Quando a situação do palete é F(finalizada). Enviar mensagem em tela solicitado ao usuário se deseja cancelar a conferencia do palete ou não.
 
Quando a Opções A(andamento), automaticamente cancelar a conferencia de todos os itens e recomeçar o processo de conferência do palete. Isso poderá ocorrer quando o sistema for encerrado indevidamente, onde teve uma queda de sinal. 2) Cancela conferencia palete. Para essa função, verificar os diferentes tipos de conferencia e as tabelas incluidas/ajustadas por elas, conforme seguinte conceito:wmsr67_confere_item (confererencias por plano)
wmsr35_confere_item (Conferencias por documento automáticas)
wmsr35_inclui_item_volume_sem_split (conferencias manuais)

 

  •  WMSRXX2_valida_palete_conferencia: essa função será responsável por validar o palete antes de efetivamente realizar a conferência do mesmo. Todas as validações inviabilizam a conferência do palete e enviam mensagem informando o motivo. Deverão ser validados os seguintes pontos:
    • Verificar se existe alguma reserva no palete que não está relacionada o solicitação de carga/plano que está sendo conferido. Mensagem: Não é possível realizar a conferencia desse palete. Existe reserva para mais de um documento/plano.
    • Verificar se existe algum estoque que não está reservado. Mensagem:  Não é possível realizar a conferencia desse palete. Existe estoque sem reserva.
    • Verificar se todos os itens possuem conferência pendente. Mensagem: Não é possível realizar a conferencia desse palete. Nem todos os itens são necessários para o fechamento da conferência. 

      Bloco de código
      languagecpp
      titleExemplo da validação
      collapsetrue
      1) Verifica se o palete possui alguma reserva para outra SC/plano
      SELECT DISTINCT 1 
       FROM wms_palete
      INNER JOIN wms_identif_estoque
         ON wms_identif_estoque.empresa =  wms_palete.empresa
        AND wms_identif_estoque.palete =  wms_palete.palete
      INNER JOIN est_loc_reser_end
         ON est_loc_reser_end.cod_empresa = wms_identif_estoque.empresa
        AND est_loc_reser_end.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE 
      WHERE wms_palete.empresa = '44' -- Empresa corrente
      AND wms_palete.palete  = '644161110093108381' --Palete em questão
      
      --Essa parte final, deve levar em conta o tipo da conferencia - Documento ou plano
      -- Esse para quando a conferência for por documento
      AND EXISTS (SELECT 1  FROM wms_solic_carga_item_reserva
                   WHERE wms_solic_carga_item_reserva.empresa = est_loc_reser_end.cod_empresa
                     AND wms_solic_carga_item_reserva.reserva = est_loc_reser_end.num_reserva
                     AND wms_solic_carga_item_reserva.tip_reserva = 'E' -- Apenas reservas de estoque
                     AND wms_solic_carga_item_reserva.trans_solicitacao_carga_mestre <> 73247) -- Número da SC que está sendo conferida
       
      -- Esse para quando a conferência for por plano
      AND EXISTS (SELECT 1  
        FROM wms_solic_carga_item_reserva
       WHERE wms_solic_carga_item_reserva.empresa = est_loc_reser_end.cod_empresa
         AND wms_solic_carga_item_reserva.reserva = est_loc_reser_end.num_reserva
         AND wms_solic_carga_item_reserva.tip_reserva = 'E' -- Apenas reservas de estoque
         AND wms_solic_carga_item_reserva.trans_solicitacao_carga_mestre NOT IN (
      SELECT wms_plano_separacao_carga.trans_solicitacao_carga_mestre 
      FROM wms_plano_separacao_carga, wms_conferencia_separacao
      WHERE wms_plano_separacao_carga.EMPRESA = 'XX'
      AND wms_plano_separacao_carga.PLANO_SEPARACAO = 99
      AND wms_plano_separacao_carga.EMPRESA = wms_conferencia_separacao.empresa
      AND wms_plano_separacao_carga.TRANS_SOLICITACAO_CARGA_MESTRE= wms_conferencia_separacao.TRANS_SOLICITACAO_CARGA_MESTRE
      AND wms_conferencia_separacao.conferencia_plano = 'S'  )-- nem todas as solicitações de carga de um plano podem ser por plano
       
      2) -- Verifica se o palete possui alguma quantidade que não está reservada 
      SELECT DISTINCT 1 FROM wms_palete 
       INNER JOIN wms_identif_estoque 
          ON wms_identif_estoque.empresa = wms_palete.empresa 
         AND wms_identif_estoque.palete = wms_palete.palete 
       INNER JOIN estoque_lote_ender 
          ON estoque_lote_ender.cod_empresa = wms_identif_estoque.empresa 
         AND estoque_lote_ender.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE 
        LEFT JOIN est_loc_reser_end 
          ON est_loc_reser_end.cod_empresa = wms_identif_estoque.empresa 
         AND est_loc_reser_end.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE 
        LEFT JOIN estoque_loc_reser 
          ON est_loc_reser_end.cod_empresa = estoque_loc_reser.cod_empresa 
         AND est_loc_reser_end.num_reserva = estoque_loc_reser.num_reserva 
       WHERE wms_palete.empresa = '44' -- Empresa corrente 
         AND wms_palete.palete = '644090828140540007' --Palete em questão 
       GROUP BY estoque_lote_ender.qtd_saldo 
      HAVING estoque_lote_ender.qtd_saldo <> sum(estoque_loc_reser.qtd_reservada)
       
      3) Verificar se todos os itens possuem conferência pendente
      Copiar as validações padrões da conferência de itens, como:
      wmsr67_confere_item (confererencias por plano)
      wmsr35_confere_item (Conferencias por documento automáticas)
      wmsr35_inclui_item_volume_sem_split (conferencias manuais)
      Essas funções devem fazer apenas a parte de validar se o item/quantidade/dimensionais pode ser conferido, não fazendo atualização nos indicativos de conferência
       
      4) Ao final da validação do palete, deverão ser gravados os registros nas tabelas WMS_CONFERENCIA_PALETE, onde o palete deve ficar com a situação A, e na tabela WMS_CONFERENCIA_PALETE_ITEM todos os itens com situação P. 
      Isso para não ser mais necessário ficar buscando sempre a quantidade de itens do palete e conseguir verificar quais itens e conseguir saber quando todos os itens do palete foram conferidos.
       
      -- Itens e quantidades
      SELECT wms_identif_estoque.item,
             wms_identif_estoque.QTD_ORIGEM,
      sum(wms_identif_estoque.QTD_ORIGEM /wms_item_sku.qtd_item) qtd_sku
       FROM wms_palete, 
            wms_identif_estoque,
            wms_item_sku
      WHERE wms_palete.empresa =  wms_identif_estoque.empresa
      AND wms_palete.palete =  wms_identif_estoque.palete
      AND wms_identif_estoque.empresa =   wms_item_sku.empresa
      AND wms_identif_estoque.item =   wms_item_sku.item
      AND wms_identif_estoque.sku =   wms_item_sku.sku
      AND wms_palete.empresa = '44' --empresa corrente
      AND wms_palete.palete =  '644090828140540007' -- palete em questão
      GROUP BY wms_identif_estoque.item,
             wms_identif_estoque.QTD_ORIGEM

3.2 - Realizando a conferência do palete

Deverá ser criada uma função WMSRXX2_confirma_conferencia_palete que será utilizada em todos os processos de conferência. Essa função irá abrir as telas necessárias para a realização da conferência do palete, sendo ele coletor ou desktop e levando em conta o modo de conferência configurado no depositante.

Poderão ser configuradas 3 opções de conferência de palete, que funcionarão da seguinte forma:

  • Somente pede confirmação(Protótipo 5): envia mensagem para o usuário solicitando a confirmação. Respondendo Sim, o sistema irá realizar o processamento da conferência do palete chamando a função WMSRXX2_processa_conferencia_palete. Respondendo não, volta para a tela inicial do processo de conferência em questão.
Bloco de código
languagecpp
titleExemplo da validação
collapsetrue
Para os programas utilizar a mensagem padrão:
Coletor: wms6085_tela_confirmacao(TITULO,SUBTITULO,MENSAGEM). O campo titulo deve ser preenchido com o nome de cada programa chamador
Desktop: utilizar mensagem em tela (log0040_confirm(6,10,MENSAGEM)), já com a opção SIM selecionada
 
Atualiza todos os itens do palete como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM
Chama a função WMSRXX2_processa_conferencia_palete

 

  • Informa quantidade total de SKU (Protótipo 6): antes de abrir essa tela, deve ser verificado se algum dos itens do palete não controla SKU. Se existir algum dos itens que não controla SKU, automaticamente, será aberta a tela para informar os itens e quantidade (opção descrita na sequencia), ou seja, apenas quando todos os itens do palete controlarem SKU essa opção poderá ser utilizada.Essa opção envia mensagem para o usuário solicitando a quantidade de SKUs presentes no palete. O mesmo deverá responder a quantidade total e ela será validada em relação a quantidade esperada, criar a função WMSRXX2_valida_qtd_palete. Quando informada uma quantidade diferente da esperada será enviada uma mensagem informando "Quantidade de SKUs informada é diferente da quantidade esperada" e volta para o campo Qtd SKUs. Quando informada a quantidade esperada de SKUs o sistema irá realizar o processamento da conferência do palete chamando a função WMSRXX2_processa_conferencia_palete
Bloco de código
languagecpp
titleExemplo da validação
collapsetrue
--Verifica se algum dos itens do palete não controla SKU
SELECT DISTINCT 1
 FROM wms_palete, 
      wms_identif_estoque, 
      wms_item_complemento
WHERE wms_palete.empresa =  wms_identif_estoque.empresa
AND wms_palete.palete =  wms_identif_estoque.palete
AND wms_identif_estoque.empresa =   wms_item_complemento.empresa
AND wms_identif_estoque.item =   wms_item_complemento.item
AND wms_palete.empresa = '44' --empresa corrente
AND wms_palete.palete =  '644090828140540007' --palete em questão
AND controla_sku = 'N' --indicativo de controle de SKU

--Verifica a quantidade de SKUs do palete
sum dos SKus da tabela WMS_CONFERENCIA_PALETE_ITEM para o palete, empresa e sequencial da conferência
 __________________________________
Para os programas utilizar a mensagem padrão:
Coletor: wms6085_help(TITULO,SUBTITULO,MENSAGEM). O campo titulo deve ser preenchido com o nome de cada programa chamador
Desktop: log0030_processa_mensagem
 
Atualiza todos os itens do palete como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM
Chama a função WMSRXX2_processa_conferencia_palete

 

  • Informa itens e quantidade(Protótipo 7): com essa opção parametrizada, o sistema deverá abrir uma nova tela, onde deverão ser informados os itens e suas respectivas quantidades conferidas. Ao informar um item e quantidade será validado se é a mesma é igual ao esperado com base na tabela WMS_CONFERENCIA_PALETE_ITEM e se o item já não foi conferido anteriormente (Situação do item é F) . A cada item conferido será verificado se ainda existem itens pendentes de conferência. Caso exista, volta para a tela de itens, caso contrário, informa que "Todos os itens do palete já foram conferidos". Após todos os itens conferidos, o usuário poderá confirmar a conferência do palete que irá chamar a função  WMSRXX2_processa_conferencia_palete para conferir o palete.
Bloco de código
languagecpp
titleExemplo da validação
collapsetrue
Após o código do item, fazer as seguintes verificações:
- Item pertence ao palete (verifica se encontra registro para o item na WMS_CONFERENCIA_PALETE_ITEM)
- Item já foi conferido (quando na tabela WMS_CONFERENCIA_PALETE_ITEM a situacao do item já está como F)
 
Apos informar a quantidade de itens
--Validação da quantidade e situação do itens no palete
com base na tabela WMS_CONFERENCIA_PALETE_ITEM, verifica quantidade e situação
 
Atualiza todos o item conferido como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM

 

 3.3 - Realizando a conferência do palete - Função de conferência

A função WMSRXX2_processa_conf_palete deve ser criada para realizar efetivamente a conferencia de todos os itens do palete. Ela poderá ser chamada por qualquer um dos processos de conferência e irá retornar apenas

Quando realizada a conferência do palete, o mesmo deverá ser gravado nas novas tabelas para evitar que seja conferido mais vezes


 

Travar reiniciar a conferencia de itens

Travar retirar itens de volumes caso seja necessário utilizar a quantidade de itens do palete

Ao reiniciar a conferencia geral, deve também excluir os paletes conferidos

Sequencial de conferencia 2 - Após o cancelamento

 

 

Protótipo de Tela - Contrato - Protótipo 1

 

Protótipo de Tela - Contrato - Protótipo 2

Protótipo de Tela - Separação - Protótipo 3 e Protótipo 4

Protótipo de Tela - Conferencia palete: modo confirma - Protótipo 5

            

                                                    


 

 

Protótipo de Tela - Conferencia palete: modo quantidade de SKUS - Protótipo 6

                                                             

 

Protótipo de Tela - Conferencia palete: itens e quantidade - Protótipo 7

 

 

 

 

Dicionário de Dados

 

TABELA: WMS_PARAMETRO_SEPARACAO
CampoDescriçãoTipo

Obrigatório

Campo novo?
EmpresaCódigo da empresaCHAR(02)
  •   
Não
DepositanteCódigo do depositanteCHAR(15)
  •   
Não
....    
informa_quantidade_conferenciaIndica como será realizada a conferência dos itensCHAR(01)
  •   
Não
permt_plnjt_endereco_nao_docaIndica se permite ou não planejar a conferência para endereços diferentes de doca/statgeCHAR(01)
  •   
Não
...    

inf_palete_destino_separacao

Informa o palete destino no processo de separaçãoCHAR(01)
  •   
Simpermite_conf_paletePermite realizar a conferência informando o paleteCHAR(01)
  •   
Sim
modo_conf_palete

Indica o modo que será realizada a conferência do palete - Valores possíveis:

1 - Somente pede confirmação

2 - Informa quantidade total de SKUs (default)

3- Informa itens e quantidades

4 - Informa itens, quantidades e dimensionais

CHAR(01)
  •   
Sim
TABELA CRIADA: WMS_CONFERENCIA_PALETE
NOME
DESCRIÇÃO
TIPOChave PrimáriaOBRIGATÓRIO
empresaEmpresaCHAR(02)
  •   
  •   
paleteCódigo do palete conferidoCHAR(18)
  •   
  •   
sequencial_conferenciaSequencial da conferenciaINTEGER
  •   
  •   
situacao_paleteSituação da conferência do palete. Opções A(andamento) F(finalizada)CHAR(01)
  •   
  •   

trans_solicitacao_carga_mestre

Número da Solicitação de carga, quando a conferência é por documentoINTEGER
  •   
  •   
plano_separacaoNúmero do plano de separação, quando conferência é por planoINTEGER
  •   
  •   


TABELA CRIADA: WMS_CONFERENCIA_PALETE_ITEM
NOME
DESCRIÇÃO
TIPOChave primáriaOBRIGATÓRIO
empresaEmpresaCHAR(02)
  •   
  •   
paleteCódigo do palete conferidoCHAR(18)
  •   
  •   
sequencial_conferenciaSequencial da conferenciaINTEGER
  •   
  •   

item

Código do item ERPCHAR(15)
  •   
  •   
qtd_itemQuantidade de itens no paleteINTEGER
  •   
  •   
qtd_skuQuantidade de SKus do item no paleteINTEGER
  •   
  •   
situacaoSituação da conferência do item. Opções: Opções P(pendente) F(finalizada)CHAR(01)
  •   
  •   


 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.