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

Fórmulas de precios y cálculos JavaScript

Última actualización: 01. enero 2026

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, sin console.log)
  • Comprobar undefined o null en 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

Próximos pasos


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