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

Tipo `TCTribMunicipal` do leiaute 1.01, em `tiposComplexos_v1.01.xsd`.

| Campo | XML | Tipo | Ocorrência | Descrição |
|---|---|---|---|---|
| `trib_issqn` | `tribISSQN` | `TSTribISSQN` | 1 | Tributação do ISSQN sobre o serviço prestado: 1 - Operação tributável; 2 - Imunidade; 3 - Exportação de serviço; 4 - Não Incidência; |
| `c_pais_result` | `cPaisResult` | `TSCodPaisISO` | 0..1 | Código do país onde se verficou o resultado da prestação do serviço para o caso de Exportação de Serviço.(Tabela de Países ISO) |
| `tp_imunidade` | `tpImunidade` | `TSTipoImunidadeISSQN` | 0..1 | Identificação da Imunidade do ISSQN – somente para o caso de Imunidade. Tipos de Imunidades: 0 - Imunidade (tipo não informado na nota de origem); 1 - Patrimônio, renda ou serviços, uns dos outros (CF88, Art 150, VI, a); 2 - Templos de qualquer culto (CF88, Art 150, VI, b); 3 - Patrimônio, renda ou serviços dos partidos políticos, inclusive suas fundações, das entidades sindicais dos trabalhadores, das instituições de educação e de assistência social, sem fins lucrativos, atendidos os requisitos da lei (CF88, Art 150, VI, c); 4 - Livros, jornais, periódicos e o papel destinado a sua impressão (CF88, Art 150, VI, d); 5 - Fonogramas e videofonogramas musicais produzidos no Brasil contendo obras musicais ou literomusicais de autores brasileiros e/ou obras em geral interpretadas por artistas brasileiros bem como os suportes materiais ou arquivos digitais que os contenham, salvo na etapa de replicação industrial de mídias ópticas de leitura a laser. (CF88, Art 150, VI, e); |
| `exig_susp` | `exigSusp` | `Nfse.Schema.V1_01.TCExigSuspensa` | 0..1 | Informações para a suspensão da Exigibilidade do ISSQN |
| `bm` | `BM` | `Nfse.Schema.V1_01.TCBeneficioMunicipal` | 0..1 | Tributação do ISSQN sobre o serviço prestado: 1 - Operação tributável; 2 - Exportação de serviço; 3 - Não Incidência; 4 - Imunidade; |
| `tp_ret_issqn` | `tpRetISSQN` | `TSTipoRetISSQN` | 1 | Tipo de retencao do ISSQN: 1 - Não Retido; 2 - Retido pelo Tomador; 3 - Retido pelo Intermediario; |
| `p_aliq` | `pAliq` | `TSDec1V2` | 0..1 | Valor da alíquota (%) do serviço prestado relativo ao município sujeito ativo (município de incidência) do ISSQN. Se o município de incidência pertence ao Sistema Nacional NFS-e a alíquota estará parametrizada e, portanto, será fornecida pelo sistema. Se o município de incidência não pertence ao Sistema Nacional NFS-e a alíquota não estará parametrizada e, por isso, deverá ser fornecida pelo emitente. |

# `t`

```elixir
@type t() :: %Nfse.Schema.V1_01.TCTribMunicipal{
  bm: Nfse.Schema.V1_01.TCBeneficioMunicipal.t() | nil,
  c_pais_result: String.t() | nil,
  exig_susp: Nfse.Schema.V1_01.TCExigSuspensa.t() | nil,
  p_aliq: Decimal.t() | nil,
  tp_imunidade: String.t() | nil,
  tp_ret_issqn: String.t() | nil,
  trib_issqn: 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*
