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

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

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

  

Informações Gerais

Não se aplica

Especificação

Produto

LOGIXLogix

Módulo

WMS

Segmento Executor

Supply Chain

Projeto1

LOGWMS01

IRM1

Jira
serverJIRA Produção
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-545

Requisito1

Jira
serverJIRA Produção
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-883

Subtarefa1

 

Chamado2

Não se aplica.

País

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

Outros

.

   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.

Nota
titleAtenção!

Não será previsto o recebimento da mensagem!


 .

Definição da Regra de Negócio


 Image Modified


 

Nota
titleAtenção!

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

Aviso
titleObservação

Para evitar problemas em outras integrações onde este cadastro já é utilizado, as validações e tratamentos adicionais somente serão aplicados caso o WMS Logix esteja integrado ao ERP Datasul, conforme parâmetro "Tipo de integração do WMS com backoffice":

Image Removed

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.001005)
EAIADAPTERITEM3Alteração Adapter mensagem ITEM (versão 3.005)
EAIHELPERITEM3Alteração Helper mensagem ITEM (versão 3.001)
1
.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.

001

005) 

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

  • Alterar também para que antes da chamada da função EAIAdapterItem3_SendBusinessMessage()

    uma chamada da função wmsr96_get_sistema_backoffice(),passando como parâmetros a variável mr_dados.cod_empresa e o modo de exibição "1" (um).
     Depois disto incluiruma lógica para setar novas informações no adapter, caso o retorno de outra função, a wmsr96_get_m_sistema_backoffice(), seja igual a "DATASUL":

     

    CampoInformação a ser considerada
      
      
      
2 - EAIADAPTERITEM3 - Adapter mensagem ITEM (versão 3.001)
  • seja chamada a EAIMapper_set() para o campo item.origem:

    Bloco de código
    titleInclusão da chamada para setar a origem do item
    collapsetrue
    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 dafunçã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:

    Bloco de código
    titleInclusão da chamada para setar o centro de custo
    collapsetrue
    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":

        Bloco de código
        titleSetar o contexto "erp"
        collapsetrue
        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":

        Bloco de código
        titleSetar o contexto "vertical"
        collapsetrue
        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":

      Bloco de código
      collapsetrue
      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:

      Bloco de código
      collapsetrue
      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_ContextNamesfor igual a "verticais" chamar como assíncrona (EAIHelperItem3_set_DeliveryType_async);
      2. Se a variável l_ContextNamesfor 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.

    Bloco de código
    titleExemplo de inclução da chamada da função indicada
    collapsetrue
    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.

    Bloco de código
    titleChamada da função para setar a origem do item
    collapsetrue
    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.

    Bloco de código
    titleChamada da função para setar o centro de custo
    collapsetrue
    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:

      Bloco de código
      collapsetrue
      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


 Image AddedImage Added

 

Cenários de Teste


Image Added

 

 

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