Bacen.CCS.Serializer.SchemaConverter (Bacen CCS v0.1.1)

The Bacen's CCS schema converter.

It reads all Ecto.Schema defined on Message schema and generates a tuple-formatted XML, allowing the application to serialize it properly and convert to String.

Link to this section Summary

Functions

Convert an t:Ecto.Schema into a tuple-formatted XML.

Link to this section Functions

Link to this function

to_xml(message, xmlns)

Specs

to_xml(Bacen.CCS.Message.t(), charlist()) :: {:ok, xml()} | {:error, any()}

Convert an t:Ecto.Schema into a tuple-formatted XML.

Examples

iex> message = %Bacen.CCS.Message{
iex>   message: %Bacen.CCS.Message.BaseMessage{
iex>     body: %Bacen.CCS.ACCS002{
iex>       response: %Bacen.CCS.ACCS002.Response{
iex>         error: nil,
iex>         last_file_id: "000000000000",
iex>         movement_date: ~D[2021-05-07],
iex>         reference_date: ~U[2021-05-07 05:04:00Z],
iex>         status: "A"
iex>       }
iex>     },
iex>     header: %Bacen.CCS.Message.BaseMessage.Header{
iex>       file_id: "000000000000",
iex>       file_name: "ACCS001",
iex>       issuer_id: "69930846",
iex>       recipient_id: "25992990"
iex>     }
iex>   }
iex> }
iex> Bacen.CCS.Serializer.SchemaConverter.to_xml(message, 'foo')
{:ok, {:CCSDOC, [xmlns: 'foo'],
  [
    BCARQ: [
      {:IdentdEmissor, ['69930846']},
      {:IdentdDestinatario, ['25992990']},
      {:NomArq, ['ACCS001']},
      {:NumRemessaArq, ['000000000000']}
    ],
    SISARQ: [
      CCSArqAtlzDiariaRespArq: [
        {:SitArq, ['A']},
        {:UltNumRemessaArq, ['000000000000']},
        {:DtHrBC, ['2021-05-07T05:04:00']},
        {:DtMovto, ['2021-05-07']}
      ]
    ]
  ]
}}