Alteração do cadastro de um participante direto: contatos, diretor responsável, palavra-chave e CPF do diretor.
Versão 1.4. A resposta é uma Isox.Reda016. O ispb tem que ser o
próprio remetente: mexer no cadastro de outra instituição volta com
ATC7.
O pacote é sempre inteiro
Mod é [4..4] no schema real, exatamente quatro, não ilimitado.
Sempre as quatro modificações juntas, uma de cada tipo (:contact,
:director, :tech_adr, :mkt_spcfc_attr), nunca um subconjunto.
Aqui isso é lista de mapas com :type dizendo qual variante é.
ScpIndctn ("INSE") e MktSpcfcAttr.Nm ("CPFDIRETOR") têm valor
único e ficam fixos.
O schema que obrigou a corrigir o compilador
Esta foi a mensagem que expôs um furo no Compiler (issue #27).
ReqdMod é um xs:choice entre CtctDtls, que por sua vez é outra
escolha entre ReqdModContato e ReqdModDiretor, TechAdr e
MktSpcfcAttr. Os dois grupos de CtctDtls compartilham quase todas as
tags: só Nm distingue um do outro.
Rspnsblty também é fixo por variante ("CONTATOPSP" em :contact,
"DIRETORPSP" em :director). O schema só garante que é um dos dois
valores do enum, não que é o valor certo para o ramo, então quem valida
isso é o encode/3, junto com a composição exata de mod.
Summary
Functions
Decodifica um XML de reda.022 de volta para a struct.
Monta o XML (envelope completo, AppHdr + Document) para a versão dada.
Types
@type modification() :: %{ type: :contact, phne_nb: String.t(), mob_nb: String.t() | nil, fax_nb: String.t() | nil, email_adr: String.t(), rspnsblty: String.t() } | %{ type: :director, nm: String.t(), phne_nb: String.t(), mob_nb: String.t() | nil, email_adr: String.t(), rspnsblty: String.t() } | %{type: :tech_adr, tech_adr: String.t()} | %{type: :mkt_spcfc_attr, val: String.t()}
@type t() :: %Isox.Reda022{ created_at: DateTime.t(), ispb: String.t(), mod: [modification()], msg_id: String.t() }
@type version() :: :v1_4
Functions
Decodifica um XML de reda.022 de volta para a struct.
@spec encode(t(), Isox.AppHdr.t(), version()) :: {:ok, binary()} | {:error, String.t()}
Monta o XML (envelope completo, AppHdr + Document) para a versão dada.