1
Pricing Engine
dmolinari edited this page 2026-02-25 20:56:14 -03:00

🧠 Motor de Cotización y Tarifas (PricingService)

Arquitectura Venta


El cálculo del precio de un aviso clasificado no es lineal. El sistema utiliza un algoritmo progresivo que evalúa el texto y aplica reglas jerárquicas configuradas en el Admin Panel.

🧮 Fórmula Base

El costo total de un aviso se calcula en el siguiente orden:

  1. Precio Base del Producto: Define el valor mínimo (Ej: $5,000). Si el producto incluye duración (Ej: cubre 30 días), se calcula el Costo Diario (BasePrice / DurationDays).
  2. Costo por Palabras Extra: Se cuentan las palabras y se restan las "Palabras Base" gratuitas. Las palabras excedentes se tasan según escalones (WordPricingRanges) o un precio fallback.
  3. Costo por Caracteres Especiales: Símbolos como !, $, % se cobran por unidad.
  4. Recargos de Estilo (Surcharges): Negrita, Recuadro o Posición Destacada.
  5. Descuentos y Promociones: Cupones promocionales (Monto fijo o Porcentaje).

🔍 Reglas Ocultas de Normalización de Texto

Para evitar que los clientes "engañen" al sistema uniendo palabras con símbolos (ej: VENDO!AUTO!BARATO), el motor realiza los siguientes pasos antes de cotizar:

  1. Extracción de Símbolos: Primero cuenta cuántos caracteres especiales hay según la configuración del rubro.
  2. Limpieza: Reemplaza los caracteres especiales por espacios en blanco (VENDO AUTO BARATO).
  3. Conteo Real: Separa el texto limpio por espacios y saltos de línea para obtener la cantidad real y honesta de palabras.

🎫 Lógica de Cupones y Promociones

  • Promociones Automáticas: Se aplican solas si cumplen la condición (MinDays o DaysOfWeek).
  • Cupones Manuales: El cajero o el usuario web ingresa el código. El sistema verifica:
    • Que no esté vencido (ExpiryDate).
    • Que el cupón global no haya superado su límite (MaxUsages).
    • Que el usuario específico no haya superado su límite personal de usos (MaxUsagesPerUser).

⚠️ Atención: Los descuentos se aplican sobre el subtotal de Días contratados, pero después de sumar los recargos visuales.