Saltar al contenido principal
Esta página te guía a través de un ejemplo completo de un reporte Financiero Analítico en XML. La plantilla desglosa la actividad a nivel de cuenta, aplica lógica personalizada (como descuentos) e incluye resúmenes claros para apoyar el análisis y la auditoría. Lo que muestra este reporte:
  • Detalles de Organización y Libro Contable.
  • Resumen a nivel de cuenta: saldo, moneda y alias.
  • Desgloses de operaciones: monto original, descuento, monto final, estado, descripción y tipo.
  • Resúmenes por cuenta: total de operaciones, valor total y promedio por operación.

Código de plantilla


Desglose del código


Información de Organización y Libro Contable

<Organization>{{ midaz_onboarding.organization.legal_name }} - CNPJ: {{ midaz_onboarding.organization.legal_document }}</Organization> Muestra el nombre legal de la organización y el CNPJ correspondiente (ID fiscal brasileño).
  • {{ midaz_onboarding.organization.legal_name }}: recupera el nombre de la organización.
  • {{ midaz_onboarding.legal_document }}: recupera el CNPJ.
**<GenerationDate>{% date_time "dd/MM/YYYY HH:mm" %}</GenerationDate> Esta función aplica la fecha y hora cuando se renderiza la plantilla, usando el formato dd/MM/YYYY HH:mm. {%- with ledger = midaz_onboarding.ledger[0] %} Crea una variable temporal que apunta al primer libro contable disponible. Esto mantiene el código más limpio y evita referencias repetitivas.
  • -: elimina espacios adicionales en el archivo renderizado.
  • ledger: el nombre de la variable temporal.
  • midaz_onboarding.ledger[0].name: apunta al primer libro contable disponible.

Iterando a través de las cuentas

{%- for account in midaz_onboarding.account %}{% endfor %} Recorre todas las cuentas vinculadas al usuario. Dado que la mayoría de los usuarios tienen más de una cuenta, esto te permite mostrar datos individuales para cada una.
  • midaz_onboarding.account: la lista completa de cuentas de usuario.
  • {%- for account in midaz_onboarding.account %}: el bucle se ejecuta una vez por cuenta.
{%- with balance = filter(midaz_transaction.balance, "account_id", account.id)[0] %} Define una variable llamada balance que contiene el saldo de la cuenta actual.
  • filter(): escanea a través de midaz_transaction.balance para encontrar el que coincida con el account.id.
  • [0]: toma la primera coincidencia.
  • El resultado se almacena en balance.
<CurrentBalance> {{ balance.available }}</CurrentBalance> Muestra el saldo disponible de la cuenta (balance.available).

Iterando sin {%with...%}

{%- for balance in midaz_transaction.balance %} Recorre todos los saldos para encontrar el que coincide con la cuenta actual. Esta es una alternativa más explícita a filter().
  • midaz_transaction.balance: La lista de todos los saldos.
  • {%- balance in midaz_transaction.balance %}: el bucle se ejecuta una vez por saldo.
{% if balance.account_id == account.id %} Filtra los saldos para mostrar solo aquellos que coinciden con la cuenta actual que se está procesando.
  • Si coinciden, se muestra el saldo.

Información de moneda

Muestra la moneda de la cuenta (ej., BRL, USD) para ayudarte a entender el contexto del valor.
  • account.asset_code: inyecta dinámicamente el código de moneda.

Agrupando operaciones

<Operations>...</Operations>

Define la sección donde se listan todas las operaciones de una cuenta.
  • Mantiene el reporte estructurado y fácil de escanear.
{%- for operation in midaz_transaction.operation %} Recorre todas las operaciones en la transacción y muestra las operaciones que coinciden con la cuenta actual.
  • operation: representa la operación actual que es parte de la transacción actual.
  • midaz_transaction.operation: la lista de todas las operaciones en la transacción.
{%- if operation.account_id == account.id %} Asegura que solo se incluyan las operaciones relevantes para la cuenta actual.
  • Si el account_id de la operación es igual al account.id actual, se ejecutará el resto del bloque.
{%- set original_amount = operation.amount %} Define el monto original y lo establece como una variable.
  • original_amount: el nombre de la variable.
{%- set discount_amount = original_amount * 0.03 %} Define una variable y calcula un descuento del 3% sobre el monto original.
  • discount_amount: el nombre de la variable.
  • original_amount * 0.03: aplica un descuento del 3% sobre el monto original.
{%- set final_amount = original_amount - discount_amount %} Resta el descuento del monto original para obtener el valor final.
  • final_amount: variable que representa el valor final.
  • original_amount - discount_amount: la operación de resta.

Bloque de operación

Cada <Operation> contiene información detallada sobre la transacción. Estos campos ayudan a los usuarios a auditar y entender qué sucedió. <OperationID>{{ operation.id }}</OperationID> ID único de la operación. <Description>{{ operation.description }}</Description> Descripción breve de la operación. <Type>{{ operation.type }}</Type> Tipo de operación (ej., crédito, débito, ajuste). <Route>{{ operation.route }}</Route> Entrada de ruta de operación asociada. <OriginalAmount>{{ original_amount }}</OriginalAmount> Monto original antes de cualquier ajuste. <DiscountAmount>{{ discount_amount }}</DiscountAmount> Valor del descuento aplicado. <FinalAmountWithDiscount>{{ final_amount }}</FinalAmountWithDiscount> Monto final después del descuento. <Currency>{{ operation.asset_code }}</Currency> La moneda utilizada para la operación. <Status>{{ operation.status }}</Status> Estado de la operación (ej., Aprobado, pendiente).

Bloque de resumen de cuenta

{% count_by midaz_transaction.operation if account_id == account.id %} Cuenta el número de operaciones asociadas con tu cuenta y ayuda a entender el volumen de transacciones para el período de reporte.
  • La función count_by recorre midaz_transaction.operation y suma cuántas operaciones tienen el mismo account_id que la cuenta actual.
{% sum_by midaz_transaction.operation by "amount" if account_id == account.id %} Suma el valor total de todas las operaciones para esta cuenta, y genera el resultado usando dos decimales.
  • sum_by recorre las transacciones filtradas por account_id.
  • Suma los campos amount.
{% avg_by midaz_transaction.operation by "amount" if account_id == account.id %} Calcula el valor promedio de operación para esta cuenta. Útil para detectar patrones de gasto o valores atípicos.
  • avg_by aplica el cálculo de promedio a los valores de monto.
  • Solo considera operaciones para la cuenta actual.

Salida de la plantilla