Produto: | Automação da Força de Vendas |
Linha de Produto: | TOTVS CRM |
Segmento: | Cross Segmentos |
Módulo: | Visão 360 Cliente |
Aplicação: | Mobile/Web |
Identificador: | TSFAFSWE-3078 |
A melhoria na clonagem de pedidos no TOTVS CRM SFA agora permite que usuários clonem não apenas as quantidades originais ou faturadas, mas também as quantidades pendentes nos pedidos, considerando apenas as quantidades de produtos que ainda não foram faturadas. Esta opção é crucial para gerenciar eficientemente pedidos que estão parcialmente completos, onde algumas quantidades podem já ter sido entregues ou faturadas, enquanto outras ainda estão pendentes.
Permitir que os usuários do TOTVS SFA, que normalmente não têm acesso direto aos módulos financeiros, possam visualizar e baixar boletos e notas fiscais diretamente dentro do ambiente de Automação da Força de Vendas. Isso facilita a gestão de documentos financeiros e fiscais, oferecendo maior autonomia e eficiência no atendimento e na satisfação do cliente.
Para utilizar essa nova funcionalidade, é essencial que os plugins de integração para download de boletos e notas fiscais estejam configurados e ativados.
Foram adicionados botões específicos nas listagens de títulos e notas fiscais que permitem aos usuários baixar diretamente os documentos financeiros associados. Estes botões são facilmente identificáveis pelo ícone de uma seta para baixo.
Desafio Antigo:
Antes da atualização, os usuários do TOTVS SFA enfrentavam desafios significativos ao tentar acessar boletos e notas fiscais. A falta de integração direta entre as funcionalidades do SFA e os sistemas de ERP resultava em um processo manual e demorado para ter acesso a documentos financeiros.
A nova funcionalidade do TOTVS SFA supera esses desafios ao introduzir botões de download integrados nas listagens de títulos e notas fiscais, permitindo aos usuários acessar e baixar esses documentos diretamente. A integração com o ERP por meio de plugins dedicados garante que os documentos estejam sempre sincronizados e acessíveis.
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: }
{ "lStatus": true, "cMensagem": "Sucesso", "cBoleto": {base64} }
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)
GET: {URL_API_BOLETO_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} }