Histórico da Página
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 | LOGIXLogix | Módulo | WMS | ||||||||
Segmento Executor | Supply Chain | ||||||||||
Projeto1 | LOGWMS01 | IRM1 |
| ||||||||
Requisito1 |
| Subtarefa1 |
| ||||||||
Chamado2 | Não se aplica. | ||||||||||
País | ( X ) Brasil ( ) Argentina ( ) Mexico México ( ) Chile ( ) Paraguai ( ) EquadorEquador ( ) USA ( ) Colombia Colômbia ( ) Outro _____________. | Outros | Não se aplica. |
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 | ||
---|---|---|
| ||
Não será previsto o recebimento da mensagem! |
Definição da Regra de Negócio
Nota | ||
---|---|---|
| ||
A integração do cadastro de produtos será realizada considerando a versão 3.001005 da mensagem Item. |
Aviso | ||
---|---|---|
| ||
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": |
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
WMSR96 | Alteração | RNL Regras Integração WMS | |
MAN9907 | Alteração | Processamento mensagem ITEM (versão 3.001005) | |
EAIADAPTERITEM3 | Alteração | Adapter mensagem ITEM (versão 3.001) |
005) | |||
EAIHELPERITEM3 | Alteraçã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.
- 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.
- 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 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).
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(). Também alterar
Alterar também para que antes da chamada da função EAIAdapterItem3_SendBusinessMessage() seja chamada a EAIMapper_set() para o campo "item.origem":
Bloco de código title Inclusão da chamada para setar a origem do item collapse true 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 title Inclusão da chamada para setar o centro de custo collapse true 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:
- 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.
- 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:
Chamar a função EAIMapper_set() passando como parâmetros "ContextNames" e em seguida "erp":
Bloco de código title Setar o contexto "erp" collapse true CALL EAIMapper_set("ContextNames", "erp" )
- Em seguida chamar a função EAIAdapterItem3_SendBusinessMessage(), que realizará a integração de forma síncrona;
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 title Setar o contexto "vertical" collapse true CALL EAIMapper_set("ContextNames", "vertical" )
- Em seguida chamar novamente a função EAIAdapterItem3_SendBusinessMessage(), que realizará a integração desta vez de forma assíncrona.
- 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
.001).005)
- Preparar este adapter para trabalhar com o conceito de contextos:
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 collapse true RETURN _ADVPL_eai_get_default_context() CLIPPED || “,erp,vertical”
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 collapse true CALL EAIHelperItem3_inicializa_record() LET l_ContextNames = EAIMapper_getString( "ContextNames" ) CALL EAIHelperItem3_set_ContextNames( l_ContextNames )
- 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:
- Se a variável l_ContextNamesfor igual a "verticais" chamar como assíncrona (EAIHelperItem3_set_DeliveryType_async);
- 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 title Exemplo de inclução da chamada da função indicada collapse true 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 title Chamada da função para setar a origem do item collapse true 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.origemcentro_custo"), caso o retorno desta função seja diferente de nulo.
Bloco de código title Chamada da função para setar o centro de custo collapse true 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:
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 collapse true LET g_eai_msg_negocio = _ADVPL_eai_create_message(EAIHelperItem3_get_transaction_name(), _MessageType, EAIHelperItem3_get_adapter_version(), _ContextNames)
- Ainda dentro da função EAIHelperItem3_cria_mensagem_negocio, retirar o comentário da chamada da função EAIHelperItem3_set_contextNames.
- 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. |
---|