Preços Agendados
Visão Geral
Permite agendar mudanças de preço para itens do cardápio em uma data e hora específicas. O sistema aplica o novo preço automaticamente quando o horário programado chega.
Localização
frontend-react/src/views/admin/PriceSchedulesView.tsx
Casos de Uso
- Happy hour (reduções de preço por horário)
- Promoções sazonais em datas específicas
- Ajustes de preço programados para o futuro
Schema
| Campo | Tipo | Descrição |
|---|---|---|
menuItem | ObjectId (ref MenuItem) | Item do cardápio que terá o preço alterado |
newPrice | number | Novo preço a ser aplicado |
scheduledAt | Date | Data e hora de aplicação |
appliedAt | Date? | Data em que foi de fato aplicado |
status | pending | applied | cancelled | Estado atual do agendamento |
createdBy | ObjectId (ref User)? | Usuário que criou o agendamento |
tenant | ObjectId | Tenant |
Índice: { tenant, status, scheduledAt } — otimiza a query de agendamentos pendentes.
API
POST /t/:slug/menu/price-schedules
Cria um novo agendamento de preço.
Auth: Admin
Body:
json
{
"menuItem": "6791abc123...",
"newPrice": 1290,
"scheduledAt": "2026-03-15T17:00:00.000Z"
}Response: O documento criado com status: "pending".
GET /t/:slug/menu/price-schedules
Lista todos os agendamentos do tenant.
Auth: Admin
Query params:
status— Filtrar por status (pending,applied,cancelled)
PUT /t/:slug/menu/price-schedules/:id/cancel
Cancela um agendamento pendente.
Auth: Admin
Regra: Só é possível cancelar agendamentos com status: "pending".
Fluxo de Status
pending → applied (automático, quando scheduledAt é atingido)
pending → cancelled (manual, via PUT /cancel)