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:
- Line unit price - precio base del catalogo o introducido manualmente para items custom
- Pricing rule evaluation - ajustes automaticos segun reglas de cliente o grupo de clientes
- Quantity multiplication -
unit_price × quantity = line_subtotal - Line-level discount - descuento porcentual o fijo sobre
line_subtotal = line_net - Line VAT -
line_net × VAT_rate = line_vat - Line gross -
line_net + line_vat = line_gross - Subtotal - suma de todos los
line_net - Offer-level discount - descuento porcentual o fijo sobre el subtotal
- Shipping - se anade al subtotal descontado en valor NET
- Total NET - subtotal descontado mas shipping
- Total VAT - suma de los VAT por linea, recalculados si aplica descuento global
- 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:
- se ordenan por prioridad, donde gana el numero mas alto
- se aplica solo la regla coincidente con mayor prioridad
- 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:
- los precios del catalogo estan almacenados en la moneda base
- al crear la oferta, se aplica el tipo FX actual
- el tipo usado se guarda en el snapshot de la oferta
- 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