Docs  /  Precios & Reglas  /  Fórmulas y cálculos

Fórmulas y cálculos

Última actualización: 20. octubre 2026

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

  1. Cree una característica y elija en Categoría de datos la opción Cálculo y como Tipo de dato la Fórmula.
  2. En Ajustes básicos, asigne un Nombre interno (ID) descriptivo, p. ej. superficie. Con este nombre, otras fórmulas usan el resultado.
  3. En Ajustes de fórmula, escriba la fórmula en el campo Cálculo (fórmula), p. ej. $anchura * $altura / 10000.
  4. Si el resultado debe entrar en el precio, configure Precios por niveles; consulte Incluir el resultado en el precio.
  5. Ponga la Visibilidad en No (oculto) si sus clientes no deben ver el resultado.
  6. Compruebe el resultado en la vista previa con algunos valores de prueba.

Característica de fórmula Statikzuschlag: categoría de datos Cálculo, tipo de dato Fórmula y, en los ajustes de fórmula, el cálculo de un recargo a partir de 3500 mm de profundidad; a la izquierda las fórmulas de precio encadenadas

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

  1. 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?
  2. La fórmula calcula, pero el precio no cambia: faltan los Precios por niveles. Sin tramo (valor 0, precio 1) y con el operador de precio Valor × Precio, el resultado no cuenta para el precio.
  3. 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).
  4. 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 es rojo.
  5. En V3 no hay resultado, en Legacy sí: la fórmula contiene var, if o varias instrucciones, falta en Legacy una forma corta como round(), o devuelve una comparación sola. Escriba una expresión con ? : y funciones Math..
  6. 2 ^ 3 da 1: ^ no es una potencia. Use Math.pow(2, 3).
  7. El precio difiere en céntimos: redondee en la propia fórmula en lugar de con Decimales.

Próximos pasos


← Todos los artículos Prueba gratuita 14 días