Páginas filhas
  • ER LOGWMS01-883 IN-11.4 Integração Cadastro Produtos

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

  

Informações Gerais

Especificação

Produto

Logix

Módulo

WMS

Segmento Executor

Supply Chain

Projeto1

LOGWMS01

IRM1

LOGWMS01-545 - Obtendo detalhes do item... STATUS

Requisito1

LOGWMS01-883 - Obtendo detalhes do item... STATUS

Subtarefa1

 

Chamado2

Não se aplica.

País

( X ) Brasil  (  ) Argentina  (  ) México  (  ) Chile  (  ) Paraguai  (  ) Equador  (  ) USA  (  ) Colômbia   (  ) Outro _____________.

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

 

Objetivo

Realizar ajustes na integração do cadastro de produtos para que seja possível enviar um cadastro para outro sistema.

Atenção!

Não será previsto o recebimento da mensagem!


 

Definição da Regra de Negócio


 


 

Atenção!

A integração do cadastro de produtos será realizada considerando a versão 3.005 da mensagem Item.

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMSR96Alteração RNL Regras Integração WMS
MAN9907Alteração Processamento mensagem ITEM (versão 3.005)
EAIADAPTERITEM3Alteração Adapter mensagem ITEM (versão 3.005)
EAIHELPERITEM3Alteração Helper mensagem ITEM (versão 3.005)

1 - WMSR96 - RNL Regras Integração WMS

  • Criar novos parâmetros por empresa (LOG00086) para indicar os produtos/módulos com os quais o WMS Logix está integrado.
  • O parâmetro sistema_backoffice_integracao continuará sendo utilizado para determinar o ERP ao qual o WMS está integrado.

    • Parâmetro: wms_integrado_tms_protheus

    • Descrição: "Integrado ao TMS (Transportation Management System) do Protheus?"

    • Help: "Indica se o WMS está integrado ao TMS Protheus."
    • Rotina: 444 - INTEGRAÇÃO COM OUTROS SISTEMAS

    • Tipo Conteúdo: F - Flag

    • Permitir nulo: N - Não

    • Case sensitive: 1 - Somente caracteres maiúsculos

    • Efetuar replicação: N - Não

    • Replicação opcional: N - Não

    • Cliente: 105 - TOTVS

    • Valor padrão: N - Não

    • Comentário rodapé: "S - Sim ; N - Não"

    • Valores possíveis: (S)im, (N)ão

 

    • Parâmetro: wms_integrado_cockpit
    • Descrição: "Integrado ao Cockpit Logístico?"

    • Help: "Indica se o WMS está integrado ao Cockpit Logístico."
    • Rotina: 444 - INTEGRAÇÃO COM OUTROS SISTEMAS

    • Tipo Conteúdo: F - Flag

    • Permitir nulo: N - Não

    • Case sensitive: 1 - Somente caracteres maiúsculos

    • Efetuar replicação: N - Não

    • Replicação opcional: N - Não

    • Cliente: 105 - TOTVS

    • Valor padrão: N - Não

    • Comentário rodapé: "S - Sim ; N - Não"

    • Valores possíveis: (S)im, (N)ão

  • Criar a função wmsr96_get_integracoes(), que deverá receber como parâmetros o código da empresa e o modo de exibição. Regras:
    • Deverá inicialmente chamar a função wmsr96_get_sistema_backoffice() para buscar o sistema ERP ao qual o WMS está integrado, atualizando a variável modular m_sistema_backoffice. 

    • Em seguida deverá efetuar a leitura do novo parâmetro wms_integrado_tms_protheus, alimentando também uma variável modular para que o seu conteúdo possa ser utilizado em processamentos seguintes. Contudo, somente deverá reler o parâmetro se a variável modular estiver nula ou se o código da empresa para o qual foi solicitada a leitura deste parâmetro seja diferente da leitura anterior.

    • Da mesma forma, também deverá efetuar a leitura do novo parâmetro wms_integrado_cockpit, alimentando outra variável modular. Deverá também somente reler o parâmetro se a variável modular estiver nula ou se o código da empresa para o qual foi solicitada a leitura deste parâmetro seja diferente da leitura anterior. 

    • Esta função deverá apenas alimentar as variáveis modulares, não haverá valor de retorno.

  • Criar a função wmsr96_get_integracao_erp(), que deverá receber como parâmetros o código da empresa e o modo de exibição. Regras:
    • Deverá inicialmente chamar a função wmsr96_get_integracoes().
    • Em seguida, deverá retornar o valor da variável modular m_sistema_backoffice.
  • Criar a função wmsr96_get_integracao_tms_protheus(), que deverá receber como parâmetros o código da empresa e o modo de exibição. Regras:
    • Deverá inicialmente chamar a função wmsr96_get_integracoes().
    • Em seguida, deverá retornar o valor da variável modular indicada acima, ao ler o parâmetro wms_integrado_tms_protheus.
     
  • Criar a função wmsr96_get_integracao_cockpit(), que deverá receber como parâmetros o código da empresa e o modo de exibição. Regras:
    • Deverá inicialmente chamar a função wmsr96_get_integracoes().
    • Em seguida, deverá retornar o valor da variável modular indicada acima, ao ler o parâmetro wms_integrado_cockpit.
     

2 - MAN9907 - Processamento mensagem ITEM (versão 3.005) 

  • Alterar a função man9907_executa_operacao(), incluindo após a chamada da função man9907_get_cod_cla_fisc() a chamada da função man9907_get_origem().

  • Alterar também para que antes da chamada da função EAIAdapterItem3_SendBusinessMessage() seja chamada a EAIMapper_set() para o campo item.origem:

    Inclusão da chamada para setar a origem do item
    CALL EAIMapper_set("item.origem"               ,mr_dados.origem)
  • Criar a função man9907_get_origem(), utilizando como base a função manr100_leitura_origem(). Porém, ao invés de retornar a origem do item esta nova função deverá setar a origem lida na variável modular mr_dados.origem (criar este campo no Record já existente).

  • Alterar a função man9907_executa_operacao(), incluindo após a chamada da função man9907_get_origem() a chamada da função man9907_get_centro_custo(). Também alterar para que antes da chamada da função EAIAdapterItem3_SendBusinessMessage() seja chamada a EAIMapper_set() para o campo item.centro_custo:

    Inclusão da chamada para setar o centro de custo
    CALL EAIMapper_set("item.centro_custo"               ,mr_dados.centro_custo) 
  • Criar a função man9907_get_centro_custo(), utilizando como base a lógica existente no final da função manr100_atualiza_Item(), onde é preparada a variável l_CostCenterCode com a concatenação de quatro campos do cadastro do item. Deverá setar o campo mr_dados.centro_custo (criar este campo no Record já existente).

  • Alterar para que antes da chamada da função EAIAdapterItem3_SendBusinessMessage() seja realizada analisada a necessidade de uso de contexto:

    1. Chamar as funções wmsr96_get_integracao_erp()wmsr96_get_integracao_tms_protheus() e wmsr96_get_integracao_cockpit(), armazenando o retorno de cada função em uma variável diferente.
    2. Se retorno da função wmsr96_get_integracao_erp() for "DATASUL" e o retorno de alguma das outras duas funções for igual a "S" significa que há mais de um produto integrado e portanto deverá ser realizado o envio de mensagens considerando contextos, conforme indicado a seguir:
      1. Chamar a função EAIMapper_set() passando como parâmetros "ContextNames" e em seguida "erp":

        Setar o contexto "erp"
        CALL EAIMapper_set("ContextNames", "erp" )
      2. Em seguida chamar a função EAIAdapterItem3_SendBusinessMessage(), que realizará a integração de forma síncrona;
      3. Se o retorno desta função for TRUE, chamar novamente a função EAIMapper_set() passando como parâmetros "ContextNames" e em seguida "vertical":

        Setar o contexto "vertical"
        CALL EAIMapper_set("ContextNames", "vertical" )
      4. Em seguida chamar novamente a função EAIAdapterItem3_SendBusinessMessage(), que realizará a integração desta vez de forma assíncrona.

    3. Se retorno da função wmsr96_get_integracao_erp() for diferente de "DATASUL" ou o retorno das outras duas funções for igual a "N" das deverá continuar como é hoje, ou seja, sem setar o contexto e chamando a função para integração apenas uma vez, realizando o processamento de forma síncrona.

3 - EAIADAPTERITEM3 - Adapter mensagem ITEM (versão 3.005)

  • Preparar este adapter para trabalhar com o conceito de contextos:
    1. Retirar os comentários da função EAIAdapterItem3_getContextNames e prepará-la para efetuar um RETURN com o contexto default e mais os contextos "erp" e "vertical":

      RETURN _ADVPL_eai_get_default_context() CLIPPED || “,erp,vertical”
    2.  Retirar os comentários das três linhas que estão no início da função EAIAdapterItem3_SendBusinessMessage, referente ao tratamento de contextos:

      CALL EAIHelperItem3_inicializa_record()
      LET l_ContextNames = EAIMapper_getString( "ContextNames" )
      CALL EAIHelperItem3_set_ContextNames( l_ContextNames )
    3. Ainda na função EAIAdapterItem3_SendBusinessMessage, antes de chamar a função EAIHelperItem3_set_DeliveryType_sync deverá testar o contexto que deverá ser considerado. Se o contexto não tiver sido indicado deverá continuar processando como síncrono:
      1. Se a variável l_ContextNames for igual a "verticais" chamar como assíncrona (EAIHelperItem3_set_DeliveryType_async);
      2. Se a variável l_ContextNames for igual a "erp" ou estiver nula, chamar como síncrona (EAIHelperItem3_set_DeliveryType_sync).

  • Alterar na função EAIAdapterItem3_LoadUpsertContent() para que no ponto onde está setando o valor para a tag StockGroupCode seja chamada a função wmsr96_get_grupo_estoque_para() para realizar o de/para do grupo de controle de estoque, caso exista.

    Exemplo de inclução da chamada da função indicada
    CALL EAIHelperItem3_set_BusinessContent_StockGroupCode(wmsr96_get_grupo_estoque_para(EAIMapper_getString("item.cod_empresa"),EAIMapper_getString("item.gru_ctr_estoq"),1))
  • Alterar na função EAIAdapterItem3_LoadUpsertContent() para que seja chamada a função EAIHelperItem3_set_BusinessContent_Origin() utilizando como parâmetro o retorno da função EAIMapper_getString("item.origem"), caso o retorno desta função seja diferente de nulo.

    Chamada da função para setar a origem do item
    IF EAIMapper_getString("item.origem") IS NOT NULL THEN
       CALL EAIHelperItem3_set_BusinessContent_Origin(EAIMapper_getString("item.origem"))
    END IF
  • Alterar na função EAIAdapterItem3_LoadUpsertContent() para que sejam chamadas as funções EAIHelperItem3_set_BusinessContent_CostCenterCode() eEAIHelperItem3_set_BusinessContent_CostCenterInternalId() utilizando como parâmetro o retorno da função EAIMapper_getString("item.centro_custo"), caso o retorno desta função seja diferente de nulo.

    Chamada da função para setar o centro de custo
    IF EAIMapper_getString("item.centro_custo") IS NOT NULL THEN
       CALL EAIHelperItem3_set_BusinessContent_CostCenterCode(EAIMapper_getString("item.centro_custo"))
       CALL EAIHelperItem3_set_BusinessContent_CostCenterInternalId(EAIMapper_getString("item.centro_custo"))
    END IF

4 - EAIHELPERITEM3 - Helper mensagem ITEM (versão 3.005)

  • Preparar este helper para trabalhar com o conceito de contextos:
    1. Na chamada da função _ADVPL_eai_create_message (realizada dentro da função EAIHelperItem3_cria_mensagem_negocio) incluir na passagem de parâmetros a variável _ContextNames:

      LET g_eai_msg_negocio = _ADVPL_eai_create_message(EAIHelperItem3_get_transaction_name(), _MessageType, EAIHelperItem3_get_adapter_version(), _ContextNames)
    2. Ainda dentro da função EAIHelperItem3_cria_mensagem_negocio, retirar o comentário da chamada da função EAIHelperItem3_set_contextNames.

    3. Retirar os comentários da função EAIHelperItem3_set_ContextNames, deixando ativo o código já existente.

 

Fluxo do Processo


 

Cenários de Teste



 

 

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