Modelo ISO 20022 do pain.009 (solicitação de autorização de
recorrência / mandato), versão 1.1 — cria o estado de mandato pendente:
MndtId, frequência, datas de vigência, valor.
Mndt é max: ilimitado no schema — encode/3 aceita 1 mensagem ou
uma lista (lote: vários Mndt na mesma Document) e decode/1
devolve 1 struct ou uma lista de volta, mesmo padrão do Pacs002/
Pacs004/Pacs008. MndtPrcgDtls é max: ilimitado de verdade
(histórico de processamento), modelado como lista — schema exige ao
menos 1. Ocrncs.SeqTp (enum de valor único "RCUR") fica fixo.
Summary
Functions
Decodifica um XML de pain.009 de volta para a struct — ou, quando a
mensagem traz mais de um Mndt (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
Mndt na mesma Document).
Types
@type prcg_dtls() :: %{tp: String.t(), dt_tm: DateTime.t()}
@type t() :: %Isox.Pain009{ adjstmnt_amt: term(), adjstmnt_dt_ind: term(), cdtr_agt_ispb: term(), cdtr_cpf_cnpj: term(), cdtr_name: term(), colltn_amt: term(), created_at: term(), dbtr_acct_id: term(), dbtr_acct_issr: term(), dbtr_agt_ispb: term(), dbtr_cpf_cnpj: term(), fnl_colltn_dt: term(), frqcy_tp: term(), frst_colltn_dt: term(), mndt_id: term(), mndt_prcg_dtls: term(), mndt_req_id: term(), msg_id: term(), rfrd_doc_cdtr_ref: term(), rfrd_doc_nb: term(), trckg_ind: term(), ultmt_dbtr_cpf_cnpj: term(), ultmt_dbtr_name: term() }
@type version() :: :v1_1
Functions
Decodifica um XML de pain.009 de volta para a struct — ou, quando a
mensagem traz mais de um Mndt (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
Mndt 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.