01. DADOS GERAIS
Produto: | TOTVS CRM Automação da Força de Vendas |
---|
Linha de Produto: | |
---|
ERPs impactados: | Protheus, Datasul e ERPs terceiros |
---|
Módulo: | Cadastro |
---|
Função: | Visão 360 Cliente |
---|
Ambiente: | Web/Android |
---|
Ticket: | 15677137 |
---|
Requisito/Story/Issue: | Jira |
---|
server | JIRA |
---|
serverId | 0c783de1-186e-383b-975c-a1acd7d76cb5 |
---|
key | DTSFAPD-2515 |
---|
|
|
---|
02. ESCOPO FUNCIONAL
Importar boleto e nota fiscal para geração de 2° via pelo SFA
Na versão atual do TOTVS SFA, não existe a possibilidade de fazer o download do boleto e nota fiscal.
Portanto será disponibilizado botões nas listagens de "Títulos" e "Nota fiscal":
Novo botão em "Listagem de títulos"
Novo botão em "Nota Fiscal"
Deverá ser criado dois novos plugins de integração, com descrição "Download de notas fiscais " e "Download de boletos":
Com essas alterações, será possível fazer o download das notas fiscais e boletos que foram emitidos/gerados pelo Protheus, através da API que será disponibilizada para o SFA.
03. ESCOPO TÉCNICO
API NOTA FISCAL
APLICAÇÃO
CRIAR PLUGIN
- Pelo tools opção 5 deverá ser criado o registro:
Bloco de código |
---|
pluginintegracao {
codigo: DOWNNF,
descricao: API Para download Danfe (PDF),
idnAtivo: 0
} |
Bloco de código |
---|
Campo "URL Nota Fiscal"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_URL
valor: {valor inserido no campo URL}
Campo "Usuário"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_USER
valor: {valor inserido no campo USUÁRIO}
Campo "Senha"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_PASSWORD
valor: {valor inserido no campo Senha}
Campo "Timeout Consulta"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_TIMEOUT
valor: {valor inserido no campo Timeout consulta}
Campo "Rep"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_REP
valor: {COMMONS_SERVICES}
Campo "Job"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNNF,
agrupador: 0,
sglcampo: DOWNNF_JOB
valor: {DOWNLOADNOTAFISCAL} |
IMPLEMENTAÇÃO NA LISTAGEM DE NOTA FISCAL
- Na tela, "Venda → Nota Fiscal → Listar", exibir o botão para download do PDF, ao lado do botão de visualização conforme protótipo, de acordo com as configurações do plugin:
- idnAtivo = 1: select idnAtivo from pluginintegracao where codigo = 'DOWNNF'
- Ao clicar no botão de download a aplicação deverá consultar o carte de acordo com a sql:
Bloco de código |
---|
|
select valor from pluginintconfig where codigoelemento='CONF_GERAL' AND sglcampo='PENTAHO_URL' |
- A url do download deve ser montada da seguinte forma: URL=${Configurações do Pentaho.URL}/kettle/executeJob/?rep={}&job={}
- No body da requisição, passar as seguintes informações:
Bloco de código |
---|
{
idnotafiscal:
} |
- O retorno desta url será o arquivo em base64 para download:
Bloco de código |
---|
|
{
mensagem: {base64}
} |
INTEGRAÇÃO
IMPORTAR VINCULO NOTA FISCAL X TÍTULO FINANCEIRO
- Importar do ERP Protheus, o vínculo entre o título financeiro e a nota fiscal;
- Vincular o título com a respectiva nota fiscal no campo FINANCEIROTITULO.IDNOTAFISCAL;
- Associar o título com o boleto usando os campos:
SE1.E1_PREFIXO = SF2.F2_SERIE
SE1.E1_NUM = SF2.F2_DOC
SE1.E1_FILIAL = SF2.F2_FILIAL
API DOWNLOAD NOTA FISCAL
GET: {URL_API_NOTA_FISCAL_CLIENTE}/{empresa}/{filial}/{documento}/{serie}
HEADERS: Authorization: Basic {TOKEN}
- Informações da request serão obtidas a partir das consultas abaixo;
- Se o campo EMPRESA estiver como NULL, então o parâmetro EMPRESA não deve ser repassado na URL da request. Dessa forma {URL_API_NOTA_FISCAL_CLIENTE}/{filial}/{documento}/{serie}:
Bloco de código |
---|
|
SELECT n.numeronotafiscal AS DOCUMENTO,
n.serie AS SERIE,
l.numeromatricula AS FILIAL,
CASE
WHEN Cast(w.valor AS VARCHAR) = '1' THEN
Split_part(n.codigoerp, '#', 1)
ELSE NULL END AS EMPRESA
FROM notafiscal n
INNER JOIN local l
ON l.idlocal = n.idlocalfilialfaturamento
LEFT JOIN wsconfigintegracao w
ON w.codigoerp = 'API_DOWNNF'
AND w.idnativo = 1
WHERE n.idnotafiscal = :IDNOTAFISCAL;
SELECT ( CASE
WHEN sglcampo = 'DOWNNF_PASSWORD' THEN valor
END ) AS SENHA,
( CASE
WHEN sglcampo = 'DOWNNF_USER' THEN valor
END ) AS USUARIO,
( CASE
WHEN sglcampo = 'DOWNNF_URL' THEN valor
END ) AS URL
FROM pluginintconfig
WHERE codigoelemento = 'DOWNNF'
AND sglcampo IN ( 'DOWNNF_PASSWORD', 'DOWNNF_USER', 'DOWNNF_URL' ); |
- O retorno recebido será no formato base64, e deve ser retornado para aplicação sem transformações dentro do XML do RESPONSE:
Bloco de código |
---|
|
{
mensagem: {base64}
} |
Painel |
---|
|
Retornos: Bloco de código |
---|
title | 500 - Internal Server Error |
---|
| {"code":500,"detailedMessage":"","message":"Internal Server Error"} |
Bloco de código |
---|
title | 404 - Nota Fiscal não encontrada |
---|
| {
"errorCode": 404,
"errorMessage": "Nao encontrou a NF 01_05_000001838_11 "
} |
Bloco de código |
---|
| {
mensagem: {base64}
} |
|
API DOWNLOAD BOLETO
APLICAÇÃO
CRIAR PLUGIN
- Pelo tools opção 5 deverá ser criado o registro:
Bloco de código |
---|
pluginintegracao {
codigo: DOWNBOL,
descricao: API Para download Boleto (PDF),
idnAtivo: 0
} |
Bloco de código |
---|
Campo "URL"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNBOL',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNBOL_URL
valor: {valor inserido no campo URL}
Campo "Usuário"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNBOL',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNBOL_USER
valor: {valor inserido no campo USUÁRIO}
Campo "Senha"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNBOL',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNBOL_PASSWORD
valor: {valor inserido no campo Senha}
Campo "Timeout Consulta"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNBOL',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNBOL_TIMEOUT
valor: {valor inserido no campo Timeout consulta}
Campo "Rep"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNNF_REP
valor: {COMMONS_SERVICES}
Campo "Job"
idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'DOWNNF',
codigoelemento: DOWNBOL,
agrupador: 0,
sglcampo: DOWNNF_JOB
valor: {DOWNLOADBOLETO} |
IMPLEMENTAÇÃO NA TELA DE LISTAGEM DE TÍTULOS
- Na tela, "Visão 360 → Títulos": exibir o botão para download do PDF, ao lado do botão de visualização conforme protótipo acima, de acordo com as configurações do plugin:
- idnAtivo = 1: select idnAtivo from pluginintegracao where codigo = 'DOWNBOL'
- Ao clicar no botão de download a aplicação deverá consultar a url do carte de acordo com a sql:
Bloco de código |
---|
|
select valor from pluginintconfig where codigoelemento='CONF_GERAL' AND sglcampo='PENTAHO_URL' |
Bloco de código |
---|
{
idnotafiscal:
} |
- O retorno do Carte para a aplicação será no formato abaixo:
Bloco de código |
---|
|
{
"lStatus": true,
"cMensagem": "Sucesso",
"cBoleto": {base64}
} |
- Na tela "Visão 360 → Títulos" acrescentar uma nova coluna Nota Fiscal, referente a nota fiscal vinculada ao título:
INTEGRAÇÃO
API DOWNLOAD BOLETO
- Criar para Pentaho-Carte o Job DOWNLOADBOLETO no repositório COMMONS_SERVICES;
- URL de consulta deve ser montada no seguinte padrão:
GET: {URL_API_BOLETO_CLIENTE}/{empresa}/{filial}/{documento}/{serie}
HEADERS: Authorization: Basic {TOKEN}
- Informações da request serão obtidas a partir das consultas abaixo;
- Se o campo EMPRESA estiver como NULL, então o parâmetro EMPRESA não deve ser repassado na URL da request, ficando dessa forma {URL_API_BOLETO_CLIENTE}/{filial}/{documento}/{serie}:
Bloco de código |
---|
language | sql |
---|
title | Consulta Dados Requisição |
---|
|
SELECT n.numeronotafiscal AS DOCUMENTO,
n.serie AS SERIE,
l.numeromatricula AS FILIAL,
CASE
WHEN Cast(w.valor AS VARCHAR) = '1' THEN
Split_part(n.codigoerp, '#', 1)
ELSE NULL END AS EMPRESA
FROM notafiscal n
INNER JOIN local l
ON l.idlocal = n.idlocalfilialfaturamento
LEFT JOIN wsconfigintegracao w
ON w.codigoerp = 'API_DOWNNF'
AND w.idnativo = 1
WHERE n.idnotafiscal = :IDNOTAFISCAL;
SELECT ( CASE
WHEN sglcampo = 'DOWNBOL_PASSWORD' THEN valor
END ) AS SENHA,
( CASE
WHEN sglcampo = 'DOWNBOL_USER' THEN valor
END ) AS USUARIO,
( CASE
WHEN sglcampo = 'DOWNBOL_URL' THEN valor
END ) AS URL
FROM pluginintconfig
WHERE codigoelemento = 'DOWNBOL'
AND sglcampo IN ( 'DOWNBOL_PASSWORD', 'DOWNBOL_USER', 'DOWNBOL_URL' ); |
- O retorno recebido será no formato base64, e deve ser retornado para aplicação sem transformações dentro do XML do RESPONSE:
Bloco de código |
---|
|
{
"lStatus": true,
"cMensagem": "Sucesso",
"cBoleto": {base64}
} |
Painel |
---|
|
Retornos: Bloco de código |
---|
title | 500 - Internal Server Error |
---|
| {"code":500,"detailedMessage":"","message":"Internal Server Error"} |
Bloco de código |
---|
title | 404 - Boleto Não encontrado |
---|
| {
"lStatus": false,
"cMensagem": " Não foi encontrado o título referente ao boleto.",
"cBoleto": ""
} |
Bloco de código |
---|
| {
"lStatus": true,
"cMensagem": "Sucesso",
"cBoleto": {base64}
} |
|