REDA One Centro de ajuda
PT
Idioma
English EN Español ES Português PT Italiano em breve Français FR Deutsch em breve العربية em breve
reda.one ↗
Início / REDA Financials AI / API e integração / APIs do Salesforce / API REST para dados contábeis

API REST para dados contábeis

Como todo documento da REDA Financials é um objeto personalizado do Salesforce, a API REST padrão é a porta de entrada para a sua integração: crie faturas a partir do seu CRM ou sistema de faturamento, consulte saldos para um data warehouse, contabilize documentos a partir de middleware — tudo com os endpoints que a sua equipe já conhece.

O padrão canônico: criar um rascunho e depois contabilizar

Insira o cabeçalho como Rascunho

Envie um POST do documento (por exemplo, refin__Sales_Invoice__c) com entidade, cliente, datas — status omitido (o padrão é Rascunho) ou explicitamente 'Draft'. Os triggers se comportam exatamente como na interface: o número do documento é atribuído a partir da sequência da entidade, o livro razão e o período são derivados, a data de vencimento vem das condições de pagamento.

Insira as linhas

Envie um POST dos registros de linha (refin__Sales_Invoice_Line__c) referenciando o cabeçalho — produtos, quantidades, preços, perfis fiscais, exatamente os campos que o formulário pede. (A API composta agrupa as etapas 1 e 2 em uma única chamada, de forma organizada.)

Faça um PATCH do status para Contabilizado

Atualize refin__Status__c para 'Posted'. Essa única atualização de campo é a ação de contabilização: o mecanismo grava os lançamentos no livro razão, calcula impostos e retenções, registra as taxas de câmbio — e aplica todas as validações (equilíbrio, período aberto, aprovação, contas ativas). Uma contabilização recusada retorna como um erro DML padrão com a mesma mensagem literal que um usuário veria.

Os endpoints, em resumo

Nada aqui é específico da REDA — são os endpoints REST padrão do Salesforce, mostrados em relação aos objetos refin__ (o pacote é criado na API v65.0; qualquer versão atual funciona):

TarefaMétodo e endpoint
Criar o cabeçalho de um documentoPOST /services/data/v65.0/sobjects/refin__Sales_Invoice__c
Ler um registroGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
Atualizar (incluindo contabilizar)PATCH /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
ConsultarGET /services/data/v65.0/query?q=<SOQL>
Cabeçalho + linhas em uma única viagemPOST /services/data/v65.0/composite (ou composite/tree)
Descobrir campos e listas de opçõesGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/describe

Contabilizando um rascunho, na prática

A chamada de contabilização é deliberadamente anticlimática — um único campo:

PATCH /services/data/v65.0/sobjects/refin__Sales_Invoice__c/a0X8d000001AbCdEAV

{
  "refin__Status__c": "Posted"
}

O sucesso é um HTTP 204 No Content — com um documento totalmente contabilizado por trás dele. Uma recusa retorna como o array de erro padrão, carregando a mensagem legível do pacote; por exemplo, um usuário de integração sem uma licença REDA vê:

[
  {
    "message": "Você deve ser um usuário licenciado do REDA Financials para criar, editar ou excluir Transações contábeis. Contate o administrador.",
    "errorCode": "FIELD_CUSTOM_VALIDATION_EXCEPTION",
    "fields": []
  }
]

Consultar de volta o que você criou é SOQL simples:

GET /services/data/v65.0/query
    ?q=SELECT Id, Name, refin__Status__c
       FROM refin__Sales_Invoice__c
       WHERE refin__Status__c = 'Draft'

Para os corpos de inserção em si, obtenha a lista de campos no endpoint describe ou no Gerenciador de Objetos, em vez deste artigo — os conjuntos de campos e campos obrigatórios da sua organização são a verdade, e os campos de dimensão extras que o seu administrador adicionou fazem parte dela.

O que a plataforma preenche automaticamente para você

Ao…Os triggers fazem…Consequência para a integração
Inserir sem statusO status assume o padrão 'Draft'Você pode omitir refin__Status__c na criação
InserirO número do documento é atribuído a partir da sequência da entidade (sensível ao tipo — faturas e notas numeram separadamente); predefinir Name opta pela numeração manual, com a exclusividade validada de qualquer formaNão gere seus próprios números, a menos que pretenda assumir essa responsabilidade
InserirOs valores padrão da entidade são preenchidos: livro razão, período contábil, data de vencimento a partir da condição de pagamento do fornecedorEnvie os campos de negócio; omita os que podem ser derivados
Alterar a Entidade ou o Tipo de Fatura em um RascunhoO documento renumeraEspere um novo número se o seu middleware "mover" um rascunho entre entidades
Rascunho → ContabilizadoO mecanismo completo: lançamentos no livro razão, cálculo de impostos e retenção na fonte, registro da taxa de câmbio, todas as validaçõesContabilizar via API é, byte a byte, a mesma contabilização da interface

Lendo dados

  • SOQL pelo endpoint de consulta — faturas em aberto, recebimentos não aplicados, campos de aging (são campos de fórmula nos registros), o que quer que o seu painel precise.
  • O próprio livro razão — refin__Accounting_Transaction__c é a verdade da contabilização; some débitos e créditos por conta contábil e você reconstruiu qualquer saldo externamente.
  • Os totalizadores são campos — o saldo devedor de uma fatura, o valor não aplicado de um recebimento, o valor comprometido de uma linha de orçamento: tudo consultável diretamente, sem cálculo do seu lado.

Regras do caminho

  • Não existe atalho: documentos contabilizados ficam bloqueados a edições via API exatamente como para os usuários; correções passam pelos fluxos de descontabilização/cancelamento, programaticamente as mesmas transições de status.
  • Aplicações também são registros — criar um refin__Cash_Receipt_Application__c aplica um recebimento (todas as validações de correspondência são executadas); excluí-lo desfaz a aplicação.
  • Respeite as datas de fechamento — gravações em livros fechados são recusadas; sua integração deve datar documentos em períodos abertos, como qualquer contador faria.
  • A idempotência é sua responsabilidade — a chave natural é a referência do seu sistema de origem (coloque-a no campo Referência e verifique antes de inserir; a validação de duplicidade de referência do fornecedor ajuda no lado de contas a pagar).
Crie o hábito do sandbox. Aponte a integração para um sandbox, execute um documento do início ao fim e leia o resultado na interface — a página do registro mostra exatamente o que a sua chamada de API produziu, incluindo as transações contábeis. Dez minutos observando valem mais do que uma semana adivinhando.

Erros comuns a evitar

ErroPor que prejudicaFaça isto em vez disso
Inserir documentos com Status 'Posted' em uma única chamadaA contabilização é projetada em torno da transição Rascunho → Contabilizado; uma inserção direta como Contabilizado está fora do padrão suportado e seu comportamento não é garantidoInsira como Rascunho e depois faça um PATCH para Contabilizado — a chamada composta transforma isso em uma única viagem de ida e volta de qualquer forma
Gerar seus próprios números de documento de forma casualPredefinir Name muda esse documento para numeração manual — agora a exclusividade é responsabilidade sua, por entidadeDeixe as sequências numerarem os documentos; reserve a numeração manual para cenários deliberados de migração
Executar a integração com um login de administrador emprestadoAs trilhas de auditoria ficam confusas, as trocas de senha quebram o fluxo, e as permissões são muito mais amplas do que a tarefa exigeUm usuário de integração dedicado, com uma licença e o conjunto de permissões empacotado mais restrito que realize o trabalho
Tentar novamente contabilizações com falha sem critérioA mensagem já disse por que falhou — um período fechado leva a tentar de novo contra a mesma parede para sempreAnalise o erro, corrija os dados (ou encaminhe para um humano) e só então tente novamente
Ignorar o campo ReferênciaVocê perde a sua chave de idempotência e o melhor sinal de correspondência da conciliação bancáriaSempre traga o identificador real do sistema de origem no campo Referência

O que vem a seguir

  1. Bulk API — o mesmo padrão em escala de migração.
  2. Visão geral da API — todo o panorama.
  3. Saldos de abertura e migração de dados — o projeto clássico de REST/Bulk.
Documentação oficial do Salesforce A própria API REST é um recurso padrão do Salesforce — a REDA adiciona os objetos, não o transporte. As referências oficiais são o Guia do Desenvolvedor da API REST e a Referência de SOQL. Os links abrem em uma nova guia.

Perguntas frequentes

Use as duas etapas (inserir como Rascunho e depois atualizar para Contabilizado) — é o padrão em torno do qual o mecanismo foi construído, dá a você um limite de erro claro entre "dados incorretos" e "contabilização recusada", e espelha o salvar-depois-contabilizar da interface. As chamadas compostas fazem disso uma única viagem de ida e volta de qualquer forma.

São erros DML padrão que carregam as mensagens de validação do pacote na íntegra ("Transaction Date ... is on or before the GL book closure date...", "This document requires approval before posting."). Registre-as, exiba-as, corrija os dados — as mensagens foram escritas para humanos.

O pacote é direcionado à API v65+; use uma versão atual e os objetos refin__ se comportam como qualquer objeto personalizado nessa versão.

Sim, se ele criar ou contabilizar documentos contábeis — a verificação de licença é executada nas gravações via API exatamente como na interface, e um usuário sem licença é recusado com a mesma mensagem literal mostrada acima. Atribua ao usuário de integração uma licença e o conjunto de permissões apropriado, assim como a um humano.

Não — o pacote não inclui nenhum recurso REST personalizado, por design. Os endpoints padrão de sObject, consulta e composição sobre os objetos refin__ são toda a superfície REST, o que significa que todo cliente REST do Salesforce, ferramenta de ETL e conector de middleware já sabe falar com ela.

Isso foi útil?