> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Cooperative

> Cooperativa que administra zero ou mais empresas afiliadas

## Campos

| Campo            | Tipo        | Descrição                                              |
| ---------------- | ----------- | ------------------------------------------------------ |
| `cooperativeId`  | `UUID`      | Identificador único                                    |
| `organizationId` | `UUID`      | Referência à organização                               |
| `createdBy`      | `UUID?`     | Usuário que criou o registro, quando aplicável         |
| `createdAt`      | `DateTime`  | Data de criação                                        |
| `updatedBy`      | `UUID?`     | Usuário que fez a última atualização, quando aplicável |
| `updatedAt`      | `DateTime`  | Data da última atualização                             |
| `deletedBy`      | `UUID?`     | Usuário que removeu o registro, quando aplicável       |
| `deletedAt`      | `DateTime?` | Data de remoção                                        |

## Relacionamentos

* Relaciona-se com [Organization](/data-modelling/tenant/organization) (1:1)
* Relaciona-se com múltiplos [Company](/data-modelling/tenant/company) (1:N via `Company.cooperativeId`)

## Relacionamento com Company

| Aspecto            | Regra                                                                                                      |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| Cardinalidade      | Uma `Cooperative` pode ter zero ou mais `Company`.                                                         |
| Chave de vínculo   | `Company.cooperativeId` referencia `Cooperative.cooperativeId`.                                            |
| Obrigatoriedade    | A `Company` sempre precisa de uma cooperativa. A `Cooperative` pode existir antes de ter empresas.         |
| Consulta principal | Listagens de empresas afiliadas filtram `Company.cooperativeId = Cooperative.cooperativeId`.               |
| Remoção            | Uma cooperativa com empresas ativas não deve ser removida sem bloquear, migrar ou encerrar essas empresas. |

## Regras de Negócio

* Estende a `Organization` para cooperativas administradoras de empresas.
* Uma cooperativa agrupa empresas afiliadas que operam o transporte.
* Cooperativa não participa do fluxo de billing.
* Usuários podem ter Membership na organização da cooperativa para administrar o seu contexto operacional.
* Recursos operacionais e financeiros continuam pertencendo às empresas afiliadas, não à cooperativa.
* Administração cross-company deve sempre ser resolvida pelo vínculo `Company.cooperativeId`.

## Example

```json theme={null}
{
  "cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
  "organizationId": "0197a7f7-7291-7a43-96db-2c8580b80c5d",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T13:05:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T13:05:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
