Isox.Reda016 (Isox v0.2.0)

Copy Markdown View Source

Resposta a um pedido de cadastro: o desfecho de uma Isox.Reda014, Isox.Reda022 ou Isox.Reda031.

Versão 1.5. A correlação com o pedido é por orgnl_msg_id.

sts tem três valores, confirmados pelos três exemplos oficiais do BCB. O do meio é o que costuma surpreender: "QUED" não é erro, é o pedido de registro de um indireto que já tem liquidante. O liquidante atual ganha 24 horas para confirmar o fim do relacionamento, e o prazo vem na Isox.Reda017.

Regra cruzada que o XSD não expressa

rsn_prtry é obrigatório em "QUED" e "REJT", proibido em "COMP". sys_pty_ispb é o inverso: obrigatório em "COMP", proibido nos outros dois. Faz sentido, porque só o pedido que deu certo tem participante para apontar. rspnsbl_pty_ispb mora dentro do bloco de sys_pty_ispb, então não existe sem ele. encode/3 valida tudo isso.

Summary

Functions

Decodifica um XML de reda.016 de volta para a struct.

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

Types

t()

@type t() :: %Isox.Reda016{
  created_at: DateTime.t(),
  msg_id: String.t(),
  orgnl_msg_id: String.t(),
  rsn_prtry: String.t() | nil,
  rspnsbl_pty_ispb: String.t() | nil,
  sts: String.t(),
  sys_pty_ispb: String.t() | nil
}

version()

@type version() :: :v1_5

Functions

decode(xml)

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

Decodifica um XML de reda.016 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.