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.
Comentário: Migration of unmigrated content due to installation of a new plugin

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

  

Informações Gerais

 

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

Especificação

Produto

WMS

Módulo

Logix

Segmento Executor

Supply Chain - Logística - 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

.

   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

    somente 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.

 

  1.  

    Nota
    titleImportante:

    Durante a homologação de requisito com o cliente, o mesmo solicitou alteração na ordem de entrada dos campos em tela. No fluxo atual, a entrada de dados nesta forma de separação segue na ordem Quantidade > Dimensionais.

    Esta ordem será alterada neste requisito para Dimensionai > Quantidade quando a separação estiver sendo efetuado com informação de dimensionais no Picking.

    Favor considerar esta nova ordem nos pontos onde é mencionada e demonstrada a sequência de entrada de dados na separação por quantidade com dimensionais.

  2. 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.

 

WMS6730Criação]

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMS6214

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

WMSR41

[

 Tela

 

Alteração WMS6214

Função wms6214_coleta_mercadorias() deverá ser alterada para verificar se o depositante do processo utiliza codificação GS1-128.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().
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.
  • Se o depositante não possuir configuração válida (m_config_gs1_128 = 0) o Input não deve ser alterado.
  • 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:
  • 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]);
  • Chamar a função wmsr130_decodifica_gs1_128() que irá retornar TRUE/FALSE e Mensagem de processamento. 
  • 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.
  • 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().
  • Se tanto código de barras quanto item depositante retornarem nulo deverá ser chamada a função WMS6214_input_gs1_128()
    Função wms6214_coleta_quantidade_sku_item().

    Alteração]

     

    RNL

    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 e 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 a função wmsr130_set_null(), wmsr130_set_empresa(p_cod_empresa), wmsr130_set_depositante(mr_movimento.depositante), wmsr130_set_cod_config_gs1_128(m_config_gs1_128 ), 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, limpar o campo ma_cod_barras[l_ind+1]  e voltar o foco para o campo etiq_entrada.
        4. Se o retorno for TRUE, então deverá buscar o código de barras do SKU chamando a função wmsr130_get_cod_barras_sku().
        5. Se o retorno for válido para um dos atributos deverá chamar a função wms6214_valida_etiqueta_sku_item() passando o valor retornado acima.
        6. Senão, se tanto código de barras retornar nulo deverá ser chamada a função WMS6214_input_gs1_128() (detalhada abaixo). Se o retorno for FALSE deve manter o foco no campo etiq_entrada.
        7. Quando for efetuada a validação de uma etiqueta GS1-128 deverá ser armazenado um status (true/false) em uma variável local que será utilizada em testes posteriores.
        8. Dentro do IF mr_movimento.funcao = 4 THEN deverá testar se m_info_dimens_pick = "S"  e se foi lido um código gs1_128, e então chamar a função wmsr41_entrada_dimensionais_picking() passando tipo entrada igual 2. Dentro desta função serão verificados os dimensionais do item e armazená-los na tabela temporária tt_dimens_pkg.

          Bloco de código
          languagejs
          firstline1
          titlewms6214_coleta_etiqueta_sku_item(
          linenumberstrue
          IF NOT wmsr41_entrada_dimensionais_picking(p_cod_empresa,
                    mr_movimento.endereco_origem,
                    mr_movimento.item,
                    mr_movimento.sku, 
                    {deverá controlar a quantidade de item de acordo com o parâmetro controla_sku},                                                                    
                    mr_movimento.processo_moviment,
                    2,
                    TRUE ) THEN               
        9. Se o retorno for FALSE deverá exibir a mensagem de erro CALL wms6214_help(log9900_conversao_caracteres_acentuados(log0030_mensagem_get_texto())) e não contabilizar as variáveis l_qtd_itens_coletados e l_qtd_dimensional

        10. Se o retorno for TRUE continua o processamento do Input.
      3. Na execução do On Key (f11,control-r) deverá ser feito o controle de leitura de etiqueta GS1-128.
        1. Antes da chamada wmsr41_entrada_dimensionais_picking() deverá ser efetuado o teste do indicador de leitura de etiqueta GS1-128.

        2. Se foi efetuada a leitura de uma etiqueta GS1-128 deverá passar como parâmetro tipo de entrada igual 3, pois deverá validar quais dimensionais foram lidos através da GS1-128, e caso falte algum dimensional, deverá abrir a tela de entrada.

        3. Após o retorno da função deverá ser validado se a tela de entrada de dimensionais foi aberta ou não, caso todos os dimensionais tenham sido informados via GS1, então deverá apenas exibir uma mensagem em tela para avisar ao operador que a confirmação dos dimensionais ocorreu com sucesso: "Leitura dimensionais realizada com sucesso."

    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 não confere." e retornar FALSE.
      5. Para validação do código de barras do SKU:
        1. Se o valor retornado da função wmsr130_get_cod_barras_sku() for válido deverá chamar a função wms6214_valida_etiqueta_sku_item(ma_cod_barras[l_ind+1])
        2. Senão, deverá verificar se existe apenas um SKU relacionado ao item depositante e buscar o código de barras para que seja atribuido a ma_cod_barras[l_ind+1] que também deverá ser único.

          SELECT wis.sku
          FROM wms_item_sku wis,
          wms_item_complemento wic
          WHERE wis.empresa = p_cod_empresa
          AND wis.empresa = wic.empresa
          AND wis.item= wic.item
          AND wic.deposit =  wis.item
          AND wic.item_deposit = m_item_deposit (item retornado da função wmsr130_get_item_depositante())

          Se retornar mais de um registro ou outro erro de SQL deve apresentar erro: "Não foi possível encontrar SKU do item depositante informado: [item_deposit]"


        3. Senão busca o código de barras fazendo o select: wms_item_sku_cod_barras
          SELECT cod_barras
          FROM wms_item_sku_cod_barras
          WHERE empresa = p_cod_empresa
          AND item = m_item_deposit
          AND sku = wis.sku    

          Se retornar mais de um registro ou outro erro de SQL deverá apresentar a mensagem de erro: "Não foi possível encontrar COD BARRAS SKU do item depositante informado: [item_deposit]"

      6. Se o retorno de l_qtd_item_sku for igual a zero (0) ou o retorno da função for FALSE, deverá emitir a mesma mensagem que é exibida atualmente quando a etiqueta lida é uma SKU/EAN e retornar FALSE
      7. Se a validação for correta então retorna TRUE.

    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 e o l_tipo_entrada poderá receber os valores 0 (processamento separação por SKU sem GS1), 1 (separação informando quantidade), 2 (separação por SKU com GS1, apenas valida saldo), 3 (separação por SKU com GS1 e efetuando validação completa acionada via F11 ou no final da separação).
      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 
    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.
  • 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.
  • 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. 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).
        1. No afterField, se o campo informado for cod_gs1_128 deverá ser chamada a função wmsr41_carrega_dimensionais_gs1_128() seguindo a mesma regra do item a.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 1
      IF l_tipo_entrada = 2 
           IFOR l_tipo_entrada = 23 THEN
         LET ma_dimensional[l_ind_dim].label_dimensional =  OR l_tipo_entrada = 3 THEN'COD.BAR GS1-128 '
         LET ma_dimensional_aux[l_ind_dim].campo = "cod_gs1_128"
         LET l_ind_dim = l_ind_dim + 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_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.
     
    1. 1
      END IF
    2. 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().


    3. Nova função wmsr41_processa_dimensionais_gs1_128().

      1. Limpar o array de dimensionais ma_dimensional e ma_dimensional_aux

      2. Efetuar cursor da tabela tt_tt_dimens_pkg filtrando por dimensionais igual m_dimensionais_anterior. 

      3. Carregar os valores do cursor no array ma_dimensional e ma_dimensional_aux (simulando o input da função wmsr41_entrada_dimensionais_picking().

      4. Chamara a função wmsr41_valida_dimensional_picking().

      5. Se retornar l_qtd_a_reservar > 0 deverá chamar a função wmsr41_processa_reserva_dimensional() (efetuar mesmos tratamentos de erro da função wmsr41_entrada_dimensionais_picking()).


    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, e se não foi retornado nenhum valor das funções wmr130 deve retornar -1.
      2. Chamar função  wmsr130_get_cod_barras_sku() e/ou wmsr130_get_item_depositante(), se o retorno de uma das duas funções for válido, deverá efetuar validar se o item/sku da etiqueta GS1 é o mesmo do processo de movimentação. Se ocorrer divergência, deverá exibir mensagem de erro e retornar false.
      3. Criar um for do array de dimensionais.
      4. 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 ma_dimensional correspondente.

    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

    Image Removed

     

    Protótipo 01

    Image Added

     

    Fluxo do Processo

    Separação Informando Quantidade

     

    Image Added


    Separação Informando SKU

     

    Image Added

    Fluxo de Descarga

    Fluxo do Processo

     Image Removed

    Image Modified

    Modo de Separação:

    informando quantidade;

    Informando Quantidade

    • Funcionalidade

    endereço
    • Endereço:

    somente
    • Somente Picking

    • Informar

    dimensionais
    • Dimensionais na

    separação picking
    • Separação Picking: Sim.

     

     

    Modo de Separação:

    informando

    Informando SKU/EAN

    ;

     

    • Funcionalidade

    endereço
    • Endereço: Armazém ou Picking (

    informa etiqueta
    • Informa Etiqueta SKU/EAN)

     

     

    • Informar

    dimensionais
    • Dimensionais na

    separação picking
    • Separação Picking: Sim (

    entrada dimensionais
    • Entrada Dimensionais).

    •  

      1. Se no momento que foi
    informada
      1. informado 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
      1. efetuada sem abrir a tela de entrada dos dimensionais
    , caso
      1. .
      2. 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
    • destes 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.                                                             

    ...