Ir al contenido
Q
QuoteNode

Wiki

Motor de precios

Como el motor de precios determinista de QuoteNode calcula totales, aplica descuentos y maneja multimoneda e IVA.

Motor de precios

QuoteNode usa un motor de precios determinista que garantiza calculos reproducibles y auditables. Cada precio, descuento e importe de impuestos sigue un orden de evaluacion definido y queda almacenado para verificacion.

Orden de calculo

El motor procesa los precios exactamente en esta secuencia:

  1. Line unit price - precio base del catalogo o introducido manualmente para items custom
  2. Pricing rule evaluation - ajustes automaticos segun reglas de cliente o grupo de clientes
  3. Quantity multiplication - unit_price × quantity = line_subtotal
  4. Line-level discount - descuento porcentual o fijo sobre line_subtotal = line_net
  5. Line VAT - line_net × VAT_rate = line_vat
  6. Line gross - line_net + line_vat = line_gross
  7. Subtotal - suma de todos los line_net
  8. Offer-level discount - descuento porcentual o fijo sobre el subtotal
  9. Shipping - se anade al subtotal descontado en valor NET
  10. Total NET - subtotal descontado mas shipping
  11. Total VAT - suma de los VAT por linea, recalculados si aplica descuento global
  12. Total GROSS - total_net + total_vat

Reglas de precio

Las reglas de precio permiten ajustes automaticos basados en la relacion con el cliente.

Objetivos de regla

  • Per customer - aplica a un cliente especifico
  • Per customer group - aplica a todos los clientes de un grupo

Alcance de regla

  • All products - se aplica a cualquier producto del catalogo
  • Specific product group - solo se aplica a productos de un grupo concreto

Tipos de regla

  • Percentage discount - resta un porcentaje al precio base
  • Percentage markup - anade un porcentaje al precio base
  • Fixed amount discount - resta un importe fijo por unidad
  • Fixed amount markup - suma un importe fijo por unidad

Prioridad y conflictos

Cuando varias reglas coinciden para la misma combinacion producto-cliente:

  1. se ordenan por prioridad, donde gana el numero mas alto
  2. se aplica solo la regla coincidente con mayor prioridad
  3. las reglas no se acumulan

Vigencia

Cada regla tiene rango opcional de fechas y un flag de activacion. Solo se evalua una regla activa y vigente.

Multimoneda

QuoteNode soporta ofertas en cualquier moneda configurada:

  • Base currency - moneda por defecto del tenant, usada en reporting
  • Offer currency - moneda seleccionada para una oferta concreta
  • FX rate - tipo de cambio entre moneda de oferta y moneda base

Cuando una oferta se crea en una moneda distinta de la base:

  1. los precios del catalogo estan almacenados en la moneda base
  2. al crear la oferta, se aplica el tipo FX actual
  3. el tipo usado se guarda en el snapshot de la oferta
  4. los reportes convierten valores a la moneda base usando el tipo almacenado

Actualmente los tipos FX se gestionan manualmente por administradores. La integracion automatica con NBP o ECB esta planificada.

Gestion del IVA

Grupos de IVA

Los grupos de IVA definen los tipos impositivos disponibles:

  • tipos estandar como 23%, 8%, 5% y 0%
  • exento
  • tipos custom para jurisdicciones especificas

Cada producto se asigna a un grupo de IVA. Uno de ellos se marca como default para nuevos productos y lineas custom.

IVA por linea

El IVA se calcula por linea, no como porcentaje plano sobre el total. Esto es crucial en ofertas que combinan productos con distintos tipos impositivos.

Los totales incluyen una tabla de desglose por tipo:

VAT 23%:  1,230.00 PLN
VAT 8%:     160.00 PLN
VAT 0%:       0.00 PLN
─────────────────────────
Total VAT: 1,390.00 PLN

Modos de visualizacion de precio

Cada oferta puede usar uno de tres modos:

  • NET - solo muestra valores netos
  • GROSS - solo muestra valores brutos
  • NET + VAT + GROSS - muestra desglose completo por linea y en totales

El modo se configura por oferta y afecta tanto al PDF como a la pagina publica.

Descuentos

Descuentos por linea

Cada linea puede tener un descuento individual:

  • Percentage - por ejemplo -10%
  • Fixed amount - por ejemplo -50 PLN

Los descuentos por linea se aplican despues de multiplicar por cantidad y antes del IVA.

Descuento global de oferta

Se puede aplicar un descuento global:

  • Percentage
  • Fixed amount

Este descuento se aplica despues de sumar las lineas y antes de shipping e IVA.

Visualizacion del descuento

El sistema de plantillas soporta tres modos:

  • BAKED_IN - el cliente solo ve el precio final
  • SHOW_COLUMN - se muestra una columna especifica de descuento
  • HIDDEN - el descuento se aplica, pero no se enseña aparte

Redondeo

Todos los calculos monetarios usan redondeo HALF_UP, aunque el modo puede configurarse. El redondeo se aplica:

  • por linea, despues del descuento y antes del IVA
  • por importe de IVA de cada linea
  • por total de oferta

Mantener un unico criterio de redondeo asegura que la suma de lineas coincide con el total final.

Totales almacenados

Los totales calculados se guardan en una tabla desnormalizada offer_totals para:

  • consultas rapidas en listados y reportes
  • verificacion de auditoria
  • precision historica cuando cambian reglas de precio mas adelante

Last reviewed: Recently