Skip to main content
Esta página guia você por um exemplo completo de um relatório Financeiro Analítico em XML. O template detalha a atividade no nível de conta, aplica lógica personalizada (como descontos) e inclui resumos para apoiar a análise e a auditoria. O que este relatório mostra:
  • Detalhes da organização e do ledger.
  • Visão geral no nível de conta: saldo, moeda e alias.
  • Detalhamento das operações: valor original, desconto, valor final, status, descrição e tipo.
  • Resumos por conta: total de operações, valor total e média por operação.

Código do template


Detalhamento do código


Informações da organização e do ledger

<Organization>{{ midaz_onboarding.organization.legal_name }} - CNPJ: {{ midaz_onboarding.organization.legal_document }}</Organization> Exibe a razão social da organização e o CNPJ correspondente (documento fiscal brasileiro).
  • {{ midaz_onboarding.organization.legal_name }}: recupera o nome da organização.
  • {{ midaz_onboarding.legal_document }}: recupera o CNPJ.
<GenerationDate>{% date_time "dd/MM/YYYY HH:mm" %}</GenerationDate> Esta função aplica a data e a hora da renderização, no formato dd/MM/YYYY HH:mm. {%- with ledger = midaz_onboarding.ledger[0] %} Cria uma variável temporária que aponta para o primeiro ledger disponível. Isso mantém o código mais limpo e evita referências repetitivas.
  • -: remove espaços extras no arquivo renderizado.
  • ledger: o nome da variável temporária.
  • midaz_onboarding.ledger[0].name: aponta para o primeiro ledger disponível.

Fazendo loop pelas contas

{%- for account in midaz_onboarding.account %}{% endfor %} Faz um loop por todas as contas vinculadas ao usuário. Como a maioria dos usuários tem mais de uma conta, isso permite exibir dados individuais para cada uma.
  • midaz_onboarding.account: a lista completa de contas do usuário.
  • {%- for account in midaz_onboarding.account %}: o loop roda uma vez por conta.
{%- with balance = filter(midaz_transaction.balance, "account_id", account.id)[0] %} Define uma variável chamada balance que armazena o saldo da conta atual.
  • filter(): percorre midaz_transaction.balance para encontrar o que corresponde ao account.id.
  • [0]: pega a primeira correspondência.
  • balance armazena o resultado.
<CurrentBalance> {{ balance.available }}</CurrentBalance> Mostra o saldo disponível da conta (balance.available).

Fazendo loop sem {%with...%}

{%- for balance in midaz_transaction.balance %} Faz um loop por todos os saldos para encontrar o que corresponde à conta atual. Essa é uma alternativa mais explícita a filter().
  • midaz_transaction.balance: a lista de todos os saldos.
  • {%- balance in midaz_transaction.balance %}: o loop roda uma vez por saldo.
{% if balance.account_id == account.id %} Filtra os saldos para mostrar apenas os que correspondem à conta atual.
  • Se corresponderem, o saldo aparece.

Informações de moeda

Mostra a moeda da conta (por exemplo, BRL, USD).
  • account.asset_code: injeta dinamicamente o código da moeda.

Agrupando operações

<Operations>...</Operations>

Define a seção que lista todas as operações de uma conta.
  • Mantém o relatório estruturado e fácil de ler.
{%- for operation in midaz_transaction.operation %} Faz um loop por todas as operações da transação e exibe as operações que correspondem à conta atual.
  • operation: representa a operação atual, que faz parte da transação atual.
  • midaz_transaction.operation: a lista de todas as operações da transação.
{%- if operation.account_id == account.id %} Inclui apenas as operações relevantes para a conta atual.
  • Se o account_id da operação for igual ao account.id atual, o restante do bloco roda.
{%- set original_amount = operation.amount %} Define o valor original e o define como variável.
  • original_amount: o nome da variável.
{%- set discount_amount = original_amount * 0.03 %} Define uma variável e calcula um desconto de 3% sobre o valor original.
  • discount_amount: o nome da variável.
  • original_amount * 0.03: aplica um desconto de 3% sobre o valor original.
{%- set final_amount = original_amount - discount_amount %} Subtrai o desconto do valor original para obter o valor final.
  • final_amount: variável que representa o valor final.
  • original_amount - discount_amount: a operação de subtração.

Bloco de operação

Cada <Operation> contém informações detalhadas sobre a transação. Esses campos ajudam os usuários a auditar e entender o que aconteceu. <OperationID>{{ operation.id }}</OperationID> ID exclusivo da operação. <Description>{{ operation.description }}</Description> Descrição curta da operação. <Type>{{ operation.type }}</Type> Tipo de operação (por exemplo, crédito, débito, ajuste). <Route>{{ operation.route }}</Route> Entrada de rota de operação associada. <OriginalAmount>{{ original_amount }}</OriginalAmount> Valor original antes de qualquer ajuste. <DiscountAmount>{{ discount_amount }}</DiscountAmount> Valor do desconto aplicado. <FinalAmountWithDiscount>{{ final_amount }}</FinalAmountWithDiscount> Valor final após o desconto. <Currency>{{ operation.asset_code }}</Currency> A moeda usada na operação. <Status>{{ operation.status }}</Status> Status da operação (por exemplo, Aprovado, pendente).

Bloco de resumo da conta

{% count_by midaz_transaction.operation if account_id == account.id %} Conta o número de operações associadas à sua conta.
  • A função count_by percorre midaz_transaction.operation e soma quantas operações têm o mesmo account_id da conta atual.
{% sum_by midaz_transaction.operation by "amount" if account_id == account.id %} Soma o valor total de todas as operações desta conta e mostra o resultado com duas casas decimais.
  • sum_by faz um loop pelas transações filtradas por account_id.
  • Soma os campos amount.
{% avg_by midaz_transaction.operation by "amount" if account_id == account.id %} Calcula o valor médio das operações desta conta. Útil para identificar padrões de gasto ou valores fora do padrão.
  • avg_by aplica o cálculo da média aos valores de amount.
  • Considera apenas as operações da conta atual.

Saída do template