> ## 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

> Crea una plantilla de recibo de transacción en texto plano con Reporter, en un archivo .tpl simple que se renderiza en un comprobante de pago TXT imprimible.

Esta página muestra cómo crear una plantilla de recibo de transacción con **Reporter** en formato `.txt`.

## Código de la plantilla

***

<CodeGroup>
  ```text Text expandable theme={null}
  ##########################################
  #            PROOF OF PAYMENT            #
  ##########################################

  Generation Date: {% date_time "dd/MM/YYYY HH:mm" %}
  Ledger Name: {{ midaz_onboarding.ledger.0.name }}

  {%- for transaction in midaz_transaction.transaction %}
  -----------------------------------------
  Transaction ID: {{ transaction.id }}
  Transaction Date: {{ transaction.created_at }}
  Total Amount: {{ transaction.amount }}
  Transaction Status: {{transaction.status}}
  ------------------------------------------

  Source Accounts:
  {%- for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %} 
  {%- if operation.type == "DEBIT" %} 
  - Alias: {{operation.account_alias }} 
  - Debit Amount: {{ operation.amount }} 
  {%- endif %}
  {%- endfor %}

  Target Accounts:
  {%- for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %} 
  {%- if operation.type == "CREDIT" %} 
  - Alias: {{operation.account_alias }} 
  - Credit Value: {{operation.amount }} 
  {%- endif %}
  {%- endfor %}

  {%- endfor %}
  ------------------------------------------
  Automatically generated document.
  ```
</CodeGroup>

## Desglose del código

***

\*\* `Generation Date: {% date_time "dd/MM/YYYY HH:mm" %}`\*\*

Renderiza la **fecha y hora actual** durante el procesamiento de la plantilla.

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

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

Muestra el **nombre del ledger** asociado con este informe.

* `midaz_onboarding.ledger` es una lista, y `[0]` selecciona el **primer ledger**.
* `.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 de abajo se ejecutará una vez para mostrar su información.

### Bloque de encabezado de la transacción

Cada transacción imprime los siguientes detalles:

<CodeGroup>
  ```txt Text theme={null}
  -----------------------------------------
  Transaction ID: {{ transaction.id }}
  Transaction Date: {{ transaction.created_at }}
  Total Amount: {{ transaction.amount }}
  Transaction Status: {{ transaction.status }}
  ------------------------------------------
  ```
</CodeGroup>

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

### Sección de cuentas de origen

<CodeGroup>
  ```txt Text theme={null}
  Source Accounts:
  {% for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %}
    {% if operation.type == "DEBIT" %}
      - Alias: {{ operation.account_alias }}
      - Debit Amount: {{ operation.amount }}
    {% endif %}
  {% endfor %}
  ```
</CodeGroup>

* Filtra la lista de operaciones para incluir solo las operaciones vinculadas a la **transacción actual**.
* La filtra aún más para mostrar solo las operaciones con `type == "DEBIT"` (fondos que salen de una cuenta).
* Para cada débito coincidente:
  * Muestra el **alias de la cuenta**.
  * Muestra el **monto de débito**.

### Sección de cuentas de destino

<CodeGroup>
  ```txt Text theme={null}
  Target Accounts:
  {% for operation in filter(midaz_transaction.operation, "transaction_id", transaction.id) %}
    {% if operation.type == "CREDIT" %}
      - Alias: {{ operation.account_alias }}
      - Credit Value: {{ 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 de crédito**.

### Texto de pie de página

<CodeGroup>
  ```text Text theme={null}
  ------------------------------------------
  Automatically generated document.
  ```
</CodeGroup>

* Pie de página de texto simple que marca el final del informe.
* Indica la generación automática del archivo, típicamente para trazabilidad.

## Salida de la plantilla

***

<CodeGroup>
  ```text Text expandable theme={null}
  ##########################################
  #            PROOF OF PAYMENT            #
  ##########################################

  Generation Date: 23/05/2025 14:08
  Ledger Name: Rice, Rowe and O'Hara

  -----------------------------------------
  Transaction ID: 75906707-8c31-479c-b354-aa805c4cefbc
  Transaction Date: 2025-05-22T14:15:22.123Z
  Total Amount: 5000.00
  Transaction Status: ACTIVE
  ------------------------------------------

  Source Accounts:
  - Alias: @external|USD 
  - Debit Amount: 1500.00

  Target Accounts:
  - Alias: @wallet_12345 
  - Credit Value: 1500.00

  ------------------------------------------
  Automatically generated document.
  ```
</CodeGroup>
