Informações Gerais
Especificação | |||
Produto | Logix | Módulo | WMS |
Segmento Executor | Supply Chain - Logística - Inovação | ||
Projeto1 | IRM\Épic1 | LOGWMS01-30 - Processamento via leitura código de barras GS1-128 | |
Requisito\Story1 | Subtarefa1 | ||
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 |
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.
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.- http://www.exactsoftware.com/docs/docview.aspx?documentid={9b98ef7f-79d9-40ea-bf6c-cb5233c9ca39}&NoHeader=1&NoSubject=1
- http://www.exactsoftware.com/docs/docview.aspx?documentid={872f8f77-ce2b-4166-9637-de750cbc5c24}&NoHeader=1&NoSubject=1
- http://www.exactsoftware.com/docs/docview.aspx?documentid={de36eeae-6b8d-4242-91ad-54123298e5ad}&NoHeader=1&NoSubject=1
- http://hsm.force.com/publickb/articles/HSM_Article/How-to-substitute-the-FNC1-conversion-for-UCC-EAN128-in-CK71
- Criação e alteração de rotinas no WMS Logix.
- Para preparar o sistema para leitura dos códigos de barras GS1-128 serão criadas e alteradas as rotinas conforme abaixo:
- 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.
- WMS6171 - Inclusão de novo campo para definir o formato das datas no GS1-128 para um item em específico.
- WMS60023 - Alterar opção "Outros" do Contrato do depositante possibilitando ao usuário relacionar uma configuração de código de barras GS1-128.
- WMS6770 - Alterar programa de atualização de cargas de registros padrões.
- 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.
- 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.
- 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.
- Para preparar o sistema para leitura dos códigos de barras GS1-128 serão criadas e alteradas as rotinas conforme abaixo:
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.
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.
Abaixo é possível visualizar um exemplo de dados cadastrados demonstrando o relacionamento entre as entidades acima mencionadas;
- O novo programa WMS6727 deverá possuir o layout conforme abaixo:
- 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ção → config_gs1_128→ Código gerado automaticamente.
- Descrição configuração → des_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:
- Antes de iniciar um novo cálculo para o campo, limpar o campo.
- Fazer uma estrutura de repetição para percorrer cada item do formulário (cada AI).
- Para cada iteração da estrutura de repetição realizar os procedimentos abaixo:
- 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).
- De acordo com o tipo do campo e tamanho preencher os caracteres abaixo da seguinte forma:
- 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);
- 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 9 cinco vezes e adicionar três pontos ao final.
- 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.
- Se "A.I" = 'DT' então apresentar 'AAMMDD'.
- Se "A.I" = 'DP' então apresentar 'DDMMAA'.
- 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.
- 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:
- Não deverá ser possível cadastrar um AI 12 e um outro AI 120.
- 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 DA, preencher 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.
- As opções disponíveis para o combobox devem ser :
- 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 Logix → atributo_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".
- A.I → identificador_aplicacao → Campo de texto livre obrigatório de até 5 caracteres.
- Cabeçalho do formulário → wms_cod_barras_gs1_128
- 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."
- 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.
- 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).
- 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:
- Abaixo descritivo dos campos de tela com seus respectivos campos no banco de dados:
- WMS6171 - Inclusão de novo campo para definir o formato das datas no GS1-128 para um item em específico.
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:
Abaixo imagem demonstrando o resultado esperado após inclusão do novo campo.
- WMS60023 - Alterar a opção "Outros" do Contrato do depositante, possibilitando ao usuário relacionar uma configuração de etiqueta GS1-128.
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.
WMS6770 - Alterar o programa de atualização de cargas de registros padrões.
- 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().
- 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().
- 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.
- O novo programa de coletor de dados para teste de leitura de código de barras GS1-128 deverá ter o layout conforme abaixo:
- 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.
- 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) )
- 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().
- Abaixo o detalhamento de cada função do wms6730 e wmsr130
Função / Método (wms6730) | Parâmetros Entrada | Processamento | Parâ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 INT | Deverá 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 Entrada | Processamento | Parâ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 SMALLINT | Deverá 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 INT | Deverá 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 | <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 ..... 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] |
|
WMS6730 - Função responsável pela interface de coletor de dados para códigos de barras GS1-128. | [Criação] |
|
WMS6171 - Complemento do item | [Alteração] |
|
WMS60023 - Contrato opção outros | [Alteração] |
|
WMS6770 - Atualização dos registros padrões | [Alteração] |
|
WMS6728 - Teste de leitura de código de barras GS1-128 | [Criação] |
|
WMSR130 - Regras de negócio GS1-128 | [Criação] |
|
WMS6729 - Teste de leitura de código de barras GS1-128 para desktop | [Criação] |
|
- Estrutura de Menus Para os Novos Programas:
- WMS6727
Sistema | "315" (WMS) |
Área de aplicação | 9 - Logística |
Nível 1 | "10" (Etiquetas) |
Nível 2 | "97" (Cadastros) |
Nível 3 | "3" |
Sequência | 1 |
Processo | wms6727 |
Tipo Processo | 2 |
Transação | WMS6727 |
Descrição | Configuração código de barras GS1-128 |
- WMS6728
Sistema | "315" (WMS) |
Área de aplicação | 9 - Logística |
Nível 1 | "13" (Coletores) |
Nível 2 | "5" (Diversos) |
Nível 3 | "5" |
Sequência | 1 |
Processo | wms6728 |
Tipo Processo | 1 |
Transação | WMS6728 |
Descrição | Teste de leitura de código de barras GS1-128. |
- WMS6729
Sistema | "315" (WMS) |
Área de aplicação | 9 - Logística |
Nível 1 | "10" (Etiquetas) |
Nível 2 | "6" |
Nível 3 | |
Sequência | 1 |
Processo | wms6729 |
Tipo Processo | 1 |
Transação | WMS6729 |
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. |
---|