Instrução de pagamento agendada, vinculada a uma recorrência ativa do Pix Automático.
Versão 2.2. Na data marcada, esta instrução vira uma Isox.Pacs008
real, que repete o end_to_end_id gerado aqui. A resposta imediata é
uma Isox.Pain014, dizendo se o participante do pagador aceitou.
O valor vai em Amt/InstdAmt, não em IntrBkSttlmAmt, porque ainda não
houve liquidação. Purp aqui é Prtry, com enum próprio, não Cd como
na pacs.008.
Campos fixos que não viram campo
InitgPty é [0]{14} no schema real, quatorze zeros literais, então
não é variável. O mesmo vale para PmtMtd ("TRF"), InstrPrty
("NORM"), SvcLvl.Prtry ("PAGAGD"), LclInstrm.Prtry ("AUTO") e
ChrgBr ("SLEV").
Regras que o XSD não expressa
reqd_exctn_dt é opcional no schema, mas na prática é obrigatório
quando purp_prtry é "AGND" e proibido nos outros casos.
tax_records é o bloco de Split Payment, a divisão de IBS e CBS da
reforma tributária. Só é permitido quando dbtr_cpf_cnpj é CNPJ. Cada
tipo de tributo precisa de um registro com ctgy igual a "INF", o
valor informado, e pode ter outro com "COR", o valor corrigido pela
Plataforma Pública, que prevalece quando existe. A soma dos valores
efetivos não pode passar de value. encode/3 valida tudo isso.
Lote
PmtInf é ilimitado no schema. encode/3 aceita uma mensagem ou uma
lista, com NbOfTxs ajustado, e decode/1 devolve uma struct ou uma
lista.
Summary
Functions
Decodifica um XML de pain.013 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um PmtInf (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
PmtInf na mesma Document, com NbOfTxs ajustado à quantidade).
Types
@type t() :: %Isox.Pain013{ cdtr_acct_id: term(), cdtr_acct_issr: term(), cdtr_acct_type: term(), cdtr_agt_ispb: term(), cdtr_cpf_cnpj: term(), created_at: term(), dbtr_agt_ispb: term(), dbtr_cpf_cnpj: term(), end_to_end_id: term(), mndt_id: term(), msg_id: term(), pmt_inf_id: term(), purp_prtry: term(), reqd_exctn_dt: term(), rmt_inf: term(), tax_records: term(), tax_ref_nb: term(), ultmt_dbtr_cpf_cnpj: term(), ultmt_dbtr_name: term(), value: term(), xpry_dt: term() }
@type version() :: :v2_2
Functions
Decodifica um XML de pain.013 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um PmtInf (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
PmtInf 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.