Integração de Fluxos do Salesforce
A maioria das automações da REDA Financials não exige código algum: os Fluxos leem e gravam os objetos contábeis como qualquer outro registro, a contabilização é uma atualização de campo, e o pacote contribui com uma ação pronta para geração de PDF. Aqui está o kit de ferramentas declarativo.
A ação empacotada: "Generate PDF Document"
No seletor de ações do Fluxo, na categoria REDA Financials: informe um Source Record ID e o Source Object API Name (por exemplo, refin__Sales_Invoice__c) e ela renderiza, anexa e retorna Success / Content Version ID / Content Document ID / Public URL / Error Message. Segura para operações em massa dentro de loops. Usos clássicos: gerar em uma programação, anexar aos seus próprios fluxos de e-mail, produzir o documento no instante em que uma condição disparada por registro é atendida.
O pacote entrega duas ações invocáveis — esta e Create E-Invoice Trail, na categoria E-Invoicing (veja Desenvolvimento em Apex). Uma superfície pequena, totalmente documentada. Sua autodescrição: "Generates a PDF for the given source transaction record and attaches it as a File."
| Entrada | Obrigatório | Descrição empacotada (literal) |
|---|---|---|
| ID do registro de origem | Sim | "The Id of the source transaction record (SI, CR, CD, CM, PO)." |
| Source Object API Name | Sim | "Fully qualified API name of the source object (e.g. refin__Sales_Invoice__c)." |
| Saída | O que você recebe |
|---|---|
| Success | Verdadeiro/falso por linha — verifique antes de usar as demais saídas |
| Content Version ID / Content Document ID | O arquivo gerado, já anexado ao registro de origem como um Arquivo do Salesforce |
| Public URL | Preenchido apenas "se a Entidade tiver o Auto Public URL ativado; nulo caso contrário" — o texto empacotado diz Entidade, mas o campo que o código lê é refin__Auto_Public_URL__c ("Generate Public URL for PDFs") no Território do documento, resolvido documento → Entidade → Território — monte seus links de e-mail de forma condicional |
| Mensagem de erro | O motivo quando Success é falso; entradas ausentes retornam literalmente "sourceRecordId and sourceObjectApiName are required." |
Objetos de origem suportados — exatamente quatro, mais um caso especial: refin__Sales_Invoice__c, refin__Cash_Receipt__c, refin__Cash_Disbursement__c, refin__Purchase_Order__c; as notas de crédito são tratadas como um tipo de Fatura de Venda (refin__Sales_Invoice_Type__c), então informe o nome do objeto SI para elas. Em loops, a ação é genuinamente segura para operações em massa: as solicitações são agrupadas por objeto, geradas em lote, e os resultados retornam na ordem de entrada — uma linha com problema falha sozinha, com sua própria Error Message.
refin__Auto_Gen_PDF_Sales_Invoice__c, refin__Auto_Gen_PDF_Cash_Receipt__c, refin__Auto_Gen_PDF_Cash_Disbursement__c, refin__Auto_Gen_PDF_Purchase_Order__c, refin__Auto_Gen_PDF_Credit_Memo__c. Se "toda fatura contabilizada recebe um PDF" for todo o requisito, basta ativar a opção; reserve a ação de Fluxo para geração condicional ou programada.
refin.PDFGeneratorAPI (e a refin.EInvoiceTrailCreator), então qualquer usuário com um conjunto de permissões da REDA Financials pode executar a ação. Um usuário em execução sem nenhum deles — um Fluxo que roda como conta de serviço, por exemplo — ainda precisa que a classe seja concedida explicitamente. Teste em um sandbox com o usuário real de execução antes de publicar o Fluxo.
Contabilização (e mais) a partir do Fluxo
| Ação no Fluxo | O que acontece |
|---|---|
Criar refin__Sales_Invoice__c + linhas (Rascunho) | Rascunho real — numerado, com valores padrão aplicados, validado |
Atualizar refin__Status__c → 'Posted' | Motor de contabilização completo — impostos, retenção na fonte, taxas, todos os bloqueios (uma recusa gera fault no Fluxo com a mensagem literal: construa um caminho de fault) |
| Criar um registro de aplicação | Aplica um recebimento/crédito com todas as regras de correspondência |
| Fluxo disparado por registro na mudança de status | Sua lógica de notificação/integração no momento da contabilização (dispara tanto em alterações via interface quanto via API) |
Definir refin__Auto_Apply_Receipt__c = true em um recebimento contabilizado | Dispara a execução de aplicação automática para esse recebimento — campos de sinalização como este são pontos de contato projetados para o Fluxo |
Três Fluxos que vale a pena copiar
- A ponte de aprovação: seu processo de aprovação personalizado termina definindo o Status de Aprovação como 'Approved' e o status como 'Posted' — o documento flui da solicitação até os livros, sem cliques.
- O alarme de fatura grande: disparado por registro na Fatura de Venda, condição de entrada Status = Posted AND Total > 50.000, ação = notificar o canal do controller.
- A caça ao papel: um Fluxo programado encontra faturas contabilizadas sem PDF (Generated At nulo) e as percorre em loop pela ação Generate PDF Document.
Um Fluxo aplicado na Meridian: o pacote de boas-vindas ao locatário
A Meridian Properties Group envia, com o PDF anexado, todas as primeiras faturas recém-contabilizadas de um cliente. Um único Fluxo disparado por registro em refin__Sales_Invoice__c: condição de entrada Status alterado para Posted; uma decisão verifica se é a primeira fatura contabilizada do cliente; a ação Generate PDF Document é executada com o Id do registro e refin__Sales_Invoice__c; uma decisão tolerante a falhas sobre Success se ramifica — verdadeiro segue para a ação de e-mail com o Content Document anexado, falso registra a Error Message em um caso para o time de contas a pagar. Tempo total de construção: uma tarde, sem Apex, seguro para atualizações por construção.
Erros comuns a evitar
| Erro | Por que prejudica | Faça isto em vez disso |
|---|---|---|
| Sem caminho de fault na atualização de contabilização | Um período fechado gera fault em toda a execução do Fluxo — e em qualquer outra coisa que estivesse em andamento | Todo elemento de atualização de status recebe um conector de fault que encaminha a mensagem literal a alguém que a leia |
| Usar a saída Public URL incondicionalmente | É nula a menos que o Território do documento tenha Generate Public URL for PDFs ativado — seu modelo de e-mail sai com um link em branco | Ramifique com base na saída, ou use o anexo do Content Document |
| Passar uma Fatura de Compra para Generate PDF Document | Faturas de compra não estão no conjunto suportado (SI, CR, CD, PO, CM-via-SI) — a linha falha | Confira a lista de objetos suportados; contas de fornecedor não precisam de PDFs voltados ao cliente |
| Editar registros contabilizados a partir de um Fluxo before-save | Documentos contabilizados ficam bloqueados para todos — o Fluxo gera fault em campos fora do conjunto de automação permitido | Restrinja edições no próprio registro a Rascunhos; reaja a registros contabilizados, não os reescreva |
| Duplicar a automação do pacote em seus próprios Fluxos | Geração recorrente, aplicação automática e instantâneos de aging já são executados na programação de Operações — um Fluxo paralelo compete com eles | Confira os doze cards da guia Operações antes de construir; estenda, não duplique |
O que vem a seguir
- Streaming API — as contrapartes orientadas a eventos.
- Desenvolvimento em Apex na REDA — para quando o Fluxo não é mais suficiente.
- Programador de operações — a automação que o pacote já executa para você.
Perguntas frequentes
Está funcionando como projetado: um bloqueio de contabilização recusou a operação (período fechado, aprovação pendente, lançamento desbalanceado…). A mensagem de falha é exatamente o motivo; encaminhe-a a uma pessoa ou corrija o dado na origem. Nunca tente novamente às cegas — o bloqueio continuará impedindo.
Aplica-se a orientação padrão: before-save para ajustes de campo no próprio registro em rascunhos (registros contabilizados já ficam bloqueados de qualquer forma), after-save para reações (notificações, registros relacionados). Não brigue com a automação própria do pacote — reaja aos estados finais.
O serviço de cálculo é uma superfície Apex; a partir do Fluxo, o caminho prático é criar o documento em rascunho (os impostos aparecem em prévia no formulário; os valores são finalizados na contabilização). Se você realmente precisar do cálculo bruto no Fluxo, um wrapper invocável simples em torno do GlobalTaxService é uma classe Apex de dez linhas — veja Desenvolvimento em Apex.
Porque os objetos são a API: criar, atualizar e alternar o status dos registros cobre a contabilização, a aplicação e a reação sem precisar de ações sob medida. A geração de PDF e a criação de uma trilha de nota fiscal eletrônica são as duas tarefas que realmente exigiam empacotamento — todo o resto é Fluxo padrão sobre registros padrão.
Só se você usar o FX Rate Sync em uma organização multimoeda: o pacote grava as taxas diárias por meio desse Fluxo instalado separadamente, porque as taxas de conversão datadas só existem quando o Advanced Currency Management está ativado. Se ele estiver ausente, a sincronização informa literalmente: "The \"Create_Dated_Conversion_Rate\" Flow is not installed. FX Rate Sync requires this Flow to write DatedConversionRate records. Please install the REDA FX Rate Sync component."
Isso foi útil?