Isox.Pacs004 (Isox v0.2.0)

Copy Markdown View Source

Devolução: a ordem que faz o dinheiro de um Pix já liquidado voltar.

Versão 1.5. Aponta o pagamento original por orgnl_end_to_end_id, e ganha identificador próprio em rtr_id, que segue o mesmo formato do idFimAFim mas começa com D em vez de E. A resposta é uma Isox.Pacs002.

Devolução parcial é permitida, então value pode ser menor que o original. Maior, não, e a soma das devoluções também não pode passar do valor original.

Os dois agentes mantêm os papéis do pagamento original: quem pagou continua sendo o dbtr, mesmo que agora seja ele quem recebe o dinheiro de volta.

Lote

TxInf é ilimitado no XSD, e o catálogo documenta lote de verdade (pacs.004_SPI_10_msg.xml, 10 transações numa mensagem só). encode/3 aceita uma mensagem ou uma lista, e decode/1 devolve uma struct ou uma lista, conforme o XML.

Summary

Functions

Decodifica um XML de pacs.004 de volta para a struct, ou para uma lista de structs quando a mensagem traz mais de uma TxInf (lote), para uma lista de structs.

Monta o XML (envelope completo, AppHdr + Document) para a versão dada. Aceita 1 mensagem ou uma lista (lote: vira várias TxInf na mesma Document, com NbOfTxs ajustado à quantidade).

Types

t()

@type t() :: %Isox.Pacs004{
  cdtr_agt_ispb: String.t(),
  created_at: DateTime.t(),
  dbtr_agt_ispb: String.t(),
  msg_id: String.t(),
  orgnl_end_to_end_id: String.t(),
  rmt_inf_ustrd: String.t() | nil,
  rtr_id: String.t(),
  rtr_rsn_addtl_inf: String.t() | nil,
  rtr_rsn_cd: String.t(),
  sttlm_prty: String.t(),
  value: String.t() | number()
}

version()

@type version() :: :v1_5

Functions

decode(xml)

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

Decodifica um XML de pacs.004 de volta para a struct, ou para uma lista de structs quando a mensagem traz mais de uma TxInf (lote), para uma lista de structs.

encode(message, header, version)

@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 (lote: vira várias TxInf na mesma Document, com NbOfTxs ajustado à quantidade).

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.