Saldo da Conta PI: a resposta a uma Isox.Camt060 que pediu CSA ou
CRE.
Versão 1.4. Um extrato reporta vários tipos de saldo ao mesmo tempo,
então balances é lista de verdade. Vale notar a relação entre dois
deles: SADP, o disponível, já vem descontado do SABK, o bloqueado.
Bloquear não muda o total, muda onde ele está.
CdtDbtInd é fixo em "CRDT" e não vira campo.
Lote
Stmt é ilimitado no schema. Como a camt.060 pede uma conta por vez, o
caminho comum é 1, mas 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 camt.053 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Stmt (lote), para uma lista de structs.
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote: vira vários
Stmt na mesma Document).
Types
@type saldo() :: %{ tp_prtry: String.t(), value: String.t() | number(), dt_tm: DateTime.t() }
@type t() :: %Isox.Camt053{ acct_ispb: String.t(), balances: [saldo()], created_at: DateTime.t(), msg_id: String.t(), stmt_id: String.t() }
@type version() :: :v1_4
Functions
Decodifica um XML de camt.053 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Stmt (lote), para uma lista de structs.
@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 de mensagens (lote: vira vários
Stmt na mesma Document).
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.