En B2C un descuento es un "cupón de 10% OFF". En B2B, un descuento es un "Si el cliente es categoría Platino, compra más de 50 unidades del SKU-X de la marca Y, y paga al contado, entonces 15% off y envío gratis". Bienvenidos al infierno de la lógica de negocios.

Anatomía de una Regla B2B

Un motor robusto evalúa dos cosas: Condiciones (cuándo aplica) y Acciones (qué hace).

Condiciones B2B comunes:

El problema de la Colisión

¿Qué pasa si un cliente cumple la condición de la "Promo Stanley" (10% OFF) y también es "Cliente Platino" (15% OFF en todo el sitio)? ¿Se suma un 25%? ¿Se aplica el mayor? ¿Se aplica en cascada?

Acá es donde las plataformas mal diseñadas destruyen la rentabilidad. Un motor serio tiene un sistema de Prioridades y Exclusividad.

  1. Cada regla tiene un peso (Prioridad 1, 2, 3).
  2. Las reglas se evalúan de mayor a menor prioridad.
  3. Un flag de "Detener evaluación": Si la regla exclusiva A se aplica, el motor deja de buscar otros descuentos, previniendo el temido descuento sobre descuento involuntario.

Performance: Evaluación perezosa (Lazy Evaluation)

Evaluar 1.000 reglas en cada adición al carrito colapsa el servidor. La clave técnica es pre-filtrar las reglas aplicables al inicio de la sesión del usuario (basado en su ID de cliente) y cachear en Redis ese subconjunto activo.

Preguntas frecuentes

¿Qué es un motor de reglas de precios?
Es un subsistema que evalúa el carrito de compras contra una serie de condiciones (ej: \"es cliente mayorista\", \"compra más de $100k\", \"es martes\") para aplicar descuentos automáticos.
¿Por qué los motores de reglas fallan?
Suelen fallar por falta de jerarquía (reglas que colisionan entre sí) o por problemas de performance cuando deben evaluar 500 reglas activas en cada click del carrito.