
Introdução
A Salesforce é a solução Nº1 mundial de Gestão de relacionamento com o Cliente. É uma plataforma de CRM (Customer Relationship Management, em Português: Gestão de Relacionamento com o Cliente) integrada que oferece a todos os departamentos - incluindo marketing, vendas e apoio ao cliente - uma visão única e compartilhada de cada cliente.
O Salesforce fornece um local central para as empresas armazenarem dados de clientes e potenciais clientes, rastrear interações com os mesmos e compartilhar informações importantes entre departamentos. Oferece ainda uma visão 360º dos seus clientes, ajudando assim as organizações a otimizar processos, construir relacionamentos com clientes, aumentar as vendas, melhorar o atendimento ao cliente e consequentemente aumentar a rentabilidade.
Sendo uma ferramenta assente na mais recente tecnologia de computação na nuvem que permite acesso remoto ao software, armazenamento de arquivos e processamento de dados por meio da internet, torna-se bastante fácil começar a utilizar, permitindo que equipes de diferentes geografias comecem a trabalhar juntas sem custos iniciais significativos de infraestrutura e manutenção. Finalmente, uma vez que o preço é calculado de acordo com o número de utilizadores que acedem ao sistema, é também extremamente flexível, permitindo rapidamente escalar, bastando para isso adicionar mais pessoas ao sistema à medida que o negócio cresce.
Outra excelente característica do Salesforce é o facto de este se estender bem além do seu produto principal, disponibilizando várias aplicações que podem ser facilmente compradas e instaladas, preenchendo assim potenciais lacunas que os sistemas tradicionais de CRM têm relativamente a funcionalidades que não são o core deste tipo de ferramentas. Um exemplo é a automação de processos de cobrança e faturação que pode ser feito por meio de outro software instalado através da AppExchange, a App Store da Salesforce, permitindo adicionar funcionalidades ERP ao Salesforce.
Neste artigo iremos explorar como um dos nossos clientes, com a ajuda da worldIT, potenciou as capacidades do Salesforce em conjunto com o FinancialForce (um produto disponível no AppExchange) para construir uma integração com um sistema de faturação que permitiu a emissão de faturas válidas para seus clientes.
Contexto
O referido cliente é uma empresa tecnológica e inovadora que desenvolveu uma plataforma de aluguer de equipamentos a pequenas e médias empresas. A empresa aproveita os recursos do FinancialForce não apenas para garantir o correto registo na contabilidade das suas transações financeiras, mas também para automatizar os processos de facturação como por exemplo emissão de faturas ou notas de crédito, identificação e alocação de pagamentos, entre outros.
No entanto, apesar da sua capacidade de gerar faturas e outros documentos comerciais diretamente a partir do Salesforce, a FinancialForce não é reconhecida pela Autoridade Tributária Portuguesa como um sistema de faturação, o que significa que estes documentos não são juridicamente vinculativos e não podem ser utilizados como comprovativo de dívida.
A certificação de um software de faturação depende da existência cumulativa de um conjunto de requisitos aprovados por despacho do Director-Geral da Autoridade Tributária e Aduaneira. Esses requisitos incluem pontos como:
- Permitir exportar o arquivo SAF-T-PT com o layout legal da altura;
- Permitir a identificação de recibos e faturas armazenadas ou documentos equivalentes através de um algoritmo de cifra assimétrica e uma senha privada, que só é conhecida pelo produtor do programa;
- Não permitir que, em documentos assinados, qualquer informação fiscal relevante seja alterada nos termos dos artigos 36º e 40º do Código Tributário Português e do artigo 6º e 7º da Portaria 340/2013;
- Deve ser armazenada a versão (número sequencial inteiro) da chave privada usada para gerar a assinatura do documento;
- Os ecrãs do software devem estar todos disponíveis em Português. É permitido que o software seja multilíngue, mas a tradução em Português deve ser assegurada.
Além de todos estes e outros requisitos que devem ser respeitados, o processo de validação do sistema pelas autoridades tributárias é burocrático e possui várias fases. Diante do exposto e tendo em consideração o esforço considerável de desenvolver em cima das funcionalidades core do FinancialForce, o cliente decidiu integrar sua instância de Salesforce com um sistema de faturação, neste caso Moloni, que seria responsável por criar as faturas a partir da informação disponibilizada pelo Salesforce, respeitando todas as imposições do fisco. Esta abordagem permitiu ao cliente não só evitar um desafiante projeto de customização que levaria vários meses para ser concluído e consumiria a maior parte dos seus recursos, como também também evitar passar pelo processo de aprovação do mesmo pela Autoridade Tributária Portuguesa e ter que manter um produto que não é o core de seu negócio.
Implementação
Conforme descrito na seção anterior, o cliente decidiu integrar o seu sistema de contabilidade composto por Salesforce e FinancialForce com o Moloni, um software de faturação também ele na nuvem que expõe uma Rest API, permitindo desta forma a fácil integração entre os 2 sistemas. Esta API fornece um conjunto de endpoints para diferentes operações e aceita pedidos HTTP por meio do método POST que, após a autenticação através do protocolo oAuth, retorna respostas no formato JSON.
Considerando a abordagem detalhada em baixo, o Salesforce seria responsável não só por identificar quais clientes a faturar, mas também por definir o ciclo de faturação e o que deveria ser faturado em cada ciclo, criando de forma automática esses registos (faturas de vendas) no sistema. Após a sua criação e quando os documentos fossem emitidos (considerados completos), a API Moloni seria chamada para que as informações das faturas fossem integradas neste sistema. Depois disso, um processo em batch seria executado no Salesforce, chamando outro endpoint da API Moloni para obter os PDFs das faturas, armazená-los no Salesforce sob cada documento e enviá-los aos clientes por e-mail.
Criação e Integração da Fatura
Conforme descrito no seguinte fluxo, o processo começa com a identificação, criação e emissão das faturas no Salesforce.
Cada fatura é composta por um cabeçalho contendo as datas da fatura e a identificação do cliente e um conjunto de itens contendo o nome de cada produto faturado, juntamente com sua quantidade, preço unitário e código do imposto.
Para cada fatura emitida, o sistema reúne todas as informações necessárias, constrói o pedido JSON e integra as informações da fatura no Moloni chamando o endpoint correspondente. Infelizmente (como pode ser visto na documentação), o Moloni apenas permite a integração de uma fatura de cada vez, o que significa que, devido a essa limitação, o processo em batch do Salesforce aqui descrito deve ser executado com batchsize = 1.
Além disso, durante o processo de integração, nem o total da fatura nem os nomes dos produtos são enviados. Em vez disso, para cada item, o Id do produto, juntamente com a quantidade, o preço unitário e o Id do imposto são enviados sendo os restantes cálculos e associações efectuadas no Moloni. Atendendo ao exposto e de forma a permitir esta correlação entre os sistemas, foi necessário garantir o seguinte:
1. Configuração de Produtos e Códigos de Imposto no Moloni
Para permitir que Moloni gerasse os itens da fatura, foi necessário configurar a lista de produtos e os respectivos códigos de imposto que permitissem a aplicação do IVA correto de acordo com a zona fiscal do cliente.
Relativamente à configuração dos produtos, como pode ser visto nas imagens abaixo, a mesma pode ser facilmente feita adicionando manualmente os artigos a uma categoria previamente criada.
O Moloni permite também definir valores predefinidos para o preço unitário e o código do IVA, o que neste caso pode ser desconsiderado uma vez que as faturas são todas criadas via Webservice, o que significa que estes dados são sempre enviados.
Em Portugal, tal como em muitos outros países, existem diferentes taxas de IVA que variam não só em função da mercadoria a ser vendida, mas também em função da localização do comprador e do vendedor. Uma vez que o cliente descrito no presente artigo realiza negócios tanto em Portugal Continental como nos Açores e Madeira, e por forma a garantir a correcta emissão de faturas, seria necessário aplicar diferentes taxas de imposto ao mesmo produto consoante o exposto anteriormente.
Por forma a tornar isto possível e à semelhança do que é feito para os produtos, o Moloni fornece uma interface simples para criar os diferentes Códigos de Impostos e valores percentuais associados.
Por fim, é ainda importante mencionar que a API Moloni também expõe métodos para criar e administrar produtos e códigos fiscais. No entanto, dada a baixa quantidade destes registos no sistema core do cliente (Salesforce), essa integração não foi desenvolvida, sendo a gestão dos mesmos feita manualmente, conforme descrito acima.
2. Armazenar os IDs correspondentes no Salesforce
Por forma a permitir a comunicação entre os sistemas e após a configuração dos produtos e códigos de impostos no Moloni, foi necessário criar uma relação entre os últimos e os respectivos registos em Salesforce. Para tal, foram criados dois novos campos, um ao nível do produto e outro ao nível do código de imposto, permitindo-nos assim armazenar em Salesforce os Ids correspondentes do Moloni.
Como pode ser visto nas imagens seguintes, os campos de Salesforce: Moloni_Prod_ID__c e Moloni_TAX_ID__c são preenchidos com o Id do registro correspondente do Moloni.
Finalizada a configuração dos produtos e códigos de impostos no Moloni e tendo os respectivos IDs destes registros espelhados no Salesforce, tornou-se possível construir, a partir de cada registo de fatura no Salesforce, um pedido JSON com todas as informações necessárias para a sua correcta integração no Moloni. Mais ainda, por cada integração bem-sucedida, o Moloni retorna o ID da fatura naquele sistema, sendo esse ID então usado para atualizar a fatura correspondente no Salesforce. Por fim, garantida a actualização do registo da fatura em Salesforce com o Id do Moloni, esta é marcada como pronta para ser enviada ao cliente.
Criação de PDF e Notificação do Cliente
Após a criação, através da API, das faturas no Moloni, a próxima etapa do processo consiste em enviá-las aos respectivos clientes. Para isso, foi desenvolvido em Salesforce um processo em Batch que ao ser executado chama outro endpoint da API do Moloni para obter os PDFs das faturas e posteriormente armazená-los no Salesforce sob cada documento e enviá-los aos clientes por e-mail.
Conforme descrito no diagrama acima, o processo começa por identificar as faturas já integradas no Moloni e que ainda não foram enviadas aos clientes. Em seguida, para cada uma dessas faturas é chamado o endpoint documents/getPDFLink, permitindo-nos obter o link de onde pode ser feito o download do respectivo PDF.
Na imagem anterior podemos ver não só a página de download do PDF que é acedida através do link obtido anteriormente, mas também o URL de download do próprio documento. Como pode ser visto, este URL pode facilmente ser reconstruído através das informações obtidas na chamada anterior ao endpoint documents/getPDFLink. Assim, tendo construído este URL de download e utilizando-o como endpoint num simples pedido HTTP GET, conseguimos obter o Base64 do documento, que após convertido num Blob através de um método OOTB Salesforce (getBodyAsBlob), é utilizado para criar um anexo em Salesforce que é posteriormente associado ao respectivo registro fatura. Por fim, na última etapa desse processo, o Salesforce cria e envia um e-mail ao cliente contendo os detalhes da fatura e o PDF da fatura em anexo.
Como pode ser visto na imagem abaixo, após finalizado o processo, ficamos com o registo da fatura atualizado não só com o anexo como também com o e-mail enviado ao cliente, permitindo-nos não só visualizar o PDF da fatura, mas também ter um histórico do que foi enviado ao cliente e quando.
Conclusão
Conforme referido anteriormente, apesar da sua capacidade de gerar faturas e outros documentos comerciais diretamente do Salesforce, a FinancialForce não é reconhecida pela Autoridade Tributária Portuguesa como um sistema de faturação, o que significa que os documentos emitidos por esta via não seriam juridicamente vinculativos. No entanto, uma vez que a certificação de um software de faturação é um processo burocrático, com várias fases e dependente da existência cumulativa de um conjunto de requisitos, o cliente optou integrar os seus sistemas Core com o Moloni, um software de faturação certificado pela Autoridade Tributária Portuguesa. Sendo este um software moderno, também ele assente na tecnologia de computação na nuvem, disponibiliza uma API Rest que permitiu à worldIT, em conjunto com a equipa do Cliente, integrá-lo facilmente com o Salesforce, permitindo uma comunicação bi-direccional entre os sistemas.
Esta abordagem revelou ser a melhor opção, uma vez que não só permitiu reduzir custos devido ao baixo valor das licenças de software do Moloni, mas principalmente porque permitiu ao Cliente alocar os seus limitados recursos ao desenvolvimento de funcionalidades Core do seu produto. Além disso, ao delegar as funcionalidades de faturação a um terceiro, liberou as equipes de negócio e desenvolvimento de ter que analisar e desenvolver funcionalidades para atender a novas regulamentações que eventualmente pudessem vir a ser lançadas pelo Fisco. Por outro lado, é importante mencionar que seguir esta abordagem também trouxe alguns desafios e limitações que devem ser levados em consideração ao se optar por delegar funcionalidades de um produto a um Software externo. No presente caso, ficar dependente de terceiros obrigou-nos não só a adaptar os processos para se adequarem às funcionalidades e limitações do software, como também limitou a nossa capacidade de personalizar a nossa comunicação com os clientes, uma vez que os PDFs das faturas não eram gerados no sistema do cliente.
#Salesforce #worldIT #FinanciaForce #Moloni #Faturação