Isox.Camt029 (Isox v0.1.0)

Copy Markdown View Source

Modelo ISO 20022 do camt.029 (resposta ao camt.055 — aceite ACCR ou rejeição RJCR), versões 1.1 e 1.2 coexistindo (enums de rsn_prtry diferem entre as duas: v1_1 tem 4 códigos a mais que v1_2). Correlaciona com o PmtCxlId do camt.055 original (aqui OrgnlPmtInfCxlId).

Sts.Conf (enum de valor único "INFO") fica fixo.

Regra da planilha do catálogo, sem contrapartida no XSD (que não expressa regra cruzada entre campos): pmt_inf_cxl_sts == "ACCR" exige rsn_prtry ausente e cxl_prcg_tp == "DHAC"; pmt_inf_cxl_sts == "RJCR" exige rsn_prtry presente e cxl_prcg_tp == "DHRC". encode/3 valida isso explicitamente.

Summary

Functions

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

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

Types

t()

@type t() :: %Isox.Camt029{
  assgne_ispb: String.t(),
  assgnmt_id: String.t(),
  assgnr_ispb: String.t(),
  created_at: DateTime.t(),
  cxl_prcg_tp: String.t(),
  orgnl_end_to_end_id: String.t(),
  orgnl_pmt_inf_cxl_id: String.t(),
  orgnl_pmt_inf_id: String.t(),
  pmt_inf_cxl_sts: String.t(),
  prcg_dt_tm: DateTime.t(),
  rsn_prtry: String.t() | nil
}

version()

@type version() :: :v1_1 | :v1_2

Functions

decode(xml)

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

Decodifica um XML de camt.029 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.