Produto: | TOTVS CRM Automação da Força de Vendas |
---|---|
Linha de Produto: | Linha TOTVS CRM |
ERPs impactados: | Protheus, Datasul e ERPs terceiros |
Módulo: | Cadastro |
Função: | Visão 360 Cliente |
Ambiente: | Web/Android |
Ticket: | 15677137 |
Requisito/Story/Issue: |
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 um novo plugin de integração, com descrição "Download de notas fiscais e 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.
pluginintegracao { codigo: DOWNNF, descricao: API Para download Danfe (PDF), idnAtivo: 0 }
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}
select valor from pluginintconfig where codigoelemento='CONF_GERAL' AND sglcampo='PENTAHO_URL'
{ idnotafiscal: }
{ mensagem: {base64} }
Criar a variável de integração abaixo:
ERP | TODOS |
CONTEXTO | API |
DESCRIÇÃO | Se valor 1, a URL será no formato {URL_API_NOTA_FISCAL_CLIENTE}/{empresa}/{filial}/{documento}/{serie}; se a variável estiver inativa, então a URL montada será no formato {URL_API_NOTA_FISCAL_CLIENTE}/{filial}/{documento}/{serie}. |
TABELA | WSCONFIGINTEGRACAO |
CAMPO | VALOR |
VALOR | 1 |
IDNATIVO | 1 |
CODIGOERP | API_DOWNNF |
GET: {URL_API_NOTA_FISCAL_CLIENTE}/{empresa}/{filial}/{documento}/{serie}
HEADERS: Authorization: Basic {TOKEN}
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' );
{ mensagem: {base64} }
Retornos:
{"code":500,"detailedMessage":"","message":"Internal Server Error"}
{ "errorCode": 404, "errorMessage": "Nao encontrou a NF 01_05_000001838_11 " }
{ mensagem: {base64} }
pluginintegracao { codigo: DOWNBOL, descricao: API Para download Boleto (PDF), idnAtivo: 0 }
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}
select valor from pluginintconfig where codigoelemento='CONF_GERAL' AND sglcampo='PENTAHO_URL'
Realizar a consulta em banco para obter os dados de REP e JOB:
select (select valor as JOB from pluginintconfig p where codigoelemento ='DOWNBOL' and sglcampo ='DOWNBOL_JOB'), (select valor as REP from pluginintconfig p where codigoelemento ='DOWNBOL' and sglcampo ='DOWNBOL_REP');
{ idnotafiscal: }
Utilizar a consulta abaixo para obter os dados da nota
select numeronotafiscal || '-' || serie as NF from notafiscal n where idnotafiscal =(select idnotafiscal from financeirotitulo f where idfinanceirotitulo=:idtitulo)
{ "lStatus": true, "cMensagem": "Sucesso", "cBoleto": {base64} }
GET: {URL_API_NOTA_FISCAL_CLIENTE}/{empresa}/{filial}/{documento}/{serie}
HEADERS: Authorization: Basic {TOKEN}
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' );
{ "lStatus": true, "cMensagem": "Sucesso", "cBoleto": {base64} }
Retornos:
{"code":500,"detailedMessage":"","message":"Internal Server Error"}
{ "lStatus": false, "cMensagem": " Não foi encontrado o título referente ao boleto.", "cBoleto": "" }
{ "lStatus": true, "cMensagem": "Sucesso", "cBoleto": {base64} }