Con una fórmula, el configurador calcula por sí mismo: una superficie a partir de anchura y altura, un importe a partir de cantidad y precio unitario, un recargo a partir de una selección. Una fórmula es una característica propia que lee los valores de otras características y vuelve a calcular con cada selección. Su resultado se puede mostrar, usar en otras fórmulas o incluir en el precio.
Cómo funciona
- Cree una característica y elija en Categoría de datos la opción Cálculo y como Tipo de dato la Fórmula.
- En Ajustes básicos, asigne un Nombre interno (ID) descriptivo, p. ej.
superficie. Con este nombre, otras fórmulas usan el resultado. - En Ajustes de fórmula, escriba la fórmula en el campo Cálculo (fórmula), p. ej.
$anchura * $altura / 10000. - Si el resultado debe entrar en el precio, configure Precios por niveles; consulte Incluir el resultado en el precio.
- Ponga la Visibilidad en No (oculto) si sus clientes no deben ver el resultado.
- Compruebe el resultado en la vista previa con algunos valores de prueba.

Una fórmula es una expresión de JavaScript. No necesita conocimientos de programación: las operaciones básicas, los paréntesis y unas pocas funciones bastan para casi todo.
Usar características en la fórmula
Una característica se referencia por su Nombre interno (ID) precedido de $. Se distinguen mayúsculas y minúsculas.
| Notación | Resultado |
|---|---|
$anchura |
El valor actual de la característica (véase la tabla de abajo) |
$color.price |
El recargo del valor elegido. En la selección múltiple, la suma de los recargos elegidos. |
$color.originalPrice |
El recargo sin multiplicar por una cantidad. En V3 es idéntico a .price. |
$$anchura |
Igual que $anchura. Pero en el motor Legacy la fórmula no vuelve a calcular cuando solo cambia esta característica, solo cuando cambia alguna de las otras. En V3 no existe esta diferencia. |
¿Qué valor se obtiene?
| Característica | $nombre devuelve |
|---|---|
| Selección, Botones de radio, Lista con imágenes | El campo Valor de la opción elegida, no la etiqueta. Si el valor es un número (120), la fórmula calcula con él. Si no, es un texto ('madera'). |
| Selección múltiple, Casilla de verificación | Legacy: una lista de los valores elegidos, p. ej. ['led','dimmer']. V3: vacío. Para recargos, use $nombre.price. |
| Campo de entrada pequeño / grande | Lo introducido. Los números se convierten en números, también con coma decimal (12,5 → 12.5). Todo lo demás queda como texto. |
| Fórmula, Lista de precios, Combinación simple | Su resultado. Así puede encadenar fórmulas. |
| Nada elegido, nada introducido, oculta por una regla | Vacío (''); consulte Campos vacíos. |
Calcular, comparar, decidir
| Signo | Significado | Ejemplo |
|---|---|---|
+ - * / |
Operaciones básicas | $anchura * $altura |
% |
Resto de la división | $cantidad % 10 |
( ) |
Paréntesis | ($anchura + 10) * 2 |
== != < <= > >= |
Comparación | $anchura > 200 |
&& ! |
y, no | $anchura > 200 && $altura > 150 |
condición ? a : b |
Si – entonces – si no | $anchura > 200 ? 25 : 0 |
O se escribe con dos barras verticales: $anchura > 200 || $altura > 150 se cumple si al menos una de las dos condiciones es verdadera.
Cuidado con ^: en JavaScript no es una potencia, sino un XOR bit a bit. 2 ^ 3 da 1, no 8. Para potencias use Math.pow(2, 3).
Si – entonces se escribe siempre con ? :. Puede anidar varios niveles:
$cantidad >= 100 ? 7.90 : ($cantidad >= 50 ? 8.90 : 10.90)
Devuelva siempre un número. Una comparación sola como $anchura > 200 da 1 o 0 en el motor Legacy, pero en V3 no da ningún resultado. Por eso escriba $anchura > 200 ? 1 : 0.
Funciones
Las funciones con Math. funcionan en ambos motores. Las formas cortas sin Math. solo existen en V3.
| Función | Significado | Forma corta (solo V3) |
|---|---|---|
Math.round(x) |
Redondear al entero más próximo | round(x), con decimales: round(x, 2) |
Math.ceil(x) |
Redondear hacia arriba | ceil(x) |
Math.floor(x) |
Redondear hacia abajo | floor(x) |
Math.abs(x) |
Valor absoluto | abs(x) |
Math.min(a, b, …) |
Valor mínimo | min(a, b, …) |
Math.max(a, b, …) |
Valor máximo | max(a, b, …) |
Math.sqrt(x) |
Raíz cuadrada | sqrt(x) |
Math.pow(x, y) |
x elevado a y | pow(x, y) |
Math.log(x) |
Logaritmo natural | log(x) |
Math.exp(x) |
e elevado a x | exp(x) |
Math.PI |
Número π | PI |
Redondear a decimales en ambos motores: Math.round(x * 100) / 100 (dos decimales) o Math.ceil(x * 2) / 2 (redondear hacia arriba a 0,5).
Las notaciones en mayúsculas de las hojas de cálculo (ROUND, IF, MAX) no existen.
Una fórmula, una expresión
En V3, una fórmula consta exactamente de una expresión. Las variables intermedias (var), los bloques if, los bucles y varias instrucciones con ; no dan ningún resultado allí.
El motor Legacy también ejecuta fórmulas de varias líneas. Para que un componente calcule igual en ambos motores, escriba de todos modos una sola expresión y divida los cálculos largos en varias características de fórmula, por ejemplo superficie y, basándose en ella, precio_superficie. Así también es más fácil de comprobar. Más información: Motor de frontend: Legacy o V3.
Campos vacíos
Mientras una característica esté vacía, la fórmula usa un texto vacío. Al multiplicar y dividir, cuenta como 0 ('' * 2 da 0). Pero al sumar, JavaScript concatena textos: si $a es 5 y $b está vacío, $a + $b da el texto «5» en lugar del número 5. El motor V3 no incluye un texto en el precio. Una forma segura es:
($a || 0) + ($b || 0)
|| 0 usa 0 para un campo vacío. Para características de selección con valores de texto no lo necesita: compare directamente, $color == 'rojo' ? 20 : 0.
Si una fórmula da un error (errata, función desconocida), su resultado queda vacío o es 0. El configurador sigue funcionando.
Incluir el resultado en el precio
Al principio, una fórmula solo devuelve un número. Entra en el precio a través de los Precios por niveles de la fórmula y el Operador de precio, igual que en la matriz de precios:
| Objetivo | Precios por niveles | Operador de precio |
|---|---|---|
| La fórmula es el precio (p. ej. 49.90) | un tramo: valor 0, precio 1 |
Valor × Precio |
| La fórmula es una cantidad, p. ej. m², que se multiplica por un precio | un tramo: valor 0, precio = precio por unidad, p. ej. 45 |
Valor × Precio |
| El precio por unidad depende de la cantidad | varios tramos, p. ej. 0 → 45, 5 → 42, 10 → 38 |
Valor × Precio |
| Recargo fijo a partir de un límite | un tramo con el límite y el recargo | Precio |
Sin precio por niveles, la fórmula no aporta nada al precio. Cómo calculan en detalle los precios por niveles se explica en Configurar precios.
Decimales
El campo Decimales de los Ajustes de fórmula determina con cuántos decimales se muestra el resultado. En el motor Legacy, el resultado también se sigue usando redondeado; en V3, solo la visualización. Si el redondeo debe influir en el precio, redondee en la propia fórmula, p. ej. con Math.round(x * 100) / 100.
Fórmulas en otros lugares
- Matriz de precios: una fórmula puede servir como Dimensión X o Y, por ejemplo una superficie calculada como fila de la tabla. Consulte Matrices de precios desde Excel/CSV.
- Combinación simple: si solo quiere sumar, multiplicar o unir como texto dos o más características, basta el tipo de dato Combinación simple, sin fórmula.
Ejemplos prácticos
Todos los ejemplos funcionan en ambos motores. Sustituya los nombres de las características por los suyos.
Superficie en m² a partir de centímetros
$anchura * $altura / 10000
Superficie con un mínimo de 0,5 m²
Math.max($anchura * $altura / 10000, 0.5)
Redondear la superficie hacia arriba a 0,5 m² completos
Math.ceil($anchura * $altura / 10000 * 2) / 2
Recargo a partir de una anchura de 200 cm
$anchura > 200 ? 35 : 0
Precio unitario con descuento por cantidad × cantidad
$cantidad * ($cantidad >= 100 ? 7.90 : ($cantidad >= 50 ? 8.90 : 10.90))
Recargo según la selección: la característica material tiene los valores madera, alu, inox:
$material == 'inox' ? 1.35 : ($material == 'madera' ? 1.2 : 1)
Este factor lo puede usar en una segunda fórmula: $superficie * 45 * $factor_material.
Sumar los recargos de varias características
$color.price + $accionamiento.price
Perímetro de una mesa redonda a partir del diámetro
Math.round(Math.PI * $diametro)
Con el agente de IA
El agente de IA escribe fórmulas por usted si describe qué hay que calcular:
«El precio debe ser anchura por altura en m² por 45 euros, pero como mínimo para 0,5 m².»
Crea la característica de fórmula y configura el precio por niveles. Compruebe el resultado en la vista previa con algunas medidas de prueba antes de publicar.
Solución de problemas
- La fórmula da siempre 0 o nada: ¿es correcto el Nombre interno (ID), incluidas mayúsculas y minúsculas? ¿Está rellenada la característica?
- La fórmula calcula, pero el precio no cambia: faltan los Precios por niveles. Sin tramo (valor
0, precio1) y con el operador de precio Valor × Precio, el resultado no cuenta para el precio. - La suma falta en el precio mientras un campo esté vacío: el campo vacío se sumó como texto. Escriba
($a || 0) + ($b || 0). - La comparación con una selección nunca se cumple: la fórmula ve el Valor de la opción, no su etiqueta.
$color == 'Rojo'no se cumple si el valor esrojo. - En V3 no hay resultado, en Legacy sí: la fórmula contiene
var,ifo varias instrucciones, falta en Legacy una forma corta comoround(), o devuelve una comparación sola. Escriba una expresión con? :y funcionesMath.. 2 ^ 3da 1:^no es una potencia. UseMath.pow(2, 3).- El precio difiere en céntimos: redondee en la propia fórmula en lugar de con Decimales.