> ## 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.

# TransportOperatorSubsidyRule

> Regra de subsídio por quilômetro para permissionário

`TransportOperatorSubsidyRule` define quanto um permissionário recebe por quilômetro executado e auditado.

## Campos

| Campo                            | Tipo                                 | Descrição                                              |
| -------------------------------- | ------------------------------------ | ------------------------------------------------------ |
| `transportOperatorSubsidyRuleId` | `UUID`                               | Identificador único                                    |
| `cooperativeId`                  | `UUID`                               | Cooperativa da regra                                   |
| `transportOperatorId`            | `UUID`                               | Permissionário contemplado                             |
| `routeId`                        | `UUID?`                              | Rota específica, quando a regra for por rota           |
| `amountPerKm`                    | `Int`                                | Valor por quilômetro em centavos                       |
| `distanceSource`                 | `SubsidyDistanceSource`              | Fonte usada para calcular a distância subsidiada       |
| `startsAt`                       | `DateTime`                           | Início da vigência                                     |
| `endsAt`                         | `DateTime?`                          | Fim da vigência                                        |
| `status`                         | `TransportOperatorSubsidyRuleStatus` | Status da regra                                        |
| `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 [Cooperative](/data-modelling/tenant/cooperative) por `cooperativeId`.
* Relaciona-se com [TransportOperator](/data-modelling/tenant/transport-operator) por `transportOperatorId`.
* Relaciona-se com [Route](/data-modelling/operations/route) por `routeId`, quando a regra for específica.
* Origina [TransportOperatorSubsidySettlement](/data-modelling/billing/transport-operator-subsidy-settlement).

## Regras de Negócio

* A regra pode ser geral para o permissionário ou específica para uma rota.
* Quando existir regra específica para a rota, ela tem prioridade sobre a regra geral do permissionário.
* O subsídio só é calculado para Trip concluída e auditada.
* A distância subsidiada deve vir da fonte definida em `distanceSource`.
* O valor é armazenado em centavos por quilômetro.
* Exemplo: `amountPerKm = 200` representa R\$ 2,00 por km.

## Enums

### SubsidyDistanceSource

| Valor              | Descrição                                       |
| ------------------ | ----------------------------------------------- |
| `PLANNED_ROUTE`    | Usa `Route.distanceKm` aprovado                 |
| `GPS_AUDITED`      | Usa distância auditada por GPS                  |
| `ODOMETER_AUDITED` | Usa distância auditada por hodômetro            |
| `COMBINED_AUDIT`   | Usa regra combinada entre rota, GPS e hodômetro |

### TransportOperatorSubsidyRuleStatus

| Valor      | Descrição     |
| ---------- | ------------- |
| `ACTIVE`   | Regra ativa   |
| `INACTIVE` | Regra inativa |
| `EXPIRED`  | Regra vencida |

## Example

```json theme={null}
{
  "transportOperatorSubsidyRuleId": "01980d36-4381-7c81-8786-230f12cb35c0",
  "cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
  "transportOperatorId": "01980d30-6a3c-7a42-9182-17ad6324d3aa",
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "amountPerKm": 200,
  "distanceSource": "COMBINED_AUDIT",
  "startsAt": "2026-07-01T00:00:00.000Z",
  "endsAt": null,
  "status": "ACTIVE",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-01T09:30:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-01T09:30:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
