# `Nfse.Schema.V1_01.TCInfPedReg`
[🔗](https://github.com/ideia4it/nfse/blob/v0.1.0/lib/nfse/schema/v1_01/tc_inf_ped_reg.ex#L2)

Tipo `TCInfPedReg` do leiaute 1.01, em `tiposEventos_v1.01.xsd`.

| Campo | XML | Tipo | Ocorrência | Descrição |
|---|---|---|---|---|
| `tp_amb` | `tpAmb` | `TSTipoAmbiente` | 1 | Tipo de ambiente: 1 - Produção; 2 - Homologação; |
| `ver_aplic` | `verAplic` | `TSVerAplic` | 1 | Versão do aplicativo que gerou o pedido de registro de evento |
| `dh_evento` | `dhEvento` | `TSDateTimeUTC` | 1 | Data e hora do evento no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), -03:00 (Brasília) ou -04:00 (Manaus), no horário de verão serão -01:00, -02:00 e -03:00. Ex.: 2010-08-19T13:00:15-03:00. |
| `cnpj_autor` | `CNPJAutor` | `TSCNPJ` | 1, escolha 1 | Número de inscrição federal (CNPJ) do autor do evento. CNPJ do autor do evento (parte interessada ou pessoa que figure na NFS-e. O autor do evento não é o procurador) |
| `cpf_autor` | `CPFAutor` | `TSCPF` | 1, escolha 1 | Número de inscrição federal (CPF) do autor do evento. CPF do autor do evento (parte interessada ou pessoa que figure na NFS-e como prestador, tomador, intermediário. O autor do evento poderá ser o procurador) |
| `ch_nfse` | `chNFSe` | `TSChaveNFSe` | 1 | Identificador da NFS-e à qual o evento será vinculado |
| `e101101` | `e101101` | `Nfse.Schema.V1_01.TE101101` | 1, escolha 2 | Evento de cancelamento |
| `e105102` | `e105102` | `Nfse.Schema.V1_01.TE105102` | 1, escolha 2 | Evento de cancelamento por substituição |
| `e101103` | `e101103` | `Nfse.Schema.V1_01.TE101103` | 1, escolha 2 | Solicitação de Análise Fiscal para Cancelamento de NFS-e |
| `e105104` | `e105104` | `Nfse.Schema.V1_01.TE105104` | 1, escolha 2 | Cancelamento de NFS-e Deferido por Análise Fiscal |
| `e105105` | `e105105` | `Nfse.Schema.V1_01.TE105105` | 1, escolha 2 | Cancelamento de NFS-e Indeferido por Análise Fiscal |
| `e202201` | `e202201` | `Nfse.Schema.V1_01.TE202201` | 1, escolha 2 | Confirmação do Prestador |
| `e203202` | `e203202` | `Nfse.Schema.V1_01.TE203202` | 1, escolha 2 | Confirmação do Tomador |
| `e204203` | `e204203` | `Nfse.Schema.V1_01.TE204203` | 1, escolha 2 | Confirmação do Intermediário |
| `e205204` | `e205204` | `Nfse.Schema.V1_01.TE205204` | 1, escolha 2 | Confirmação Tácita |
| `e202205` | `e202205` | `Nfse.Schema.V1_01.TE202205` | 1, escolha 2 | Rejeição do Prestador |
| `e203206` | `e203206` | `Nfse.Schema.V1_01.TE203206` | 1, escolha 2 | Rejeição do Tomador |
| `e204207` | `e204207` | `Nfse.Schema.V1_01.TE204207` | 1, escolha 2 | Rejeição do Intermediário |
| `e205208` | `e205208` | `Nfse.Schema.V1_01.TE205208` | 1, escolha 2 | Anulação da Rejeição |
| `e305101` | `e305101` | `Nfse.Schema.V1_01.TE305101` | 1, escolha 2 | Cancelamento de NFS-e por Ofício |
| `e305102` | `e305102` | `Nfse.Schema.V1_01.TE305102` | 1, escolha 2 | Bloqueio de NFS-e por Ofício |
| `e305103` | `e305103` | `Nfse.Schema.V1_01.TE305103` | 1, escolha 2 | Desbloqueio de NFS-e por Ofício |
| `id` | `Id`, atributo | `TSIdPedRegEvt` | 1 |  |

Escolha 1: exatamente um entre `cnpj_autor` e `cpf_autor`.

Escolha 2: exatamente um entre `e101101`, `e105102`, `e101103`, `e105104`, `e105105`, `e202201`, `e203202`, `e204203`, `e205204`, `e202205`, `e203206`, `e204207`, `e205208`, `e305101`, `e305102` e `e305103`.

# `t`

```elixir
@type t() :: %Nfse.Schema.V1_01.TCInfPedReg{
  ch_nfse: String.t() | nil,
  cnpj_autor: String.t() | nil,
  cpf_autor: String.t() | nil,
  dh_evento: DateTime.t() | nil,
  e101101: Nfse.Schema.V1_01.TE101101.t() | nil,
  e101103: Nfse.Schema.V1_01.TE101103.t() | nil,
  e105102: Nfse.Schema.V1_01.TE105102.t() | nil,
  e105104: Nfse.Schema.V1_01.TE105104.t() | nil,
  e105105: Nfse.Schema.V1_01.TE105105.t() | nil,
  e202201: Nfse.Schema.V1_01.TE202201.t() | nil,
  e202205: Nfse.Schema.V1_01.TE202205.t() | nil,
  e203202: Nfse.Schema.V1_01.TE203202.t() | nil,
  e203206: Nfse.Schema.V1_01.TE203206.t() | nil,
  e204203: Nfse.Schema.V1_01.TE204203.t() | nil,
  e204207: Nfse.Schema.V1_01.TE204207.t() | nil,
  e205204: Nfse.Schema.V1_01.TE205204.t() | nil,
  e205208: Nfse.Schema.V1_01.TE205208.t() | nil,
  e305101: Nfse.Schema.V1_01.TE305101.t() | nil,
  e305102: Nfse.Schema.V1_01.TE305102.t() | nil,
  e305103: Nfse.Schema.V1_01.TE305103.t() | nil,
  id: String.t() | nil,
  tp_amb: String.t() | nil,
  ver_aplic: String.t() | nil
}
```

# `decode`

```elixir
@spec decode(Saxy.SimpleForm.t()) :: {:ok, t()} | {:error, Nfse.Error.t()}
```

Lê o elemento, na árvore do `Saxy.SimpleForm`, como este struct e valida o resultado.

# `encode`

```elixir
@spec encode(t(), String.t(), [Nfse.Schema.Runtime.attribute()]) :: iodata()
```

Escreve o struct já validado como o elemento `tag`, na forma canônica. Os `extra_attributes`,
como as declarações de namespace, saem antes dos atributos do struct.

# `new`

```elixir
@spec new(map() | keyword() | t()) :: {:ok, t()} | {:error, Nfse.Error.t()}
```

Converte `attrs` (mapa, lista de palavras-chave ou o próprio struct, também nos campos
aninhados) neste struct e valida o resultado. As regras estão em `Nfse.Schema.Runtime`.

# `validate`

```elixir
@spec validate(t()) :: :ok | {:error, Nfse.Error.t()}
```

Valida o struct contra o XSD e devolve cada erro com o caminho do campo.

---

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