O DUNNING faz uso de dados dos clientes da empresa a fim de executar algoritmos inteligentes que geram as melhores estratégias de cobrança. O usuário pode ainda utilizar as ferramentas de envio de cobrança como e-mail, sms, mensagem de voz, carta, etc.
Com este propósito, é necessário fazer a integração com o sistema de gestão, seja ele um ERP ou planilhas eletrônicas. Considerando que o sistema de gestão está na infraestrutura da empresa, imaginamos o seguinte cenário de integração:
A empresa é responsável pela criação do integrador, que tem duas funções: (1) buscar os dados no ERP ou diretamente no banco de dados e (2) enviá-lo ao DUNNING usando serviços REST que serão detalhados posteriormente. O integrador deve ser executado diariamente para garantir que o DUNNING receba as informações de pagamento de títulos do dia anterior.
O DUNNING necessita de três tabelas de dados: (1) clientes, (2) títulos e (3) baixas.
Para importar corretamente os seus clientes no sistema, é necessário fornecer os seguinte dados:
Para importar corretamente os seus títulos no sistema, é necessário ter os seguintes dados:
Para importar corretamente as baixas dos seus títulos no sistema, é necessário ter os seguintes dados:
A API do DUNNING possui autenticação via token de acesso que é único por empresa. Ele é criado no cadastro da nova empresa e pode ser visualizado na aba Integração localizada em Configurações do Sistema, conforme apresentado na figura abaixo.
Este token deve ser passado como parâmetro nos web-services.
O DUNNING-API é uma API na linguagem Java para acesso às entidades (Empresas) e seus respectivos dados (Clientes e Títulos) para integração. Para o desenvolvimento de um cliente integrador na linguagem Java, é necessário o download do projeto dunning-api:
API de IntegraçãoAcesso a documentação para acesso à Api Soap
https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.rest.*; import dunning.api.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = " OTA0NV82MDA0j8pmKbNwEb0fdKJCvv "; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor, token); //obtém todos os clientes em uma lista. ListlistaClientes = dunningApi.consultarRestClientes(); //imprime todos os clientes da empresa. System.out.println(listaClientes.toString());
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.rest.*; import dunning.utils.enums.*; import dunning.api.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //cria uma lista de clientes ListlistaCliente = new ArrayList<>(); // Exemplo de inserção de dois clientes na lista. //Criação de Cliente 1 RestCliente c1 = new RestCliente(); c1.setNome("Cliente 1"); c1.setCpf("63184755592"); c1.setCodigoCliente("133234"); c1.setTipoPessoa(EnumTipoPessoa.FISICA); c1.setSituacao(EnumAtivoInativo.ATIVO); listaCliente.add(c1); //Adiciona o Cliente 1 na lista de clientes. //Criação de Cliente 2 RestCliente c2 = new RestCliente(); c2.setNome("Cliente 2"); c2.setCpf("21897551231"); c2.setCodigoCliente("133235"); c2.setTipoPessoa(EnumAtivoInativo.ATIVO); c2.addEndereco("", "rua aimorés", "34", "", "centro", "Belo Horizonte", "MG"); c2.addEmail("teste@hotmail.com"); c2.setSituacao(EnumAtivoInativo.ATIVO); //Adicionando telefones List telefones =new ArrayList<>(); RestContatoTelefone t2=new RestContatoTelefone(); t2.setDdd("31"); t2.setNumero("971277538"); telefones.add(t2); c2.setTelefones(telefones); listaCliente.add(c2); //Adiciona o Cliente 2 na lista de clientes. //envia a lista com os dois clientes a serem inseridos. //caso exista um cliente com o mesmo código, este será substituído. dunningApi.enviarRestClientes(listaCliente);
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.rest.*; import dunning.api.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //cria uma lista de clientes ListlistaCliente = new ArrayList<>(); // Um objeto Cliente é criado (Apenas código) para ser adicionado à lista de remoção. //Criação de Cliente 1 RestCliente c1 = new RestCliente(); c1.setCodigoCliente("133234"); //Adiciona o Cliente 1 na lista de clientes. listaCliente.add(c1); //Criação de Cliente 2 RestCliente c2 = new RestCliente(); c2.setCodigoCliente("133235"); //Adiciona o Cliente 2 na lista de clientes. listaCliente.add(c2); //envia a lista com os dois clientes a serem removidos. dunningApi.removerRestClientes(listaCliente);
https://www.dunning.com.br/api/v2/cliente/(codigo cliente)?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //imprime dados de apenas um cliente específico (Cliente de Código: 001) RestCliente cliente = dunningApi.consultarRestCliente("001"); System.out.println(cliente.toString());
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/cliente?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //declara e informa o código do cliente a ser removido String codigoCliente = "133234"; //Remove o cliente de código 133234. dunningApi.removerRestCliente(codigoCliente);
https://www.dunning.com.br/api/v2/cliente/(codigo cliente)/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //declara e informa o código do cliente onde serão coletados os títulos String codigoCliente = "001"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //imprime todos os títulos do cliente de código 001. ListlistaTitulos = dunningApi.consultarRestTitulos(codigoCliente); System.out.println(listaTitulos.toString());
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.rest.*; import dunning.utils.UtilFormatador; import dunning.api.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //declara e informa o código do cliente no qual serão vinculados os novos títulos String codigoCliente = "001"; //cria uma lista de títulos ListlistaTitulos = new ArrayList<>(); // Exemplo de inserção de dois títulos na lista. //Criação de Título 1 RestTitulo t1 = new RestTitulo(); t1.setCodigoTitulo("43332"); t1.setDataEmissao(UtilFormatador.converteStringParaDate_DDMMYYYY_BARRAS("01/12/2015")); t1.setDataVencimento(UtilFormatador.converteStringParaDate_DDMMYYYY_BARRAS("12/12/2015")); t1.setValor(100f); t1.setTipo("NF"); listaTitulos.add(t1); //Adiciona o Título 1 na lista de títulos. //Criação de Título 2 RestTitulo t2 = new RestTitulo(); t2.setCodigoTitulo("43333"); t2.setDataEmissao(UtilFormatador.converteStringParaDate_DDMMYYYY_BARRAS("01/12/2013")); t2.setDataVencimento(UtilFormatador.converteStringParaDate_DDMMYYYY_BARRAS("13/12/2013"));; t2.setValor(120f); t2.setTipo("Boleto"); listaTitulos.add(t2); //Adiciona o Título 2 na lista de clientes. //envia a lista com os dois Títulos do cliente 001 a serem inseridos. //caso exista um título com o mesmo código, este será substituído. dunningApi.enviarRestTitulos(codigoCliente, listaTitulos);
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.*; import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //declara e informa o código do cliente que possui os títulos String codigoCliente = "001"; //cria uma lista de títulos inserindo apenas o seu código ListlistaTitulos = new ArrayList<>(); // Exemplo de inserção de dois títulos na lista. (Apenas código) //Criação de Título 1 RestTitulo t1 = new RestTitulo(); t1.setCodigoTitulo("43332"); listaTitulos.add(t1); //Adiciona o Título 1 na lista de títulos. //Criação de Título 2 RestTitulo t2 = new RestTitulo(); t2.setCodigoTitulo("43333"); listaTitulos.add(t2); //Adiciona o Título 2 na lista de clientes. //envia a lista com os dois Títulos do cliente 001 a serem removidos. dunningApi.removerRestTitulos(codigoCliente, listaTitulos);
https://www.dunning.com.br/api/v2/cliente/(codigo cliente)/titulo/(codigo titulo)?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //declara e informa o código do cliente onde será coletado o título String codigoCliente = "001"; //declara e informa o código do título a ser coletado String codigoTitulo = "55"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //imprime o título de código 55 do cliente de código 001. RestTitulo titulo = dunningApi.consultarRestTitulo(codigoCliente, codigoTitulo); System.out.println(titulo.toString());
curl --include \ --request GET \ --header "Content-Type: application/json" \ 'https://www.dunning.com.br/api/v2/titulo?token=OTA0NV82MDA0j8pmKbNwEb0fdKJCvv'
import java.util.ArrayList; import dunning.api.*; import dunning.rest.*; //declara o servidor e respectivo token obtido. String servidor = "https://dunning.com.br/api/v2"; String token = "OTA0NV82MDA0j8pmKbNwEb0fdKJCvv"; //inicia o DunningApi DunningApi dunningApi = new DunningApi(servidor,token); //declara e informa o código do cliente que possui o título String codigoCliente = "001"; //declara e informa o código do Título a ser removido String codigoTitulo = "43332"; //remove o título 43332 do cliente 001 dunningApi.removerRestTitulo(codigoCliente, codigoTitulo);
Os registros a serem importados para o Dunning, podem ser realizados via integração FTP.
A integração FTP se baseia no envio diário de arquivos no formato .csv, .xls ou .xlsx válidos que contenham os clientes (arquivo: clientes.csv ou cliente.xls ou cliente.xlsx), seus títulos (titulos.csv ou titulos.xls ou titulos.xlsx) e as respectivas baixas (arquivo: baixas.csv ou baixas.xls ou baixas.xlsx)
Configuração: O usuário deverá acessar o DUNNING, Tela de Configurações, Integrador e habilitar a Integração via FTP. A configuração para envio dos arquivos e acesso ao FTP está realizada.
Após realizada a configuração, o envio FTP é realizado da seguinte forma:
Os dados enviados ao Dunning estarão disponíveis no dia seguinte à importação.