Isox.Camt029 (Isox v0.2.0)

Copy Markdown View Source

Resposta ao pedido de cancelamento de Pix Agendado: aceita ou recusa a Isox.Camt055.

Versões 1.1 e 1.2 coexistindo. Os enums de rsn_prtry diferem entre elas: a 1.1 tem quatro códigos a mais que a 1.2. A correlação com o pedido é pelo pmt_cxl_id da camt.055, que aqui se chama orgnl_pmt_inf_cxl_id.

Sts.Conf tem valor único ("INFO") e fica fixo.

Regra cruzada que o XSD não expressa

O XSD não sabe expressar dependência entre campos, então estas duas combinações são validadas em encode/3, a partir da planilha do catálogo:

  • pmt_inf_cxl_sts igual a "ACCR" exige rsn_prtry ausente e cxl_prcg_tp igual a "DHAC".
  • pmt_inf_cxl_sts igual a "RJCR" exige rsn_prtry presente e cxl_prcg_tp igual a "DHRC".

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.