Modelo ISO 20022 do pacs.004 (devolução), versão 1.5 — a ordem
de devolução de uma pacs.008 já liquidada, referenciando a original por
OrgnlEndToEndId.
TxInf é max: ilimitado no XSD e o catálogo oficial documenta lote de
verdade (pacs.004_SPI_10_msg.xml, 10 transações numa mensagem só).
encode/3 aceita 1 mensagem ou uma lista (lote); decode/1 devolve 1
struct ou uma lista, dependendo de quantas TxInf o XML trouxer.
Mesma validação em duas camadas dos outros: encode/3 confere
obrigatoriedade do modelo e reaproveita o decode do próprio módulo
gerado pra pattern/enum/cardinalidade, sem duplicar regra.
Summary
Functions
Decodifica um XML de pacs.004 de volta para a struct — ou, quando a
mensagem traz mais de uma TxInf (lote), para uma lista de structs.
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista (lote — vira várias TxInf na
mesma Document, com NbOfTxs ajustado à quantidade).
Types
@type t() :: %Isox.Pacs004{ cdtr_agt_ispb: String.t(), created_at: DateTime.t(), dbtr_agt_ispb: String.t(), msg_id: String.t(), orgnl_end_to_end_id: String.t(), rmt_inf_ustrd: String.t() | nil, rtr_id: String.t(), rtr_rsn_addtl_inf: String.t() | nil, rtr_rsn_cd: String.t(), sttlm_prty: String.t(), value: String.t() | number() }
@type version() :: :v1_5
Functions
Decodifica um XML de pacs.004 de volta para a struct — ou, quando a
mensagem traz mais de uma TxInf (lote), para uma lista de structs.
@spec encode(t() | [t(), ...], Isox.AppHdr.t(), version()) :: {:ok, binary()} | {:error, String.t()}
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista (lote — vira várias TxInf na
mesma Document, com NbOfTxs ajustado à quantidade).
msg_id/created_at são de GrpHdr (uma vez por mensagem XML) — em
lote, têm que ser iguais em todos os itens da lista.