Cadastro de Adapters:
O cadastro de adapters são rotinas responsáveis por realizar o processamento das mensagens enviadas e recebidas, possibilitando a inclusão, alteração e exclusão do adapter no Protheus.
Pré requisitos:
- Para realizar o cadastro/configuração do adapter é necessário ter uma ROTA cadastrada, para cadastrá-la acesse o link: Cadastro de Rotas EAI
No Configurador (SIFACFG), acesse Ambientes/Schedule/Adapter E.a.i
Efetue a Inclusão de uma nova rotina para os Adapters do sistema Protheus.
Configure a rotina do Adapter, de acordo com a tabela abaixo que já foram pré estabelecidos para a integração:
Mensagem única: Sim
Rotina: Nome do adapter
Mensagem: Nome da mensagem única que o Adapter EAI espera receber.
Descrição: Identificação da mensagem.
Envia: SIM (se envia a informação para o TOTVS SFA) ou NÃO ( Se não envia nenhuma informação deste adapter para o TOTVS SFA).
Recebe: SIM (se recebe a informação do TOTVS SFA) ou NÃO ( Se não recebe nenhuma informação deste adapter do TOTVS SFA).
Método: Síncrono/Assincrono
Operação: Todas
Canal de Envio: Para TOTVS SFA = 3-PAD.APP
Formato: JSON
Roteamento de mensagens: Informar a rota criada no cadastro de rota e se envia de acordo com a integração (ver tabela abaixo).
Exemplo de Cadastro:
Efetue a inclusão dos Adapters, conforme tabela abaixo:
Adapter | Rotina Protheus | Mensagem Única | Mensagem¹ | Descrição¹ | Envia | Recebe | Método Protheus | Operação | Condição de envio | Canal de Envio | Versão | Alias | Formato | Rota * |
Whois Mensagem Única | APCFG060 | 1 - Sim | WHOIS | WHOIS MENSAGEM UNICA | Sim | Sim | Síncrono | Todas | 2 - EAI - REST | 1.000 | XML | |||
Cadastro de filiais | APCFG230 | 1 - Sim | BRANCH | FILIAIS | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.001 | JSON | TOTVSCRM | ||
Cadastro Unidade de Medida | QIEA030 | 1 - Sim | UNITOFMEASURE | UNIDADE DE MEDIDA | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.002 | JSON | TOTVSCRM | ||
Cadastro Grupo de Produtos | MATA035 | 1 - Sim | FAMILY | GRUPO DE PRODUTOS | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.002 | JSON | TOTVSCRM | ||
Cadastro Transportadora ² | MATA050 | 1 - Sim | CARRIER | TRANSPORTADORA | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 1.000 | XML | TOTVSCRM | ||
Cadastro Condição de Pagamento | MATA360 | 1 - Sim | MATA360 | CONDICAO DE PAGAMENTO | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.000 | JSON | TOTVSCRM | ||
Cadasto de Vendedor | MATA040 | 1 - Sim | SELLER | VENDEDOR | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.001 | JSON | TOTVSCRM | ||
Cadastro de Produto | MATA010 | 1 - Sim | ITEM | PRODUTO | Sim | Sim | Assíncrono | Todas | 3 – EAI – PAD. APP. | 4.005 | JSON | TOTVSCRM | ||
Cadastro de Tabela de Preço | OMSA010 | 1 - Sim | PRICELISTHEADERITEM | TABELA DE PRECO | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.001 | JSON | TOTVSCRM | ||
Cadastro de Cliente/Fornecedor | MATA030 | 1 - Sim | CUSTOMERVENDOR | CLIENTE/FORNECEDOR | Sim | Sim | Assíncrono | Todas | 3 – EAI – PAD. APP. | 2.005 | JSON | TOTVSCRM | ||
Pedido de Venda Faturamento | MATA410 | 1 - Sim | ORDER | PEDIDO DE VENDA | Sim | Sim | Assíncrono | Todas | 3 – EAI – PAD. APP. | 4.003 | JSON | TOTVSCRM | ||
Cadastro de Cotação de Moeda | MATA090 | 1 - Sim | CURRENCYQUOTE | COTACAO DE MOEDA | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 1.001 | JSON | TOTVSCRM | ||
Saldo de Produto | MATA225 | 1 - Sim | STOCKLEVEL | SALDO DE ESTOQUE | Sim | Não | Assíncrono | Todas | 3 – EAI – PAD. APP. | 4.003 | SB2 | JSON | TOTVSCRM | |
Rastreabilidade de Pedido ³ | MATA410B | 1 - Sim | DOCUMENTTRACEABILITYORDER | RASTREABILIDADE DE PEDIDO | Sim | Não | Assíncrono | Todas | RTRIM(SC5->C5_ORIGEM) = 'MSGEAI' | 3 – EAI – PAD. APP. | 4.003 | JSON | TOTVSCRM |
Importante:
* - Informar a Rota de acordo com o Cadastro de Rotas EAI.
1 - Mensagem e Descrição precisa ser colocado exatamente como está no quadro
2 – Recomendado na configuração deixar tanto o “Envia” como o “Recebe” com “Não”, pois o cliente está em produção e existe uma sequência correta de cargas antes que se faça a integração de Vendedor, Produto e Cliente, deixando já ativo o diagrama começara a enviar para a integração estes cadastros com erro.
3 - Mensagem é gerada na Liberação do Pedido, para gerar a mensagem no Faturamento necessário utilizar o ponto de entrada SF2460I.PRW e na transmissão da nota SPDNFDANF.prw, segue os dois abaixo. (Caso o PE já esteja sendo utilizado acrescentar o código do PE entrada abaixo dentro do PE já utilizado)
Ponto de Entrada PI_SF2460I.PRW
//------------------------------------------------------------------- /*/{Protheus.doc} SF2460I Ponto de entrada para enviar a mensagem documenttraceability na emissão da nota @author Alessandro Afonso @version P12 @since 02/02/2021 /*/ //------------------------------------------------------------------- User Function SF2460I() Local aAreaSF2 := SF2->(GetArea()) Local aAreaSD2 := SD2->(GetArea()) Local aAreaSC5 := SC5->(GetArea()) Local sf2doc := SF2->F2_DOC //ParamIxb[1] Local sf2serie := SF2->F2_SERIE //ParamIxb[2] SF2->(DbSetOrder(1)) If SF2->(DbSeek(xFilial("SF2")+sf2doc+sf2serie ) ) DbSelectArea("SD2") SD2->(DbSetOrder(3)) //D2_FILIAL, D2_DOC, D2_SERIE If SD2->(DbSeek(xFilial("SD2")+sf2doc+sf2serie ) ) DbSelectArea("SC5") SC5->(DbSetOrder(1)) //C5_FILIAL+C5_NUM If SC5->(DbSeek(xFilial("SC5")+SD2->D2_PEDIDO ) ) //Envio rastreabilidade de pedidos If FWHasEAI("MATA410B",.T.,,.T.) .And. Alltrim(SC5->C5_ORIGEM) == 'MSGEAI' //Verifica se é um pedido gerado pelo Loja e atualiza status do pedido (C5_STATUS) If ExistFunc("LjxjAtStTr") .And. !Empty(SC5->C5_ORCRES) LjxjAtStTr() EndIf FwIntegDef("MATA410B") EndIf EndIf EndIf EndIf RestArea(aAreaSF2) RestArea(aAreaSD2) RestArea(aAreaSC5) aSize(aAreaSF2,0) aSize(aAreaSD2,0) aSize(aAreaSC5,0) Return Nil
Ponto de Entrada PI_SPDNFDANF.prw
#INCLUDE "PROTHEUS.CH" //------------------------------------------------------------------- /*/{Protheus.doc} SPDNFDANF Ponto de entrada para enviar a mensagem documenttraceability na impressão da danfe. @author Alessandro Afonso @version P12 @since 02/02/2021 /*/ //------------------------------------------------------------------- User Function SPDNFDANF() Local aAreaSF2 := SF2->(GetArea()) Local aAreaSD2 := SD2->(GetArea()) Local aAreaSC5 := SC5->(GetArea()) Local sf2doc := ParamIxb[1] Local sf2serie := ParamIxb[2] SF2->(DbSetOrder(1)) If SF2->(DbSeek(xFilial("SF2")+sf2doc+sf2serie ) ) DbSelectArea("SD2") SD2->(DbSetOrder(3)) //D2_FILIAL, D2_DOC, D2_SERIE If SD2->(DbSeek(xFilial("SD2")+sf2doc+sf2serie ) ) DbSelectArea("SC5") SC5->(DbSetOrder(1)) //C5_FILIAL+C5_NUM If SC5->(DbSeek(xFilial("SC5")+SD2->D2_PEDIDO ) ) //Envio rastreabilidade de pedidos If FWHasEAI("MATA410B",.T.,,.T.) .And. Alltrim(SC5->C5_ORIGEM) == 'MSGEAI' //Verifica se é um pedido gerado pelo Loja e atualiza status do pedido (C5_STATUS) If ExistFunc("LjxjAtStTr") .And. !Empty(SC5->C5_ORCRES) LjxjAtStTr() EndIf FwIntegDef("MATA410B") EndIf EndIf EndIf EndIf RestArea(aAreaSF2) RestArea(aAreaSD2) RestArea(aAreaSC5) aSize(aAreaSF2,0) aSize(aAreaSD2,0) aSize(aAreaSC5,0) Return