lib/iso_20022/camt/053/entry_details.ex

defmodule ISO20022.Camt053.EntryDetails do
  @moduledoc """
  Optional transaction-level detail block from `<NtryDtls>`.

  An entry may carry multiple `EntryDetails` (rare) and each may carry multiple
  `TransactionDetails` — this is the standard way banks represent batch payments
  where one entry covers many underlying transactions.

  `batch` is present when `<Btch>` is included, indicating this is a grouped entry.
  """

  alias ISO20022.Camt053.TransactionDetails

  @type batch :: %{
          message_id: String.t() | nil,
          payment_info_id: String.t() | nil,
          number_of_transactions: non_neg_integer() | nil,
          total_amount: Decimal.t() | nil
        }

  @type t :: %__MODULE__{
          batch: batch() | nil,
          transaction_details: [TransactionDetails.t()]
        }

  defstruct [:batch, transaction_details: []]
end