Saltar al contenido principal

Discount Rules

CampoValor
Handleradmin/handlers/discount_rules.go
Ruta base/admin/discounts/rules
Modelodiscount_rules, discount_conditions, discount_actions
EstadoImplementado

Descripción

El módulo de reglas de descuento permite crear reglas condicionales complejas con múltiples condiciones y acciones. Soporta combinación de reglas, priorización, y un simulador para probar el efecto antes de activar.


Endpoints

MétodoRutaAcción
GET/admin/discounts/rulesListar reglas
POST/admin/discounts/rulesCrear regla
GET/admin/discounts/rules/:idEditar regla
PUT/admin/discounts/rules/:idActualizar regla
DELETE/admin/discounts/rules/:idEliminar regla
POST/admin/discounts/rules/:id/toggleActivar/desactivar
POST/admin/discounts/rules/simulateSimular regla

Campos

DiscountRule

CampoTipoDescripción
idUUIDIdentificador único
tenant_idUUIDTenant propietario
namestringNombre de la regla
priorityintPrioridad (menor = mayor prioridad)
combinableboolSe puede combinar con otras reglas
activeboolRegla activa
created_attimestampFecha de creación
updated_attimestampÚltima actualización

Condition

CampoTipoDescripción
idUUIDIdentificador único
rule_idUUIDRegla padre
typeenumTipo de condición
operatorenumOperador de comparación
valuestringValor a comparar

Tipos de condición:

  • cart_total - Total del carrito
  • cart_quantity - Cantidad de items
  • product_in_collection - Producto en colección específica
  • customer_tag - Tag del cliente
  • first_order - Primera orden del cliente
  • day_of_week - Día de la semana

Action

CampoTipoDescripción
idUUIDIdentificador único
rule_idUUIDRegla padre
typeenumTipo de acción
valuestringValor del descuento

Tipos de acción:

  • percentage_off - Porcentaje de descuento
  • fixed_amount_off - Monto fijo de descuento
  • free_shipping - Envío gratis
  • buy_x_get_y - Lleva X paga Y

Ejemplo de Regla

{
"name": "Descuento Black Friday",
"priority": 1,
"combinable": false,
"conditions": [
{"type": "day_of_week", "operator": "eq", "value": "friday"},
{"type": "cart_total", "operator": "gte", "value": "10000"}
],
"actions": [
{"type": "percentage_off", "value": "15"}
]
}

Simulador

El simulador permite probar reglas sin afectar datos reales:

  1. Seleccionar reglas a simular
  2. Ingresar datos de prueba (carrito, cliente, etc.)
  3. Ver el resultado: descuento aplicado, total final
  4. Validar combinación de reglas

Notas

  • Las reglas se evalúan en orden de prioridad (menor número primero)
  • Si combinable es false, detiene la evaluación al aplicar
  • El simulador usa las colecciones del tenant para el selector "producto en colección"
  • Los mensajes de error se muestran en español