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

# PromotionalMultiTicketRule

> Regra fixa de promoção por quantidade de passagens

O `PromotionalMultiTicketRule` representa a regra de validação para uma promoção do tipo `MULTI_TICKET`. Ela define a quantidade mínima de passagens e as restrições de agrupamento para aplicar o desconto.

## Campos

| Campo                          | Tipo                                | Descrição                                                  |
| ------------------------------ | ----------------------------------- | ---------------------------------------------------------- |
| `promotionalMultiTicketRuleId` | `UUID`                              | Identificador único                                        |
| `promotionalId`                | `UUID`                              | Promoção dona da regra                                     |
| `organizationId`               | `UUID`                              | Organização da Company responsável pela promoção           |
| `companyId`                    | `UUID`                              | Company dona da promoção                                   |
| `minTicketQuantity`            | `Int`                               | Quantidade mínima de passagens exigida                     |
| `maxTicketQuantity`            | `Int?`                              | Quantidade máxima de passagens elegíveis, quando aplicável |
| `sameOrder`                    | `Boolean`                           | Indica se as passagens devem estar no mesmo Order          |
| `sameTrip`                     | `Boolean`                           | Indica se as passagens devem pertencer à mesma Trip        |
| `samePassenger`                | `Boolean`                           | Indica se as passagens devem ser do mesmo passageiro       |
| `applyTo`                      | `PromotionalMultiTicketApplyTarget` | Onde o desconto é aplicado                                 |
| `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 lógica                                     |

## Relacionamentos

* Relaciona-se com [Promotional](/data-modelling/promotion/promotional) por `promotionalId`.
* Relaciona-se com [Company](/data-modelling/tenant/company) por `companyId`.

## Regras de Negócio

* Deve existir apenas para Promotional com `type = MULTI_TICKET`.
* Cada Promotional `MULTI_TICKET` deve ter exatamente uma PromotionalMultiTicketRule ativa.
* `minTicketQuantity` deve ser maior que zero.
* `maxTicketQuantity`, quando preenchido, deve ser maior ou igual a `minTicketQuantity`.
* Quando `sameOrder = true`, somente tickets do mesmo Order contam para a regra.
* Quando `sameTrip = true`, somente tickets da mesma Trip contam para a regra.
* Quando `samePassenger = true`, somente tickets do mesmo Passenger contam para a regra.
* `applyTo = ALL_TICKETS` aplica o desconto em todos os tickets elegíveis.
* `applyTo = EXTRA_TICKETS` aplica o desconto apenas nos tickets acima de `minTicketQuantity`.
* `applyTo = CHEAPEST_TICKET` aplica o desconto no ticket de menor valor.
* O front pode usar `minTicketQuantity` para exibir a promoção antes de o cliente concluir o carrinho.
* `createdBy`, `updatedBy` e `deletedBy` seguem o padrão de auditoria do DEVMOB e registram o usuário responsável pela mutação, quando aplicável.

## Enums

### PromotionalMultiTicketApplyTarget

| Valor             | Descrição                                                |
| ----------------- | -------------------------------------------------------- |
| `ALL_TICKETS`     | Aplica o desconto em todos os tickets elegíveis          |
| `EXTRA_TICKETS`   | Aplica o desconto nos tickets acima da quantidade mínima |
| `CHEAPEST_TICKET` | Aplica o desconto no ticket de menor valor               |

## Example

```json theme={null}
{
  "promotionalMultiTicketRuleId": "0197f7c4-7f61-7d70-813b-49aef69c1568",
  "promotionalId": "0197f7c0-55de-7b18-9073-c7d7c8c9a441",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "minTicketQuantity": 3,
  "maxTicketQuantity": null,
  "sameOrder": true,
  "sameTrip": false,
  "samePassenger": false,
  "applyTo": "CHEAPEST_TICKET",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T15:07:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T15:07:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
