# `Nfse.Identifiers`
[🔗](https://github.com/ideia4it/nfse/blob/v0.1.0/lib/nfse/identifiers.ex#L1)

Uso interno da biblioteca: não faz parte da API pública.

Identificadores que a biblioteca calcula a partir dos campos do documento, como o `Id` da DPS e
a chave de acesso da NFS-e.
As funções esperam campos já validados pelo schema.

# `inscription`

```elixir
@type inscription() :: {:cnpj | :cpf, String.t()}
```

# `access_key`

```elixir
@spec access_key(
  String.t(),
  String.t(),
  inscription(),
  String.t(),
  String.t(),
  String.t()
) ::
  String.t()
```

A chave de acesso de 50 dígitos da NFS-e, que precedida de `"NFS"` é o `Id` do `infNFSe`: o
código IBGE do município emissor (7), o ambiente gerador (1), o tipo da inscrição federal (1), a
inscrição (14), o número da NFS-e (13), o ano e o mês da emissão como `YYMM` (4), o código
numérico (9) e o dígito verificador (1), calculado por `check_digit/1` sobre os 49 anteriores.

# `check_digit`

```elixir
@spec check_digit(String.t()) :: String.t()
```

O dígito verificador em módulo 11, como o da NF-e: pesos de 2 a 9 a partir do último dígito, da
direita para a esquerda, recomeçando em 2 depois do 9. Resto 0 ou 1 dá `"0"`; outro resto `r`
dá `11 - r`.

# `dps_id`

```elixir
@spec dps_id(String.t(), inscription(), String.t(), String.t()) :: String.t()
```

O `Id` de 45 caracteres da DPS: `"DPS"`, o código IBGE do município emissor (7 dígitos), o tipo
da inscrição federal (`"1"` para CPF, `"2"` para CNPJ), a inscrição (14), a série (5) e o número
(15), cada parte completada com zeros à esquerda só dentro do `Id`.

# `event_request_access_key`

```elixir
@spec event_request_access_key(String.t()) :: String.t()
```

A chave de acesso da NFS-e dentro do `Id` de um pedido de registro de evento.

# `event_request_id`

```elixir
@spec event_request_id(String.t(), String.t()) :: String.t()
```

O `Id` de 59 caracteres do pedido de registro de evento: `"PRE"`, a chave de acesso da NFS-e (50
dígitos) e o tipo do evento (6). O texto do XSD cita o número do pedido (`nPedRegEvento`), mas o
padrão `PRE[0-9]{56}` não tem lugar para ele.

---

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