Árvore de páginas

DOWNLOAD DE BOLETOS E NOTAS FISCAIS NO TOTVS CRM SFA

   
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

    VISÃO GERAL

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.


    OBJETIVO

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.

  ANTES DE COMEÇAR

Requisitos

Para utilizar essa nova funcionalidade, é essencial que os plugins de integração para download de boletos e notas fiscais estejam configurados e ativados.

  DETALHES FUNCIONAIS


  1. Botões de Download em Listagens de Títulos e Notas Fiscais:

    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.

Visualização Android

  COMO USAR?

  1. Entre no CRM e clique em Configuração no menu principal.
  2. Escolha Integração e depois Plugins de Integração.
  3. Ative os plugins Download de Notas Fiscais e Download de Boletos clicando nos botões de ativação ao lado de cada um.
  4. Confirme que tudo está funcionando entrando na seção de Notas Fiscais ou Boletos e verificando se o download está disponível.


 EXEMPLO PRÁTICO


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.


Solução Atualizada:

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.


  DETALHES TÉCNICOS

API NOTA FISCAL - CRIAR PLUGIN

  • Pelo tools opção 5 deverá ser criado o registro:
                  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}
                      


  • Protótipo da tela:


IMPLEMENTAÇÃO NA LISTAGEM DE NOTA FISCAL
  • Funcionalidade: 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:

URL_PENTAHO
                  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:
  •                   {
                        idnotafiscal:
                      }
                          


    • O retorno desta url será o arquivo em base64 para download:
    200 - Ok
                      {
                        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

    • 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

    • Criar para Pentaho-Carte o Job DOWNLOADNOTAFISCAL no repositório COMMONS_SERVICES;

    • URL de consulta deve ser montada no seguinte padrão:

    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}:
    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:
    200 - Ok
    {
                            mensagem: {base64}
                        }
    API - Nota Fiscal

    Retornos:

    500 - Internal Server Error
    {"code":500,"detailedMessage":"","message":"Internal Server Error"}
    404 - Nota Fiscal não encontrada
    {
                            "errorCode": 404,
                            "errorMessage": "Nao encontrou a NF 01_05_000001838_11 "
                        }
    200 - Ok
    {
                            mensagem: {base64}
                        }

    API DOWNLOAD BOLETO

    APLICAÇÃO

    CRIAR PLUGIN

    • Pelo tools opção 5 deverá ser criado o registro:
    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}

    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:
    URL_PENTAHO
    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={}

      • Realizar a consulta em banco para obter os dados de REP e JOB:

        URL_PENTAHO
        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');
      • No body da requisição, passar as seguintes informações:
    {
                          idnotafiscal:
                        }


    • O retorno do Carte para a aplicação será no formato abaixo:
    200 - Ok
    {
                            "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:

      • Utilizar a consulta abaixo para obter os dados da nota

        URL_PENTAHO
        select numeronotafiscal || '-' || serie as NF from notafiscal n where idnotafiscal =(select idnotafiscal from financeirotitulo f where idfinanceirotitulo=:idtitulo)

    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}:

    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:
    200 - Ok
    {
                            "lStatus": true,
                            "cMensagem": "Sucesso",
                            "cBoleto": {base64}
                        }
    API - Boleto

    Retornos:

    500 - Internal Server Error
    {"code":500,"detailedMessage":"","message":"Internal Server Error"}
    404 - Boleto Não encontrado
    {
                            "lStatus": false,
                            "cMensagem": " Não foi encontrado o título referente ao boleto.",
                            "cBoleto": ""
                        }
    200 - Ok
    {
                            "lStatus": true,
                            "cMensagem": "Sucesso",
                            "cBoleto": {base64}
                        }



    PERGUNTAS FREQUENTES

    • question_answerComo faço para baixar uma nota fiscal ou boleto no sistema?
      Para baixar uma nota fiscal ou boleto, acesse a seção de "Títulos" ou "Notas Fiscais" no sistema, dependendo do documento que deseja. Localize o documento específico na listagem e clique no botão de download (ícone de seta para baixo) ao lado do registro desejado.
    • question_answer É possível baixar todos os boletos e notas fiscais de uma só vez?
      Atualmente, o sistema requer que você baixe boletos e notas fiscais individualmente para garantir a precisão e segurança dos documentos acessados.
    • question_answerPosso visualizar o boleto ou a nota fiscal antes de fazer o download?
      No sistema atual, os boletos e notas fiscais não podem ser visualizados antes do download. Eles estão disponíveis apenas para download direto.