# Compras

### Relacionamentos

Toda compra é relacionada a empresa responsável, que é definida como o `tenant` da mesma. Essa relação é estabelecida com base no CNPJ presente na compra.

O gestor responsável pela ação também é relacionado à compra, com base no email presente na compra.

```json
{"id": "10", "sk": "0", "metadata__tenant_id": "100", "metadata__related_ids": ["100", "123"]}
{"id": "10", "sk": "metadata#tenant", "tenant_id": "100"}
{"id": "10", "sk": "related_ids#org", "org_id": "100"}
{"id": "10", "sk": "related_ids#user", "user_id": "123"}
```

# Usuários

# Matrículas

### Emails/eventos agendados

Quando uma matrícula é criada, também é agendados emails/eventos.

-   `reminder_no_access_3_days` se o usuário não acessar o curso 3 dias após a criação.
-   `no_activity_7_days` 7 dias após a última atividade do usuário no curso.
-   `access_period_reminder_30_days` 30 dias antes do perído de acesso ao curso finalizar.
-   `cert_expiration_reminder_30_days` se houver certificado, avisa 30 dias antes do certificado expirar.
-   `course_archived` após o certificado expirar, a matrícula será marcada como **arquivada (ARCHIVED)**.
-   `course_expired` se não houver certificado e o período de acesso for atingido, a matrícula será marcada com **expirada (EXPIRED)**.

```json
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "schedules#reminder_no_access_3_days", "name": "Sérgio R Siqueira", "email": "osergiosiqueira@gmail.com", "ttl": 1874507093}
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "schedules#course_expired", "name": "Sérgio R Siqueira", "email": "osergiosiqueira@gmail.com", "ttl": 1874507093}
```

### Proteção contra duplicação

### Política de cancelamento

Apenas matrículas com `metadata#cancel_policy` podem ser canceladas.

```json
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "0"}
{"id": "9omWNKymwU5U4aeun6mWzZ", "sk": "metadata#cancel_policy"}
```

### Relacionamentos

# Cursos
