Campos
| Campo | Tipo | Descrição |
|---|
companyId | UUID | Identificador único |
organizationId | UUID | Referência à organização |
cooperativeId | UUID | Referência obrigatória à cooperativa administradora |
anttCode | String? | Código regulatório da ANTT |
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
Regras de Negócio
- Estende a
Organization para empresas de transporte rodoviário.
- Toda empresa pertence obrigatoriamente a uma única cooperativa.
- A empresa é afiliada à cooperativa indicada por
cooperativeId.
- A cooperativa pode administrar múltiplas empresas, mas não assume o
companyId delas.
- É a proprietária da frota (veículos e motoristas).
- É dona dos vínculos de funcionários (
Employee) originados por Memberships na sua Organization.
- Responsável por criar viagens (
Trip) e vender passagens dos seus próprios itinerários.
- Responsável pelas promoções que exibe e pelos créditos que concede a Customers, inclusive quando a concessão usa regra de funcionário.
- É a unidade financeira do sistema: pagamentos, recebíveis, contas bancárias e transferências pertencem a uma empresa.
- A configuração externa de billing fica em CompanyPaymentSettings.
- O campo
anttCode armazena o código de registro na Agência Nacional de Transportes Terrestres.
Integridade do vínculo
| Regra | Detalhe |
|---|
| FK | cooperativeId deve apontar para uma Cooperative existente e ativa. |
| Tenant | organizationId da Company é diferente do organizationId da Cooperative. |
| Query por cooperativa | Telas da Cooperative devem listar empresas por Company.cooperativeId. |
| Query operacional | Telas da Company devem operar por Company.companyId. |
| Histórico | Trocar cooperativeId não altera registros históricos que apontam para companyId. |
O vínculo Cooperative -> Company define administração e agrupamento. Ele não muda a regra de ownership operacional: frota, rotas, viagens, vendas e financeiro continuam no escopo da Company.
Example
{
"companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
"organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
"cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
"anttCode": "ANTT-445566",
"createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
"createdAt": "2026-07-03T13:20:00.000Z",
"updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
"updatedAt": "2026-07-03T13:20:00.000Z",
"deletedBy": null,
"deletedAt": null
}