REDA One Centro de ayuda
ES
Idioma
English EN Español ES Português PT Italiano próximamente Français FR Deutsch próximamente العربية próximamente
reda.one ↗
Inicio / REDA Financials AI / API e integración / APIs de Salesforce / API REST para datos contables

API REST para datos contables

Como todo documento de REDA Financials es un objeto personalizado de Salesforce, la API REST estándar es la puerta de entrada de tu integración: crea facturas desde tu CRM o sistema de facturación, consulta saldos hacia un data warehouse, contabiliza documentos desde middleware, todo con los endpoints que tu equipo ya conoce.

El patrón canónico: crear el borrador y luego contabilizar

Inserta el encabezado como Borrador

Envía un POST del documento (por ejemplo, refin__Sales_Invoice__c) con entidad, cliente, fechas — estado omitido (predetermina a Borrador) o explícitamente 'Draft'. Los triggers se comportan exactamente igual que en la interfaz: número de documento asignado desde la secuencia de la entidad, libro mayor y período derivados, fecha de vencimiento a partir de las condiciones de pago.

Inserta las líneas

Envía un POST de los registros de línea (refin__Sales_Invoice_Line__c) referenciando el encabezado — productos, cantidades, precios, perfiles fiscales, exactamente los campos que pide el formulario. (La API composite agrupa los pasos 1 y 2 en una sola llamada sin problema.)

Aplica un PATCH del estado a Contabilizado

Actualiza refin__Status__c a 'Posted'. Esta única actualización de campo es la acción de contabilización: el motor escribe los asientos del libro mayor, calcula el impuesto y la retención, sella los tipos de cambio — y aplica todos los controles (balanceado, período abierto, aprobación, cuentas activas). Una contabilización rechazada vuelve como un error DML estándar con el mismo mensaje textual que vería un usuario.

Los endpoints, de un vistazo

Nada de esto es específico de REDA: son los endpoints REST estándar de Salesforce, mostrados sobre los objetos refin__ (el paquete está construido en la API v65.0; funciona cualquier versión actual):

TareaMétodo y endpoint
Crear el encabezado de un documentoPOST /services/data/v65.0/sobjects/refin__Sales_Invoice__c
Leer un registroGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
Actualizar (incluida la contabilización)PATCH /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
ConsultarGET /services/data/v65.0/query?q=<SOQL>
Encabezado + líneas en un solo viajePOST /services/data/v65.0/composite (o composite/tree)
Descubrir campos y listas de selecciónGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/describe

Contabilizar un borrador, en el cable

La llamada de contabilización es deliberadamente anticlimática — un solo campo:

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

{
  "refin__Status__c": "Posted"
}

El éxito es un HTTP 204 No Content — y detrás, un documento completamente contabilizado. Un rechazo vuelve como el arreglo de errores estándar con el mensaje legible del paquete; por ejemplo, un usuario de integración sin puesto de licencia REDA ve:

[
  {
    "message": "Debe ser un usuario con licencia de REDA Financials para crear, editar o eliminar Transacciones contables. Contacte a su administrador.",
    "errorCode": "FIELD_CUSTOM_VALIDATION_EXCEPTION",
    "fields": []
  }
]

Leer lo que acabas de crear es SOQL simple:

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

Para el cuerpo de las inserciones en sí, obtén la lista de campos desde el endpoint describe o el Object Manager en lugar de este artículo — los conjuntos de campos y los campos obligatorios de tu org son la fuente de verdad, y los campos de dimensión adicionales que agregó tu administrador forman parte de ella.

Lo que la plataforma completa por ti

Al…Los triggers hacen…Consecuencia para la integración
Insertar sin estadoEl estado predetermina a 'Draft'Puedes omitir refin__Status__c al crear
InsertarSe asigna el número de documento desde la secuencia de la entidad (según el tipo — facturas y notas se numeran por separado); predefinir Name activa la numeración manual, con la unicidad validada en ambos casosNo generes tus propios números salvo que quieras hacerte cargo de ellos
InsertarSe completan los valores predeterminados de la entidad: libro mayor, período contable, fecha de vencimiento a partir de la condición de pago del proveedorEnvía los campos de negocio; omite los que se pueden derivar
Cambiar la Entidad o el Tipo de factura en un BorradorEl documento vuelve a asignar su númeroEspera un número nuevo si tu middleware "mueve" un borrador entre entidades
Pasar de Borrador a ContabilizadoEl motor completo: asientos del libro mayor, cálculo de impuesto y retención, sellado del tipo de cambio, todos los controlesContabilizar por API es, byte a byte, la misma contabilización que la interfaz

Lectura de datos

  • SOQL a través del endpoint de consulta — facturas abiertas, recibos sin aplicar, campos de antigüedad (son campos de fórmula en los registros), lo que tu panel necesite.
  • El libro mayor en sí — refin__Accounting_Transaction__c es la fuente de verdad de la contabilización; suma débitos y créditos por cuenta contable y habrás reconstruido cualquier saldo externamente.
  • Los acumulados son campos — el saldo pendiente de una factura, el importe sin aplicar de un recibo, la cifra comprometida de una línea de presupuesto: todo se puede consultar directamente, sin cálculos de tu parte.

Reglas del camino

  • No existe atajo: los documentos contabilizados quedan bloqueados a ediciones por API exactamente igual que para los usuarios; las correcciones pasan por los flujos de descontabilización/anulación, programáticamente las mismas transiciones de estado.
  • Las aplicaciones también son registros — crear un refin__Cash_Receipt_Application__c aplica un recibo (se ejecutan todos los controles de coincidencia); eliminarlo lo desaplica.
  • Respeta las fechas de cierre — las escrituras en libros cerrados son rechazadas; tu integración debe fechar los documentos en períodos abiertos, como cualquier contador.
  • La idempotencia depende de ti — la clave natural es la referencia de tu sistema de origen (colócala en el campo Referencia y valida antes de insertar; la validación de referencia de proveedor duplicada ayuda del lado de cuentas por pagar).
Crea el hábito del sandbox. Apunta la integración a un sandbox, ejecuta un documento de punta a punta y lee el resultado en la interfaz — la página del registro te muestra exactamente qué produjo tu llamada a la API, incluidas las transacciones contables. Diez minutos de observación superan a una semana de conjeturas.

Errores comunes que hay que evitar

ErrorPor qué perjudicaHaz esto en su lugar
Insertar documentos con Estado 'Posted' en una sola llamadaLa contabilización está diseñada en torno a la transición Borrador → Contabilizado; una inserción directa como Contabilizado queda fuera del patrón admitido y su comportamiento no está garantizadoInserta como Borrador y luego aplica un PATCH a Contabilizado — composite lo convierte en un solo viaje de todos modos
Generar tus propios números de documento sin cuidadoPredefinir Name cambia ese documento a numeración manual — ahora la unicidad es tu responsabilidad, por entidadDeja que las secuencias numeren los documentos; reserva los números manuales para escenarios de migración deliberados
Ejecutar la integración con un inicio de sesión de administrador prestadoLas pistas de auditoría se difuminan, las rotaciones de contraseña rompen el feed, y los permisos son mucho más amplios que la tareaUn usuario de integración dedicado con un puesto de licencia y el conjunto de permisos empaquetado más restringido que cumpla el trabajo
Reintentar contabilizaciones fallidas a ciegasEl mensaje te dijo por qué falló — un período cerrado hace que el reintento choque siempre contra la misma paredAnaliza el error, corrige los datos (o deriva a una persona) y luego reintenta
Omitir el campo ReferenciaPierdes tu clave de idempotencia y la mejor señal de coincidencia de la conciliación bancariaLleva siempre el identificador real del sistema de origen en Referencia

Qué sigue

  1. Bulk API (importación y exportación de datos) — el mismo patrón a escala de migración.
  2. Descripción general de la API — el panorama completo.
  3. Saldos de apertura y migración de datos — el proyecto clásico de REST/Bulk.
Documentación oficial de Salesforce La propia API REST es una funcionalidad estándar de Salesforce — REDA agrega los objetos, no el transporte. Las referencias autorizadas son la Guía del desarrollador de la API REST y la Referencia de SOQL. Los enlaces se abren en una pestaña nueva.

Preguntas frecuentes

Usa el proceso de dos pasos (insertar como Borrador y luego actualizar a Contabilizado): es el patrón sobre el que está construido el motor, te da un límite de error claro entre "datos incorrectos" y "contabilización rechazada", y refleja el guardar-y-luego-contabilizar de la interfaz. De todos modos, las llamadas composite lo convierten en un solo viaje de ida y vuelta.

Son errores DML estándar que llevan los mensajes de validación del paquete tal cual ("Transaction Date ... is on or before the GL book closure date...", "This document requires approval before posting."). Regístralos, muéstralos, corrige los datos — los mensajes están escritos para personas.

El paquete apunta a la API v65 o superior; usa una versión actual y los objetos refin__ se comportan como cualquier objeto personalizado en esa versión.

Sí, si crea o contabiliza documentos contables — la verificación de licencia se ejecuta en las escrituras de la API exactamente igual que en la interfaz, y un usuario sin puesto es rechazado con el mismo mensaje textual mostrado arriba. Asigna al usuario de integración un puesto y el conjunto de permisos adecuado, igual que a una persona.

No — el paquete no incluye ningún recurso REST personalizado, por diseño. Los endpoints estándar de sObject, query y composite sobre los objetos refin__ son toda la superficie REST, lo que significa que cualquier cliente REST de Salesforce, herramienta ETL o conector de middleware ya sabe hablarla.

¿Te resultó útil?