Páginas filhas
  • ER_LOGWMS01-31_Configuracao_GS1_128

Informações Gerais

Especificação

Produto

Logix

Módulo

WMS

Segmento Executor

Supply Chain - Logística - Inovação

Projeto1

LOGWMS01 - Supply Chain - WMS

IRM\Épic1

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

Requisito\Story1

LOGWMS01-31 - Configuração.

Subtarefa1

LOGWMS01-72 - Gerar Especificação   

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

Esta Story (LOGWMS01-31) é a primeira 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:

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

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

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

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

Detalhar o que é o padrão de código de barras GS1-128 e as respectivas alterações a serem realizadas no sistema Logix WMS, referentes à parametrização e configuração da funcionalidade de leitura e geração de código de barras deste padrão.


Definição da Regra de Negócio

Encarte Técnico GS1-128

Neste documento, além da especificação de alteração de sistema, será explicado o funcionamento do padrão de código de barras GS1-128 com base no Encarte Técnico GS1-128, disponibilizado pela GS1 Brasil em seu site.

Para mais detalhes ou confirmação de alguma informação aqui detalhada, utilize o encarte técnico como referência.

  1. Contextualização Código de Barras GS1-128

    O padrão de código de barras GS1-128 é baseado em um conceito que podemos chamar de "chave, valor". Sendo que as "chaves" são predefinidas e fazem parte do padrão GS1-128 conforme pode-se consultar no Encarte Técnico nos capítulos 9, 9.1, 9.2, 9.3, 9.4 e de uma forma mais simples e direta nesta página http://www.gs1-128.info/application-identifiers/ . 

    A tabela do padrão GS1-128 além de especificar o significado de cada "chave", define o respectivo formato e tamanho para cada valor.
    O tamanho total do código de barras é variável e pode conter diversas informações ("chaves") dentro dele. Os campos "chave" são indicados visualmente entre parênteses e correspondem a tabela do padrão GS1-128. No encarte técnico estas informações "chave" são chamadas de AI - Application Identifiers. Abaixo uma imagem ilustrativa e explicativa.




    Além das informações mostradas na imagem acima é importante comentar que os parênteses não são "impressos" no código de barras e, consequentemente, não são retornados na leitura de um código de barras GS1-128. O que pode ser lido do código de barras são os caracteres chamados de identificadores de simbologia e caracteres que indicam fim de um campo de tamanho variável. Sendo assim, o código acima exemplificado, ao ser lido por um coletor, poderia retornar o valor da imagem abaixo:



    A apresentação ou não dos caracteres de simbologia e de fim de campo variável são configurados no sistema de leitura do coletor de dados. Para aplicação do GS1-128 no WMS Logix, somente o identificador de fim de campo variável deverá ser configurado para ser impresso no código de barras.  Abaixo alguns exemplos de configuração para coletores, de modo a apresentar ou não as informações de identificador de simbologia, identificador de fim de campo variável, entre outros.
    1. http://www.exactsoftware.com/docs/docview.aspx?documentid={9b98ef7f-79d9-40ea-bf6c-cb5233c9ca39}&NoHeader=1&NoSubject=1
    2. http://www.exactsoftware.com/docs/docview.aspx?documentid={872f8f77-ce2b-4166-9637-de750cbc5c24}&NoHeader=1&NoSubject=1
    3. http://www.exactsoftware.com/docs/docview.aspx?documentid={de36eeae-6b8d-4242-91ad-54123298e5ad}&NoHeader=1&NoSubject=1
    4. http://hsm.force.com/publickb/articles/HSM_Article/How-to-substitute-the-FNC1-conversion-for-UCC-EAN128-in-CK71

  2. Criação e alteração de rotinas no WMS Logix.
    1. Para preparar o sistema para leitura dos códigos de barras GS1-128 serão criadas e alteradas as rotinas conforme abaixo:
      1. WMS6727 (novo) - Criar novo programa de cadastro com o objetivo do usuário configurar o código de barras GS1-128, com suas respectivas chaves e seu relacionamento com os campos tratados pelo WMS Logix, aqui denominados de atributos Logix. 
        • WMS6730 (novo) - Função responsável pela manipulação da interface da leitura de códigos de barras GS1-128.
      2. WMS6171 - Inclusão de novo campo para definir o formato das datas no GS1-128 para um item em específico.
      3. WMS60023 - Alterar opção "Outros" do Contrato do depositante possibilitando ao usuário relacionar uma configuração de código de barras GS1-128.
      4. WMS6770 - Alterar programa de atualização de cargas de registros padrões.
      5. WMS6728 (novo) - Criar um novo programa de coletor que permita ao usuário testar a leitura de códigos de barras GS1-128, baseado nas configurações realizadas no WMS6727.
        • WMSR130 (novo) - Criar função RNL responsável pelo GS1-128.
      6. WMS6729 (novo) - Criar novo programa desktop que permita ao usuário testar a leitura de códigos de barras GS1-128, baseado nas configurações realizadas no WMS6727.


  3. WMS6727 (novo) - Criar um novo programa de cadastro com o objetivo do usuário configurar o código de barras GS1-128, com suas respectivas chaves e seu relacionamento com os campos tratados pelo WMS Logix.

    1. Antes dos detalhes da criação efetiva do programa será apresentado abaixo o modelo de dados para representar uma configuração de código de barras GS1-128.



    2. Abaixo é possível visualizar um exemplo de dados cadastrados demonstrando o relacionamento entre as entidades acima mencionadas;


    3. O novo programa WMS6727 deverá possuir o layout conforme abaixo:



      1. Abaixo descritivo dos campos de tela com seus respectivos campos no banco de dados:
        • Cabeçalho do formulário → wms_cod_barras_gs1_128
          • Código configuraçãoconfig_gs1_128→ Código gerado automaticamente.
          • Descrição configuraçãodes_config_gs1_128 → Campo de texto livre obrigatório de até 80 caracteres.
          • Descrição reduzida → des_res_config_gs1_128 → Campo de texto livre obrigatório de até 18 caracteres.
          • Caractere indicador → caractere_indicador  → Campo de texto livre não obrigatório de até 1 caractere.
          • Caractere de código  → caractere_indicador → Campo de texto livre não obrigatório de até 1 caractere.
          • Caractere modificador → caractere_modificador  → Campo de texto livre não obrigatório de até 1 caractere.
          • Caractere de simbologia  → identificador_simbologia → Campo de texto livre não obrigatório de até 3 caracteres. Quando vazio, este campo deverá ser sugerido para o usuário, sendo a concatenação dos campos Caractere indicador + Caractere de código + Caractere modificador.
          • Caractere separador → caractere_separador → Campo de texto livre obrigatório de até 1 caractere.
          • Qtd. máxima de cód. barras → qtd_max_cod_barras → Campo numérico não obrigatório. Campo deverá ser maior que 0 (zero), com valor máximo de 10. Este campo será utilizado nos programas de leitura de cód. barras GS1-128 para confirmar automaticamente a operação de leitura do(s) cód barras.
          • Estrutura do cód. barras → não possui campo na tabela → Campo a ser calculado após informar cada linha dos itens do formulário. O objetivo deste campo é apresentar de forma visual a estrutura do cód. barras GS1-128 que está sendo gravado. Para criação da função responsável por calcular este campo, seguir os passos abaixo:
            1. Antes de iniciar um novo cálculo para o campo, limpar o campo.
            2. Fazer uma estrutura de repetição para percorrer cada item do formulário (cada AI).
            3. Para cada iteração da estrutura de repetição realizar os procedimentos abaixo:
              1. Colocar o campo A.I do item do formulário entre parênteses. Se o A.I  tiver o campo "Indica casas decimais" = 'S', então adicionar 'y' logo após o código do A.I. Tanto o A.I quando o 'y' deverão estar entre parênteses. Conforme exemplo da imagem do item c).
              2. De acordo com o tipo do campo e tamanho preencher os caracteres abaixo da seguinte forma:
                1. Se "A.I" = 'AN' então repetir a letra 'X' tantas vezes informado no campo tamanho. Se o campo for variável repetir a letra 'X' cinco vezes e adicionar três pontos ao final. Conforme exemplo da imagem do item c);
                2. Se "A.I" = 'NU' então repetir o número 9 tantas vezes informado no campo tamanho.Se o campo for variável repetir o número cinco vezes e adicionar três pontos ao final. 
                3. Se "A.I" = 'AL' então repetir a letra 'A' tantas vezes informado no campo tamanho. Se o campo for variável repetir a letra 'A' cinco vezes e adicionar três pontos ao final.
                4. Se "A.I" = 'DT' então apresentar 'AAMMDD'.
                5. Se "A.I" = 'DP' então apresentar 'DDMMAA'.
                6. Se "A.I" = 'DA' então apresentar 'MMDDAA'.
        • Itens do formulário  → wms_cod_barras_item_gs1_128
          • A.I  → identificador_aplicacao    → Campo de texto livre obrigatório de até 5 caracteres. 
            1. Uma validação necessária para este campo é não permitir que parte dos números inicias de um A.I seja o código de um outro A.I. 
              • Exemplos: 
                1. Não deverá ser possível cadastrar um AI 12 e um outro AI 120.
                2. Não deverá ser possível cadastrar um AI de valor 1 e outro de valor 10. 
              • Ao realizar a validação e identificar a inconsistência, apresentar a seguinte mensagem ao usuário:
          • Descrição  → des_identificador_aplicacao → Campo de texto livre obrigatório de até 80 caracteres.
          • Tipo de dados → tip_dado  → Campo do tipo combobox com valores predefinidos. 
            • As opções disponíveis para o combobox devem ser :
              • NU - NUMÉRICO.
              • AL - ALFABÉTICO.
              • AN - ALFANUMÉRICO.
              • DT - DATA.
              • DP - DATA (DDMMAA).
              • DA - DATA (MMDDAA).
            • Quando campo do tipo DT, DP ou DApreencher o campo tamanho com 6 e não permitir alteração.
            • Quando selecionado "NU-NUMÉRICO" permitir alterar o campo checkbox "Indica casa decimal". Quando diferente de "NU-NUMÉRICO" não permitir alterar o campo "Indica casa decimal"Atentar para que caso o usuário informe "NU-NUMÉRICO", marque o checkbox e depois altere para um tipo de dados diferente de "NU-NUMÉRICO", o campo "Indica casa decimal" seja então desmarcado.
          • Tipo de tamanho → tip_tamanho → Campo do tipo combobox com valores pré-definidos. As opções disponíveis para este campo devem ser:
            • F - FIXO
            • V - VARIÁVEL
          • Tamanho → tamanho  → Campo numérico e obrigatório somente quando Tipo de tamanho = FIXO. Quando Tipo de tamanho = VARIÁVEL este campo não deverá possuir valor. Caso o tipo de dados este campo deverá assumir o valor 6 e não permitir modificação.
          • Indica casa decimal → indica_decimais → Campo do tipo checkbox. Quando marcado deverá ter o valor 'S' ,quando desmarcado deverá ter o valor 'N'. Campo somente poderá ser marcado ('S') quando o tipo de dados for igual a 'NU-NUMÉRICO'.
          • Utiliza no processo?  → utiliza_processo → Campo do tipo checkbox. Quando marcado deverá ter o valor 'S', quando desmarcado deverá ter o valor 'N'. Ao desmarcar este campo, atribuir o valor INUTILIZADO e bloquear a edição do campo Atributo Logix.
          • Atributo Logixatributo_logix → Campo do tipo zoom (zoom_wms_atributo_logix_gs1_128). O zoom deverá apontar para a tabela wms_atributo_logix_gs1_128 e apresentar as colunas atributo_logix e descrição, desconsiderando o atributo de valor 'INUTILIZADO'. Uma validação a ser realizada no preenchimento deste campo é se o tipo de dados do atributo Logix é compatível com o tipo de dados do identificador de aplicação informado no campo "Tipo de dado". Caso exista uma das combinações listadas abaixo, o usuário deverá ser notificado "Tipo de dado informado para o A.I é incompatível com o tipo de dado do atributo Logix.". Além do tipo de dados, o tamanho do campo informado não deverá exceder o tamanho do atributo Logix. Para isso validar se wms_cod_barras_item_gs1_128.tamanho > wms_atributo_logix_gs1_128.tamanho; se sim usuário deverá ser notificado "Tamanho informado para o A.I excede tamanho suportado pelo atributo Logix.". Criar uma função para a validação do tipo de dado e outra para o tamanho. Chamar a função de validação do tipo de dados também para o campo "Tipo de dado". A função de validação do tamanho também deverá ser chamada para o campo "Tamanho".


      2. Todas as ações padrões para um formulário de cadastro deverão ser implementadas em seu formato padrão. Para a ação de exclusão, verificar se a configuração que está tentado excluir não está associado a um depositante.  Para isso, realizar a consulta SQL abaixo; caso retorne registros o usuário deverá ser notificado "Não é possível realizar a exclusão. Configuração de código de barras já associada a um contrato."
        • Verificar se permite exclusão de configuração de código de barras GS1-128
          select DISTINCT 1
             from wms_parametro_complementar 
            where empresa       = :empresa  (p_cod_empresa)
              and nom_parametro = 'cod_barras_gs1_128'
              and val_decimal   = :codigo (wms_cod_barras_gs1_128.codigo)
      3. Além das ações padrões do formulário, existe um botão   para que o usuário possa efetuar leituras testes de códigos de barras GS1-128 com base na configuração cadastrada. Sendo assim, ao clicar em testar o formulário WMS6729 deverá ser aberto. O formulário WMS6729 é um novo formulário, também previsto nesta Especificação de Requisitos, no item 8.

      4. Na abertura do formulário (wms6727_after_load) deverão ser efetuadas duas verificações conforme abaixo:
        • Existem registros na tabela wms_atributo_logix_gs1_128? . Caso não exista, os valores padrões para os atributos Logix deverão ser carregados. Mais detalhes abaixo, nos subitens:
          • Implementar a carga dos atributos padrões na função wmsr130_atualiza_atributos_logix (forma de implementação detalhada em 7 b) );
          • Os valores padrões a serem carregados para os atributos Logix estão ilustrados abaixo:


        • Existem registros na tabela wms_cod_barras_gs1_128?. Caso não exista, questionar o usuário "Não foi encontrada nenhuma configuração de código de barras GS1-128. O sistema WMS Logix possui uma configuração padrão para códigos de barras GS1-128, deseja que ela seja gerada automaticamente?", sendo que a opção de resposta padrão deverá ser "Não". Caso o usuário apenas confirme a opção "Não", então nenhuma operação deverá ser realizada. Caso o usuário mude a opção padrão e confirme a mensagem, então uma carga de dados de valores padrões deverá ser realizada. Mais detalhes nos subitems mencionados abaixo:
          • Implementar a carga de valores padrões na função wmsr130_gera_configuracao_padrao_cod_barras_gs1_128() (forma de implementação detalhada em 7 b ).
          • Os dados padrões a serem incluídos estão demonstrados na imagem do item 3 b).

  4. WMS6171 - Inclusão de novo campo para definir o formato das datas no GS1-128 para um item em específico.
    1. Incluir o campo "Formato data GS1-128" para que o operador possa informar uma configuração de data diferente da configuração realizada para a configuração do Contrato. Este novo campo deverá gravar, editar e consultar a tabela man_inf_com_item. Utilizar as informações abaixo para realizar as operações de inclusão, alteração e consulta:

      Persistência de dados para o novo campo "Formato data GS1-128".
      man_inf_com_item
      (:empresa, :item, 'wms_fmt_data_gs1_128', 'Formato para datas no código de barras GS1-128',NULL,:valor sendo 'DT','DP', ou 'DA',NULL,NULL,NULL,NULL)
       
      DT  quando opção em tela = AAMMDD
      DP quando opção em tela = DDMMAA
      DA quando opção em tela = MMDDAA
       
      No record de tela, criar variável referente a coluna como fmt_data_gs1_128.


    2. Abaixo imagem demonstrando o resultado esperado após inclusão do novo campo.

    .
  5. WMS60023 - Alterar a opção "Outros" do Contrato do depositante, possibilitando ao usuário relacionar uma configuração de etiqueta GS1-128.
    1. Na imagem abaixo é possível visualizar o layout desejado para manutenção do relacionamento Código configuração GS1-128 x  Depositante. A tabela que deverá ser alimentada/consultada é a wms_parametro_complementar. Os campos a serem preenchidos são trans_parametro, depositante, nom_parametro = 'cod_barras_gs1_128', val_texto = 'Código da configuração GS1-128 ' e val_decimal com o código da configuração GS1-128 informado pelo usuário. O zoom (zoom_wms_cod_barras_gs1_128) do campo Configuração GS1-128 deverá ser carregado com o código e descrição da tabela wms_cod_barras_gs1_128. Lembrando que, ao realizar uma alteração, caso exista registro para o parâmetro e depositante, o valor do parâmetro deverá ser apenas atualizado, não permanecendo mais de um registro para um mesmo depositante.

  6. WMS6770 - Alterar o programa de atualização de cargas de registros padrões.

    1. O programa deverá ser alterado para incluir a opção de atualização das informações de atributos Logix para o código de barras GS1-128. Sendo assim, conforme imagem abaixo, uma nova opção chamada "Atributos Logix GS1-128" deverá ser disponibilizada ao usuário. Ao marcar esta opção e processar, a tabela wms_atributo_logix_gs1_128 deverá ser atualizada. O método para realizar esta atualização está descrito no item 7 b), função wmsr130_atualiza_atributos_logix().




  7. WMS6728 \ WMS6730 (novo) - Criar um novo programa de coletor que permita o usuário testar a leitura de códigos de barras GS1-128 baseado nas configurações realizadas no WMS6727.
    1. O novo programa de coletor de dados para teste de leitura de código de barras GS1-128 deverá ter o layout conforme abaixo:

      1. Para tela número 1 deverão ser listadas todas as configurações de GS1-128 existentes na tabela wms_cod_barras_gs1_128. O usuário poderá navegar para escolher uma configuração e pressionar ENTER para confirmar a seleção e ser direcionado a tela 2. A tela número 2 deverá ser acionada pela nova função WMS6730. Ao pressionar F10 a tela 1a deverá ser exibida. Ao pressionar ESC, o programa deverá ser encerrado.
      2. Para a tela número 2 deverá ser esperado a leitura de vários códigos de barras. Vários códigos de barras são permitidos, pois existem situações onde uma mesma embalagem pode possuir mais de um código de barras GS1-128 para exibir todas as informações do produto/embalagem. Sendo assim, o objetivo é que estes vários códigos de barras não possuam A.I repetidos, pois devem representar atributos diferentes de uma mesma embalagem/produto (esta validação estará na função de leitura dos códigos de barras detalhado no fluxograma do item c) )
      3. Ainda na tela de número 2, durante a leitura de cada código de barras, não permitir a leitura de códigos de barras repetidos, caso  o usuário leia duas vezes o mesmo código de barras o campo deverá ser limpo e posicionado novamente no mesmo campo para nova leitura. A cada leitura o campo qtd_max_cod_barras deverá ser consultado para verificar se a quantidade de códigos de barras lidos é igual a quantidade informada neste campo. Quando estas duas quantidades forem iguais, a leitura dos códigos de barras deverá ser confirmada automaticamente, como se o usuário tivesse pressionado F4 para confirmação. Caso a quantidade de códigos de barras lidos seja inferior a quantidade cadastrada na configuração, o usuário deverá pressionar a tecla de função F4 para confirmar a conclusão de leitura dos códigos de barras e disparar a decodificação das informações. Os procedimentos (principais) abaixo deverão ser realizados por meio do WMS6730:
        • Acionar a função wmsr130_set_null() para que um novo processo de decodificação de código de barras seja iniciado.
        • Acionar a função wmsr130_set_empresa(l_empresa) para configurar para qual empresa o processo será realizado.
        • Acionar a função wmsr130_set_cod_config_gs1_128(l_cod_config_gs1_128) para configurar o modelo na qual o processo será realizado.
        • Acionar a função wmsr130_add_cod_barras_gs1_128(l_cod_barras_gs1_128) para cada código de barras informado pelo usuário.
        • Acionar a função wmsr130_set_modo_exibicao(1) para configurar as mensagens em modo BATCH.
        • Acionar a função wmsr130_decodifica_gs1_128() para que as informações do código de barras sejam lidas. A função poderá retornar sucesso ou falha. No caso de falha apresentar a mensagem de erro conforme exemplificado nas telas 4 e 5. Caso seja sucesso, apresentar as informações lidas conforme tela 3.
        • A tela 3 apresenta os atributos WMS Logix da tabela wms_atributo_logix_gs1_128 com os respectivos valores obtidos através da função wmsr130_decodifica_gs1_128(). Para capturar a informação de cada atributo utilizar os métodos wmsr130_get_<<nome_atributo>> que deverão ter sido carregados na execução do método wmsr130_decodifica_gs1_128().

    2. Abaixo o detalhamento de cada função do wms6730 e wmsr130
Função / Método (wms6730)Parâmetros EntradaProcessamentoParâmetros Saída
wms6730_set_null()<nenhum>Todas as variáveis de controle do método deverão ter seus valores reiniciados para seus valores padrões.<nenhum>
wms6730_set_empresa()l_empresa CHAR(2)Deverá alimentar uma variável modular m_empresa para que seja utilizada nos demais métodos. O valor padrão desta variável, caso nula, deverá ser p_cod_empresa.<nenhum>
wms6730_set_cod_config_gs1_128()l_cod_config_gs1_128 INTDeverá alimentar uma variável modular m_cod_config_gs1_128.<nenhum>
wms6730_set_depositante()l_depositante CHAR(15)Deverá alimentar uma variável modular m_depositante e também alimentar m_cod_config_gs1_128 com o código da configuração de código de barras GS1-128 configurado para o depositante em wms_parametro_complementar.nom_parametro = 'cod_barras_gs1_128' and depositante = :l_depositante<nenhum>
wms6730_set_rotina_origem()l_rotina_origem CHAR(50)Deverá alimentar uma variável modular m_rotina_origem.<nenhum>
wms6730_solicita_cod_barras_gs1_128() Função central para abertura da tela, solicitando os códigos de barras GS1-128. Tela 2 da figura apresentada no item 7 a).<nenhum>
wms6730_processa_cod_barras_gs1_128() Função a ser chamada quando o usuário pressionar F4. Esta função, por consequência, deverá chamar os procedimentos mencionados no item 7 a) ii)<nenhum>
Demais funções necessárias para controle de tela. 
Função / Método (wmsr130)Parâmetros EntradaProcessamentoParâmetro Saída
wmsr130_set_null()<nenhum>Todas as variáveis de controle do método deverão ter seus valores reiniciados para seus valores padrões.<nenhum>
wmsr130_set_modo_exibicao()l_modo_exibicao SMALLINTDeverá alimentar uma variável modular m_modo_exibicao para que seja utilizada nos demais métodos. O valor padrão deverá ser 0 (zero), ou seja, deverá exibir mensagem ao usuário ON-LINE.<nenhum>
wmsr130_set_empresa()l_empresa CHAR(2)Deverá alimentar uma variável modular m_empresa para que seja utilizada nos demais métodos. O valor padrão desta variável, caso nula, deverá ser p_cod_empresa.<nenhum>
wmsr130_set_cod_config_gs1_128()l_cod_config_gs1_128 INTDeverá alimentar uma variável modular m_cod_config_gs1_128.<nenhum>
wmsr130_set_depositante()l_depositante CHAR(15)Deverá alimentar uma variável modular m_depositante e também alimentar m_cod_config_gs1_128 com o código da configuração de código de barras GS1-128 configurado para o depositante em wms_parametro_complementar.nom_parametro = 'cod_barras_gs1_128' and depositante = :l_depositante<nenhum>
wmsr130_add_cod_barras_gs1_128()l_cod_barras_gs1_128 CHAR(200)Deverá alimentar um array de record de códigos de barras a serem decodificados. Exemplo:

DEFINE ma_cod_barras_gs1_128 ARRAY[15] OF RECORD
cod_barras_gs1_128 CHAR(200)
END RECORD

<nenhum>
wmsr130_decodifica_gs1_128()<nenhum>No item c) existe um fluxograma detalhando o procedimento a ser realizado. No início da função, verificar se as variáveis modulares m_cod_config_gs1_128 e ma_cod_barras_gs1_128 estão preenchidas. Caso não estejam preenchidas, retornar FALSE e mensagem informando que não possui uma configuração de código de barras GS1-128 ou que não existem códigos de barras para serem decodificados (uma validação e retorno para cada variável). De modo geral, deverá existir um record modular para armazenar o valor para cada atributo a ser lido no código de barras. Exemplo:

DEFINE mr_atributos_logix_gs1_128 RECORD
item_depositante LIKE wms_item_complemento.item_deposit
cod_barras_sku LIKE wms_identif_estoque.cod_barras_sku,
unidade_medida LIKE unid_med.cod_unid_med,
qtd_itens_sku LIKE wms_item_sku.qtd_item,
qtd_sku LIKE wms_iden_estoque_conferencia.qtd_sku,

.....
END RECORD

Atenção para formatar a data conforme o tipo de dados, verificar se o item possui uma configuração específica pela  função wmsr130_get_fmt_data_item() (detalhada mais abaixo). Caso não possua uma configuração específica, utilizar o formato da própria configuração.

Retorno do tipo SMALLINT (TRUE\FALSE). Sendo que quando FALSE poderá ter mensagem de texto capturado pela função log0030_mensagem_get_texto
wmsr130_get_item_deposit()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.item_deposit carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_item_complemento.item_deposit
wmsr130_get_cod_barras_sku()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.cod_barras_sku carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_identif_estoque.cod_barras_sku
wmsr130_get_unidade_medida()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.unidade_medida carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo unid_med.cod_unid_med
wmsr130_get_qtd_itens_sku<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.qtd_itens_sku carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_item_sku.qtd_item
wmsr130_get_qtd_sku()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.qtd_sku carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_iden_estoque_conferencia.qtd_sku
wmsr130_get_tp_estoque()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.tipo_estoque carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_identif_estoque.tip_estoque
wmsr130_get_restricao_estoque()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.restricao_estoque carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo wms_identif_estoque.restricao
wmsr130_get_lote()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.lote carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.num_lote
wmsr130_get_volume()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.volume carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.num_volume
wmsr130_get_data_producao()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.data_producao carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.dat_hor_producao
wmsr130_get_comprimento()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.comrpimento carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.comprimento
wmsr130_get_largura()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.largura carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.largura
wmsr130_get_diametro()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.diametro carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.diametro
wmsr130_get_data_validade()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.data_validade carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.dat_hor_validade
wmsr130_get_numero_peca()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.numero_peca carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.num_peca
wmsr130_get_numero_serie()<nenhum>Retornar o valor da variável modular mr_atributos_logix_gs1_128.numero_serie carregada pelo método wmsr130_decodifica_gs1_128().Retorno do tipo estoque_lote_ender.num_serie
wmsr130_atualiza_atributos_logix()<nenhum>Deverá gerar uma carga padrão de registros na wms_atributo_logix_gs1_128 . Os registros a serem inseridos estão ilustrados no item 3 c) iii) . Por se tratar de uma atualização de informação padrão, pode-se limpar a tabela e incluir os registros novamente; atentar pois o campo Empresa deverá corresponder a empresa na qual o usuário está "logado". Transacionar a operação.Retorno do tipo SMALLINT (TRUE\FALSE). Sendo que quando FALSE poderá ter mensagem de texto capturado através da função log0030_mensagem_get_texto
wmsr130_gera_configuracao_padrao_cod_barras_gs1_128()
<nenhum>Deverá gerar uma carga padrão de registros nas tabelas wms_cod_barras_gs1_128 e wms_cod_barras_item_gs1_128. Os registros a serem inseridos estão ilustrados no item 3 b); atentar pois o campo empresa deverá corresponder a empresa na qual o usuário está "logado". Transacionar a operação.

Retorno do tipo SMALLINT (TRUE\FALSE). Sendo que quando FALSE poderá ter mensagem de texto capturado através da função log0030_mensagem_get_texto

wmsr130_get_fmt_data_item<nenhum>

Esta função deverá encontrar a informação do formato de data no código GS1-128 para um item específico. Existem duas formas de encontrar este valor:

  a. Quando a modular m_depositante possuir valor:

Caso o atributo item_depositante possua valor, utilizar a tabela wms_item_depositante filtrando por empresa, depositante, e pelo atributo item_depositante no campo item_deposit. Caso não encontre registros ou encontre mais de um, tentar através do atributo cod_barras_sku. Consultar a tabela wms_item_sku_cod_barras por empresa, depositante e cod_barras_sku. Caso não encontre registros ou encontre mais de um, desconsiderar o resultado. Relacionar ambas as consultas com a tabela man_inf_com_item através do campo empresa, item, informacao_compl= 'wms_fmt_data_gs1_128' e retornar o valor val_texto que é onde está armazenado o formato de data.

b.Quando a modular m_depositante não possuir valor:

Caso o atributo item_depositante possua valor, utilizar a tabela wms_item_depositante filtrando por empresa e pelo atributo item_depositante no campo item_deposit. Caso não encontre registros ou encontre mais de um registro, tentar através do atributo cod_barras_sku. Consultar a tabela wms_item_sku_cod_barras por empresa e cod_barras_sku. Caso não encontre registros ou encontre mais de um, desconsiderar o resultado. Relacionar ambas as consultas com a tabela man_inf_com_item através do campo empresa, item, informacao_compl= 'wms_fmt_data_gs1_128' e retornar o valor val_texto que é onde está armazenado o formato de data.


Retorno do tipo CHAR(2).


c. Fluxograma para leitura do código de barras GS1-128. O procedimento demonstrado abaixo deverá ser implementado na função wmsr130_decodifica_gs1_128() e deverá ser  realizado para cada código de barras recebido pela função wmsr130.

 

7. WMS6729 (novo) - Criar novo programa desktop que permita ao usuário testar a leitura de códigos de barras GS1-128, baseado nas configurações realizadas no WMS6727.

 Este novo programa deverá possuir os mesmos tratamentos efetuados para o WMS6728. Apenas o layout de tela será diferenciado para atender clientes que por ventura utilizem apenas programas PDVs ou desktops. O programa terá o padrão de formulário de processamento, com os botões de "Informar" e "Processar". Ao clicar em "Informar" o usuário deverá preencher os campos Configuração GS1-128 e os códigos de barras (até 8) no campo "Código de barras". Após ser informada a configuração e os códigos de barras, o usuário deverá "Confirmar" o preenchimento das informações (através do padrão ESC). Para que a leitura do código de barras seja efetuado, o usuário deverá clicar na opção "Processar". Ao processar a decodificação dos atributos, os campos inferiores de "Atributo" e "Conteúdo" deverão ser preenchidos com as informações encontradas. Caso algum erro seja encontrado, o usuário deverá ser notificado. Segue abaixo layout do programa.

 

 

 

  • Resumo das Rotina a Serem Criadas e Alteradas:

Rotina

Tipo de Operação

Regras de Negócio

WMS6727 - Configuração código de barras GS1-128.

[Criação]

  • Permitir realizar a configuração do código de barras GS1-128, relacionando identificadores de aplicação a atributos do WMS Logix.
WMS6730 - Função responsável pela interface de coletor de dados para códigos de barras GS1-128.[Criação]
  • Função responsável pela interface de coletor de dados para tratamento de códigos de barras GS1-128.
WMS6171 - Complemento do item[Alteração]
  • Permitir informar um formato de data específico para um item.

WMS60023 - Contrato opção outros

[Alteração]

  • Permitir realizar o relacionamento de uma configuração de código de barras GS1-128 a um depositante.

WMS6770 - Atualização dos registros padrões

[Alteração]

  • Permitir realizar a atualização de atributos WMS Logix para código de barras GS1-128.
WMS6728 - Teste de leitura de código de barras GS1-128[Criação]
  • Permitir realizar as leituras testes de códigos de barras GS1-128.

WMSR130 - Regras de negócio GS1-128

[Criação]
  • Tratar das regras de negócio associadas ao código de barras GS1-128.
WMS6729 - Teste de leitura de código de barras GS1-128 para desktop[Criação]
  • Permitir realizar as leituras testes de códigos de barras GS1-128.


  • Estrutura de Menus Para os Novos Programas:
    • WMS6727
Sistema"315" (WMS)
Área de aplicação9 - Logística
Nível 1 "10" (Etiquetas)
Nível 2"97" (Cadastros)
Nível 3"3"
Sequência1
Processowms6727
Tipo Processo2
TransaçãoWMS6727
Descrição Configuração código de barras GS1-128

 

    • WMS6728
Sistema"315" (WMS)
Área de aplicação9 - Logística
Nível 1 "13" (Coletores)
Nível 2"5" (Diversos)
Nível 3"5"
Sequência1
Processowms6728
Tipo Processo1
TransaçãoWMS6728
DescriçãoTeste de leitura de código de barras GS1-128.

 

    • WMS6729
Sistema"315" (WMS)
Área de aplicação9 - Logística
Nível 1 "10" (Etiquetas)
Nível 2"6"
Nível 3 
Sequência1
Processowms6729
Tipo Processo1
TransaçãoWMS6729
Descrição

Teste de leitura de código de barras GS1-128 para desktop



Dicionário de Dados

 


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