Páginas filhas
  • ER_LOGWMS01-33_Tratar_GS1-128_na_Separacao

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

WMS

Módulo

Logix

Segmento Executor

Supply Chain - Inovação

Projeto1

LOGWMS01

IRM1/Epic

LOGWMS01-30

Requisito1/Story

LOGWMS01-33

Subtarefa1

 

Chamado2

 

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

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

Objetivo

Permitir a leitura e decodificação de etiquetas padrão GS1-128 durante a separação.

 

Definição da Regra de Negócio

Será possível efetuar a leitura de etiquetas padrão GS1-128 no processo de separação nas seguintes condições:

  1. Quando o parâmetro Modo solicitação SKU separação do contrato (Expedição - Separação/Conferência) estiver informado "Obriga leitura SKU" o programa de separação via coletor deverá estar preparado para receber uma etiqueta padrão GS1-128 no lugar da etiqueta EAN/SKU carregando as informações de SKU/ITEM (caso existam) e efetuando as validações já existentes após a leitura do EAN/SKU. Este processo ocorre tanto em separação em endereço armazém, quanto de picking. Se o parâmetro Informar dimensionais no picking estiver marcado e o item possuir controle de algum dimensional, durante a separação em endereço de picking, serão carregadas automaticamente as informações, caso tenham sido lidas a partir do GS1 informado no lugar do EAN/SKU. Caso o operador não tenha lido o código de barras contendo as informações dos dimensionais ou não tenha efetuado a leitura de um código padrão GS1-128 anteriormente, ainda poderá faze-lo por meio da tecla função F11/Ctrl-R, ao final da separação ou quando efetuar uma coleta parcial. A tela que atualmente efetua a entrada dos dimensionais manualmente deverá possibilitar a leitura de uma etiqueta GS1-128.
  2. Quando o parâmetro Modo solicitação SKU separação estiver informado "Obriga informar quantidade" ou "Somente pede confirmação" o programa de separação via coletor deverá estar preparado para receber uma etiqueta padrão GS1-128 somente quando a separação ocorrer na entrada de dimensionais, que somente em endereços de pícking e quando o parâmetro Informar dimensionais no picking estiver marcado. Isso porque nessas modalidades de separação, somente nestes casos a leitura de uma etiqueta GS1-128 seria necessária. Quando ocorrer esta situação, no momento da entrada dos dimensionais, o programa deverá estar preparado para receber as informações por meio de uma etiqueta GS1-128.
  3. E no descarregamento, quando poderá ser informada uma etiqueta GS1-128 no lugar de uma etiqueta de SKU ou ITEM para ser efetuada a validação dos movimentos relacionados.

 

Tela

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMS6214

[Alteração]

 

Programa Coletor

WMSR41

[Alteração]

 

RNL

WMS6730

[Alteração]

 

Programa Coletor

WMS6730[Criação] 

 

Alteração WMS6214

  1. Função wms6214_coleta_mercadorias() deverá ser alterada para verificar se o depositante do processo utiliza codificação GS1-128.
    1. No início da função deverá ser atribuído true ou false a uma nova variável modular chamada m_config_gs1_128 de acordo com o retorno da função wmsr130_deposit_utiliza_cod_barras_gs1_128(), os parâmetros empresa e depositante deverão ser passados anteriormente via função  wmsr130_set_empresa() e wmsr130_set_deposit().

  2. A função wms6214_coleta_etiqueta_sku_item() deverá ser alterada no ponto de input da etiqueta EAN/SKU sendo preparada para o recebimento de uma etiqueta GS1-128.
    1. Se o depositante não possuir configuração válida (m_config_gs1_128 = 0) o Input não deve ser alterado.
    2. No AfterField do campo etiq_entrada, após a chamada da função wms6214_verifica_movimento(), quando o l_qtd_item_sku for igual a Zero e m_config_gs1_128 > 0 deverá verificar se foi informada uma etiqueta GS1-128, seguindo os seguintes passos:
      1. Chamar as funções a segui na seqüência: wmsr130_set_null(), wmsr130_set_modo_exibicao(0), wmsr130_set_empresa(p_cod_empresa), wmsr130_set_cod_config_gs1_128(m_config_gs1_128 ), wmsr130_set_depositante(mr_movimento.deposit),wmsr130_add_cod_barras_gs1_128(ma_cod_barras[l_ind+1]);
      2. Chamar a função wmsr130_decodifica_gs1_128() que irá retornar TRUE/FALSE e Mensagem de processamento. 
      3. Se retornar FALSE deverá exibir a mensagem de erro retornada seguindo padrões de mensagens de erro de coletor e chamar a função WMS6214_input_gs1_128() que deverá retornar l_status. Se l_status for FALSE deverá interromper o movimento.
      4. Se o retorno for TRUE, então deverá buscar os atributos de SKU e/ou Item lidos chamando a função wmsr130_get_cod_barras_sku() e/ou wmsr130_get_item_depositante().
      5. Se tanto código de barras quanto item depositante retornarem nulo deverá ser chamada a função WMS6214_input_gs1_128()

  3. Função wms6214_coleta_quantidade_sku_item().
    1. Antes da chamada da função wmsr41_entrada_dimensionais_picking() deverá verificar se m_config_gs1_128 é maior que zero, se for deverá chamar a função passando tipo entrada igual a 2. O tratamento da leitura do GS1 será feito dentro da função wmsr41.

  4. Função WMS6214_input_gs1_128(), função para gerenciamento da entrada de etiquetas GS1-128.
    1. Deverão ser chamadas as funções wms6730_set_null(), wms6730_set_empresa(p_cod_empresa), wms6730_set_cod_config_gs1_128(m_config_gs1_128 ), wms6730_set_depositante(mr_movimento.deposit), wms6730_set_rotina_origem('wms6214'), wms6730_set_modo_exibicao() nesta ordem para carregar os parâmetros de processamento. 
    2. Chamar a função wms6730_solicita_cod_barras_gs1_128().
    3. Após a execução da função de entrada do código GS1-128 deverão ser resgatados o código de barras do SKU por meio da função wmsr130_get_cod_barras_sku() e atribuír a variável ma_cod_barras[l_ind+1].  Ou, se wmsr130_get_cod_barras_sku() retornar em branco, deverá chamar a função wmsr130_get_item_depositante() e atribuir o item depositante a uma variável modular, que será utilizada na validação do item do processo de movimentação.
    4. Se ambos os retornos forem em branco deverá exibir a mensagem de erro "Etiqueta nao confere." e retornar FALSE.
    5. Para validação do código de barras do SKU deverá ser chamada a função wms6214_valida_etiqueta_sku_item(ma_cod_barras[l_ind+1])
      1. Se o retorno de l_qtd_item_sku for igual a zero (0) deverá emitir a mesma mensagem que é exibida atualmente quando a etiqueta lida é uma SKU/EAN.
      2. Dentro do IF mr_movimento.funcao = 4 THEN e se m_info_dimens_pick = 'S' deverá ser chamada a função WMSR41_entrada_dimensionais passando tipo_separacao 2 (separação lendo etiqueta SKU/EAU com GS1-128).
      3. Se o retorno for FALSO deverá voltar para o campo etiq_entrada.
  5. Função wms6214_controle_descarga(). No AFTER FIELD cod_barras_sku_eqpto_volume deverá ser prevista a leitura de uma etiqueta padrão GS1-128.
    1. Após a chamada das funções wms6214_existe_movimento_descarga()wms6214_valida_sku_mvto_descarga() é testado o l_status, que atualmente se for FALSE retorna para o campo cod_barras_sku_eqpto_volume. 
    2. Se o m_config_gs1_128 indicar que o depositante utiliza GS1 não deverá voltar para o input do campo e efetuar as mesmas validações que são feitas na entrada do campo SKU/EAN.
    3. Se a função de validação do código GS1 retornar um código de ITEM ou código de barras do SKU válidos, deverá chamar a função wms6214_valida_sku_mvto_descarga() passando como parâmetro o código do item ou o código de barras do SKU retornado.

Alteração WMSR41

  1. A função WMSR41_entrada_dimensionais deverá ser alterada para que a entrada dos dimensionais possa ser feita a partir da leitura da etiqueta GS1-128 informada no Input do campo etiq_entrada na função wms6214_coleta_etiqueta_sku_item ou através do acionamento da tecla de função F11/Ctrl-R. A função deverá receber do wms6214 a variável l_config_gs1_128.
    Antes de abrir a tela de entrada dos dimensionais deverá verificar se o tipo de entrada recebido é 2 ou 3, neste caso efetuar o processo a seguir:
    1. Se o tipo de entrada de dados for 2 deverá verificar se as informações de dimensionais foram coletadas no início da separação (ao informar a etiqueta EAN/SKU) chamando a função wmsr41_carrega_dimensionais_gs1_128(), a qual irá verificar quais dimensionais o item controla e carregar o array de dimensionais com os valores retornados pelas funções WMSR130 correspondente.

      1. Se a função retornar FALSE deverá continuar o processo abrindo a tela para que seja efetuada a entrada de uma etiqueta GS1 ou digitação manual dos dimensionais  (conforme protótipo 01). Neste caso, se algum dimensional foi preenchido pela função wmsr41_carrega_dimensionais_gs1_128(), o valor deverá ser apresentado na tela e o operador não poderá alterá-lo.

      2. Se a função retornar TRUE, indica que todos os dimensionais controlados foram informados na etiqueta e então deve efetuar a validação dos dimensionais chamando a função wmr41_valida_dimensionais(), se o retorno for FALSE, deverá retornar FALSE deste ponto. Se o retorno for TRUE e l_qtd_a_reservar for maior que zero, deverá efetuar o processamento de reservas como já é feito na rotina atual e efetuar o mesmo tratamento de retorno.
    2. Se o tipo de entrada for 3 não foi efetuada leitura anterior de etiqueta GS1-128, então neste caso deve abrir direto a tela de entrada de dimensionais com o campo GS1-128 na tela (conforme protótipo 01).
    3. No afterField, se o campo informado for cod_gs1_128 deverá ser feita a decodificação do GS1 lido para verificar se todos os dimensionais já estão informados, para isso deverá:
      1. Chamar as funções a segui na seqüência: wmsr130_set_null(), wmsr130_set_modo_exibicao(0), wmsr130_set_empresa(l_empresa), wmsr130_set_cod_config_gs1_128(l_config_gs1_128 ), wmsr130_set_depositante(mr_movimento.deposit), wmsr130_add_cod_barras_gs1_128(ma_dimensional[l_arr_curr].val_dimensional);
      2. Chamar a função wmsr130_decodifica_gs1_128() que irá retornar TRUE/FALSE e Mensagem de processamento. 
      3. Se o retorno for TRUE deverá chamar a função wmsr41_carrega_dimensionais_gs1_128() e se está função retornar TRUE, deverá sair do Input e continuar o processamento.
      4. Caso wmsr41_carrega_dimensionais_gs1_128() retorne FALSE, deverá chamar a função
  2. A função wmsr41_dimensionais_sku_endereco() deverá ser alterada para que o primeiro campo do array de dimensionais seja o Código de barras GS1-128, quando o tipo de entrada for 2 ou 3. Para isso a função também deverá receber como parâmetro o l_tipo_entrada. 

    Bloco de código
    languagejs
    titlewmsr41_dimensionais_sku_endereco
    LET l_ind_dim = 1
    IF l_tipo_entrada = 2 
        OR l_tipo_entrada = 3 THEN
       LET ma_dimensional[l_ind_dim].label_dimensional = 'COD.BAR GS1-128 '
       LET ma_dimensional_aux[l_ind_dim].campo = "cod_gs1_128"
       LET l_ind_dim = l_ind_dim + 1
    END IF
  3. Nova função wmsr41_input_gs1_128().

    Semelhante a função WMS6214_input_gs1_128, porém no retorno da entrada do GS1, deverá chamar a função wmsr41_carrega_dimensionais_gs1_128().


  4. Nova função wmsr41_carrega_dimensionais_gs1_128()

    1. Deverá ser criada uma variável para controlar o número de dimensionais que o item mantém e se o valor retornado da função WMSR130. Ao final desta função deverá ser possível identificar se para todos os dimensionais controlados pelo item foram retornados valores válidos. Se a quantidade de dimensionais for diferente da quantidade de valores válidos retornados, o retorno da função deverá ser FALSE, senão retorna TRUE.
    2. Criar um for do array de dimensionais.
    3. Para cada item do array deverá verificar se o dimensional é válido e testar de que atributo se trata.
      1. Chamar a função GET da tabela abaixo e armazenar o valor na variável val_dimensional do array.
      2. Verificar se o valor retornado é valido conforme cada atributo do dimensional.
      3. Os dimensionais coletados deverão ser armazenados nas variáveis modulares mr_dimensionais correspondente.
      4. Os dimensionais lidos e validados deverão ser armazenados na tabela temporária de dimensionais, para que posteriormente seja efetuada a movimentação de estoque e remanejamento de reservas.
      5. O processamento das reservar deverá ocorrer quando for acionada a tecla Control-P (coleta parcial) ou quando a quantidade separada atender a quantidade solicitada no WMS6214.
    4. Quando o modo de separação for 1 (um) indica que o modo de separação é obrigando informar a quantidade e neste caso não é informado o EAN/SKU. Neste caso deve, se o depositante do processo de movimentação possui configuração de código de barras GS1-128, então na entrada dos dados dos dimensionais deverá ser prevista a entrada de uma etiqueta GS1-128 ao invés da entrada manual dos dimensionais.
      1. Chamar a função wms6730_solicita_cod_barras_gs1_128() (deve chamar as funções SET como na função WMS6214).
      2. Verificar se o código do item depositante ou SKU foram lidos na etiqueta e se foram deve ser validado com o movimento de separação.
      3. Efetuar a validação dos dimensionais e verificar se os dimensionais que o item controla foram informados.

 

DimensionalFunção GETRetorno inválido
Lotewmsr130_get_lote()Branco " "
Volumewmsr130_get_volume()0
Data de produçãowmsr130_get_data_producao()'1900/01/01'
Data de validadewmsr130_get_data_validade()'1900/01/01'
Comprimentowmsr130_get_comprimento()0
Largurawmsr130_get_largura()0
Diâmetrowmsr130_get_diametro()0
Número peçawmsr130_get_numero_peca()Branco " "
Número sériewmsr130_get_numero_serie()Branco " "

Protótipo de Tela

 Protótipo 01


 

Fluxo do Processo

 



Modo de Separação: informando quantidade;

Funcionalidade endereço: somente Picking

Informar dimensionais na separação picking: Sim.


 

Modo de Separação: informando SKU/EAN;

 

Funcionalidade endereço: Armazém ou Picking (informa etiqueta SKU/EAN)

 


Informar dimensionais na separação picking: Sim (entrada dimensionais).

 

  • Se no momento que foi informada o campo SKU/EAN foi lida uma etiqueta GS1-128 e foram resgatadas as informações dos dimensionais, a validação dos mesmos será feita sem abrir a tela de entrada dos dimensionais, caso as informações estejam incompletas, então abre a tela de entrada de dimensionais.



Descarga

Pode ser informado Equipamento, SKU, Item ou ainda Volume. Se a etiqueta informada não for nenhum desses tipos e estiver parametrizado que o depositante utiliza GS1-128, então tenta validar a etiqueta GS1.

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 


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