Este documento destina-se a todos os usuários do Sistema isoCRM.
Capacitar o usuário a configurar o Protheus.
O objetivo do plugin é fazer com que haja a integração dos dados entre o Protheus e o ISO CRM de maneira automática e/ou manual. Através de uma API de comunicação disponibilizada pelo ISO CRM, o Protheus faz o envio e leitura dos dados, utilizando como critério alguns campos de controle, como: “Integra com ISO?”, “Data/Hora” da última integração, “Data/Hora” da última alteração do registro no Protheus, “Número de tentativas (attempts)” que ocorreram erros de integração e o “Código ISO” para controle da chave entre o Protheus e o ISO CRM. Através do uso de um “robô” configurado no sistema de agendamentos (workflow/scheduler) do Protheus, é possível realizar a integração de forma automática.
A comunicação dos dados pode ser exemplificada de maneira mais simples no diagrama abaixo. Basicamente o que existe é uma API no sistema da ISO CRM que é responsável por realizar entrada de dados do Protheus para ele e a saída de dados dele para o Protheus. A comunicação tanto de entrada como de saída de dados é iniciada pelo Protheus através do uso de um robô configurado no agendador do configurador e/ou manualmente através do uso da ferramenta diretamente no menu pelo Protheus.
A seguir, será exibido a estrutura de dados que foi criada no protheus para que o plugin de integração com o CRM funcione de maneira adequada. Foram necessários criar parâmetros, tabelas, índices e campos, conforme a seguir:
O caminho sugerido para execução da ferramenta de integração via Protheus é o seguinte:
Faturamento->Atualizações->isoCRM->API isoCRM
Lista dos parâmetros existentes atualmente que podem ser configurados e que irão afetar o funcionamento da ferramenta de integração:
Figura 1 - Local no servidor do arquivo CRT do certificado
A Figura 1* representa o parâmetro “ZZ_CERCRT”, que indica o local, a partir do “system_path” do servidor, onde está localizado o arquivo .CRT do certificado digital para uso na conexão SSL.
Figura 2 - Local no servidor do arquivo CST do certificado
A Figura 2* representa o parâmetro “ZZ_CERCSR”, que indica o local, a partir do “system_path” do servidor, onde está localizado o arquivo .CST do certificado digital para uso na conexão SSL.
Figura 3 - Local no servidor do arquivo KEY do certificado
A Figura 3* representa o parâmetro “ZZ_CERKEY”, que indica o local, a partir do “system_path” do servidor, onde está localizado o arquivo .KEY do certificado digital para uso na conexão SSL.
Figura 4 - Senha do certificado digital
A Figura 4* representa o parâmetro “ZZ_CERPASS”, onde é informado a senha que foi utilizada para geração dos arquivos do certificado digital para integração SSL.
Figura 5 - Data da última integracao dos clientes no isoCRM.
A Figura 5* representa o parâmetro “ZZ_DTCLI”, utilizado para determinar a última data e hora de integração da entidade: “ENTRADACLIENTE”. Esse parâmetro pode ser utilizado como filtro na consulta dos dados da API da ISO CRM. Dependendo da entidade de consulta, essa data será enviada para a API da ISO CRM e, dessa forma, a API irá retornar apenas registros que foram alterados a partir dessa data.
Figura 6 - Data da última integracao dos estoques no isoCRM.
A Figura 6* representa o parâmetro “ZZ_DTEST”, utilizado para determinar a última data e hora de integração da entidade: “ENTRADAARMAZEMESTOQUE”. Esse parâmetro pode ser utilizado como filtro na consulta dos dados da API da ISO CRM. Dependendo da entidade de consulta, essa data será enviada para a API da ISO CRM e, dessa forma, a API irá retornar apenas registros que foram alterados a partir dessa data.
Figura 7 - Data da última integracao dos pedidos no isoCRM.
A Figura 7* representa o parâmetro “ZZ_DTPED”, utilizado para determinar a última data e hora de integração da entidade: “ENTRADAPEDIDO”. Esse parâmetro pode ser utilizado como filtro na consulta dos dados da API da ISO CRM. Dependendo da entidade de consulta, essa data será enviada para a API da ISO CRM e, dessa forma, a API irá retornar apenas registros que foram alterados a partir dessa data.
Figura 8 - Nome da tabela que será utilizada para: Autenticação
A Figura 8* representa o parâmetro “ZZ_TAUTH” que é utilizado para definir o nome da tabela customizada utilizada para: Autenticação. Esse parâmetro existe para permitir utilizar diferentes nomes de tabelas customizadas que estão disponíveis, dependendo da empresa/filial em questão. Essa tabela é utilizada para definir o cabeçalho, usuário e senha e URL para realizar a autenticação na API da ISO CRM e obter o “token da sessão” para comunicação entre as ferramentas.
Figura 9 - Nome da tabela que será utilizada para: Entidades de Exportação
A Figura 9* representa o parâmetro “ZZ_TENTEXP” que é utilizado para definir o nome da tabela customizada utilizada para: Entidades de Exportação. Esse parâmetro existe para permitir utilizar diferentes nomes de tabelas customizadas que estão disponíveis, dependendo da empresa/filial em questão. Essa tabela é utilizada para definir o nome, URL e SQL para consulta dos dados das entidades de exportação (do Protheus para o ISO CRM), comumente chamadas de entidade de “ENTRADA”.
Figura 10 - Nome da tabela que será utilizada para: Entidades de Importação
A Figura 10* representa o parâmetro “ZZ_TENTIMP” que é utilizado para definir o nome da tabela customizada utilizada para: Entidades de Importação. Esse parâmetro existe para permitir utilizar diferentes nomes de tabelas customizadas que estão disponíveis, dependendo da empresa/filial em questão. Essa tabela é utilizada para definir o nome, URL e SQL para consulta dos dados das entidades de importação (do ISO CRM para Protheus), comumente chamadas de entidade de “SAIDA”.
Figura 11 - Nome da tabela que será utilizada para: Agendamentos
A Figura 11* representa o parâmetro “ZZ_TJOBS” que é utilizado para definir o nome da tabela customizada utilizada para: Agendamentos. Esse parâmetro existe para permitir utilizar diferentes nomes de tabelas customizadas que estão disponíveis, dependendo da empresa/filial em questão. Essa tabela é utilizada para definir quais dias, horários e recorrência determinada entidade de exportação ou importação será executada.
Obs.: O tempo de intervalo informado nessa tabela está diretamente ligada com o tempo de intervalo do agendador. Sendo necessário mantê-los configurados de tal forma que permita a execução deles no momento correto.
Figura 12 - Nome da tabela que será utilizada para: Logs
A Figura 12* representa o parâmetro “ZZ_TLOG” que é utilizado para definir o nome da tabela customizada utilizada para: Logs. Esse parâmetro existe para permitir utilizar diferentes nomes de tabelas customizadas que estão disponíveis, dependendo da empresa/filial em questão. Essa tabela é utilizada para armazenar qualquer apenas erros de integração que ocorrer entre as tentativas de comunicação das ferramentas. Através dela é possível identificar o problema para tentar corrigi-lo.
Abaixo a lista de tabelas utilizadas atualmente pela ferramenta de integração da API ISO CRM.
Detalhes sobre a tabela utilizada para: Entidades de Exportação. Essa tabela é utilizada para definir o nome, URL e SQL para consulta dos dados das entidades de exportação (do Protheus para o ISO CRM), comumente chamadas de entidade de “ENTRADA”.
Detalhes sobre a tabela utilizada para: Agendamentos. Essa tabela é utilizada para definir quais dias, horários e recorrência determinada entidade de exportação ou importação será executada.
Detalhes sobre a tabela utilizada para: Entidades de Importação. Essa tabela é utilizada para definir o nome, URL e SQL para consulta dos dados das entidades de importação (do ISO CRM para Protheus), comumente chamadas de entidade de “SAIDA”.
Detalhes sobre a tabela utilizada para: Autenticação. Essa tabela é utilizada para definir o cabeçalho, usuário e senha e URL para realizar a autenticação na API da ISO CRM e obter o “token da sessão” para comunicação entre as ferramentas.
Detalhes sobre a tabela utilizada para: Logs. Essa tabela é utilizada para armazenar qualquer apenas erros de integração que ocorrer entre as tentativas de comunicação das ferramentas. Através dela é possível identificar o problema para tentar corrigi-lo.
Esses campos customizados são utilizados para memorizar, individualmente por registro, a última integração que ocorreu com sucesso para o registro em questão. Essa informação também é utilizada em alguns filtros nas consultas SQLs das entidades. Elas trabalham em conjunto com o controle de alterações nativa do Protheus: S_T_A_M_P_ e I_N_S_D_T_:
https://tdn.totvs.com/pages/viewpage.action?pageId=563943271
Esses campos customizados são utilizados para memorizar, individualmente por registro, a quantidade de tentativas, sem sucesso, que ocorreram para o registro em questão. Essa informação também é utilizada em alguns filtros nas consultas SQLs das entidades. Elas trabalham em conjunto com o controle de alterações nativa do Protheus: S_T_A_M_P_ e I_N_S_D_T_:
https://tdn.totvs.com/pages/viewpage.action?pageId=563943271
Esses campos customizados são utilizados para memorizar, individualmente por registro, o “código ISO” obtido na integração entre o Protheus e o ISO CRM. Esse código é chamado de: “codigo_externo” nas propriedades de integração dos JSON da documentação da API da ISO CRM. Ele é a chave que existe para controle da informação entre o registro do Protheus e a API da ISO CRM.
Esses campos customizados são utilizados para memorizar, individualmente por registro, se o registro em questão será enviado nas integrações ou não.
Esses campos customizados são utilizados para memorizar, individualmente por registro, se o registro em questão está bloqueado (Na API: I=Inativo) ou não (Na API: A=Ativo).
O agendador é uma ferramenta nativa do Protheus onde é possível realizar configurações de rotinas a serem executadas em determinados períodos e recorrência. Para que a integração da ferramenta seja realizada de forma automática, é necessário configurador a rotina: “ISOCRM_WF()” dentro de um agendamento, conforme o sugerido abaixo.
Obs.: Na chamada da rotina, é necessário informar a empresa e filial no parâmetro, seguindo os parâmetros respectivamente: ISOCRM_WF(código da empresa, código da filial), onde, para a empresa “04” e filial “01”, ficaria: ISOCRM_WF(“04”,”01”).
A ferramenta de integração do Protheus com o ISO CRM é dividida em abas, onde, cada aba representa uma área do programa que é utilizada para determinar algumas funcionalidades:
Nessa aba são configuradas as entidades que irão ter os dados enviados do Protheus para a API da ISO CRM. Essas entidades são chamadas de entidades de “ENTRADA” na documentação da API.
Figura 13 - Integração TOTVS P/ ISOCRM (ENTRADA)
Para iniciar a execução MANUAL de exportação das entidades marcadas na lista, SEM respeitar as regras de agendamento; ou seja, será executada na mesma hora; basta clicar no botão “PARADO” em aguardar a execução da integração e, posteriormente, visualização dos erros ocorridos na aba “logs”.
O campo de seleção “1 – Post” e “2 – Put” é utilizado para definir o tipo de integração a ser realizada. Atualmente, apenas a integração “1 – Post” está sendo utilizada pela API da ISO CRM. Portanto, não há necessidade de alterá-lo.
Existe um controle de tentativas de integração (attempts) através do uso dos “Campos de controle de tentativas (attempts)” informados anteriormente na documentação. Esses campos são incrementais e irão aumentar o seu número a cada tentativa de integração fracassada. Esses campos são utilizados nas consultas SQLs das entidades para evitar que haja uma tentativa indefinida de integração de um registro. Caso queira realizar a limpeza desses campos de controle, para iniciar novas tentativas de integração desses registros com erro, basta executar o botão “Zerar Tentativas”.
Obs.: Cada entidade poderá definir em sua consulta SQL o número de tentativas aceitas até que ele deixe de ser integrado. Para tanto, é necessário verificar os “Campos de controle de tentativas (attempts)” nas tabelas e na consulta.
Tela de manutenção do cadastro da Entidade de Exportação
Nessa tela são definidas as configurações de agendamento, URL e consulta SQL para listar quais registros serão integrados do Protheus para a API do ISO CRM (Entrada). Conforme os critérios aplicados, serão exibidos os registros aptos para a próxima integração. Caso a consulta não traga nenhum registro, significa uma das possibilidades abaixo:
1) A consulta SQL está incorreta;
2) Alguns registros que estão com erro atingiram o limite máximo de tentativas de integração (attempts)
3) Todos os registros aplicáveis foram integrados;
4) Não há novos registros a serem integrados;
Em outras palavras: qualquer registro que aparecer na tabela após a execução do SQL, serão os registros a serem integrados na próxima tentativa de integração, respeitando os critérios de agendamento.
Figura 14 - Tela de manutenção do cadastro da Entidade de Exportação
Figura 15 - Campos para configurações da Entidade de Exportação
Nessa tela são definidas as configurações de agendamento, URL e consulta SQL para listar quais registros serão integrados do da API do ISO CRM (Saida) para o Protheus.
Obs.: As configurações de leitura e vínculo das propriedades está definida em código conforme documentação da API da ISO CRM.
Figura 16 - Integração ISOCRM P/ TOTVS (SAIDA)
Figura 17 - Campos para configurações da Entidade de Importação
Nessa tela são definidas as configurações de autenticação, usuário e senha e URL para gerar o “token de sessão” que será utilizado pela ferramenta de integração.
Obs.: A cada novo “token de sessão” gerado pelo usuário em questão, o último será desativado automaticamente.
Nessa tela são exibidos todos os “Logs de erro” que ocorreram nas tentativas de integração. Através da leitura desses erros é possível identificar e, posteriormente, corrigir, erros nas tentativas de integração entre a ferramenta do Protheus e a API da ISO CRM.
Figura 18 – Logs de erros
Para iniciar a execução MANUAL de importação e exportação das entidades marcadas na lista, SEM respeitar as regras de agendamento; ou seja, será executada na mesma hora; basta clicar no botão “PARADO” em aguardar a execução da integração e, posteriormente, visualização dos erros ocorridos na aba “logs”.
Abaixo uma seleção de alguns erros que podem ser encontrados na tentativa de integração entre as ferramentas. É possível encontrar erros gerados automaticamente pelo Protheus, como também, erros na tentativa de conexão com a API ou mensagens de retorno dos erros fornecidos pela API em determinadas tarefas. Ou seja, poderão existir erros do Protheus e/ou da API da ISO CRM; sendo necessário que o utilizador identifique cada um e aplique a tratativa necessária conforme cada situação apresentada. Para facilitar a identificação de erros, cada linha do “log de erro” selecionada irá apresentar detalhes de onde ele veio e em qual entidade ele estava tentando executar: Entrada ou Saída; como também, o respetivo nome da entidade em questão. Por último, é importante também notar que, eventualmente, alguns erros na aplicação podem não ser memorizados nessa tabela e estarem disponíveis apenas no “console.log” do servidor. Portanto, para uma análise completa, recomenda-se começar a leitura dos erros na aba de “Logs” e, posteriormente, caso não seja encontrado uma causa, procure olhar o log do “agendador” e, por fim, o “console.log” do servidor.
Figura 19 - Exemplo de erro de campo obrigatório não preenchido
Figura 20 - Exemplo de erro de campo obrigatório não preenchido
Figura 21 - Exemplo de erro de campo obrigatório não preenchido ou não encontrado
Figura 22 - Exemplo de erro de campo obrigatório não preenchido ou não encontrado
Figura 23 - Exemplo de erro de integração e/ou comunicação entre o Protheus e a API da ISO CRM
Existem alguns pré-requisitos que a ferramenta de integração exige para que possa ser instalada e configurada corretamente no ambiente do servidor do Protheus:
1) Uma janela de oportunidade de ao menos um dia sem ninguém acessando o Protheus enquanto a manutenção é realizada.
2) Acessos à base de produção. Usuário, senha, endereço, porta e nome do ambiente no servidor
3) É necessário que os certificados (.CRT, .KEY, .CSR) estejam na pasta dentro do servidor: "Protheus_data\certs\[nome_da_empresa]"
4) Habilitar controle de S_T_A_M_P_ e I_N_S_D_T_. Para tanto, é necessário que as chaves abaixo sejam configuradas no dbaccess.ini. Dependendo da estrutura, é necessário solicitar para a TOTVS essa alteração:
UseRowInsDt=1
UseRowStamp=1
Mais detalhes em:
https://tdn.totvs.com/pages/viewpage.action?pageId=563943271
5) Ter acesso para compilar em um RPO que depois será direcionado para a produção
Dicas de como gerar os arquivos de certificado ".crt", ".key" e ".csr" a partir de um arquivo ".pem" ou ".pfx":
1) Programas necessários para realizar a conversão:
Aqui está a lista dos binários do OpenSSL para instalar (inclusive no Windows):
https://wiki.openssl.org/index.php/Binaries
2) [Etapa opcional] Converter ".PFX" para ".PEM".
Obs.: Geralmente o arquivo ".PEM" já é enviando junto com o ".PFX" pela própria provedora do certificado. Caso você já tenha o arquivo ".PEM", não é necessária essa etapa.
Converter PFX para PEM:
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
https://support.kaspersky.com/ksc/14.2/en-us/201428.htm
3) Gerar os arquivos ".CRT", ".CSR" e ".KEY" através do ".PEM".
Ao converter um arquivo ".PFX" para o formato ".PEM", o OpenSSL colocará todos os certificados e a chave privada em um único arquivo.
Você precisará abrir o arquivo em um editor de texto e copiar cada certificado e chave privada (incluindo as instruções BEGIN / END) em seu próprio arquivo de texto individual e salvá-los como certificate.cer, CACert.cer e privateKey.key, respectivamente.
Maiores Detalhes:
4) Colocar dentro do "Protheus_data\certs\[nome_da_empresa]" do servidor os certificados da empresa nos seguintes formatos: ".CRT", ".KEY" e ".CSR"
Obs.: Substituir "[nome_da_empresa]" pelo nome da empresa para separar os arquivos corretamente.
A documentação da API da ISO CRM contém exemplos e detalhes de funcionamento das entidades envolvidas no processo de integração da ferramenta. Através desse endereço também é possível fazer download da “collection do Postman” para realização de testes de integração. Segue o link para acesso:
https://documenter.getpostman.com/view/8109129/TVssj8nT#intro
Figura 24 - Documentação da API da ISO CRM
Também é possível realizar testes de integração através da “Colection do Postman”. Para tanto, basta clicar no botão abaixo: