Páginas filhas
  • Funções e classes utilizáveis no EAI Protheus

Versões comparadas

Chave

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

Abaixo as principais funções do EAI Protheus

Âncora
_Toc403759540
_Toc403759540
Classe FWEAI

         A classe FWEAI é a classe responsável por criar os objetos principais do EAI Protheus. Para verificar o funcionamento desta classe, acesse a sua documentação no TDN clicando aqui.

Âncora
_Toc403759553
_Toc403759553
Static Function IntegDef

Veja a definição da IntegDef aqui.

Âncora
_Toc403759554
_Toc403759554
FWIntegDef


Função de geração de mensagem Única de forma manual, acionando a IntegDef do programa indicado.
FWIntegDef( cSourceCode, cTypeMessage, cType, cXml, cFunName, lOnlyReturn, cVersion )
Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cSourceCode
 

Caracter
 

Nome do fonte onde se encontra a rotina static IntegDef
 

GetRotInteg()
   



cTypeMessage
 

Caracter
 

Tipo da Mensagem (BusinessMessage, BusinessMessage, Etc. )
 

'20'(EAI_MESSAGE_BUSINESS)
   



cType
 

Caracter
 

Envio ou Recepcao
 

'1' (TRANS_SEND)
   



cXml
 

Caracter
 

XML a ser tratado quando Recepção
    
 





cFunName
 

Caracter
 

Força o GetRotInteg(), indicando para o EAI qual é a rotina que possui o adapter
 

GetRotInteg()
   



lOnlyReturn
 

Lógico
 

Quando for um Envio: .T. Define que sera gerado apenas o retorno da INTEGDEF e nao sera fetio o Envio
 

.F.
 
  



cVersion
 

Caracter
 

Versão da mensagem Única
 

1.000
   



Dica
titleMelhoria disponibilizada no label 04032016

A partir do label 04032016 o retorno da FwIntegdef traz, quando existe erro de integração, o erro apresentado no segundo parâmetro do Array de resposta.

O primeiro parâmetro deste array é um lógico, indicando se a integração ocorreu com sucesso (caso o adapter não esteja cadastrado é retornado sucesso) ou não. O segundo é a mensagem de erro associada ao evento.

Para verificar o sucesso ou não da integração nos adapters é necessário validar o retorno da rotina (o retorno pode ser nil caso o adapter não esteja cadastrado. Neste caso, a integração ocorreu com 'sucesso', pois não foi necessário executá-la.). Exemplo:

aRet:=FwIntegdf(........)

If aRet <> nil

//avalia o retorno dos parâmetros 


Âncora
_Toc403759555
_Toc403759555
FWEAIBusEvent


Cria bloco de XML referente a Business Event da Business Message da Mensagem Única
FWEAIBusEvent( cEntity, nOperation, aKeys )
Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cEntity
 

Caracter
 

Entidade da mensagem (nome da mensagem única)
     





nOperation
 

Numérico
 

Operação: 3 ou 4 = upsert / 5 = delete
 

2
   



aKeys
 

Array
 

Vetor bidimensional com campos no formato {Campo, Conteúdo}
  


{ }

 

   

 






Exemplo:
cXMLRet := FWEAIBusEvent( "ITEM", 5, { { "Code", SB1->B1_COD } } )
Retorno:
XML a ser utilizado:
<BusinessEvent>
<Entity>ITEM</Entity>
<Event>delete</Event>
<Identification>
<key name="code">0000000001</key>
</Identification>
</BusinessEvent>

Âncora
_Toc403759556
_Toc403759556
FWEAIBusRequest


Cria bloco de XML referente à Business Request da Business Message da Mensagem Única
FWEAIBusRequest( cRequest )

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cRequest
 

Caracter
 

Nome da requisição (nome da mensagem)
   
  

 







Exemplo:
cXMLRet := FWEAIBusRequest( "AccountBalance" )

Retorno:
XML a ser utilizado :
<BusinessRequest>
<Operation>AccountBalance </Operation>
</BusinessRequest>

Âncora
_Toc403759557
_Toc403759557
FWEAILOfMessages

Função para geração de múltiplas mensagens de retorno na Response Message da mensagem única
FWEAILOfMessages( aMessages )
Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

aMessages
 

Array
 

Vetor bidimensional com os dados para a criação da mensagem no formato:

[1] Caracter - Mensagem

[2] Numérico - Tipo da mensagem: 1=error ou 2=warning

[3] Caracter - Codigo de Erro da mensagem conforme a mensagem

  

 



 X
 


Exemplo:
aMessages := {}
aAdd( aMessages, { 'Estado nao existe' , 1, '001' } )
aAdd( aMessages, { 'CNPJ invalido' , 1, 'A10' } )
aAdd( aMessages, { 'Nao informado tipo', 2, '500' } )
cRet := FWEAILOfMessages( aMessages )
// cRet será
//<Message type="error" code="001">Estado nao existe</Message>
//<Message type="error" code="A10">CNPJ invalido</Message>
//<Message type="warning" code="500">Nao informado tipo</Message>

Âncora
_Toc403759558
_Toc403759558
FWEAIEMPFIL


Verifica e retorna o de/para de empresa filial no Protheus para o CompanyId e BranchId das Mensagem Única no recebimento , caso seja encontrado.
FWEAIEMPFIL( cCompanyID, cBranchId, cProduct )

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cCompanyID
 

Caracter
 

Codigo da companhia (CompanyID) recebido no XML da mensagem
  
 



 X
 

cBranchId
 

Caracter
 

Codigo da unidade (BranchID) recebido no XML da mensagem
   



X
 

cProduct
 

Caracter
 

Codigo do produto (Product) recebido no XML da mensagem
  
 



X
 


Retorno:
Vetor com { Empresa Protheus, Filial Protheus}

Âncora
_Toc403759559
_Toc403759559
CFGA070Int


Obtém um código interno da tabela de/para através de um código externo
CFGA070Int( cRefer, cAlias, cField, cValExt,cTable )
Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cRefer
 

Caracter
 

Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.
  
 



 X
 

cAlias
 

Caracter
 

Alias do de/para (SA1, SA2, etc.)
   



X
 

cField
 

Caracter
 

É o campo de referencia do De/para (A1_COD, B1_COD, etc. )
  
 



X
 

cValExt
 

Caracter
 

Código externo para busca do código interno
   



X
 

cTable
 

Caracter
 

Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
 

RetSqlName(cAlias)
   




Retorno:
Código Externo

Âncora
_Toc403759560
_Toc403759560
CFGA070Ext


Obtém um código externo da tabela de/para através de um código interno
CFGA070Int( cRefer, cAlias, cField, cValInt,cTable)
Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cRefer
 

Caracter
 

Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.
  
 



 X
 

cAlias
 

Caracter
 

Alias do de/para (SA1, SA2, etc.)
   



X
 

cField
 

Caracter
 

É o campo de referencia do De/para (A1_COD, B1_COD, etc. )
 
  



X
 

cValInt
 

Caracter
 

Código interno para busca do código externo
   



X
 

cTable
 

Caracter
 

Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
 

RetSqlName(cAlias)
   




Retorno:
Código Externo

Âncora
_Toc403759561
_Toc403759561
CFGA070Mnt


Faz a Inclusão /Alteração / Exclusão dos dados na tabela de/para
CFGA070Mnt( cRefer, cAlias, cField, cValExt, cValInt, lDelete, nOrdem,cTable,cOwnerMsg )

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cRefer
 

Caracter
 

Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc.
 
    





cAlias
 

Caracter
 

Alias do de/para (SA1, SA2, etc.)
   



X
 

cField
 

Caracter
 

É o campo de referencia do De/para (A1_COD, B1_COD, etc. )
   



X
 

cValExt
 

Caracter
 

Código externo para gravacao
     





cValInt
 

Caracter
 

Código interno para gravação
 
  



X
 

lDelete
 

Lógico
 

Indica a deleção do registro
 

.F.
   



nOrdem
 

Numérico
 

Ordem para busca
 

Se DELETE e não enviada a cRefer, assume 3, senão assume 2. Se for UPSERT assume 1.
   



cTable
 

Caracter
 

Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado
 

RetSqlName(cAlias)
  
 



cOwnerMsg 
 

Caracter
 

Informa qual a mensagem única pai do de-para. Por exemplo, a mensagem pai do de-para da tabela SA1 é a CUSTOMERVENDOR. Porém mais de uma mensagem podem gravar aquele de-para, mas somente uma é o 'pai' do registro. Ex. A mensagem única FINANCING grava o de-para da tabela SE1, porém a mensagem ACCOUNTRECEIVABLEDOCUMENT também faz a gravação, sendo esta o 'pai' do de-para.

Este campo somente é habilitado em repositórios Protheus com Lib de versão maior ou igual a 10102016, representada pelo campo XXF_UNMESS.

     
 







O Delete dos registros pode ser realizado de duas maneiras diferentes.

  • Ao chamar a função para excluir os de-para e não passar a variável cRefer (a marca), todos os registros que possuem aquele InternalId, independente de qual foi a marca geradora, serão apagados. Exemplo de chamada:
    • CFGA070Mnt( , 'SA1', 'A1_COD', , '18|D MG 01002|01|C', .T. ) - Neste caso, serão excluídos da tabela XXF todo InternalId da tabela SA1, de chave A1_COD que possuam o código 18|D MG 01002|01|C, independente da marca que o gerou;
  • Pode-se excluir exclusivamente o de-para de uma única marca, deste modo, esta deve ser passada na chamada da função:
    • CFGA070Mnt('RM' , 'SA1', 'A1_COD', , '18|D MG 01002|01|C', .T. ) - Desta maneira, somente serão excluídos os de-para de código interno 18|D MG 01002|01|C que foram gerados em uma integração com o produto RM.
Nota
titleAtenção

cOwnerMsg disponível a partir da lib label 10102016, com previsão de liberação em dezembro de 2016.

 

 



Âncora
_Toc403759561
_Toc403759561
SetRotInteg


Ajusta a rotina de integração no EAI (o GetRotInteg()), quando a rotina chamada não é a rotina de contexto da integração. Ao utilizar esta rotina, após a chamada da integração é aconselhável utilizá-la para voltar o GetRotInteg() ao estado original.
SetRotInteg( cFunction )

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cFunction
 

Caracter
 

Rotina que se deseja iniciar a integração
   



 X
 

Exemplo

SetRotInteg('CTBA030') 

 



Âncora
_Toc403759561
_Toc403759561
GetRotInteg


Devolve a rotina de contexto de integração na Mensagem Única
GetRotInteg( )

Exemplo

cRotina:=GetRotInteg()

 


Âncora
_Toc403759561
_Toc403759561
_NoTags


Ajusta uma string trocando os caracteres de controle do XML por suas entidades de referência
_NoTags( cTexto)

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cTexto
 

Caracter
 

String na qual se deseja mudar os caracteres não permitidos
   



 X
 

Exemplo

cRetorno:=_NoTags( 'Quero enviar Pais&Filhos ->"Novo Texto" ')

cRetorno assumirá

Quero enviar Pais&amp;Filhos-&gt;&quot;Novo Texto&quot;

 

 



Âncora
_Toc403759561
_Toc403759561
FWHasEai


Verifica se uma rotina possui configuração de EAI
FWHasEAI( cFunction, lVerifySend, lVerifyRec, lVerifyUMess )

Parâmetros:

Nome
 

Tipo
 

Descrição
 

Default
 

Obrigatório
 

cFunction
 

Caracter
 

Nome da função para verificação
 

 GetRotInteg()
   



lVerifySend
 

Lógico
 

Verifica se está configurado para envio
 

.F.
   



lVerifyRec
 

Lógico
 

Verifica se está configurado para recepção
 

.F.
   



lVerifyUmess
 

Lógico
 

Verifica se está configurada como Mensagem Única Totvs
 

.F.
   



         

          Se todos os parâmetros forem omitidos, será verificado apenas se há uma configuração de EAI para a rotina independentemente de se ter o envio ou recebimento habilitados. 


Exemplo

lRetorno:=FWHasEai('MATA020',.T.,,.T.) //verifica se existe a mensagem única do fonte MATA020 cadastrada para envio

Âncora
_Toc403759559
_Toc403759559
FwEAiSndTo

 
Dica
titleDisponível a partir do label 08062016


Função que retorna  para qual produto cadastrado no Roteamento EAI a mensagem está sendo enviada

FwEaiSndTo( )

Retorno:

Produto cadastrado na rota (DATASUL, RM, etc.)

Obs: Caso não exista rota cadastrada é retornado uma string vazia.


Âncora
_Toc403759559
_Toc403759559
FwAdapterVersion

Dica
titleDisponível a partir do label 10012019


Função que retorna a versão de uma dado adapter cadastrado. 

FwEaiSndTo( cRotina, cModel)

Parametros:

NomeTipoDescriçãoDefaultObrigatório
cRotinaCaracterRotina como esta cadastrada na XX4

cModelCaracterNome da mensagem como esta cadastrado na XX4


Retorno:

Versão cadastrada na XX4, Exemplo : "2.003"

Obs: Caso o adapter não esteja cadastrado o retorno será vazio


Status do documentoConcluído
Data18/11/2014
Versão1.0
Versão anterior1.0
Autores
Índice resumido
Índice
maxLevel1
indent10px
Índice
Índice
outlinetrue
indent10px