> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Plantilla TXT

> Construye una plantilla de comprobante de transacción en texto plano con Reporter — un .tpl simple que renderiza un comprobante de pago en TXT.

Esta página te guía a través de la creación de una plantilla de recibo de transacción usando **Reporter** en formato `.txt`.

## Código de plantilla

***

<CodeGroup>
  ```text Text expandable theme={null}
  ##########################################
  #          COMPROBANTE DE PAGO           #
  ##########################################

  Fecha de Generación: {% date_time "dd/MM/YYYY HH:mm" %}
  Nombre del Ledger: {{ midaz_onboarding.ledger.0.name }}

  {%- for transaction in midaz_transaction.transaction %}
  -----------------------------------------
  ID de la Transacción: {{ transaction.id }}
  Fecha de la Transacción: {{ transaction.created_at }}
  Importe Total: {{ transaction.amount }}
  Estado de la Transacción: {{transaction.status}}
  ------------------------------------------

  Cuentas de Origen:
  {%- for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %} 
  {%- if operation.type == "DEBIT" %} 
  - Alias: {{operation.account_alias }} 
  - Importe del débito: {{ operation.amount }} 
  {%- endif %}
  {%- endfor %}

  Cuentas de Destino:
  {%- for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %} 
  {%- if operation.type == "CREDIT" %} 
  - Alias: {{operation.account_alias }} 
  - Valor del Crédito: {{operation.amount }} 
  {%- endif %}
  {%- endfor %}

  {%- endfor %}
  ------------------------------------------
  Documento generado automáticamente.
  ```
</CodeGroup>

## Desglose del código

***

\*\* `Fecha de Generación: {% date_time "dd/MM/YYYY HH:mm" %}`\*\*

Renderiza la **fecha y hora actual** cuando se procesa la plantilla.

* Usa el formato `dd/MM/YYYY HH:mm` (ej., `26/05/2025 11:45`).

\*\* `Nombre del Ledger: {{ midaz_onboarding.ledger.0.name }}`\*\*

Muestra el **nombre del libro contable** asociado con este reporte.

* `midaz_onboarding.ledger` es una lista, y `[0]` selecciona el **primer libro contable**.
* `.name` obtiene la propiedad name, como `"Corporate Ledger"`.

\*\* `{% for transaction in midaz_transaction.transaction %}`\*\*

Este bucle itera sobre **cada transacción** en la lista `midaz_transaction.transaction`. Para cada transacción, el código a continuación se ejecutará una vez para mostrar su información.

### Bloque de encabezado de transacción

Cada transacción imprime los siguientes detalles:

<CodeGroup>
  ```txt Text theme={null}
  -----------------------------------------
  ID de la Transacción: {{ transaction.id }}
  Fecha de la Transacción: {{ transaction.created_at }}
  Importe total: {{ transaction.amount }}
  Estado de la Transacción: {{transaction.status}}
  ------------------------------------------
  ```
</CodeGroup>

* `transaction.id`: ID único de la transacción.
* `transaction.created_at`: Marca de tiempo cuando se creó la transacción.
* `transaction.amount`: El monto bruto de la transacción.
* `transaction.status`: Estado actual como `COMPLETED`, `PENDING` o `FAILED`.

### Sección de cuentas de origen

<CodeGroup>
  ```txt Text theme={null}
  Cuentas de Origen::
  {% for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %}
    {% if operation.type == "DEBIT" %}
      - Alias: {{ operation.account_alias }}
      - Importe del Débito: {{ operation.amount }}
    {% endif %}
  {% endfor %}
  ```
</CodeGroup>

* Filtra la lista de operaciones para incluir solo operaciones vinculadas a la **transacción actual**.
* Filtra adicionalmente para mostrar solo operaciones con `type == "DEBIT"` (fondos saliendo de una cuenta).
* Para cada débito coincidente:
  * Muestra el **alias de la cuenta**.
  * Muestra el **monto del débito**.

### Sección de cuentas de destino

<CodeGroup>
  ```txt Text theme={null}
  Cuentas de Destino:
  {% for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %}
    {% if operation.type == "CREDIT" %}
      - Alias: {{ operation.account_alias }}
      - Valor del Crédito: {{ operation.amount }}
    {% endif %}
  {% endfor %}
  ```
</CodeGroup>

* Misma lógica que el bloque de débito, pero filtra por `type == "CREDIT"` (fondos recibidos).
* Para cada crédito coincidente:
  * Muestra el **alias de la cuenta**.
  * Muestra el **monto del crédito**.

### Texto de pie de página

<CodeGroup>
  ```text Text theme={null}
  ------------------------------------------
  Documento generado automáticamente.
  ```
</CodeGroup>

* Pie de página de texto simple que marca el final del reporte.
* Indica que el archivo fue generado automáticamente, típicamente para trazabilidad.

## Salida de la plantilla

***

<CodeGroup>
  ```text Text theme={null}
  ##########################################
  #           COMPROBANTE DE PAGO          #
  ##########################################

  Fecha de Generación: 23/05/2025 14:08
  Nombre del Ledger: Rice, Rowe y O'Hara

  -----------------------------------------
  ID de Transacción: 75906707-8c31-479c-b354-aa805c4cefbc
  Fecha de Transacción: 2025-05-22T14:15:22.123Z
  Importe Total: 5000.00
  Estado de la Transacción: ACTIVE
  ------------------------------------------

  Origen Cuentas:
  - Alias: @external|USD
  - Importe del Débito: 1500.00

  Cuentas de destino:
  - Alias: @wallet_12345
  - Importe del Crédito: 1500.00

  ------------------------------------------
  Documento generado automáticamente.
  ```
</CodeGroup>
