Especificação de Requisitos | |
Projeto/Versão: PDR_SER_TUR001-P12 | Requisito/Módulo: PCREQ-2774/SIGATUR |
Sub-Requisito/Função: | Tarefa/Chamado: |
País: All | Data Especificação: 11/09/2015 |
Rotinas Envolvidas | ||
Rotina | Tipo de Operação | Opção de Menu |
TURA018.PRW | Alteração | Atualizações-> Cadastros-> Complemento de Cliente |
TURI018.PRW | Criação |
|
Estratégia de Desenvolvimento e Liberação | |
Produto | Microsiga Protheus |
Release que está sendo desenvolvido | Versão 12 |
Possui Réplica? | ( ) Sim ( X ) Não |
Qual a versão? | 12.1.7 |
Integração Front – Complemento de Cliente
Objetivo
Integrar o cadastro de Complemento de Cliente do ERP Microsiga Protheus com o sistema de FrontOffice da agência de viagem. A integração possibilitará que os sistemas se comuniquem através de uma Mensagem Única, utilizando o schema XSD da TotvsMessage TravelCustomer.
Definição da Regra de Negócio
Os sistemas de FrontOffice da agências de viagem irão se comunicar com o ERP Microsiga Protheus para sincronismo das informações entre as respectivas bases de dados. Para isso, se faz necessária a utilização da tecnologia Enterprise Application Integration (EAI).
Essa comunicação utilizará o padrão SOAP para envio e recebimento de arquivos XML, além de seguir um conjunto de regras definidas para o padrão de Mensagem Única da TOTVS. Os dados que serão sincronizados entre os sistemas integrados estarão contidos no arquivo XML, que deverá estar no padrão definido no esquema da Mensagem Única conforme XSD da TotvsMessage TravelCustomer.
Na integração, as mensagens recebidas e enviadas pelo BackOffice serão processadas pelo adapter EAI do respectivo cadastro. O adapter é o responsável por processar essas mensagens e, se estiver configurada, acionar a rotina de integração para inclusão, alteração e/ou exclusão desse cadastro. Por sua vez, essa rotina será responsável por validar e gravar os dados de acordo com a operação que estiver sendo realizada e retornar para o adapter a mensagem de retorno do processamento (êxito ou falha) que, por fim, envia a mensagem de resposta ao sistema requisitante.
A manutenção (inclusão, alteração ou exclusão) de um registro desse cadastro será feita tanto pelo sistema de FrontOffice como pelo BackOffice, replicando os dados mutuamente. Portanto, o sistema de FrontOffice deverá levar em consideração a regra de negócio do cadastro.
Definição Técnica
- A rotina TURA018 deve ser alterada para realizar a chamada para a rotina TURI018, que será utilizada para processar a Mensagem Única TravelCustomer. Para isso, deverá ser implementada a função IntegDef que deverá ser "Static", conforme definição da equipe de FrameWork.
Static Function IntegDef( cXML, nTypeTrans, cTypeMessage )
Local aRet := {}
aRet:= TURI018( cXml, nTypeTrans, cTypeMessage )
Return aRet
- Desenvolver o fonte TURI018, que fará todo o tratamento para o envio e recebimento do XML, da seguinte forma:
Function TURI018 ( cXML, nTypeTrans, cTypeMessage )
Local lRet := .T.
Local cXMLRet := ""
If nTypeTrans == TRANS_RECEIVE
If cTypeMessage == EAI_MESSAGE_BUSINESS
cXMLRet := '<TAGX>TESTE DE RECEPCAO BUSINESS MESSAGE</TAGX>'
ElseIf cTypeMessage == EAI_MESSAGE_RESPONSE
cXMLRet := '<TAGX>TESTE DE RECEPCAO RESPONSE MESSAGE</TAGX>'
ElseIf cTypeMessage == EAI_MESSAGE_WHOIS
cXMLRet := ' <Version>1.0 </Version>'
Endif
ElseIf nTypeTrans == TRANS_SEND
cXMLRet := '<TAGX>TESTE DE ENVIO</TAGX>'
EndIf
Return { lRet, cXMLRet }
- No fonte TURI018, deve ser adicionado a diretiva de include para o arquivo FWADAPTEREAI.CH;
- Microsigra Protheus envia Mensagem Única:
- Ao ser efetuada uma inclusão, alteração ou exclusão, será disparado um evento que verificará se a rotina TURA018 está cadastrada no "Adapter EAI" e se a mesma está configurada para o envio de mensagem no método Assíncrono. Caso a rotina esteja cadastrada e configurada corretamente, a função IntegDef retornará o XML (BusinessMessage) ao EAI, que enviará a mensagem ao sistema requisitante;
- Após o sistema requisitante receber e processar a mensagem, deverá enviar a mensagem de resposta (ResponseMessage) ao Microsiga Protheus com o status do processamento e, no caso de sucesso da operação INSERT, o valor da chave da entidade para atualização do respectivo DE/PARA;
- Por ser um cadastro de cabeçalho e itens, na mensagem de retorno, o bloco (ReturnContent), onde são informadas as InternalId para gravação do DE/PARA, deverá seguir a seguinte estrutura:
<ReturnContent>
<ListOfInternalId>
<InternalId>
<Name>TravelCustomer</Name>
<Origin>99|01|CLIENTE|01</Origin>
<Destination>99|02|CLIENTE|01</Destination>
</InternalId>
</ListOfInternalId>
</ReturnContent>
- A TAG ListOfFamily é uma lista de itens que deverá ser preenchida com os Grupos de Produto relacionados ao Compl. de Cliente posicionado e, para isso, utilizar a tabela G4N. Para cada Grupo de Produto encontrado fazer o seguinte:
- Preencher as respectivas TAG's do campo G4N_GRUPO, como informado abaixo;
- Preencher a TAG ListOfPaymentForm, que é uma lista de itens e que deverá ser preenchida com as Formas de Pagamento de duas formas distintas. A saber:
- Preencher com as Formas de Pagamento relacionadas ao Grupo de Produto posicionado, através da tabela G3K. Para cada Forma de Pagamento encontrada, verificar se ela está relacionado ao Compl. do Cliente posicionado através da tabela G4O:
- Em caso afirmativo, se o campo G4O_TIPEXC == 1 a Forma de Pagamento foi restringinda e NÃO deve ser gravada na lista;
- Em caso negativo, a Forma de Pagamento pode ser gravada na lista;
- Preencher com as Formas de Pagamento relacionadas ao Compl. do Cliente posicionado através da tabela G4O. Para cada Forma de Pagamento encontrada, verificar se o campo G4O_TIPEXC == 2 e, em caso afirmativo, ela pode ser gravada na lista;
- Preencher com as Formas de Pagamento relacionadas ao Grupo de Produto posicionado, através da tabela G3K. Para cada Forma de Pagamento encontrada, verificar se ela está relacionado ao Compl. do Cliente posicionado através da tabela G4O:
- A TAG ListOfFamily é uma lista de itens que deverá ser preenchida com os Grupos de Produto relacionados ao Compl. de Cliente posicionado e, para isso, utilizar a tabela G4N. Para cada Grupo de Produto encontrado fazer o seguinte:
- Depois da alteração do fonte TURA018 e do desenvolvimento do fonte TURI018, acessar o módulo Configurador e cadastrar o adapter através do menu Ambiente -> Schedule -> Adapter E.a.i da seguinte forma:
- Mensagem única: Sim;
- Rotina: TURA018;
- Mensagem: TravelCustomer;
- Descrição: Complemento de Cliente;
- Envia: Sim;
- Recebe: Não;
- Método: Assíncrono;
- Operação: Todas;
- Versão Envio: 1.000;
- A seguir, detalhe dos campos do cadastro de Complemento de Cliente com as respectivas TAGS do TotvsMessage TravelCustomer:
Tag Superior | TAG | Campo | Observação |
BusinessContentType | CompanyId |
| Código da Empresa |
BusinessContentType | BranchId | G4L_FILIAL | Código da Filial |
BusinessContentType | CompanyIternalId |
| InternalId da chave Empresa+Filial |
BusinessContentType | Code | G4L_CODIGO | Código do Complemento |
BusinessContentType | InternalId |
| InternalId do Complemento |
BusinessContentType | CustomerCode | G4L_CLIENT+G4L_LOJA | Código do Cliente |
BusinessContentType | CustomerInternalId |
| InternalId do Cliente |
BusinessContentType | Share | G4L_COMPAR | Compartilhado para as demais lojas do cliente. ("1" – Sim/ "2" Não) |
BusinessContentType | MarketRate | G4M_TPMERC | Tipo de Mercado |
BusinessContentType | AgentCode | G4M_CODPRO | Código do Agente (promotor) |
BusinessContentType | AgentInternalId |
| InternalId do Agente |
BusinessContentType | ServiceStationCode | G4M_CODPOS | Código do Posto de Atendimento |
BusinessContentType | ServiceStationInternalId |
| InternalId do Posto de Atendimento |
BusinessContentType | Corporate | G4L_CORP | Corporativo ( "1"-Sim / "2"-Não ) |
BusinessContentType | Event | G4L_EVENTO | Eventos ( "1"-Sim / "2"-Não ) |
BusinessContentType | Recreation | G3L_LAZER | Lazer ( "1"-Sim / "2"-Não ) |
BusinessContentType | Situation | G4L_MSBLQL | Bloqueado ( "1"-Sim / "2"-Não ) |
BusinessContentType | ListOfFamily |
| Lista de Grupos de Produto |
FamilyType | FamilyCode | G4N_GRUPO | Código do Grupo de Produto |
FamilyType | FamilyInternalId |
| InternalId do Grupo de Produto |
FamilyType | ListOfPaymentForm |
| Lista de Formas de Pagamento |
PaymentFormType | PaymentFormCode | G3K_CODFOP / G4O_FOP | Código da Forma de Pagamento |
PaymentFormType | PaymentFormInternalId |
| InternalID da Forma de Pagamento |
Fluxo do Processo
Protótipo de Tela (Figuras meramente ilustrativas)
Browser do cadastro de Adpater E.a.i
Formulário d e Cadastro do Adapter E.a.i – TURA018