Modelo ISO 20022 do pain.014 (resposta a pain.013), versões 2.3
e 2.4 coexistindo. Correlaciona com a instrução agendada por
OrgnlPmtInfId/OrgnlEndToEndId.
OrgnlPmtInfAndSts é max: ilimitado no schema — encode/3 aceita 1
mensagem ou uma lista (lote: vários OrgnlPmtInfAndSts na mesma
Document) e decode/1 devolve 1 struct ou uma lista de volta, mesmo
padrão do Pacs002/Pacs004/Pacs008.
O schema real só define TxSts como ACSP/RJCT — um eventual estado
de fila/pendência não existe neste schema, então não é modelado aqui.
InitgPty (14 zeros) e OrgnlGrpInfAndSts (OrgnlMsgId com 32 zeros,
OrgnlMsgNmId com 8 zeros) são valores fixos no perfil do BCB, não
campos variáveis — a correlação de verdade acontece em
OrgnlPmtInfAndSts, não no grupo.
StsRsnInf/rsn_prtry é condicional a tx_sts, regra da planilha do
catálogo (BCB): obrigatório quando "RJCT", proibido quando "ACSP"
— confirmado nos 4 exemplos oficiais. encode/3 valida isso.
Summary
Functions
Decodifica um XML de pain.014 de volta para a struct — ou, quando a
mensagem traz mais de um OrgnlPmtInfAndSts (lote), para uma lista de
structs.
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote — vira vários
OrgnlPmtInfAndSts na mesma Document).
Types
@type t() :: %Isox.Pain014{ cdtr_agt_ispb: String.t(), cdtr_cpf_cnpj: String.t(), created_at: DateTime.t(), dbtr_dcsn_dt_tm: DateTime.t(), msg_id: String.t(), orgnl_end_to_end_id: String.t(), orgnl_pmt_inf_id: String.t(), rsn_prtry: String.t() | nil, tx_sts: String.t() }
@type version() :: :v2_3 | :v2_4
Functions
Decodifica um XML de pain.014 de volta para a struct — ou, quando a
mensagem traz mais de um OrgnlPmtInfAndSts (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 de mensagens (lote — vira vários
OrgnlPmtInfAndSts na mesma Document).
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.