# `Nfse.Schema.V1_00.TCTribOutrosPisCofins`
[🔗](https://github.com/ideia4it/nfse/blob/v0.1.0/lib/nfse/schema/v1_00/tc_trib_outros_pis_cofins.ex#L2)

Tipo `TCTribOutrosPisCofins` do leiaute 1.00, em `tiposComplexos_v1.00.xsd`.

| Campo | XML | Tipo | Ocorrência | Descrição |
|---|---|---|---|---|
| `cst` | `CST` | `TSTipoCST` | 1 | Código de Situação Tributária do PIS/COFINS (CST): 00 - Nenhum; 01 - Operação Tributável com Alíquota Básica; 02 - Operação Tributável com Alíquota Diferenciada; 03 - Operação Tributável com Alíquota por Unidade de Medida de Produto; 04 - Operação Tributável monofásica - Revenda a Alíquota Zero; 05 - Operação Tributável por Substituição Tributária; 06 - Operação Tributável a Alíquota Zero; 07 - Operação Tributável da Contribuição; 08 - Operação sem Incidência da Contribuição; 09 - Operação com Suspensão da Contribuição; 49 - Outras Operações de Saída; 50 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita Tributada no Mercado Interno; 51 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita Não-Tributada no Mercado Interno; 52 - Operação com Direito a Crédito – Vinculada Exclusivamente a Receita de Exportação; 53 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno; 54 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas no Mercado Interno e de Exportação; 55 - Operação com Direito a Crédito – Vinculada a Receitas Não Tributadas no Mercado Interno e de Exportação; 56 - Operação com Direito a Crédito – Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno e de Exportação; 60 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita Tributada no Mercado Interno; 61 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita Não-Tributada no Mercado Interno; 62 - Crédito Presumido – Operação de Aquisição Vinculada Exclusivamente a Receita de Exportação; 63 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno; 64 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas no Mercado Interno e de Exportação; 65 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Não-Tributadas no Mercado Interno e de Exportação; 66 - Crédito Presumido – Operação de Aquisição Vinculada a Receitas Tributadas e Não-Tributadas no Mercado Interno e de Exportação; 67 - Crédito Presumido – Outras Operações; 70 - Operação de Aquisição sem Direito a Crédito; 71 - Operação de Aquisição com Isenção; 72 - Operação de Aquisição com Suspensão; 73 - Operação de Aquisição a Alíquota Zero; 74 - Operação de Aquisição sem Incidência da Contribuição; 75 - Operação de Aquisição por Substituição Tributária; 98 - Outras Operações de Entrada; 99 - Outras Operações; |
| `v_bc_pis_cofins` | `vBCPisCofins` | `TSDec15V2` | 0..1 | Valor da Base de Cálculo do PIS/COFINS, relativo à apuração própria (R$). |
| `p_aliq_pis` | `pAliqPis` | `TSDec2V2` | 0..1 | Alíquota do PIS, relativa à apuração própria (%). |
| `p_aliq_cofins` | `pAliqCofins` | `TSDec2V2` | 0..1 | Alíquota da COFINS, relativa à apuração própria (%). |
| `v_pis` | `vPis` | `TSDec15V2` | 0..1 | Valor do débito de PIS apuração própria (R$). |
| `v_cofins` | `vCofins` | `TSDec15V2` | 0..1 | Valor do débito de COFINS apuração própria (R$). |
| `tp_ret_pis_cofins` | `tpRetPisCofins` | `TSTipoRetPISCofins` | 0..1 | Tipo de retenção do PIS/COFINS: 0 - PIS/COFINS/CSLL Não Retidos; 1 - PIS/COFINS Retidos; 2 - PIS/COFINS Não Retidos; 3 - PIS/COFINS/CSLL Retidos; 4 - PIS/COFINS Retidos, CSLL Não Retido; 5 - PIS Retido, COFINS/CSLL Não Retido; 6 - COFINS Retido, PIS/CSLL Não Retido; 7 - PIS Não Retido, COFINS/CSLL Retidos; 8 - PIS/COFINS Não Retidos, CSLL Retido; 9 - COFINS Não Retido, PIS/CSLL Retidos; |

# `t`

```elixir
@type t() :: %Nfse.Schema.V1_00.TCTribOutrosPisCofins{
  cst: String.t() | nil,
  p_aliq_cofins: Decimal.t() | nil,
  p_aliq_pis: Decimal.t() | nil,
  tp_ret_pis_cofins: String.t() | nil,
  v_bc_pis_cofins: Decimal.t() | nil,
  v_cofins: Decimal.t() | nil,
  v_pis: Decimal.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*
