Con las fórmulas puede realizar cálculos de precios complejos que van más allá de los simples recargos. Las fórmulas acceden a los valores y a los recargos de todas las características y calculan a partir de ellos un precio en tiempo real.
Para los casos estándar bastan expresiones de fórmula simples. Para lógica muy compleja, también está disponible código JavaScript completo.
¿Dónde se guardan las fórmulas?
Las fórmulas se guardan en la configuración de precios de una opción o directamente como regla de precio por fórmula a nivel de componente. Puede usar fórmulas para opciones individuales o como fórmula de precio total.
Fórmulas simples
Referenciar valores de características
[nombre_caracteristica] → valor numérico de la característica (en entrada libre)
[nombre_caracteristica.price] → recargo de la opción seleccionada
[_base_price] → precio base del componente
Operadores básicos
+ Suma
- Resta
* Multiplicación
/ División
^ Potencia
() Paréntesis para el orden de las operaciones
Funciones
ROUND(valor, dígitos) → redondear a n decimales
CEIL(valor) → redondear al entero superior
FLOOR(valor) → redondear al entero inferior
MAX(a, b) → el mayor de los dos valores
MIN(a, b) → el menor de los dos valores
IF(condición, a, b) → si condición verdadera → a, si no → b
ABS(valor) → valor absoluto (sin signo)
Ejemplos prácticos
Precio por superficie (ancho × alto):
[ancho] * [alto] * 0.025
Precio por superficie con precio mínimo:
MAX([ancho] * [alto] * 0.025, 49.00)
Precio por metro redondeado:
CEIL([longitud] / 100) * 12.50
Precio escalonado (descuento por cantidad):
IF([cantidad] >= 100, [cantidad] * 8.90,
IF([cantidad] >= 50, [cantidad] * 9.50,
[cantidad] * 10.90))
Combinación de superficie y recargos:
([ancho] * [alto] * 0.020) + [color.price] + [accionamiento.price]
Cálculos avanzados con JavaScript
Cuando la sintaxis de fórmulas simples no es suficiente, puede guardar código JavaScript completo. Esto permite una lógica de cálculo arbitrariamente compleja: bucles, arrays, búsquedas externas, algoritmos propios.
Estructura básica
El código JavaScript debe devolver un valor numérico al final:
// Todos los valores de características están disponibles como variables
var superficie = ancho * alto;
var precio_base = superficie * 0.025;
// Precio mínimo
if (precio_base < 49) {
precio_base = 49;
}
// Valor de retorno
precio_base;
Valores de características en JavaScript
Todas las características están disponibles como variables JavaScript, nombradas según su nombre interno:
// Valores numéricos directamente
ancho // valor de la característica "ancho"
alto // valor de la característica "alto"
cantidad // valor de la característica "cantidad"
// Recargos de la opción seleccionada
color_price // recargo del color seleccionado
accionamiento_price // recargo del accionamiento seleccionado
// Precio base
_base_price // precio base del componente
Ejemplos prácticos
Precio escalonado complejo con tabla:
var niveles = [
{ desde: 1, precio: 10.90 },
{ desde: 10, precio: 9.50 },
{ desde: 50, precio: 8.90 },
{ desde: 100, precio: 7.90 },
{ desde: 500, precio: 6.90 }
];
var precio_unitario = niveles[0].precio;
for (var i = 0; i < niveles.length; i++) {
if (cantidad >= niveles[i].desde) {
precio_unitario = niveles[i].precio;
}
}
cantidad * precio_unitario;
Cálculo de precio con recargos según la combinación:
var base = ancho * alto * 0.022;
// Recargo por material
var factorMaterial = 1.0;
if (material === 'inoxidable') factorMaterial = 1.35;
if (material === 'madera') factorMaterial = 1.20;
// Recargo por envío urgente
var express = (plazo_entrega === 'express') ? base * 0.25 : 0;
// Precio mínimo
Math.max(base * factorMaterial + express, 59.00);
Cálculo de precio con reglas de redondeo según el estándar del sector:
// Superficie en m² (entrada en cm)
var superficie_m2 = (ancho / 100) * (alto / 100);
// Redondear a 0,1 m² superior (cantidad mínima de pedido)
var superficie_redondeada = Math.ceil(superficie_m2 * 10) / 10;
// Precio de la zona tarifaria
var precio_por_m2 = 45.00;
if (superficie_redondeada > 5) precio_por_m2 = 42.00;
if (superficie_redondeada > 10) precio_por_m2 = 38.00;
superficie_redondeada * precio_por_m2 + accionamiento_price;
API de JavaScript disponibles
En el contexto de las fórmulas están disponibles los objetos JavaScript estándar:
Math.round(), Math.ceil(), Math.floor()
Math.min(), Math.max(), Math.abs()
Math.pow(), Math.sqrt()
parseInt(), parseFloat()
Array, Object, JSON
Sin acceso al DOM, a peticiones HTTP externas ni a las API del navegador: el cálculo se ejecuta en el servidor.
Probar las fórmulas
En el backend, la vista previa muestra inmediatamente el resultado con distintos valores de entrada. Introduzca valores de prueba y compruebe si el cálculo es correcto.
Agente IA para fórmulas y JavaScript
El agente IA puede crear tanto fórmulas simples como código JavaScript complejo:
«El precio debe ser ancho por alto por 0,025 euros, pero como mínimo 49 euros.»
«Necesito un precio escalonado: hasta 10 unidades 10,90 €, a partir de 10 unidades 9,50 €, a partir de 50 unidades 8,90 €, a partir de 100 unidades 7,90 €.»
«El precio debe redondearse a 0,1 m² superior y ser más barato por m² con superficies mayores.»
El agente escribe el código y lo guarda directamente en el componente.
Solución de problemas
La fórmula da 0 o NaN:
- Comprobar los nombres de las características — tener en cuenta mayúsculas y minúsculas
- Asegurarse de que la característica referenciada es un campo numérico
- Comprobar si hay errores de sintaxis JavaScript (faltan puntos y comas o paréntesis)
JavaScript no devuelve ningún valor:
- Asegurarse de que al final hay una expresión numérica (sin
return, sinconsole.log) - Comprobar
undefinedonullen la lógica condicional
Valores inesperados:
- Tener en cuenta las unidades (mm vs. cm vs. m)
console.log()para la solución de problemas — las salidas aparecen en la consola del navegador de la vista previa