Páginas filhas
  • PCREQ-4062.1 - Configurações e cadastros

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Informações Gerais

 

Especificação

Produto

Logix

Módulo

WMS

Segmento Executor

 

Projeto1

L_DL_WMS001

IRM1

PCREQ-4062

Requisito1

1

Subtarefa1

 

Chamado2

 

Release de Entrega Planejada

12.1.8

Réplica

 

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

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

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

Objetivo

 Criar as parametrizações básicas para que, nos processos de recebimento e expedição do WMS, seja possível controlar o IUM - Identificador Único de Medicamentos. Além de criar as funções de integração do WMS Logix com o sistema Neogrid Rastreabilidade, que serão utilizadas nas demais rotinas.

Definição da Regra de Negócio

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMS6111 - Categoria Itens

[Alteração]

 

-

WMS6171 - Item WMS [Alteração]  

WMS60023 - Contrato - Outros

[Alteração]

 

-

WMSR128 - Funções de integração NeoGrid rastreabilidade

[Criação]

 

-

WMS0004[Alteração]  

 

  1. Alterar o WMS6111 - Categorias de Itens onde deverá ser incluído o novo campo conforme protótipo 01.
    Campo "Controla IUM (identificador único de medicamentos) - Tipo Char(01) onde os valores poderão ser "S" para Sim, "N" para Não e deverá ser apresentado como listbox.
    Este campo deverá ser gravado na tabela wms_item_categoria, campo controle_ium.

  2. Alterar o WMS6171 - Item WMS onde deverá ser incluído o novo atributo do item conforme protótipo 02.
    Campo "Controla IUM (identif. único de medicamentos) - Tipo Char(01) onde os valores poderão ser "S" para Sim, "N" para Não, "P" padrão  e deverá ser apresentado como listbox.
    Este campo deverá ser gravado na tabela man_inf_com_item a exemplo do Tipo carga, onde informacao_compl = "wms_controle_ium"; des_inf_com  = "Controla IUM (identif. único de medicamentos)"; val_flag = "P"; "S"; "N"

  3. Altarar a função WMS0004
    Criar uma função chamada wms0004_item_controle_ium(), está função verificará se o item tem controle de IUM.
    Receberá os parâmetros: empresa, depositante, item e modo de exibição;
    Retornará dois status, o primeiro indica se a execução foi realizada com sucesso e o segundo indica se o item controla IUM.
    Para efetuar a verificação, primeiramente deverá ser efetuado o select na tabela man_inf_com_item  buscando o VAL_FLAG por empresa, codigo do item e informação complementar igual a "wms_controle_ium".
    Se não encontrar registro significa que o item não tem controle de IUM e deve retornar True, False.
    Se ocorreu algum erro de SQL diferente de NOTFOUND, deve exibir mensagem de erro e retornar False, False.
    Se encontrou registro, deverá verificar o valor de VAL_FLAG
    1. Se "S" indica que controla IUM, então retorna True, True;
    2. Se "N" indica que não controla, então retorna True, False;
    3. Se for "P", é o padrão da categoria do item, então deverá verificar buscando o valor do campo controle_ium da categoria do item na tabela wms_item_categoria.

      SELECT a.controle_ium
      FROM wms_item_complemento a,
      wms_item_categoria b
      WHERE a.empresa = 'AV'
      AND a.empresa = b.empresa
      AND a.cat_item = b.cat_item
      AND a.item = '0004'
      AND (( b.abrang = 'D'
      AND b.empresa_deposit = '948632')
      OR ( b.abrang = 'E'
      AND b.empresa_deposit = 'AV'))


      1. Se o valor do campo acima for nulo ou "N", então retorna True, False;
      2. Se o valor for "S" retorna True, True;
      3. Se ocorrer erro de SQL deve exibir a mensagem de erro e retornar False, False.

  4. Alterar o WMS60023 - Contrato (Outros) onde deverão ser incluídos os novos parâmetros conforme protótipo 03.
    Campo "Sistema de integração rastreabilidade" tipo listBox com valor 1 = NeoGrid Rastreabilidade. Será gravado na tabela wms_parametro_complementar com os seguintes valores:
    1. empresa = p_cod_empresa;
    2. trans_parametro = sequencial da tabela;
    3. depositante = depositante do contrato;
    4. nom_parametro = "sist_rastreabilidade";
    5. val_texto = "Sistema de integração rastreabilidade";
    6. val_flag = "1"
    7. contrato = contrato ativo.
    Campo "Caminho de envio dos arquivos (OUT)" tipo text. Será gravado na tabela wms_parametro_complementar com os seguintes valores:
    1. empresa = p_cod_empresa;
    2. trans_parametro = sequencial da tabela;
    3. depositante = depositante do contrato;
    4. nom_parametro = "rastrea_dir_envio";
    5. val_texto = "Diretório de envio dos arquivos rastreabilidade (OUT)";
    6. val_flag = "1"
    7. contrato = contrato ativo.
    Campo "Caminho de recebimento dos arquivos (IN)" tipo text. Será gravado na tabela wms_parametro_complementar com os seguintes valores:
    1. empresa = p_cod_empresa;
    2. trans_parametro = sequencial da tabela;
    3. depositante = depositante do contrato;
    4. nom_parametro = "rastrea_dir_receb";
    5. val_texto = "Diretório de recebimento dos arquivos rastreabilidade (IN)";
    6. val_flag = "1"
    7. contrato = contrato ativo.

    Campo "E-mail responsável integração rastreabilidade" tipo text. Será gravado na tabela wms_parametro_complementar com os seguintes valores:
    1. empresa = p_cod_empresa;
    2. trans_parametro = sequencial da tabela;
    3. depositante = depositante do contrato;
    4. nom_parametro = "email_resp_rastreab";
    5. val_texto = "E-mail responsável integração rastreabilidade";
    6. val_flag = "1"
    7. contrato = contrato ativo.


  5. Criar função wmsr128.4gl - Funções rastreabilidade que conterá as funções  abaixo:
    1. wmsr128_envia_evento_movimentacao().

      Está função irá gerar arquivos do tipo Registro de Eventos (JSON padrão NeoGrid)

        1. Receberá os parâmetros: empresa, evento, cesv_docum, solicitacao_carga, modo de exibição. Onde o evento poderá ser: 1 - Check-in, ou 2 - Check-out.
        2. Buscar parâmetro que indica se empresa é operador logístico ou indústria.
        3. Quando o evento for check-in deverá seguir os passos a seguir:
          1. Buscar informação de nota de devolução conforme abaixo:
          2. SELECT DISTINCT(1) 
            FROM wms_cesv_docum_nota_fiscal cesv,
            nf_sup nf
            WHERE cesv.empresa= l_empresa
            AND cesv.ctr_ent_sai_veic_docum = l_cesv_docum
            AND cesv.devolucao = 'S'
            AND cesv.empresa = nf.cod_empresa
            AND cesv.nota_fiscal = nf.num_nf
            AND cesv.serie_nota_fiscal = nf.ser_nf
            AND cesv.subserie_nota_fiscal = nf.ssr_nf
            AND cesv.emitente_nota_fiscal= nf.cod_fornecedor


            Se ocorrer erro de SQL exibir mensagem de erro e retornar falso.

          3. Se for operador logístico e a nota não estiver marcada como devolução, o evento será '3002' (recebimento em transferência);
          4. Se estiver marcado como devolução o eventro será igual a '3004' (recebimento em devolução);
          5. Se for indústria e a nota não estiver marcada como devolução será o evento '3001' (compra), ou, se estiver marcado como devolução evento igual a  '3004' (recebimento em devolução);
          6. Criar cursor da tabela wms_checkin_ium filtrando por empresa e cesv_docum. 
            SELECT ium.ium_agregadora AS trackableItemId,
                            ium.ctr_ent_sai_veic_docum, 
                            transp.num_cgc_cpf AS byUniversalCompanyId,
                            depos.num_cgc_cpf AS fromUniversalCompanyId,
                            nf.num_nf AS invoice_id_nf, 
                            par.parametro_texto AS invoice_id 
               FROM wms_checkin_ium ium
               ON ium.empresa = id_conf.empresa
               AND ium.cesv_docum = id_conf.ctr_ent_sai_veic_docum 
               INNER JOIN nf_sup nf
               ON nf.cod_empresa = ium.empresa
               AND ium.aviso_recebto = nf.num_aviso_rec
               INNER JOIN clientes transp
               ON transp.cod_cliente = nf.cod_transpor
               INNER JOIN clientes depos
               ON depos.cod_cliente = nf.cod_fornecedor
               left JOIN sup_par_ar par
               ON par.empresa = id_conf.empresa
               AND par.aviso_recebto = ium.aviso_recebto 
               AND par.parametro = 'chav_aces_nf_eletr'
               WHERE ium.empresa = l_empresa
                     AND ium.cesv_docum = l_cesv_docum
            ORDER BY 1, 2

            Para cada IUM ou agregadora informada na conferência do recebimento, deverá ser criado um arquivo seguindo o layout da NeoGrid.
            O arquivo deverá ser criado na pasta out configurada no contrato e ter o nome composto por: “[Tipo do Documento]_[Timestamp]_[Número sequencial].json”. Além disso o arquivo deverá ser no formato UTF-8 (utilizar o LOG_encodeUTF8(l_texto)).
            1. [Tipo de Documento] é o código do tipo de documento, cada evento terá um tipo de documento. 
            2. [Timestamp] é a data e hora no formato “yyyyMMddHHmmssSSS” 
            3. [Número sequencial] é um número sequencial de quatro dígitos que deverá ser controlado na tabela wms_parametro_complementar
            4. Exemplo de nome de arquivo para um evento de Compra (check in): “901_20150703154700123_0001.json”
        4. Quando for expedição:
          1. Se for operador logístico o código do evento será '4002' (entrega em transferência); ou, se for indústria será '4001' (venda).
          2. Criar cursor a partir do select abaixo:

      SELECT ium.ium_agregadora,
      sc.transportador,
      pl.transportador,
      sc.nota_fiscal, 
      transp.num_cgc_cpf AS byUniversalCompanyId,
      depos.num_cgc_cpf AS fromUniversalCompanyId,
      sc.destinatario,
      cli.num_cgc_cpf AS toUniversalCompanyId, 
      par.val_texto AS invoice_id 
      FROM wms_checkout_ium ium 
      INNER JOIN wms_solicitacao_carga_mestre sc
      ON ium.empresa = sc.empresa
      AND ium.trans_solicitacao_carga_mestre = sc.trans_solicitacao_carga_mestre 
      -- Busca chave acesso
      INNER JOIN wms_parametro_complementar par
      ON par.empresa = sc.empresa
      AND par.trans_solicitacao_carga_mestre = sc.trans_solicitacao_carga_mestre 
      AND par.nom_parametro = 'chave_acesso_nfe'
      -- Busca cliente 
      INNER JOIN clientes cli
      ON cli.cod_cliente = sc.destinatario
      -- busca cnpj depositante
      INNER JOIN clientes depos
      ON depos.cod_cliente = sc.deposit
      -- relaciona com o planejto embarque solic carga
      INNER JOIN wms_plnjt_embq_solic_carga emb
      ON emb.empresa = sc.empresa 
      AND emb.trans_solicitacao_carga_mestre = sc.trans_solicitacao_carga_mestre 
      --relaciona com o plano embarque para buscar o transportador
      INNER JOIN wms_planejto_embarq pl
      ON pl.empresa = emb.empresa
      AND pl.planejto_embarq = emb.planejto_embarq

      INNER JOIN clientes transp
      ON pl.transportador = transp.cod_cliente 
      WHERE sc.empresa = p_cod_empresa
      AND ium.trans_solicitacao_carga_mestre = l_solic_carga
      ORDER BY 1, 2

       

    2. Criar função wmsr128_envia_evento_agregacao()
      Está função irá gerar arquivos do tipo Agregação (JSON padrão NeoGrid) seguindo o layout que contas no manual.
      1. Carregar informações geradas na tabela wms_agregacao_ium utilizando como filtro:
       
      • Empresa;
      • Etiqueta agrupadora;
      • sit_integração igual 1 - pendente;
      Caso o arquivo tenha sido gerado com sucesso deverá atualizar o registro da tabela wms_agregacao_ium, atualizar o campo sit_integracao para 3 (arquivo enviado) e dat_hora_integracao para data/hora atual.

    3. Criar função wmsr128_get_unix_timestamp()

      Está função deverá pegar a data atual do sistema e convertê-la no formato UnixEpochTime.

      Para isso deverá executar o comando select conforme o banco utilizado:

      1. Oracle 

      SELECT (SYSDATE - TO_DATE('01/01/1970 00:00:00', 'MM-DD-YYYY HH24:MI:SS')) * 24 * 60 * 60 FROM DUAL

      2. IBM Informix

      SELECT dbinfo('data hora corrente') FROM sysmaster:sysdual;

      3. SQL Server

      SELECT DATEDIFF(s, '1970-01-01 00:00:00', 'data hora corrente')


      Fonte:  http://www.epochconverter.com

    4. Criar função wmsr128_ium_ativa()
      Está função deverá verificar se uma IUM está ativa no operador logístico.
      Deverá receber como parâmetros: empresa, depositante, ium/agregadora e modo de exibição.
      Deverá retornar status de execução, status da IUM (A - Ativa, I - Inativa, N - não cadastrada), nota fiscal e cesv caso esteja ativa.

      Select distinct sit_ium, nota_fiscal, cesv_docum 

      from wms_checkin_ium

      where empresa = empresa recebida

      and ium_agregadora = ium recebida

      and depositante = depositante recebido



    5.  

 

Tabelas Utilizadas

  • wms_ium_agregadora
  • wms_checkin_ium
  • wms_checkout_ium
  • wms_agregacao_ium

Protótipo de Tela

Protótipo 01


Protótipo 02


Protótipo 03

 

Dicionário de Dados

 

wms_ium_agregadora (Cadastro de identificadores de medicamentos)

Campo

Descrição

Tipo

Null

Empresa

Empresa

Char(02)

Not Null

Depositante

Depositante

Char(15)

Not Null

IUM_agregadora

Etiqueta Identificador único de medicamento ou/ agregadora

Char(70)

Not Null

Item_deposit

Item depositante

SKU

SKU

Char(25)

Not null

Sit_ium_agregadora

Situação IUM/agregadora (“A” – Ativa na empresa; “I” – Inativa, fora da empresa)

Char(01)

Not Null

Usuario

Usuário inclusão

Char(09)

Not null

Dat_hora_inclusao

Data hora inclusão

Date time

Not null

wms_checkin_ium (Check-in de identificadores únicos de medicamentos) - Criação

Campo

Descrição

Tipo

Null

Empresa

Empresa

Char(02)

Not null

TransacaoTransaçãoSequencialNot Null

Depositante

Depositante

Char(15)

Not null

IUM_agregadora

Etiqueta Identificador único de medicamento ou/ agregadora

Char(70)

Yes

cesv_docum

Controle de entrada e saída de veículos/documental

Char(10)

Not null

aviso_recebtoAviso de recebimentoIntegerNot Null

Dat_hora_checkin

Data hora de check-in

DateTime

Not Null

UsuarioUsuário check-inChar(09)Not Null
sit_integracaoSituação da integração (1 - Pendente; 2 - Arquivo enviado; 3 - Integrada; 4 - Erro integração)Char(01)Not null
dat_hora_integracaoData hora da integraçãoDateTime Year to secondnull

 

 

wms_checkout_ium (Check-out de identificadores únicos de medicamentos) - Criação

Campo

Descrição

Tipo

Null

Empresa

Empresa

Char(02)

Not null

Transacao

Transação

Sequencial

Not null

Depositante

Depositante

Char(15)

Not Null

Ium_agregadora

Etiqueta Identificador único de medicamento ou/ agregadora

Char(50)

Yes

trans_solicitacao_carga_mestre

Solicitação de carga

Integer

Not null

Dat_hora_checkout

Data hora de check-out

DateTime

Not Null

sit_integracaoSituação da integração (1 - Pendente; 2 - Arquivo enviado; 3 - Integrada; 4 - Erro integração)Char(01)Not null
dat_hora_integracaoData hora da integraçãoDateTime Year to secondNull

wms_agregacao_ium (Agregação de identificadores únicos de medicamentos) - Criação

Campo

Descrição

Tipo

Null

Empresa

Empresa

Char(02)

Not null

Depositante

Depositante

Char(15)

Not null

Transacao

Transação

Sequencial

Not Null

Identif_agregadora

Etiqueta de identificação agregadora

Char(50)

Yes

ium

Identificador único de medicamento

Char(50)

Yes

Sit_agregadora

Situação da etiqueta agregadora (Ativo – dentro do armazém; Inativo – fora do armazém).

Char(01)

Not Null

Dat_hora_operacao

Data hora da operação

DateTime

Not Null

sit_integracaoSituação da integração (1 - Pendente; 2 - Arquivo enviado; 3 - Integrada; 4 - Erro integração)Char(01)Not null
dat_hora_integracaoData hora da integraçãoDateTime YearToSecondnull

wms_item_categoria (alteração)

Campo

Descrição

Tipo

Null

contole_ium

Controla Indicador Único de Medicamentos

Char(01)

null

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

...