Páginas filhas
  • ER_LOGWMS01-34_Conferencia_Expedicao

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 - Warehouse Management System

Segmento Executor

Supply Chain

Projeto1

LOGWMS01 - Supply Chain - WMS

IRM1

LOGWMS01-30 - Processamento via leitura código de barras GS1-128

Requisito1

LOGWMS01-34 - Tratar GS1-128 na Conferência da Expedição

Subtarefa1

 

Chamado2

<não se aplica>

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

Esta Story (LOGWMS01-34) é a quarta de um conjunto referente ao Épic (LOGWMS01-30) que contempla todas as funcionalidades previstas para tratamento do código de barras GS1-128.

Demais Stories:

REQ01 → LOGWMS01-31 - Configuração.

REQ02 → LOGWMS01-32 - Tratar GS1-128 na Conferência do Recebimento

REQ03 → LOGWMS01-33 - Tratar GS1-128 na Separação

REQ05 → LOGWMS01-35 - Tratar GS1-128 nas rotinas complementares

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 

Definição da Regra de Negócio

 

  1. Para atingir o resultado esperado detalhado acima, as seguintes alteração de funções e programas serão necessárias:
    1. WMS6218 - Conferencia da expedição via coletor de dados
      1. Criar função wms6218_validar_valores_validos_dimensionais(l_arr_curr) para isolar regras de negócio referente a validação de valor válido para dimensionais sem que possua dependência direta dos componentes de tela (screen arrays\campos).
        • Atualmente a wms6218_valida_dimensional() e a wms6218_valida_dimensional_sem_split() cumprem dois papéis, i) validar se o valor digitado para um dimensional é válido, ii) verificar se existe saldo para o item, quantidade  e dimensional informado. A ideia proposta é mover a parte i) referente as validações de valores para esta função wms6218_validar_valores_validos_dimensionais() . Para atender esta necessidade mover o bloco de código abaixo da função wms6218_valida_dimensional() e da wms6218_valida_dimensional_sem_split() para a função wms6218_validar_valores_validos_dimensionais();

          Bloco de código
          languagesql
          themeEclipse
          titleBloco de código a ser movido da wms6218_valida_dimensional() para wms6218_validar_valores_validos_dimensionais()
          linenumberstrue
          collapsetrue
          # Verificar a consistencia do dado informado
           IF ma_dimensional_aux[l_arr_curr].campo = "dat_hor_producao"
           OR ma_dimensional_aux[l_arr_curr].campo = "dat_hor_validade" THEN
              LET l_data_valida = ma_dimensional[l_arr_curr].val_dimensional
              LET ma_dimensional[l_arr_curr].val_dimensional = l_data_valida
          
              IF ma_dimensional[l_arr_curr].val_dimensional IS NULL THEN
                 CALL wms6218_mensagem('Dimensional','Data invalida.')
                 RETURN FALSE
              END IF
           END IF


        • Além de mover o bloco de código, veja que a instrução DISPLAY e o índice do array de tela foram descartados para que não exista dependência de tela para realizar a validação;
      2. Alterar função wms6218_valida_dimensional_sem_split() adequando o seu nome a sua funcionalidade e retirando a dependência da tela (screen arrays\campos) 
        1. Remover o bloco de código movido para a função  wms6218_validar_valores_validos_dimensionais() mencionado acima no item a. i);
        2. Retirar a declaração das variáveis utilizadas exclusivamente no bloco de código movido;
        3. Retirar o parâmetro l_scr_line;
        4. Mudar seu nome para wms6218_validar_saldo_reservas_dimensionais_sem_split().
      3. Alterar função wms6218_valida_dimensional() adequando o seu nome a sua funcionalidade e retirando a dependência da tela (screen arrays\campos) 
        • Remover o bloco de código movido para a função  wms6218_validar_valores_validos_dimensionais() mencionado acima no item a. i);
        • Retirar a declaração das variáveis utilizadas exclusivamente no bloco de código movido;
        • Retirar o parâmetro l_scr_line;
        • Mudar seu nome para wms6218_validar_saldo_reservas_dimensionais().
      4. Alterar função wms6218_informa_dimensionais() na estrutura de INPUT no after field do campo val_dimensional ajustar para adequar as modificações mencionadas nos itens acima a. i) e a. iii)
        • No lugar de todo o conteúdo atual do after field do campo val_dimensional, adicionar as verificações abaixo. (ao final uma sugestão de implementação);
        • Se val_dimensional for NULL, posicionar novamente no campo val_dimensional (NEXT FIELD val_dimensional);
        • Em seguida, verificar se o valor digitado é um valor válido através da função wms6218_validar_valores_validos_dimensionais(). Não sendo válido, realizar o DISPLAY em tela do valor e posicionar novamente no campo para que o operador informe algo válido  (NEXT FIELD val_dimensional).
        • Após verificar que o valor informado não é nulo e é um valor válido, realizar o DISPLAY em tela e em seguida verificar se existe saldo em reserva para a quantidade e dimensional informado através da função wms6218_validar_saldo_reservas_dimensionais(). Caso não exista saldo a função irá retornar FALSE e então neste caso posicionar novamente no campo para que o usuário informe algo válido (NEXT FIELD val_dimensional).

        • Abaixo sugestão de implementação para todos os itens mencionados acima.

          Bloco de código
          languagesql
          themeEclipse
          titleSugestão de implementação dos ajustes necessário na validação dos dimensionais.
          linenumberstrue
          collapsetrue
          AFTER FIELD val_dimensional
                  IF ma_dimensional[l_arr_curr].val_dimensional IS NULL THEN      
                     NEXT FIELD
                  END IF
                  
                  IF NOT wms6218_validar_valores_validos_dimensionais(l_arr_curr) THEN           
                     DISPLAY ma_dimensional[l_arr_curr].val_dimensional TO sr_dimensional[l_scr_line].val_dimensional              
                     NEXT FIELD val_dimensional              
                  END IF 
                     
                  DISPLAY ma_dimensional[l_arr_curr].val_dimensional TO sr_dimensional[l_scr_line].val_dimensional
                        
                  IF NOT wms6218_validar_saldo_reservas_dimensionais(l_arr_curr) THEN
                     NEXT FIELD val_dimensional
                  END IF               
      5. Criar modular SMALLINT m_wmsr130_gs1_128_existe para representar a existência ou não da nova função wmsr130. Isso se faz necessário para que caso a equipe de manutenção precise enviar uma correção ao cliente não gere a necessidade de ter que enviar todos os fontes do projeto GS1-128. A utilização desta variável ao longo do programa WMS6218 estará descrita nos demais tópicos deste documento.
      6. Criar modular SMALLINT m_encontrou_cod_barras_sku_gs1_128 para indicar se encontrou ou não código de barras do SKU no GS1-128. Este indicador servirá para que os valores obtidos do GS1-128 não sejam limpos ao identificar atributos do GS1-128 porém não encontrar o código de barras do SKU.
      7. Alterar função wms6218_ean_cod_barras() para realizar os tratamentos necessários na navegação dos campos quando existirem valores obtidos utilização do GS1-128.

        • Já no início da função, caso a função wmsr130 exista, iniciar as variáveis m_wmsr130_gs1_128_existe com TRUE m_encontrou_cod_barras_sku_gs1_128 com FALSE.

          Bloco de código
          languagesql
          themeEclipse
          titleBloco de código responsável por armazenar o indicativo de existência ou não da função de regra de negócio do gs1-128 wmsr130.
          linenumberstrue
          collapsetrue
            LET m_wmsr130_gs1_128_existe = FALSE
            IF find4GLfunction('wmsr130_decodifica_gs1_128') THEN
               LET m_wmsr130_gs1_128_existe = TRUE
               LET m_encontrou_cod_barras_sku_gs1_128 = TRUE
            END IF 
        • Alterar o evento before field do campo ean_codigo_barras. Ao final do evento, caso exista a função wmsr130 e o indicador de código de barras do SKU ter sido encontrado no GS1-128 seja FALSE (m_encontrou_cod_barras_sku_gs1_128), limpar os valores das funções referente ao GS1-128.

          Bloco de código
          languagesql
          themeEclipse
          titleSugestão de implementação no evento before field ean_codigo_barras para solicitar ou não a leitura de código de barras GS1-128.
          linenumberstrue
          collapsetrue
          IF m_wmsr130_gs1_128_existe THEN
              IF  m_encontrou_cod_barras_sku_gs1_128  THEN
                 CALL wmsr130_set_null()
                 CALL wmsr6730_set_null()
              END IF
          END IF

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