Isox.Reda041 (Isox v0.1.0)

Copy Markdown View Source

Modelo ISO 20022 do reda.041 (aviso de mudança de atividade/status de um participante), versão 1.7.

Rcrd.Othr é [1..3] no schema real (maxOccurs="3", sem minOccurs — logo 1 implícito), não ilimitado — no máximo uma alteração por campo (FldNm: "MODP"/"NOME"/"NOMR", só 3 opções na tabela de domínios). Ao contrário de StsRsnInf/TxInfAndSts nos outros módulos, aqui a lista é o próprio conteúdo da mensagem (um ou mais campos alterados), então é modelada como lista de verdade, não simplificada pra 1 item. encode/3 não precisa validar o limite explicitamente — confirm/2 (round-trip) já rejeita 0 ou mais de 3 itens via o motor (Isox.Xml.Codec, módulo interno).

Summary

Functions

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

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

Types

change()

@type change() :: %{
  fld_nm: String.t(),
  od_fld_val: String.t(),
  new_fld_val: String.t()
}

t()

@type t() :: %Isox.Reda041{
  changes: [change()],
  created_at: DateTime.t(),
  ispb: String.t(),
  msg_id: String.t()
}

version()

@type version() :: :v1_7

Functions

decode(xml)

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

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