Skip to main content
Esta página te guía a través de un ejemplo completo de un informe Analítico Financiero en XML. La plantilla desglosa la actividad a nivel de cuenta, aplica lógica personalizada (como descuentos) e incluye resúmenes para respaldar el análisis y la auditoría. Lo que muestra este informe:
  • Detalles de la organización y del ledger.
  • Resumen a nivel de cuenta: saldo, moneda y alias.
  • Desglose 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 la plantilla


Desglose del código


Información de la organización y del ledger

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

Recorrer las cuentas en bucle

{%- for account in midaz_onboarding.account %}{% endfor %} Recorre todas las cuentas vinculadas al usuario. Como la mayoría de los usuarios tiene más de una cuenta, esto permite mostrar datos individuales para cada una.
  • midaz_onboarding.account: la lista completa de cuentas del 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(): recorre midaz_transaction.balance para encontrar el que coincide con account.id.
  • [0]: toma la primera coincidencia.
  • balance contiene el resultado.
<CurrentBalance> {{ balance.available }}</CurrentBalance> Muestra el saldo disponible de la cuenta (balance.available).

Recorrer en bucle 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 los que coinciden con la cuenta actual.
  • Si coinciden, el saldo aparece.

Información de la moneda

Muestra la moneda de la cuenta (por ejemplo, BRL, USD).
  • account.asset_code: inserta dinámicamente el código de la moneda.

Agrupar operaciones

<Operations>...</Operations>

Define la sección que enumera todas las operaciones de una cuenta.
  • Mantiene el informe estructurado y fácil de leer.
{%- for operation in midaz_transaction.operation %} Recorre todas las operaciones de la transacción y muestra las que coinciden con la cuenta actual.
  • operation: representa la operación actual que forma parte de la transacción actual.
  • midaz_transaction.operation: la lista de todas las operaciones de la transacción.
{%- if operation.account_id == account.id %} Incluye solo las operaciones relevantes para la cuenta actual.
  • Si el account_id de la operación es igual al account.id actual, se ejecuta el resto del bloque.
{%- set original_amount = operation.amount %} Define el monto original y lo asigna a 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 lo que ocurrió. <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 (por ejemplo, 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 usada para la operación. <Status>{{ operation.status }}</Status> Estado de la operación (por ejemplo, Approved, pending).

Bloque de resumen de cuenta

{% count_by midaz_transaction.operation if account_id == account.id %} Cuenta el número de operaciones asociadas a tu cuenta.
  • 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 de esta cuenta y muestra el resultado con 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 las operaciones de esta cuenta. Es útil para detectar patrones de gasto o valores atípicos.
  • avg_by aplica el cálculo del promedio a los valores del monto.
  • Solo considera las operaciones de la cuenta actual.

Salida de la plantilla