Creación de presupuestos usando n8n para O2C

Soy nuevo en n8n e intento crear un flujo de trabajo de generación de cotizaciones.

Mi objetivo es:

  1. Recibir detalles del cliente (nombre, correo electrónico, servicio, cantidad, precio)

  2. Calcular totales automáticamente

  3. Generar un número de cotización

  4. Crear una cotización en PDF

  5. Enviar la cotización al cliente por correo electrónico

Actualmente estoy confundido sobre cómo configurar el nodo Set y pasar datos entre nodos. No estoy seguro de dónde debo agregar la información del cliente ni cómo mapear los campos correctamente.

¿Podrías guiarme sobre:

  • ¿Qué nodos debo usar para cada paso?

  • ¿Cómo debo estructurar el flujo de trabajo?

  • ¿Cómo puedo generar un PDF a partir de los datos de la cotización?

Hola @Sifrabasayar_12

Puedes usar este hilo como punto de partida

El flujo de trabajo generado debería cumplir con la mayoría de tus necesidades

Comienza con la forma de datos, no con el nodo PDF. Crea un elemento de prueba con los campos de cotización exactos que necesitas: customer_name, customer_email, service, quantity, unit_price, total, y quote_number.

Una vez que exista ese elemento, el siguiente nodo solo tiene que asignar esos nombres de campo al paso PDF/email. ¿Dónde entrarán los primeros detalles del cliente en n8n: formulario, webhook, hoja de cálculo, o elemento de prueba manual?

¡Bienvenido @Sifrabasayar_12! Para complementar lo que dijo @oimrqs_ops - específicamente en el paso del PDF, el enfoque más sencillo en n8n es usar un nodo HTML Template para construir el diseño de la cotización con tus campos mapeados, luego pasar ese HTML a un nodo HTTP Request que llame a una API PDF gratuita como html2pdf.it o una instancia Gotenberg alojada localmente. El enfoque de plantilla HTML te da control total sobre el diseño de la cotización sin costo de licencia adicional. Para el número de cotización, genéralo en un nodo Code usando algo como 'Q-' + Date.now() o un contador secuencial almacenado en una variable estática del flujo de trabajo. Una vez que tengas el PDF como datos binarios, adjúntalo directamente en el campo de adjuntos del nodo Gmail usando {{ $binary.data }}.

Hola @Sifrabasayar_12, para unir todo con una estructura clara:
Trigger → Form Trigger o Webhook (captura nombre del cliente, correo electrónico, servicio, cantidad, precio)
Calcular totales → Nodo Set: añade un campo total = {{ $json.quantity * $json.unit_price }}
Generar número de cotización → Nodo Code: return [{ json: { …$input.first().json, quote_number: ‘Q-’ + Date.now() } }]
Construir PDF → Nodo HTML para diseñar el diseño de la cotización usando {{ $json.customer_name }} etc., luego nodo HTTP Request → html2pdf.it (gratuito, sin registro) para convertirlo a un binario PDF
Enviar correo electrónico → Nodo Gmail con To: {{ $json.customer_email }}, adjunta el binario PDF del nodo anterior
Lo clave para pasar datos entre nodos: cada nodo recibe $json del nodo anterior. Usa el nodo Set para añadir o renombrar campos, y estarán disponibles en todos los nodos posteriores. Una vez que tu elemento de prueba tiene todos los campos configurados correctamente en el paso 1, el resto solo mapea esos mismos nombres de campo a través.

¡Bienvenido @Sifrabasayar_12!

Aquí hay una estructura limpia de nodos para esto:

  1. Disparador de formulario de n8n para recopilar el nombre del cliente, correo electrónico, servicio, cantidad y precio
  2. Nodo de código para calcular totales y generar un número de cotización: "Q-" + Date.now()
  3. Para el PDF, el camino más fácil y amigable para principiantes es Google Docs: crea un documento de plantilla con marcadores de posición como {{customer_name}}, {{total}}, usa el nodo de Google Docs (operación Reemplazar texto) para rellenarlos y luego exporta a PDF a través del nodo de Google Drive (operación Descargar, establece el formato de salida en PDF)
  4. Nodo de Gmail para enviar el correo electrónico con el PDF exportado como adjunto

Comienza probando solo los pasos 1 y 2 primero para asegurarte de que tus campos tengan la forma correcta antes de añadir el paso del PDF.