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 IntegDefVeja os tópicos IntegDef em rotinas MVC Protheus e IntegDef em rotinas Não-MVC Protheusa 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:
| | Referência | |
| Nome do fonte onde se encontra a rotina static IntegDef |
| | | | |
| Tipo da Mensagem (BusinessMessage, BusinessMessage, Etc. ) |
|
| '20'(EAI_MESSAGE_BUSINESS) |
| | | | | | | | | |
| XML a ser tratado quando Recepção |
| | | | | | |
| Força o GetRotInteg(), indicando para o EAI qual é a rotina que possui o adapter |
| | | | | |
| Quando for um Envio: .T. Define que sera gerado apenas o retorno da INTEGDEF e nao sera fetio o Envio |
| | | | cVersion | | Caracter | | Versão da mensagem Única | | 1.000 | | | | |
|
|
|
cVersion |
| Caracter |
| Versão da mensagem Única |
| 1.000 |
|
|
|
nPage |
| Numérico |
| Numero da página |
| 0 |
|
|
|
nPageSize |
| Numérico |
| Tamanho da página |
| 0 |
|
|
|
Dica |
---|
title | Melhoria 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
|
Dica |
---|
title | Melhoria disponibilizada no label 20231121 |
---|
|
A partir do label 20231120 a função estará preparada para receber os parâmetros nPage e nPageSize a fim de sanar possíveis inconsistências, de timeout, devidos a arquivos muito grandes. Caso seja uma integração síncrona, o conteúdo o nPage e nPageSize sempre será zero, por padrão. |
Âncora |
---|
| _Toc403759555 |
---|
| _Toc403759555 |
---|
|
FWEAIBusEvent
Cria bloco de XML referente a Business Event da Business Message da Mensagem Única
FWEAIBusEvent( cEntity, nOperation, aKeys )
Parâmetros:
| | | | Referência |
| Entidade da mensagem (nome da mensagem única) |
| | | | | | |
| Operação: 3 ou 4 = upsert / 5 = delete |
| | | | | |
| 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:
| | | | Referência | | |
| Nome da requisição (nome da mensagem) |
| | | | |
Exemplo:
cXMLRet := FWEAIBusRequest( "AccountBalance" )
Retorno:
XML a ser utilizado :
<BusinessRequest>
<Operation>AccountBalance </Operation>
</BusinessRequest>
Âncora |
---|
| _Toc403759557 |
---|
| _Toc403759557 |
---|
|
FWEAILOfMessagesFunção para geração de múltiplas mensagens de retorno na Response Message da mensagem única
FWEAILOfMessages( aMessages )
Parâmetros:
| | Referência | | |
| 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 |
| | | | 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 .
FWEAIEMPFIL( cCompanyID, cBranchId, cProduct,lExternal )
Parâmetros:
| | | | Referência |
| Codigo da companhia (CompanyID) recebido no XML da mensagem |
| | | | | |
| Codigo da unidade (BranchID) recebido no XML da mensagem |
| | | | | |
| Codigo do produto (Product) recebido no XML da mensagem |
| X | |
| Lógico |
| Indica se os dados recebidos são do Protheus e que o retorno deve ser o correspondente do sistema externo |
| .F. |
|
|
|
Retorno:
Vetor com { Empresa , Filial } ou vazio, caso a informação não seja encontrada.
Exemplo:
Buscando o par de grupo/filial do Protheus através dos dados recebidos do RM:
aEmpFil := FwEaiEmpFil('01','0001','RM') → Caso seja encontrado correspondente no cadastro de adapters de grupos e filiais irá retornar o grupo e filial do Protheus
Buscando o par de empresa/filial do RM no Protheus
aEmpFil := FwEaiEmpFil('18','D MG 01','RM',.T.) → Caso seja encontrado correspondente no cadastro de adapters de grupos e filiais irá retornar o grupo e filial do RM.
Â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:
| | | | Referência | Referencia | Referência. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc. |
| | | X | | | cAlias | |
| Alias do de/para (SA1, SA2, etc.) |
| | | | referencia referência do De/para (A1_COD, B1_COD, etc. ) |
| | | | |
| Código externo para busca do código interno |
| | | | | |
| Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado |
| | |
Retorno:
Código ExternoInterno
Âncora |
---|
| _Toc403759560 |
---|
| _Toc403759560 |
---|
|
CFGA070Ext
Obtém um código externo da tabela de/para através de um código interno
CFGA070IntCFGA070Ext( cRefer, cAlias, cField, cValInt,cTable)
Parâmetros:
| Referência | | Referencia | Referência. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc. |
| | | X | | | | |
| Alias do de/para (SA1, SA2, etc.) |
| | | | | | referencia referência do De/para (A1_COD, B1_COD, etc. ) |
| | | | | | externo interno para busca do código |
interno | | | X | | | |
| Nome físico da tabela de dados ao qual o de-para se refere. Não é necessário que seja passado |
| | | |
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:
| | | | Referência |
| Referencia. Normalmente a "marca" da mensagem: PROTHEUS / LOGIX / RM / DATASUL, etc. |
| | | | | | |
| Alias do de/para (SA1, SA2, etc.) |
| | | |
| É o campo de referencia do De/para (A1_COD, B1_COD, etc. ) |
| | | | |
| Código externo para gravacao |
| | | | | |
| Código interno para gravação |
| | | | | |
| Indica a deleção do registro |
| | | | |
| Se DELETE e não enviada a cRefer, assume 3, senão assume 2. Se for UPSERT assume 1 |
| | | | | |
| 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 |
---|
|
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:
| | Referência | |
| Rotina que se deseja iniciar a integração |
| | | 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:
| | Referência | |
| String na qual se deseja mudar os caracteres não permitidos |
| | | Exemplo
cRetorno:=_NoTags( 'Quero enviar Pais&Filhos ->"Novo Texto" ')
cRetorno assumirá
Quero enviar Pais&Filhos->"Novo Texto"
Âncora |
---|
| _Toc403759561 |
---|
| _Toc403759561 |
---|
|
FWHasEai
Verifica se uma rotina possui configuração de EAI
FWHasEAI( cFunction, lVerifySend, lVerifyRec, lVerifyUMess,lRestArea )
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. |
|
|
|
lRestArea |
| lógico |
| Retorna a posição inicial da XX4, caso passado como .T. |
| .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
Nota |
---|
|
lRestArea disponível a partir da lib label 30012019, com previsão de liberação em fevereiro de 2019 |
Âncora |
---|
| _Toc403759559 |
---|
| _Toc403759559 |
---|
|
FwEAiSndTo Dica |
---|
title | Disponí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 |
---|
title | Disponível a partir do label 18022019 |
---|
|
|
Função que retorna a versão de uma dado adapter cadastrado.
FwAdapterVersion( cRotina, cModel)
Parametros:
Nome | Tipo | Descrição | Default | Obrigatório |
---|
cRotina | Caracter | Rotina como esta cadastrada na XX4 |
|
|
cModel | Caracter | Nome 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
Âncora |
---|
| _Toc403759559 |
---|
| _Toc403759559 |
---|
|
FwAdapterInfo Dica |
---|
title | Disponível a partir do label 31062019 |
---|
|
|
Função que retorna Informações de um determinado adapter
FwAdapterInfo( cRotina, cModel)
Parametros:
Nome | Tipo | Descrição | Default | Obrigatório |
---|
cRotina | Caracter | Rotina como esta cadastrada na XX4 |
| Sim |
cModel | Caracter | Nome da mensagem como esta cadastrado na XX4 |
| Sim |
Retorno:
Array com os dados conforma cadastrado na XX4. utilizando fwadaptereai.ch atualizado pode se usar os seguintes defines para acessar as informações
Define | Informação | Tipo |
---|
ADAPTER_INFO_MODEL | Nome da Mensagem | Caractere |
ADAPTER_INFO_ROTINA | Rotina da Transação | Caractere |
ADAPTER_INFO_SEND | Se esta configurado para envio | Logico |
ADAPTER_INFO_RECEIVE | Se esta configurado para recebimento | Logico |
ADAPTER_INFO_METHOD | Método da Transação(PROC_SYNC,PROC_ASYNC) | Caractere |
ADAPTER_INFO_OPERATION | Qual operação ele esta configurado | Caractere |
ADAPTER_INFO_CHANNEL | Qual canal ele esta configurado | Caractere |
ADAPTER_INFO_VERSION | Qual a versão que esta configurada | Caractere |
ADAPTER_INFO_CONDITION | Condição cadastrada na XX4, que indica se será executado ou não | Caractere
|
ADAPTER_INFO_FORMAT | Indica se o formato será JSON ou XML | Caractere |
Obs: Caso o adapter não esteja cadastrado o retorno será um array vazio