Histórico da Página
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 | IRM1 | LOGWMS01-30 - Processamento via leitura código de barras GS1-128 | |
Requisito1 | 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
- Para atingir o resultado esperado detalhado acima, as seguintes alteração de funções e programas serão necessárias:
- WMS6218 - Conferencia da expedição via coletor de dados
- 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 language sql theme Eclipse title Bloco de código a ser movido da wms6218_valida_dimensional() para wms6218_validar_valores_validos_dimensionais() linenumbers true collapse true # 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;
- 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)
- 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_sem_split().
- 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().
- 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 language sql theme Eclipse title Sugestão de implementação dos ajustes necessário na validação dos dimensionais. linenumbers true collapse true 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
- 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.
- 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.
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 e m_encontrou_cod_barras_sku_gs1_128 com FALSE.
Bloco de código language sql theme Eclipse title Bloco 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. linenumbers true collapse true 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 language sql theme Eclipse title Sugestã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. linenumbers true collapse true 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
- 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).
- WMS6218 - Conferencia da expedição via coletor de dados
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|