Delivery Schedules & Zones
| Campo | Valor |
|---|---|
| Handlers | admin/handlers/delivery_schedules.go, admin/handlers/delivery_zones.go |
| Rutas base | /admin/settings/delivery-schedules, /admin/settings/delivery-zones |
| Modelos | delivery_schedules, delivery_schedule_slots, delivery_schedule_exceptions, delivery_cutoff_rules, delivery_zones, delivery_districts |
| Estado | Implementado |
Descripción
Dos módulos complementarios para gestión de entregas:
- Delivery Schedules: Configuración de horarios y slots de entrega (ej: "Mañana 9-12", "Tarde 2-6"), excepciones por fecha, y reglas de corte.
- Delivery Zones: Zonas geográficas con precios base y distritos asociados para cobertura de reparto.
Delivery Schedules
Endpoints
| Método | Ruta | Acción |
|---|---|---|
| GET | /admin/settings/delivery-schedules | Ver configuración |
| POST | /admin/settings/delivery-schedules/toggle | Activar/desactivar feature |
| POST | /admin/settings/delivery-schedules/slots | Crear slot |
| PUT | /admin/settings/delivery-schedules/slots/:id | Actualizar slot |
| DELETE | /admin/settings/delivery-schedules/slots/:id | Eliminar slot |
| POST | /admin/settings/delivery-schedules/exceptions | Crear excepción |
| DELETE | /admin/settings/delivery-schedules/exceptions/:id | Eliminar excepción |
| POST | /admin/settings/delivery-schedules/cutoffs | Crear regla de corte |
| DELETE | /admin/settings/delivery-schedules/cutoffs/:id | Eliminar regla de corte |
Campos - Slot
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
name | string | Nombre del slot (ej: "Mañana") |
start_time | time | Hora de inicio (HH:MM) |
end_time | time | Hora de fin (HH:MM) |
position | int | Orden de visualización |
is_active | bool | Slot activo |
Campos - Exception
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
slot_id | UUID | Slot afectado |
exception_date | date | Fecha de la excepción |
reason | string | Motivo (ej: "Feriado") |
is_active | bool | Excepción activa |
Campos - Cutoff Rule
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
slot_id | UUID | Slot al que aplica |
cutoff_hours | int | Horas antes del corte |
description | string | Descripción de la regla |
Delivery Zones
Endpoints
| Método | Ruta | Acción |
|---|---|---|
| GET | /admin/settings/delivery-zones | Ver zonas y distritos |
| POST | /admin/settings/delivery-zones | Crear zona |
| PUT | /admin/settings/delivery-zones/:id | Actualizar zona |
| DELETE | /admin/settings/delivery-zones/:id | Eliminar zona |
| POST | /admin/settings/delivery-zones/districts | Crear distrito |
| PUT | /admin/settings/delivery-zones/districts/:id | Actualizar distrito |
| DELETE | /admin/settings/delivery-zones/districts/:id | Eliminar distrito |
Campos - Zone
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
name | string | Nombre de la zona |
description | string | Descripción |
base_price | int64 | Precio base en céntimos |
is_active | bool | Zona activa |
Campos - District
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único |
zone_id | UUID | Zona padre |
name | string | Nombre del distrito |
coverage_notes | string | Notas de cobertura |
is_active | bool | Distrito activo |
Notas
- Los precios se almacenan en céntimos (int64) y se formatean como "S/ 15.00"
- Las excepciones se muestran con el nombre del slot asociado
- El feature de schedules se puede activar/desactivar globalmente
- Los distritos heredan el precio base de su zona