{"id":236,"date":"2026-10-21T22:38:44","date_gmt":"2026-10-21T20:38:44","guid":{"rendered":"https:\/\/n8nfacil.com\/?p=236"},"modified":"2026-11-02T18:51:16","modified_gmt":"2026-11-02T17:51:16","slug":"expresiones-n8n-calcular-presupuesto","status":"publish","type":"post","link":"https:\/\/n8nfacil.com\/en\/expresiones-n8n-calcular-presupuesto\/","title":{"rendered":"Expresiones en n8n: calcula subtotal y descuento de un presupuesto"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>Nivel:<\/strong> principiante con nociones de datos. <strong>Proyecto:<\/strong> presupuesto ficticio. <strong>Verificado:<\/strong> n8n 2.44.5, 21 de octubre de 2026. Ejemplos ejecutados con datos ficticios.<\/p><p class=\"wp-block-paragraph\">Las expresiones permiten calcular un campo a partir de otros datos del flujo. Para practicar construiremos un presupuesto sencillo: tres cuadernos a 19,90 cada uno, con un descuento del 10 %. El objetivo es entender c\u00f3mo entran los datos y c\u00f3mo se transforma el resultado, sin a\u00f1adir un nodo Code.<\/p><p class=\"wp-block-paragraph\">No es un sistema de facturaci\u00f3n. El ejemplo no incluye impuestos, condiciones comerciales ni c\u00e1lculo financiero de precisi\u00f3n decimal.<\/p><h2 class=\"wp-block-heading\">Qu\u00e9 necesitas<\/h2><p class=\"wp-block-paragraph\">n8n abierto y el archivo <code>03-calcular-presupuesto.json<\/code>. El proyecto utiliza un disparador manual y dos nodos Edit Fields. Todo funciona con datos ficticios y sin servicios externos.<\/p><h2 class=\"wp-block-heading\">1. Importa el workflow<\/h2><p class=\"wp-block-paragraph\">Crea un workflow nuevo e importa el archivo. Comprueba la conexi\u00f3n <strong>Ejecutar prueba \u2192 Datos del presupuesto \u2192 Calcular importes<\/strong>. Guarda el proyecto sin publicarlo; se ejecuta manualmente para que puedas revisar cada ensayo.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo.jpg\" alt=\"Flujo de n8n que calcula un presupuesto a partir de cantidad, precio y descuento.\" class=\"wp-image-225\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo.jpg 1280w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo-300x169.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo-1024x576.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo-768x432.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-flujo-18x10.jpg 18w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">Flujo de n8n que calcula un presupuesto a partir de cantidad, precio y descuento.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">2. Revisa los campos de entrada<\/h2><p class=\"wp-block-paragraph\">Datos del presupuesto contiene el producto <code>Cuaderno de ejemplo<\/code>, cantidad <code>3<\/code>, precio_unitario <code>19.9<\/code> y descuento_porcentaje <code>10<\/code>. Los tres \u00faltimos campos son Number. El punto del precio es el separador decimal del valor num\u00e9rico; no escribas el s\u00edmbolo del euro dentro de \u00e9l.<\/p><p class=\"wp-block-paragraph\">Antes de a\u00f1adir c\u00e1lculos, ejecuta hasta este nodo y confirma los valores. Si una cifra llega como texto, el problema debe resolverse en la entrada y no ocultarse con una expresi\u00f3n m\u00e1s complicada.<\/p><h2 class=\"wp-block-heading\">3. Calcula el subtotal<\/h2><p class=\"wp-block-paragraph\">La operaci\u00f3n es cantidad por precio_unitario. La expresi\u00f3n completa del ejemplo es <code>{{ Number(($json.cantidad * $json.precio_unitario).toFixed(2)) }}<\/code>.<\/p><p class=\"wp-block-paragraph\"><code>toFixed(2)<\/code> redondea y devuelve un texto con dos decimales. <code>Number(...)<\/code> vuelve a convertir ese resultado en n\u00famero. Por eso la salida puede verse como <code>59.7<\/code> y no <code>59.70<\/code>: ambos representan el mismo valor num\u00e9rico. El formato de presentaci\u00f3n es una decisi\u00f3n posterior.<\/p><h2 class=\"wp-block-heading\">4. Aplica el descuento<\/h2><p class=\"wp-block-paragraph\">El total utiliza <code>{{ Number(($json.cantidad * $json.precio_unitario * (1 - $json.descuento_porcentaje \/ 100)).toFixed(2)) }}<\/code>.<\/p><p class=\"wp-block-paragraph\">Con un descuento de 10, el factor es 0,9. Multiplicamos el importe por ese factor y redondeamos al final. Los campos subtotal y total se calculan desde los datos de entrada; no necesitamos depender del orden en que se eval\u00faen los campos de un mismo nodo.<\/p><h2 class=\"wp-block-heading\">5. Prueba el resultado<\/h2><p class=\"wp-block-paragraph\">Ejecuta el flujo completo. Para los valores iniciales esperamos subtotal <code>59.7<\/code> y total <code>53.73<\/code>. Despu\u00e9s cambia descuento_porcentaje a 0 y ejecuta de nuevo: el total esperado pasa a <code>59.7<\/code>.<\/p><p class=\"wp-block-paragraph\">Compara ambos ensayos. Si el total no cambia, revisa que el campo sea una expresi\u00f3n y que est\u00e9s mirando la salida de la \u00faltima ejecuci\u00f3n.<\/p><h2 class=\"wp-block-heading\">Errores que conviene detectar<\/h2><p class=\"wp-block-paragraph\">Un precio con coma, moneda y espacios puede requerir limpieza antes de convertirse a n\u00famero. Una cantidad negativa o un descuento fuera del intervalo previsto necesita validaci\u00f3n. Este proyecto no intenta adivinar c\u00f3mo tratar esos casos.<\/p><p class=\"wp-block-paragraph\">JavaScript usa n\u00fameros de coma flotante. Para un sistema de cobros real hacen falta reglas de redondeo, validaci\u00f3n y una estrategia de precisi\u00f3n adecuada, adem\u00e1s de los requisitos propios de facturaci\u00f3n. Aqu\u00ed el valor est\u00e1 en aprender el recorrido de los datos con un caso peque\u00f1o y comprobable.<\/p><p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.n8n.io\/code\/expressions\/\">Documentaci\u00f3n oficial de n8n<\/a><\/p><h2 class=\"wp-block-heading\">Resultados comprobados y capturas reales<\/h2><p class=\"wp-block-paragraph\">Comprobado: 3 \u00d7 19,90 = subtotal 59,70; descuento 10 % \u2192 total 53,73; descuento 0 % \u2192 total 59,70.<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado.jpg\" alt=\"Expresiones y salida real del presupuesto con subtotal 59,7 y total 53,73.\" class=\"wp-image-226\" srcset=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado.jpg 1280w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado-300x169.jpg 300w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado-1024x576.jpg 1024w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado-768x432.jpg 768w, https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-presupuesto-resultado-18x10.jpg 18w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">Expresiones y salida real del presupuesto con subtotal 59,7 y total 53,73.<\/figcaption><\/figure><h2 class=\"wp-block-heading\">Descarga y prueba el proyecto<\/h2><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/wp-content\/uploads\/2026\/10\/03-calcular-presupuesto.zip\">Descargar el workflow en ZIP<\/a>. Descomprime el archivo y selecciona el JSON en la opci\u00f3n de importar desde archivo de n8n. El proyecto utiliza datos ficticios y no contiene credenciales.<\/p><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/en\/instalar-n8n-windows-docker\/\">\u00bfTodav\u00eda no tienes n8n? Consulta la instalaci\u00f3n local en Windows<\/a>.<\/p><p class=\"wp-block-paragraph\"><a href=\"https:\/\/n8nfacil.com\/en\/blog\/\">Volver a los tutoriales de n8nf\u00e1cil \u2192<\/a><\/p><section><h2>Construye este workflow desde cero<\/h2><p>Puedes crear los nodos manualmente en lugar de importar el ZIP. Los ajustes siguientes corresponden al archivo del proyecto y a la versi\u00f3n indicada al comienzo de la gu\u00eda; los nombres de los controles pueden variar en otras versiones.<\/p><h3>Ejecutar prueba \u00b7 Manual Trigger<\/h3><p>A\u00f1ade Manual Trigger como inicio del flujo. Permite ejecutar la pr\u00e1ctica pulsando Execute workflow, sin publicar un disparador autom\u00e1tico.<\/p><h3>Datos del presupuesto \u00b7 Edit Fields (Set)<\/h3><p>A\u00f1ade Edit Fields (Set) y selecciona Manual Mapping. Crea los siguientes campos; utiliza Fixed para valores literales y Expression para f\u00f3rmulas. Conserva solo los campos configurados para reproducir la salida del proyecto.<\/p><figure class=\"wp-block-table\"><table><thead><tr><th>Campo<\/th><th>Tipo<\/th><th>Modo<\/th><th>Valor<\/th><\/tr><\/thead><tbody><tr><td>producto<\/td><td>string<\/td><td>Fixed<\/td><td><code>&quot;Cuaderno de ejemplo&quot;<\/code><\/td><\/tr><tr><td>cantidad<\/td><td>number<\/td><td>Fixed<\/td><td><code>3<\/code><\/td><\/tr><tr><td>precio_unitario<\/td><td>number<\/td><td>Fixed<\/td><td><code>19.9<\/code><\/td><\/tr><tr><td>descuento_porcentaje<\/td><td>number<\/td><td>Fixed<\/td><td><code>10<\/code><\/td><\/tr><\/tbody><\/table><\/figure><p>Las comillas de los valores de texto de la tabla indican que son cadenas: no las escribas en el campo Fixed. Conserva los espacios cuando formen parte de los datos de prueba.<\/p><h3>Calcular importes \u00b7 Edit Fields (Set)<\/h3><p>A\u00f1ade Edit Fields (Set) y selecciona Manual Mapping. Crea los siguientes campos; utiliza Fixed para valores literales y Expression para f\u00f3rmulas. Conserva solo los campos configurados para reproducir la salida del proyecto.<\/p><figure class=\"wp-block-table\"><table><thead><tr><th>Campo<\/th><th>Tipo<\/th><th>Modo<\/th><th>Valor<\/th><\/tr><\/thead><tbody><tr><td>producto<\/td><td>string<\/td><td>Expression<\/td><td><code>{{ $json.producto }}<\/code><\/td><\/tr><tr><td>subtotal<\/td><td>number<\/td><td>Expression<\/td><td><code>{{ Number(($json.cantidad * $json.precio_unitario).toFixed(2)) }}<\/code><\/td><\/tr><tr><td>total<\/td><td>number<\/td><td>Expression<\/td><td><code>{{ Number(($json.cantidad * $json.precio_unitario * (1 - $json.descuento_porcentaje \/ 100)).toFixed(2)) }}<\/code><\/td><\/tr><\/tbody><\/table><\/figure><p>Las comillas de los valores de texto de la tabla indican que son cadenas: no las escribas en el campo Fixed. Conserva los espacios cuando formen parte de los datos de prueba.<\/p><h3>Conecta los nodos y revisa el recorrido<\/h3><ul><li>Ejecutar prueba \u2192 Datos del presupuesto.<\/li><li>Datos del presupuesto \u2192 Calcular importes.<\/li><\/ul><p>Ejecuta desde el inicio y abre la salida de cada nodo. Comprueba los valores y el n\u00famero de elementos antes de seguir. Un nodo verde indica ejecuci\u00f3n completada, pero debes comparar su salida con los resultados esperados de esta gu\u00eda.<\/p><\/section>","protected":false},"excerpt":{"rendered":"<p>Practica expresiones en n8n calculando un presupuesto. Proyecto descargable con subtotal, descuento, capturas reales y resultados verificados.<\/p>","protected":false},"author":1,"featured_media":225,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datos-expresiones"],"_links":{"self":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/comments?post=236"}],"version-history":[{"count":3,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/236\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/posts\/236\/revisions\/317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media\/225"}],"wp:attachment":[{"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/media?parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/categories?post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/n8nfacil.com\/en\/wp-json\/wp\/v2\/tags?post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}