# `Isox.Camt060`
[🔗](https://github.com/RicardoSantos-99/isox/blob/v0.2.0/lib/isox/camt060.ex#L1)

Consulta à Conta PI: saldo, extrato, relação de lançamentos ou detalhe
de um lançamento.

Versão 1.9. `reqd_msg_nm_id` é o campo que despacha: ele decide se a
resposta volta como `Isox.Camt052`, `Isox.Camt053` ou `Isox.Camt054`.
Junto com `reqd_bal_tp_prtry`, forma a pergunta completa.

## O período

`RptgPrd` é opcional inteiro, e `rptg_prd_fr_dt` funciona como sinal de
presença dele. `Tp` é fixo em `"ALLL"` e não vira campo.

O horário (`rptg_prd_fr_tm` e `rptg_prd_to_tm`) é opcional por conta
própria dentro do período, não exigido junto com as datas. A planilha é
explícita: horário só entra na relação de lançamentos. Consulta de saldo
de dia anterior, de remuneração da Conta PI e de arquivo `TRD` ou `TRT`
usam só data. Os exemplos oficiais confirmam
(`camt.060_SALDO_DATA_ANTERIOR`, `_SOLIC_REMUNERACAO_CONTA_PI`,
`_SOLIC_ARQUIVO_TRD`, todos com `RptgPrd` sem `FrToTm`).

# `t`

```elixir
@type t() :: %Isox.Camt060{
  acct_ownr_ispb: String.t(),
  created_at: DateTime.t(),
  id: String.t() | nil,
  msg_id: String.t(),
  reqd_bal_tp_prtry: String.t() | nil,
  reqd_msg_nm_id: String.t(),
  rptg_prd_fr_dt: Date.t() | nil,
  rptg_prd_fr_tm: Time.t() | nil,
  rptg_prd_to_dt: Date.t() | nil,
  rptg_prd_to_tm: Time.t() | nil
}
```

# `version`

```elixir
@type version() :: :v1_9
```

# `decode`

```elixir
@spec decode(binary()) :: {:ok, t(), version()} | {:error, term()}
```

Decodifica um XML de camt.060 de volta para a struct.

# `encode`

```elixir
@spec encode(t(), Isox.AppHdr.t(), version()) ::
  {:ok, binary()} | {:error, String.t()}
```

Monta o XML (envelope completo, `AppHdr` + `Document`) para a versão dada.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
