Índice

How To & WEBINAR - Vídeos explicativos (demonstrações)
Explicações de tudo que envolve a rotina/processos utilizando a didática ilustrativa por vídeos com áudio.
00:00 - Conceito 00:15 - Considerações
|
00:00 - Conceito 00:15 - Considerações
|
|
Conceito
A integração ocorre via XML ou JSON de outro sistema para o Protheus, por meio da identificação de Tags no envio. É possível utilizar o conceito de mensagem síncrona ou assíncrona.
O objetivo da rotina é que ao final da integração seja gerado um registro no Protheus á partir de outro sistema, com cada Tag da mensagem EAI alimentando seu respectivo campo nas tabelas.
De/Para nas integrações de origem RM
Quando alguma tag no XML à ser integrado conter o nome "Id", significa que ela exigirá o De/Para pois seu valor será inserido em um campo no Protheus com validação de tabela (ALIAS). Esses campos que possuem tabela vínculada só podem ter valores que existam em sua própria tabela, ao inserir dados no campo o Protheus automaticamente valida se aquele registro existe na tabela, não pertencendo gerará o HELP REGNOIS.
I. Tag <ItemCode> ao integrar pedido de vendas. - 1 - O campo que receberá essa tag (C6_PRODUTO) é um campo que possui tabela vínculada, a tabela "SB1 - Produtos". Quaisquer valores colocados nesse campo, serão validados pelo sistema se lógicamente existem na tabela de produtos SB1.
- 2 - Por essa Tag de inserção de produto no pedido de vendas, não ter no nome "Id", significa que o dado contido na Tag será injetado diretamente no campo do Protheus, sem De/Para para transcrever o valor do RM em um código existente no Protheus.
- 3 - Por esse motivo, ao integrar com essa Tag é obrigatório que o Protheus tenha um produto com o mesmo valor da Tag para aceitar a inserção, caso contrário gerará o HELP REGNOIS.
Tag origem : <ItemCode> Valor inserido na Tag: ABC Campo destino: C6_PRODUTO Alias do campo destino: Tabela SB1 (Produtos [B1_COD]) Método: Sem De/Para (Pois não contém "Id" no nome como por exemplo, "ItemInternalId")

Explicação Passo 1: É a Tag do XML da integração de um pedido de venda, na qual tem o valor "43". Como não é uma Tag interna com "Id", não possuirá De/Para, simbolizando que o Produto 43 no RM terá de encontrar no Protheus um produto com o mesmo código 43.
Explicação Passo 2: A Tag <ItemCode> tem como destino o campo C6_PRODUTO no Protheus (Fonte MATI410), é como uma inserção manual na tela do pedido de vendas, ele colocará o valor informado na Tag, que no exemplo é 43 e "dará Enter", e ocorrerá a validação se o conteúdo colocado existe na própria tabela do campo, que é a tabela de produtos (SB1).
Explicação Passo 3: Após isso o registro não será incluido com sucesso, pois de acordo com o print acima, na tabela SB1 do ambiente Protheus, não há o produto com o código ABC (B1_COD = ABC) que foi informado na Tag <ItemCode> do XML.
|
Tag origem: <ItemCode> Valor inserido na Tag: 43 Campo destino: C6_PRODUTO Alias do campo destino: Tabela SB1 (Produtos [B1_COD]) Método: Sem De/Para (Pois não contém "Id" no nome como por exemplo, "ItemInternalId")

Explicação Passo 1: É a Tag do XML da integração de um pedido de venda, na qual tem o valor "43". Como não é uma Tag interna com "Id", não possuirá De/Para, simbolizando que o Produto 43 no RM terá de encontrar no Protheus um produto com o mesmo código 43.
Explicação Passo 2: A Tag <ItemCode> tem como destino o campo C6_PRODUTO no Protheus (Fonte MATI410), é como uma inserção manual na tela do pedido de vendas, ele colocará o valor informado na Tag, que no exemplo é 43 e "dará Enter", e ocorrerá a validação se o conteúdo colocado existe na própria tabela do campo, que é a tabela de produtos (SB1).
Explicação Passo 3: Após isso o registro será incluido com sucesso, pois de acordo com o print acima, na tabela SB1 do ambiente Protheus, há o produto com o código 43 (B1_COD = 43) que foi informado na Tag <ItemCode> do XML.
|
II. Tag <ItemInternalId> ao integrar pedido de vendas. - 1 - O campo que receberá essa tag (C6_PRODUTO) é um campo que possui tabela vínculada, a tabela "SB1 - Produtos". Quaisquer valores colocados nesse campo, serão validados pelo sistema se lógicamente existem na tabela de produtos SB1.
- 2 - Por essa Tag de inserção de produto no pedido de vendas, conter no nome "Id", significa que o produto do RM contido na Tag será transcrito em um produto diferente no Protheus pelo De/Para de Mensagem Única (xxxxxxx) para transcrever o valor do RM em um código existente no Protheus, visto que o mesmo produto pode ter códigos diferentes nos sistemas.
- 3 - Por esse motivo, ao integrar com essa Tag é obrigatório que o Protheus tenha um De/Para para realizar a conversão com o mesmo valor da Tag para aceitar a inserção, caso contrário exigirá na integração.
- 4 -
OBS: Caso o valor colocado no De/Para "XXF_INTVAL" também não exista no Protheus, a transcrição não será efetiva e apresentará o HELP REGNOIS
|
Ao cadastrar um De/Para para determinada tabela, é obrigatório cadastrar seu Adapter relativo.
- Exemplo: Ao incluir um De/Para transcrever uma condição de pagamento do RM, é necessário cadastrar um ADAPTER da rotina de condição de pagamento.
- Caso não use o De/Para e o campo de destino desta Tag seja um campo com tabela vínculada, o conteúdo da Tag do XML de ORIGEM deve ser idêntico ao registro à ser inserido no Protheus, para que no Protheus tenha o mesmo código do conteúdo do XML de origem e receba o registro.
|
Integrações das rotinas
Como integrar no faturamento as tabelas compatíveis RM x Protheus:
Fonte destino da integração: MATI030 Mensagem (XX4_MESSAGE): CUSTOMERVENDOR
Nesse carrossel de opções (0/1/2/3/4/5), há todo o conteúdo necessário para a integração de um cliente RM no Protheus por mensagem EAI.
KCS:
|
Os campos obrigatórios na tabela de clientes (SA1) serão exigidos também na integração.
Em uma integração, há 4 tipos de campos:
[LIVRE SIMPLES] - O campo que é totalmente livre
Campo A1_NOME (Campo FreeValue)

É um campo que não possui tabela vinculada, então aceita qualquer valor.
1 - Inserindo Tag contendo carácteres especiais: 
Explicação do Resultado: Inserido com sucesso, pois no campo não há validação de exclusividade para valores com carácteres especiais.
2 - Inserindo Tag contendo carácteres alfanuméricos: 
Explicação do Resultado: Inserido com sucesso, pois no campo não há validação de exclusividade para valor alfanumérico.
3 - Inserindo Tag contendo carácteres numéricos: 
Explicação do Resultado: Inserido com sucesso, pois no campo não há validação de exclusividade para valor numérico.
4 - Inserindo Tag não contendo nexo com validação: 
Explicação do Resultado: Inserido com sucesso, pois no campo não há alguma validação. |
|
[LIVRE] - O campo que é livre para recebimento de informação (respeitando o tipo e validação do campo) Campo A1_CGC (Campo ConditionalValue)

É um campo que não possui tabela vinculada, então aceita qualquer valor, desde que: - Seja um CPF real de acordo com a validação do campo
- Respeite o tipo do campo, não tendo letras pois este campo é numérico e ao inserir letras o sistema gerará erro.
|
[REGRADO SIMPLES] - O campo que recebe obrigatoriamente uma informação fixa sem De/Para Campo A1_TIPO (Campo ListBox) 
É um campo que não possui tabela vinculada, mas possui opções de escolhas fixa, então aceita valores desde que:
- Não tenha a Tag desse campo no XML
- A Tag venha em branco no XML
- O valor da Tag no XML seja alguma existente na lista de opções do campo (F / L / R / S / X)
- Respeite o tipo do campo, sendo uma opção pronta, ao existir números ou letras na Tag que levará informação ao campo não existentes ocasionará erros.
|
[REGRADO] - O campo que tem uma tabela vínculada (ALIAS), que pode ter seu De/Para cadastrado ou não, mas toda informação colocada será validada se existe ou não seu registro. Campo A1_CONDPAG (Campo ALIAS) 
É um campo que possui tabela vinculada, então qualquer valor colocado será validado no sistema se existe esse registro na tabela (ALIAS) do campo, só aceita o valor colocado se:
- Existir a informação colocada registrada na tabela
|
Por padrão os campos obrigatórios (Que por esse motivo devem ter suas tags no XML e que usaremos como base para exemplo):
[*] - A1_COD (Campo mestre da integração)
[*] - A1_LOJA [*] - A1_NOME [*] - A1_END [*] - A1_NREDUZ [***] - A1_TIPO [****] - A1_EST [*] - A1_MUN
OBS 1: Se for colocado o "Cd. Município (A1_COD_MUN)" automaticamente gatilhará o campo "Município* (A1_MUN)" com o nome do município correspondente. OBS 2: Não é obrigatório a colocação da "Natureza (A1_NATUREZ)" mas é recomendado dependendo da parametrização do MV_1DUPNAT.
|
Tabela: XX4Rotina: (CFGA020 - Adapter E.A.I.)
XX4_FILEXE = Filial recebedora do Protheus XX4_UNMESS = '1 - Sim' XX4_ROTINA = 'CRMA980'/'MATA030' XX4_MODEL = 'CUSTOMERVENDOR' XX4_DESCRI = Usuário escolhe XX4_SENDER = '2 - Não' XX4_RECEIV = '1 - Sim' XX4_METODO = '2 - Assíncrono' XX4_TPOPER = '1 - Todas' XX4_CHANEL = 3 XX4_SNDVER = ('2.005+') [Mais atualizada gatilhada automaticamente] XX4_FORMAT = 'XML' XX4_SAVLOG = '1 - Sim' XX4_ROUTE: Definida preenchida ou não na implantação da integração
Restante dos campos da XX4: Vazios (não obrigatórios)
|

|
Tabela: XXDRotina: (APCFG050 - De/para Empresas Mensagem Unica)
XXD_REFER = Conteúdo da Tag do XML <ProductName> (RM) XXD_COMPA = Conteúdo da Tag do XML <CompanyId> XXD_BRANCH = Conteúdo da Tag do XML <BranchId> [Se estiver vazia no XML, o campo fica vazio.] XXD_EMPPRO = Empresa do Protheus recebedora XXD_FILPRO = Filial no Protheus recebedor [Dentro da empresa]
|

|
Nesse carrossel de opções (0/1/2/3/4/5), há todo o conteúdo necessário para a integração de um cliente RM no Protheus por mensagem EAI.
|
< imagine help messages here >
|
< imagine a xml message here >
|
- MATA410: Fonte destino
- MATI410: Fonte integrador
|
|
|
Caminhos, Campos e Tabelas
Nesse menu interativo há o caminho das rotinas, todos os campos e tabelas envolvidos na integração de faturamento no Protheus recebendo do RM.
|
- Caminho até o Schedule: Ambiente Configurador (SIGACFG) → Ambiente → Schedule → Schedule [CFGA010]
- I. Caminho até o Adapter: Ambiente Configurador (SIGACFG) → Ambiente → Schedule → Adapter E.a.i. [CFGA020]
- II. Caminho até o De/Para Mensagem Unica: Ambiente Configurador (SIGACFG) → Ambiente → Schedule → De/para de Mensagem Única [ACFG070]
- III. Caminho até o De/Para de Empresa/Filial: Ambiente Configurador (SIGACFG) → Ambiente → Schedule → Emp.filial Mensagem Única [ACFG050]
|
- "Filial (XX4_FILIAL)" = Filial de registro do dado
- "Filial Execução (XX4_FILEXE) = Filial recebedora do Protheus
- "Mensagem Unica (XX4_UNMESS)" = '1 - Sim'/'2 - Não'
- "Rotina* (XX4_ROTINA)" = Rotina que será o destino da integração
- "Mensagem* (XX4_MODEL)" = Mensagem EAI da integração
- "Descrição* (XX4_DESCRI) = Usuário escolhe o nome do registro
- "Envia (XX4_SENDER)" = '1 - Não'/'2 - Não'
- "Recebe (XX4_RECEIV)" = '1 - Não'/'2 - Não'
- "Método (XX4_METODO) = '1 - Síncrono'/'2 - Assíncrono'
- "Operação (XX4_TPOPER) = '1 - Todas'/'2 - Atualização'/'3 - Exclusão'
- "Canal Envio (XX4_CHANEL)" = '1 - ESB'/'2 - EAI - SOAP'/'3 - EAI - PAD. APP.'
- "Salva log (XX4_SNDVER)" = Versão do adapter (gatilhada automaticamente ao incluir a rotina [XX4_ROTINA])
- "Formato (XX4_FORMAT)" = 'XML'/'JSON'
- "Salva log (XX4_SAVLOG)" = '1 - Sim'/'2 - Nao'
- "Rota padrão (XX4_ROUTE)" = Definida preenchida ou não na implantação da integração
- "Condição (XX4_EXPFIL)" = Definida a expressão de filtro para envio
- "Compl.Recep. (XX4_LOADRE)" = Definido o nome da rotina de complemento na recepção da mensagem
- "Compl.Envio. (XX4_LOADSE)" = Definido o nome da rotina de complemento no envio da mensagem
- "XSD (XX4_XSD)" = Definido o caminho do arquivo XSD de validação do XML
- "Manipulação XML (XX4_CHGXML)" = Definido o modo de manipulação XML
- "Alias (XX4_ALIASP)" = Alias da tabela a ser integrada
|
"Referência (XXF_REFER)" = Nome da aplicação origem
"Tabela* (XXF_TABLE)" = Tabela destino no Protheus + Empresa filial recebedora
"Alias* (XXF_ALIAS)" = Tabela destino No Protheus (ALIAS)
"Campo* (XXF_FIELD)" = Campo Mestre da tabela destino no Protheus
"Valor Externo (XXF_EXTVAL)" = Conteúdo da Tag á ser transcrita na mensagem EAI origem
"Valor Interno (XXF_INTVAL)" = Empresa + Filial + Registro no Protheus
- "Mensagem Única (XXF_UNMESS)" = Definido a mensagem única da integração
|
"Referência* (XXD_REFER)" = Nome da aplicação origem
"XXD_COMPA" = Empresa na aplicação origem
"XXD_BRANCH" = Filial na aplicação origem
"XXD_EMPPRO" = Empresa do Protheus recebedora
"XXD_FILPRO" = Filial no Protheus recebedora [Dentro da empresa]
|
|
|
- XX3 - Campos do Shedule
- I. XX4 - Adapters
- II. XXF - De/Para de Mensagens Únicas
- III. XXD - De/Para de Empresas e Flilais
|
Clientes: CUSTOMERVENDOR - (SA1) - Cadastro de Cliente
|
- Pedidos de Venda: ORDER
- (SC5) - Cabeçalho do Pedido de Venda
- (SC6) - Itens do Pedido de Venda
|
- Condições de Pagamento: PAYMENTCONDITION
- (SE4) - Condições de Pagamento
Nome da rotina: Condição de Pagamento Fonte destino: MATA360 Fonte integrador: MATI360 Origem: RM Tabela: : CUSTOMERVENDOR - (SA1) - Cadastro de Cliente
|
- Regras de Negócio: COMMERCIALFAMILY
- (ACU) - Categorias de Produto (XXXXXXXXX)
|
- Vendedores: SELLER
- (SA3) - Cadastro de Vendedores
|
- Transportadoras: CARRIER
- (SA4) - Cadastro de Transportadoras
|
- Documentos de Saída: INVOICE
- (SD2) - Itens dos Documentos de Saída
- (SF2) - Cabeçalhos dos Documentos de Saída
|
- Tabelas de Preço: PRICELISTHEADERITEM
- (DA0) - Cabeçalhos das Tabelas de Preço
- (DA1) - Itens das Tabelas de Preço
|
|
|
|
Perguntas mais usuais (F.A.Q.)
Como passar a integrar as rotinas de faturamento do RM no Protheus
1 - Configurar o WS (WebServices) (https://tdn.totvs.com/x/apk4E).
- Dúvidas nessa etapa, contate a equipe Protheus Framework.
2 - Seguir passo a passo a rotina que deseja incluir no tópico XXXXXXXXXX
HELPS
Parâmetros
Os parâmetros podem ser inclusive os mesmos como em uso manual do Protheus, porém a integração é uma entrada de dados ordenados automaticamente.
Cliente: CUSTOMERVENDOR
Pedido de Venda: ORDER
Pontos de Entrada
Não há pontos de entrada interativos com o fonte MATI030.
Pontos de entrada ao cliente integrar no Protheus:
ExecAuto()
A integração já é uma execução automática por si só.
Sugestões
Gostaria de sugerir uma implementação diferente ou uma melhoria nessa documentação? Abra um ticket para nós, a Equipe Faturamento (SIGAFAT)!