Incluir Venda

Primeira etapa: Consulta SPC

O primeiro passo para o processo de venda é o envio de uma requisição do tipo POST para o endpoint {{ BASE_API_URL }}/v1/cliente/consulta-spc passando no corpo da requisição um objeto ClienteDTO com o CPF do cliente que deseja realizar a venda, bem como a identificação da loja que está realizando a venda.

Exemplo de payload para consulta do SPC
{
  "cpf": "222.570.550-04",
  "empresaId": 398,
  "lojaId": 441,
  "redeId": 201
}
Exemplo de response do retorno de consulta ao SPC
{
  "id": 343290,
  "mensagem": null,
  "permissao": null,
  "dataInicial": null,
  "dataFinal": null,
  "dataCadastro": "2023-05-19",
  "lojaId": 441,
  "redeId": 201,
  "empresaId": 398,
  "nome": "NOME CLIENTE",
  "cpf": "36257055874",
  "segmentacao": null,
  "tipoDocumento": "CNH",
  "identidade": "121317724",
  "orgaoEmissor": "ssp",
  "dataEmissao": "2001-01-01",
  "uf": "SC",
  "grupo": "B",
  "dataNascimento": "1953-09-24",
  "naturalEstado": "RS",
  "naturalCidade": 4314902,
  "sexo": "F",
  "estadoCivil": "D",
  "dependentes": 0,
  "nomePai": "",
  "nomeMae": "NOME DA MÃE CLIENTE",
  "telResidencial": "(48) 3011 - 9299",
  "celular": "(48) 95532 - 8888",
  "email": "seu-email@gmail.com",
  "escolaridade": "SEGUNDO_GRAU_COMPLETO",
  "rendaPrincipal": 5000.00,
  "enderecoAlternativo": null,
  "endereco": {
    "cep": "88070-700",
    "logradouro": "Rua Professora Antonieta de Barros",
    "numero": "732",
    "complemento": null,
    "bairro": "Canto",
    "estado": "SC",
    "cidadeIbge": 4205407,
    "cidadeNome": "Florianópolis"
  },
  "tipoResidencia": "P",
  "tempoResidenciaAnos": null,
  "tempoResidenciaMeses": null,
  "resideDesde": "01/1994",
  "empresa": "aposentado",
  "cargo": "Pensionista",
  "tempoEmpregoAnos": null,
  "tempoEmpregoMeses": null,
  "telComercial": "(48) 3209 - 5961",
  "ramal": null,
  "nomeRef1": "pablo",
  "relacaoRef1": "A",
  "telRef1": "(48) 99837 - 8287",
  "nomeRef2": "gisa",
  "relacaoRef2": "A",
  "telRef2": "(48) 99858 - 1509",
  "nomeRef3": null,
  "relacaoRef3": null,
  "telRef3": null,
  "nomeRef4": null,
  "relacaoRef4": null,
  "telRef4": null,
  "status": "NORMAL",
  "trabalhaNessaEmpresaDesde": "01/2000",
  "permitirEnvioSPC": true,
  "jaTemCadastroNaLoja": true,
  "negativadoSpc": false,
  "provedor": null,
  "outroProvedor": null,
  "flagAutorizacao": null,
  "autorizaCompra": true,
  "enderecoSecundario": null,
  "outrasRendas": 0.00,
  "limiteCompartilhado": 3000.00,
  "tipoClienteScore": "RESTRITO",
  "observacoes": null,
  "descricao": null,
  "observacao": null,
  "assuntoObs": null,
  "exibirNaLojaObs": null,
  "exibirAte": null,
  "exibirMsg": null,
  "mensagemErro": null,
  "limitesPreAprovado": {
    "id": null,
    "mensagem": null,
    "permissao": null,
    "faixaInicial1": 1000.00,
    "faixaFinal1": 1000.00,
    "peEntrada1": 0.00,
    "faixaInicial2": 1000.00,
    "faixaFinal2": 1000.00,
    "peEntrada2": 0.00,
    "faixaInicial3": 1000.00,
    "faixaFinal3": 1000.00,
    "peEntrada3": 0.00,
    "flgAnaliseVisual": false,
    "grupo": "B"
  },
  "valorAluguel": null,
  "empregoCBO": 2670,
  "score": 754
}

Segunda etapa: Cálculo da venda

No response da primeira etapa, que está exemplificada acima, recebemos todos os dados necessários para a realização da venda, bem como o score do cliente e o limite disponível para compra.

Para prosseguir com a simulação de venda, devemos enviar uma requisição do tipo POST para o endpoint {{ BASE_API_URL }}/v1/venda/calcular passando no corpo da requisição um objeto CalcularVendaDTO com os dados do cliente e da loja que está realizando a venda.

Exemplo de payload para calcular a venda
{
  "autorizacaoId": null,
  "clienteId": 343290,
  "diasPrimeiraParcela": null,
  "flagAutorizacao": false,
  "formaPagamento": "CARNE", // as opções disponiveis serão listadas no response do endpoint /v1/loja/{id}/dadosvenda/{planoId}
  "lojaId": 441,
  "nomeProduto": "teste",
  "parcelaSelecionada": null,
  "planoPagamentoId": 11, // recuperar valor do endpoint /v1/loja/{id}/planospagamento
  "vlEntrada": null,
  "vlProduto": "1.000,00"
}
Exemplo de response do cálculo da venda
[
  {
    "vlPrimeiraParcela": 1001.69,
    "vlDemaisParcela": 1001.69,
    "vlEntrada": 0,
    "vlParcelaSemTaxaJuros": 1000.00,
    "qtdParcela": 1,
    "jurosFinanc": 0,
    "tarifa": 1.69,
    "planoPagamentoId": 11,
    "valorTotal": 1001.69
  },
  ...
  ...
  {
    "vlPrimeiraParcela": 101.69,
    "vlDemaisParcela": 101.69,
    "vlEntrada": 0,
    "vlParcelaSemTaxaJuros": 100.00,
    "qtdParcela": 10,
    "jurosFinanc": 0,
    "tarifa": 1.69,
    "planoPagamentoId": 11,
    "valorTotal": 1016.90
  }
]

Terceira etapa: Geração do código de autorização

No response da segunda etapa, que está exemplificada acima, recebemos todas as opções de parcelamento disponíveis para o cliente, bem como o valor total da venda e o valor da primeira parcela. Com esses dados, podemos prosseguir com a venda.

Após selecionada a opção de parcelamento, devemos enviar uma requisição do tipo POST para o endpoint {{ BASE_API_URL }}/v1/codigo-autorizacao/gerar passando no corpo da requisição um objeto CodigoAutorizacaoDTO com os dados do cliente e da loja que está realizando a venda.

Exemplo de payload de solicitação de código de autorização
{
  "tipo": "WHATSAPP",
  "destino": "(48) 97732 - 8888",
  "nomeCliente": "NOME DO CLIENTE",
  "lojaId": 441,
  "nomeProduto": "teste",
  "valorProduto": "1.005,06",
  "qtdParcela": "3",
  "valorParcela": "335,02"
}
Exemplo de response de solicitação de código de autorização
{
  "id": 1,
  "tipo": "WHATSAPP",
  "destino": "(48) 97732 - 8888",
  "nomeCliente": "NOME DO CLIENTE",
  "lojaId": 441,
  "nomeProduto": "teste",
  "valorProduto": "1.005,06",
  "qtdParcela": "3",
  "valorParcela": "335,02"
}

Quarta etapa: Confirmação do código de autorização e finalização da venda

No response da terceira etapa, que está exemplificada acima, recebemos o id do código de autorização que foi gerado para a venda. Com esse id, podemos prosseguir com a venda.

Após o cliente confirmar o código de autorização, devemos enviar uma requisição do tipo POST para o endpoint {{ BASE_API_URL }}/v1/codigo-autorizacao/confirmar passando no corpo da requisição um objeto CodigoAutorizacaoDTO com o id que retornou no objeto do response da etapa anterior e o código de autorização que o cliente informou.

Exemplo de payload na confirmação do código autorização
{
  "codigo": "1022",
  "id": 1532
}

Após receber o response da etapa anterior com status de sucesso, devemos enviar uma requisição do tipo POST para o endpoint {{ BASE_API_URL }}/v1/venda/vender passando no corpo da requisição um objeto CalcularVendaDTO com os dados do cliente e da loja que está realizando a venda, bem como o id do código de autorização que foi gerado para a venda.

Exemplo de payload para finalização da venda
{
  "autorizacaoId": 1532,
  "clienteId": 343290,
  "diasPrimeiraParcela": null,
  "flagAutorizacao": false,
  "formaPagamento": "CARNE",
  "lojaId": 441,
  "nomeProduto": "teste",
  "parcelaSelecionada": {
      "jurosFinanc": 0,
      "planoPagamentoId": 11,
      "qtdParcela": 3,
      "tarifa": 1.69,
      "valorTotal": 1005.06,
      "vlDemaisParcela": 335.02,
      "vlEntrada": 0,
      "vlParcelaSemTaxaJuros": 333.33,
      "vlPrimeiraParcela": 335.02,
      "planoPagamentoId": 11
    },
  "vlEntrada": null,
  "vlProduto": "1.000,00"
} 
Exemplo de response da finalização de inclusão da venda
{
  "id":678200,
  "mensagem":null,
  "permissao":null,
  "carneId":693790
}

Em caso de sucesso na inclusão da venda será retornado um objeto CalcularVendaDTO com o id da venda e o id do carnê gerado para a venda. Com esses dados, podemos prosseguir com a impressão do carnê, conforme demonstrado na seção Imprimir Carnê.

Endpoints para busca de dados adicionais para a venda:

Para efetuar as requisições aos endpoints anteriores, durante o processo de inclusão de venda, serão necessários alguns dados adicionais que podem ser obtidos através dos seguintes endpoints:

Obter limite disponível para compra

É enviada uma requisição do tipo GET para o endpoint abaixo, passando como parâmetro o id do cliente e o id da loja, que irá retornar um number com o valor do limite disponível do cliente.


{{ BASE_API_URL }}/v1/cliente/{id}/limite-disponivel/{lojaId}

Obter percentuais mínimos de entrada


É enviada uma requisição do tipo GET para o endpoint abaixo, passando como parâmetro o id do cliente e o id da loja. O response irá retornar um objeto RegraGrupoLimiteCreditoDTO contendo os percentuais mínimos de entrada, conforme a faixa de valor da compra, dentro do limite disponivel e de acordo com o score do cliente.


{{ BASE_API_URL }}/v1/cliente/{id}/score/{lojaId}

Exemplo de response
{
  "id": null,
  "mensagem": null,
  "permissao": null,
  "faixaInicial1": 0.00,
  "faixaFinal1": 2000.00,
  "peEntrada1": 0.00,
  "faixaInicial2": 2000.01,
  "faixaFinal2": 2500.00,
  "peEntrada2": 20.00,
  "faixaInicial3": 2500.01,
  "faixaFinal3": 3000.00,
  "peEntrada3": 30.00,
  "flgAnaliseVisual": false,
  "grupo": "B"
}
Obter parâmetros para a venda

É enviada uma requisição do tipo GET para o endpoint abaixo, passando como parâmetro o id da loja. O response irá retornar um objeto VenderDTO contendo os parâmetros de venda cadastrados para a loja selecionada, como por exemplo, as formas de pagamento disponíveis, tarifas bancárias, contato da loja, etc.


{{ BASE_API_URL }}/v1/loja/{id}/dadosvenda/{planoId}

Exemplo de response
{
  "lojaId": 437,
  "vlTarifaParcelaBanco": 5.50,
  "vlTarifaParcelaLoja": 0.00,
  "vlLimitePreAprovado": null,
  "nomeProduto": null,
  "vlProduto": null,
  "vlEntrada": null,
  "qtdParcela": null,
  "vlParcela": null,
  "codigoAutorizacao": null,
  "parcelarEm": 10,
  "formasPagamento": [
      "BOLETO"
  ],
  "lojistaEmail": "financeiro@gruposoldi.com.br",
  "lojistaTelefone": "(47) 99222 - 0564"
}
Obter planos de pagamento disponíveis

É enviada uma requisição do tipo GET para o endpoint abaixo, passando como parâmetro o id da loja. O response irá retornar um array de objetos CodigoDescricaoDTO contendo os planos de pagamento cadastrados para a loja selecionada.


{{ BASE_API_URL }}/v1/loja/{id}/planospagamento

Exemplo de response
[
  {
    "id": 7,
    "descricao": "Plano 10x c/juros 27,00% - 40  dias - Parc Mín de R$ 30,00"
  }
]

Para mais informações, acesse a documentação da API:


{{ BASE_API_URL }}/v1/carne/gera-carne-pdf/{id}