Isox.Camt025 (Isox v0.1.0)

Copy Markdown View Source

Modelo ISO 20022 do camt.025 (recibo, resposta a trck.002), versão 1.0 — até 500 confirmações por mensagem (RctDtls é max: ilimitado no schema real, modelado como lista de verdade).

Cada confirmação correlaciona com um trck.002 por OrgnlMsgId/ OrgnlPmtId e traz um status (aceite/rejeição), com motivo opcional.

StsRsn (o bloco de motivo) é preenchido quando Sts.Cd == "RJCT" (planilha do catálogo): rsn_prtry é quem decide se o bloco aparece — Rsn é obrigatório dentro dele no schema real, AddtlInf que é opcional. addtl_inf sem rsn_prtry é rejeitado explicitamente (encode/3), já que não tem como virar StsRsn válido sem Rsn.

Summary

Functions

Decodifica um XML de camt.025 de volta para a struct.

Monta o XML (envelope completo, AppHdr + Document) para a versão dada.

Types

confirmation()

@type confirmation() :: %{
  orgnl_msg_id: String.t(),
  orgnl_pmt_id: String.t(),
  sts: String.t(),
  rsn_prtry: String.t() | nil,
  addtl_inf: String.t() | nil
}

t()

@type t() :: %Isox.Camt025{
  confirmations: [confirmation()],
  created_at: DateTime.t(),
  msg_id: String.t()
}

version()

@type version() :: :v1_0

Functions

decode(xml)

@spec decode(binary()) :: {:ok, t(), version()} | {:error, term()}

Decodifica um XML de camt.025 de volta para a struct.

encode(message, header, version)

@spec encode(t(), Isox.AppHdr.t(), version()) ::
  {:ok, binary()} | {:error, String.t()}

Monta o XML (envelope completo, AppHdr + Document) para a versão dada.