# execution_data

workflowData:
  {"id":"5hyLXhD4yRQ2k4XO","name":"Generador Presupuesto (API PDFShift)","active":false,"nodes":[{"parameters":{"multipleMethods":false,"httpMethod":"POST","path":"generar-presupuesto-pro","authentication":"none","responseMode":"responseNode","webhookNotice":"","options":{"allowedOrigins":"https://excelcertify.com"}},"id":"65f6315d-be37-493a-8239-579f0d0dbd5b","name":"Webhook Presupuesto","type":"n8n-nodes-base.webhook","typeVersion":1,"position":[496,64],"webhookId":"generar-presupuesto-pro"},{"parameters":{"mode":"runOnceForAllItems","language":"javaScript","jsCode":"// 1. Calculamos fechas\nconst now = $now;\nconst validityDate = $now.plus({ days: 30 });\nconst presupuestoID = Math.floor(Math.random() * 90000) + 10000;\n\n// 2. Formateamos el plan y precio\n// Aseguramos que plan_detalle exista para evitar error, si no, string vacío\nconst planDetalle = $json.body.plan_detalle || '';\nconst planParts = planDetalle.split('-');\nconst planNombre = planParts[0] ? planParts[0].trim() : 'Plan General';\nconst planPrecio = planParts[1] ? planParts[1].trim() : 'A consultar';\n\n// 3. Preparamos la lista de cursos\nconst cursosArray = $json.body.cursos ? $json.body.cursos.split(', ') : [];\nconst cursosHTML = cursosArray.map(c => `• ${c}`).join('<br>');\n\n// 4. HTML del Presupuesto (Diseño Final)\nconst htmlContent = `\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Presupuesto Formal</title>\n<style>\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap');\nbody {\n    font-family: 'Inter', Helvetica, Arial, sans-serif;\n    color: #374151;\n    line-height: 1.4;\n    margin: 0;\n    padding: 40px;\n    zoom: 0.8;\n}\n\n/* Header Compacto */\n.legal-top { font-size: 0.7rem; color: #9ca3af; text-transform: uppercase;\nletter-spacing: 0.5px; margin-bottom: 20px; border-bottom: 1px dashed #e5e7eb; padding-bottom: 5px; text-align: center; font-weight: 600; }\n.header { display: flex; justify-content: space-between;\nalign-items: center; border-bottom: 2px solid #10b981; padding-bottom: 20px; margin-bottom: 30px; }\n\n/* Logos */\n.logos-container { display: flex; flex-direction: column; gap: 10px; }\n.main-logo { height: 55px; object-fit: contain; display: block; }\n.partner-logos { display: flex; gap: 15px; align-items: center; }\n.partner-img { height: 22px; filter: grayscale(100%); opacity: 0.6; }\n\n.meta-info { text-align: right; font-size: 0.85rem; color: #6b7280; }\n.meta-info strong { color: #111827; }\n\nh1 { color: #111827; font-size: 24px; margin: 0 0 5px 0; font-weight: 800; }\nh2 { color: #111827; font-size: 15px;\nfont-weight: 700; border-bottom: 1px solid #e5e7eb; padding-bottom: 5px; margin-top: 25px; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 0.5px; }\n\n.client-info { display: flex;\njustify-content: space-between; margin-bottom: 25px; background-color: #f9fafb; padding: 15px; border-radius: 8px; border: 1px solid #f3f4f6; }\n.client-col { width: 48%; }\n.client-col p { margin: 3px 0; font-size: 0.9rem; }\n.label { font-weight: 600; color: #4b5563; display: inline-block; width: 90px; }\n\ntable { width: 100%; border-collapse: collapse; margin-top: 10px; }\nth { background: #111827; color: #ffffff; padding: 8px 15px; text-align: left;\nfont-weight: 600; font-size: 0.8rem; }\ntd { padding: 12px 15px; border-bottom: 1px solid #e5e7eb; vertical-align: middle; }\n.plan-desc strong { font-size: 1rem; color: #111827; }\n.plan-desc span { font-size: 0.8rem; color: #6b7280; display: block; }\n.price-col { text-align: right; font-weight: 700; color: #111827;\nfont-size: 1rem; white-space: nowrap; background-color: #f0fdf4; }\n\n.courses-box { background: #fff; padding: 12px; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 0.9rem;\ncolor: #374151; line-height: 1.6; }\n.change-warning { display: inline-block; font-size: 0.85rem; color: #16a34a; font-weight: 600; font-style: italic; margin-left: 5px; }\n\n.terms { margin-top: 25px; font-size: 0.75rem; color: #4b5563; }\n.terms ul { padding-left: 18px; margin-bottom: 0; }\n.terms li { margin-bottom: 4px; }\n\n.footer { margin-top: 40px; text-align: center; font-size: 0.7rem; color: #9ca3af; border-top: 1px solid #f3f4f6; padding-top: 15px; }\n.highlight { color: #10b981; font-weight: 600; }\n</style>\n</head>\n<body>\n\n<div class=\"legal-top\">Presupuesto válido para emitir Orden de Compra a favor de Excel Certify - Integralitas S.A.S según corresponda</div>\n\n<div class=\"header\">\n  <div class=\"logos-container\">\n    \n    <img src=\"data:image/png;base64,[encoded data, 14432 characters]\" alt=\"Excel Certify\" class=\"main-logo\">\n    \n    <div class=\"partner-logos\">\n        <img src=\"data:image/png;base64,[encoded data, 43856 characters]\" alt=\"Microsoft Partner\" class=\"partner-img\">\n        <img src=\"data:image/png;base64,[encoded data, 18680 characters]\" alt=\"Google Partner\" class=\"partner-img\">\n    </div>\n  </div>\n\n  <div class=\"meta-info\">\n    <p><strong>Fecha de Emisión:</strong> ${now.toFormat('dd/MM/yyyy')}</p>\n    <p><strong>Válido hasta:</strong> <span class=\"highlight\">${validityDate.toFormat('dd/MM/yyyy')}</span></p>\n    <p><strong>Presupuesto N°:</strong> PRE-26-${presupuestoID}</p>\n  </div>\n</div>\n\n<h1>Presupuesto de Capacitación</h1>\n<p style=\"color: #6b7280; margin-top: 0; font-size: 0.9rem;\">Propuesta profesional con tarifa congelada Enero 2025.</p>\n\n<div class=\"client-info\">\n  <div class=\"client-col\">\n    <p style=\"text-transform: uppercase; font-weight:bold; font-size: 0.75rem; color:#9ca3af; margin-bottom:5px;\">Cliente</p>\n    <p><span class=\"label\">Empresa:</span> <strong>${$json.body.empresa}</strong></p>\n    <p><span class=\"label\">CUIT / ID:</span> ${$json.body.cuit ? $json.body.cuit : 'No informado'}</p>\n  </div>\n  <div class=\"client-col\">\n    <p style=\"text-transform: uppercase; font-weight:bold; font-size: 0.75rem; color:#9ca3af; margin-bottom:5px;\">Contacto</p>\n    <p><span class=\"label\">Atención a:</span> ${$json.body.nombre_reserva}</p>\n    <p><span class=\"label\">Email:</span> ${$json.body.email_responsable}</p>\n  </div>\n</div>\n\n<h2>Detalle de la Inversión</h2>\n<table>\n  <thead><tr><th width=\"65%\">Descripción del Servicio</th><th width=\"35%\" style=\"text-align: right;\">Inversión Total</th></tr></thead>\n  <tbody>\n    <tr>\n      <td class=\"plan-desc\">\n        <strong>${planNombre}</strong>\n        <span>Modalidad Online en Vivo. Incluye certificación oficial.</span>\n      </td>\n      <td class=\"price-col\">\n        ${planPrecio} s / IVA\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n<h2>Tecnologías Incluidas</h2>\n<p style=\"margin-bottom: 8px; font-size: 0.9rem;\">El presente presupuesto contempla la capacitación en las siguientes áreas seleccionadas:</p>\n\n<div class=\"courses-box\">\n  ${cursosHTML}\n  <span class=\"change-warning\">/ Los cursos pueden ser cambiados hasta 30 días antes de la capacitación efectiva.</span>\n</div>\n\n<div class=\"terms\">\n  <h3 style=\"margin-top: 0; font-size: 0.9rem; font-weight: 700; color: #111827; margin-bottom: 8px;\">Términos y Condiciones Comerciales</h3>\n  <ul>\n    <li><strong>Validez de la Oferta:</strong> Precios congelados (tarifa Enero 2025) válidos para ejecución hasta Junio 2026, confirmando reserva en Enero.</li>\n    <li><strong>Forma de Pago:</strong> Transferencia bancaria o eCheq a favor de Integralitas S.A.S.</li>\n    <li><strong>Facturación:</strong> Se emitirá Factura A o C tras la confirmación. Con Factura A, el precio promocional está sujeto a un recargo del 16% + IVA.</li>\n    <li><strong>Confidencialidad:</strong> Documento confidencial para uso exclusivo de la empresa destinataria.</li>\n  </ul>\n</div>\n\n<div class=\"footer\">\n  <p><strong>Excel Certify</strong> - Integralitas S.A.S</p>\n  <p>Microsoft Solutions Partner & Google Partner</p>\n  <p>www.excelcertify.com | info@excelcertify.com</p>\n</div>\n\n</body>\n</html>`;\n\nreturn {\n  html_final: htmlContent,\n  id_unico: presupuestoID,\n  fecha_validez: validityDate.toFormat('dd/MM/yyyy')\n};","notice":""},"id":"3f3ae538-0940-4494-aeda-e5d836306f8f","name":"Preparar HTML y Datos","type":"n8n-nodes-base.code","typeVersion":2,"position":[704,64]},{"parameters":{"preBuiltAgentsCalloutHttpRequest":"","curlImport":"","method":"POST","url":"https://api.pdfshift.io/v3/convert/pdf","authentication":"genericCredentialType","genericAuthType":"httpBasicAuth","provideSslCertificates":false,"sendQuery":false,"sendHeaders":false,"sendBody":true,"contentType":"json","specifyBody":"keypair","bodyParameters":{"parameters":[{"name":"source","value":"={{ $json.html_final }}"},{"name":"landscape","value":"false"},{"name":"use_print","value":"false"}]},"options":{"response":{"response":{"fullResponse":false,"neverError":false,"responseFormat":"file","outputPropertyName":"data"}}},"infoMessage":""},"id":"e54e5c17-8b2e-4bdc-9dc6-61a5caac5478","name":"Generar PDF (PDFShift)","type":"n8n-nodes-base.httpRequest","typeVersion":4.1,"position":[928,64],"notesInFlow":true,"credentials":{"httpBasicAuth":{"id":"nUGJyhzEG2yOkIO7","name":"Unnamed credential"}}},{"parameters":{"resource":"email","operation":"send","fromEmail":"avisos@info.excelcertify.com","toEmail":"={{ $('Webhook Presupuesto').item.json.body.email_responsable + ', victorrcolussi@gmail.com' }}","subject":"Presupuesto Formal (Válido 30 días) - ExcelCertify","emailFormat":"html","html":"={{ '<p>Hola <strong>' + $('Webhook Presupuesto').item.json.body.nombre_reserva + '</strong>,</p><p>Adjunto encontrarás el presupuesto formal solicitado para <strong>' + $('Webhook Presupuesto').item.json.body.empresa + '</strong>.</p><ul><li><strong>Presupuesto N°:</strong> PRE-26-' + $('Preparar HTML y Datos').item.json.id_unico + '</li><li><strong>Válido hasta:</strong> ' + $('Preparar HTML y Datos').item.json.fecha_validez + '</li></ul><p>Quedamos a tu disposición para cualquier consulta.</p><p>Saludos,<br>El equipo de ExcelCertify.</p>' }}","options":{"appendAttribution":false,"attachments":"data"}},"id":"ec0f84c2-8f21-4cd9-a2fe-650864ec8be1","name":"Enviar Email con PDF","type":"n8n-nodes-base.emailSend","typeVersion":2.1,"position":[1360,80],"webhookId":"e4c46f52-9f90-4110-8040-fe25c749258d","credentials":{"smtp":{"id":"OiV6sH0CDrHSeXXH","name":"SMTP account 2"}}},{"parameters":{"mode":"runOnceForAllItems","language":"javaScript","jsCode":"// 1. Obtener el nombre de la empresa y el ID desde el nodo anterior (o variables globales)\n// Asegúrate de que 'nombre_empresa' venga en tu JSON. Si no, cámbialo por la variable correcta.\nconst nombreEmpresa = $('Webhook Presupuesto').first().json.body.empresa || 'Cliente'; \nconst idUnico = $('Preparar HTML y Datos').first().json.id_unico;\n\n// 2. Definir el nuevo nombre\nconst nuevoNombre = `Presupuesto ${nombreEmpresa} ${idUnico}.pdf`;\n\n// 3. Modificar el nombre del archivo en los datos binarios\n// Nota: 'data' es la clave que se ve en tu captura de pantalla bajo OUTPUT\nif (items[0].binary && items[0].binary.data) {\n  items[0].binary.data.fileName = nuevoNombre;\n}\n\nreturn items;","notice":""},"type":"n8n-nodes-base.code","typeVersion":2,"position":[1104,64],"id":"9caf0bb3-c9a1-4a68-a666-809f330efdf8","name":"Code in JavaScript"},{"parameters":{"generalNotice":"","respondWith":"binary","responseDataSource":"set","inputFieldName":"data","options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/pdf"},{"name":"Content-Disposition","value":"=attachment; filename=\"{{ $('Code in JavaScript').first().binary.data.fileName }}\""},{"name":"Access-Control-Expose-Headers","value":"Content-Disposition"},{"name":"Access-Control-Allow-Origin","value":"https://excelcertify.com"}]}}},"id":"8e677bad-a037-43b4-a55a-cccd22d55126","name":"Entregar PDF","type":"n8n-nodes-base.respondToWebhook","typeVersion":1,"position":[1360,288],"alwaysOutputData":false},{"parameters":{"info":"","operation":"write","fileName":"/data/web-apptlas/presupuestosexcelcertify/","dataPropertyName":"data","options":{}},"type":"n8n-nodes-base.readWriteFile","typeVersion":1,"position":[1568,288],"id":"110841e2-c042-49a6-a929-2476b53d9251","name":"Read/Write Files from Disk"}],"connections":{"Webhook Presupuesto":{"main":[[{"node":"Preparar HTML y Datos","type":"main","index":0}]]},"Preparar HTML y Datos":{"main":[[{"node":"Generar PDF (PDFShift)","type":"main","index":0}]]},"Generar PDF (PDFShift)":{"main":[[{"node":"Code in JavaScript","type":"main","index":0}]]},"Enviar Email con PDF":{"main":[[]]},"Code in JavaScript":{"main":[[{"node":"Entregar PDF","type":"main","index":0}]]},"Entregar PDF":{"main":[[{"node":"Read/Write Files from Disk","type":"main","index":0}]]}},"settings":{"executionOrder":"v1"},"pinData":{}}

data:
  [{"startData":"1","resultData":"2","executionData":"3"},{"destinationNode":"4","runNodeFilter":"5"},{"runData":"6","pinData":"7","lastNodeExecuted":"4","error":"8"},{"contextData":"9","nodeExecutionStack":"10","metadata":"11","waitingExecution":"12","waitingExecutionSource":"13"},"Read/Write Files from Disk",["14","15","4","16","17","18"],{"Webhook Presupuesto":"19","Preparar HTML y Datos":"20","Generar PDF (PDFShift)":"21","Code in JavaScript":"22","Entregar PDF":"23","Read/Write Files from Disk":"24"},{},{"level":"25","tags":"26","timestamp":1767643102977,"context":"27","functionality":"28","name":"29","node":"30","messages":"31","httpCode":"32","message":"33","stack":"34"},{},["35"],{},{},{},"Webhook Presupuesto","Entregar PDF","Code in JavaScript","Generar PDF (PDFShift)","Preparar HTML y Datos",["36"],["37"],["38"],["39"],["40"],["41"],"warning",{},{"itemIndex":0},"regular","NodeApiError",{"parameters":"42","type":"43","typeVersion":1,"position":"44","id":"45","name":"4"},["46","46"],"ENOENT","The file or directory does not exist","NodeApiError: The file or directory does not exist\n    at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-nodes-base@file+packages+nodes-base_@aws-sdk+credential-providers@3.808.0_asn1.js@5_afd197edb2c1f848eae21a96a97fab23/node_modules/n8n-nodes-base/nodes/Files/ReadWriteFile/actions/write.operation.ts:123:10)\n    at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-nodes-base@file+packages+nodes-base_@aws-sdk+credential-providers@3.808.0_asn1.js@5_afd197edb2c1f848eae21a96a97fab23/node_modules/n8n-nodes-base/nodes/Files/ReadWriteFile/ReadWriteFile.node.ts:69:17)\n    at WorkflowExecute.executeNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_08b575bec2313d5d8a4cc75358971443/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1093:8)\n    at WorkflowExecute.runNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_08b575bec2313d5d8a4cc75358971443/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1274:11)\n    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_08b575bec2313d5d8a4cc75358971443/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1708:27\n    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1.30_08b575bec2313d5d8a4cc75358971443/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:2324:11",{"node":"47","data":"48","source":"49"},{"startTime":1767642090586,"executionIndex":0,"source":"50","hints":"51","executionTime":0,"executionStatus":"52","data":"53"},{"startTime":1767642090587,"executionIndex":1,"source":"54","hints":"55","executionTime":22,"executionStatus":"52","data":"56"},{"startTime":1767642090611,"executionIndex":2,"source":"57","hints":"58","executionTime":3203,"executionStatus":"52","data":"59"},{"startTime":1767642093825,"executionIndex":3,"source":"60","hints":"61","executionTime":64,"executionStatus":"52","data":"62"},{"startTime":1767642093909,"executionIndex":4,"source":"63","hints":"64","executionTime":6,"executionStatus":"52","data":"65"},{"startTime":1767643102974,"executionIndex":5,"source":"66","hints":"67","executionTime":4,"executionStatus":"68","error":"69"},{"info":"70","operation":"71","fileName":"72","dataPropertyName":"73","options":"74"},"n8n-nodes-base.readWriteFile",[1568,288],"110841e2-c042-49a6-a929-2476b53d9251","ENOENT: no such file or directory, open '/data/web-apptlas/presupuestosexcelcertify/'",{"parameters":"75","type":"43","typeVersion":1,"position":"76","id":"45","name":"4"},{"main":"77"},{"main":"66"},[],[],"success",{"main":"78"},["79"],[],{"main":"80"},["81"],[],{"main":"82"},["83"],[],{"main":"84"},["85"],[],{"main":"86"},["87"],[],"error",{"level":"25","tags":"26","timestamp":1767643102977,"context":"27","functionality":"28","name":"29","node":"30","messages":"31","httpCode":"32","message":"33","stack":"34"},"","write","/data/web-apptlas/presupuestosexcelcertify/","data",{},{"info":"70","operation":"71","fileName":"72","dataPropertyName":"73","options":"88"},[1568,288],["89"],["90"],{"previousNode":"14"},["91"],{"previousNode":"18"},["92"],{"previousNode":"17"},["93"],{"previousNode":"16"},["94"],{"previousNode":"15","previousNodeOutput":0,"previousNodeRun":0},{},["95"],["96"],["97"],["98"],["99"],["100"],{"json":"101","binary":"102","pairedItem":"103"},{"json":"104","pairedItem":"105"},{"json":"106","pairedItem":"107"},{"json":"108","binary":"109","pairedItem":"110"},{"json":"111","binary":"112","pairedItem":"113"},{"json":"101","binary":"102","pairedItem":"114"},{"html_final":"115","id_unico":27675,"fecha_validez":"116"},{"data":"117"},{"item":0},{"headers":"118","params":"119","query":"120","body":"121","webhookUrl":"122","executionMode":"123"},{"item":0},{"html_final":"115","id_unico":27675,"fecha_validez":"116"},{"item":0},{"html_final":"115","id_unico":27675,"fecha_validez":"116"},{"data":"124"},{"item":0},{"html_final":"115","id_unico":27675,"fecha_validez":"116"},{"data":"125"},{"item":0},{"item":0},"\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Presupuesto Formal</title>\n<style>\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap');\nbody {\n    font-family: 'Inter', Helvetica, Arial, sans-serif;\n    color: #374151;\n    line-height: 1.4;\n    margin: 0;\n    padding: 40px;\n    zoom: 0.8;\n}\n\n/* Header Compacto */\n.legal-top { font-size: 0.7rem; color: #9ca3af; text-transform: uppercase;\nletter-spacing: 0.5px; margin-bottom: 20px; border-bottom: 1px dashed #e5e7eb; padding-bottom: 5px; text-align: center; font-weight: 600; }\n.header { display: flex; justify-content: space-between;\nalign-items: center; border-bottom: 2px solid #10b981; padding-bottom: 20px; margin-bottom: 30px; }\n\n/* Logos */\n.logos-container { display: flex; flex-direction: column; gap: 10px; }\n.main-logo { height: 55px; object-fit: contain; display: block; }\n.partner-logos { display: flex; gap: 15px; align-items: center; }\n.partner-img { height: 22px; filter: grayscale(100%); opacity: 0.6; }\n\n.meta-info { text-align: right; font-size: 0.85rem; color: #6b7280; }\n.meta-info strong { color: #111827; }\n\nh1 { color: #111827; font-size: 24px; margin: 0 0 5px 0; font-weight: 800; }\nh2 { color: #111827; font-size: 15px;\nfont-weight: 700; border-bottom: 1px solid #e5e7eb; padding-bottom: 5px; margin-top: 25px; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 0.5px; }\n\n.client-info { display: flex;\njustify-content: space-between; margin-bottom: 25px; background-color: #f9fafb; padding: 15px; border-radius: 8px; border: 1px solid #f3f4f6; }\n.client-col { width: 48%; }\n.client-col p { margin: 3px 0; font-size: 0.9rem; }\n.label { font-weight: 600; color: #4b5563; display: inline-block; width: 90px; }\n\ntable { width: 100%; border-collapse: collapse; margin-top: 10px; }\nth { background: #111827; color: #ffffff; padding: 8px 15px; text-align: left;\nfont-weight: 600; font-size: 0.8rem; }\ntd { padding: 12px 15px; border-bottom: 1px solid #e5e7eb; vertical-align: middle; }\n.plan-desc strong { font-size: 1rem; color: #111827; }\n.plan-desc span { font-size: 0.8rem; color: #6b7280; display: block; }\n.price-col { text-align: right; font-weight: 700; color: #111827;\nfont-size: 1rem; white-space: nowrap; background-color: #f0fdf4; }\n\n.courses-box { background: #fff; padding: 12px; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 0.9rem;\ncolor: #374151; line-height: 1.6; }\n.change-warning { display: inline-block; font-size: 0.85rem; color: #16a34a; font-weight: 600; font-style: italic; margin-left: 5px; }\n\n.terms { margin-top: 25px; font-size: 0.75rem; color: #4b5563; }\n.terms ul { padding-left: 18px; margin-bottom: 0; }\n.terms li { margin-bottom: 4px; }\n\n.footer { margin-top: 40px; text-align: center; font-size: 0.7rem; color: #9ca3af; border-top: 1px solid #f3f4f6; padding-top: 15px; }\n.highlight { color: #10b981; font-weight: 600; }\n</style>\n</head>\n<body>\n\n<div class=\"legal-top\">Presupuesto válido para emitir Orden de Compra a favor de Excel Certify - Integralitas S.A.S según corresponda</div>\n\n<div class=\"header\">\n  <div class=\"logos-container\">\n    \n    <img src=\"data:image/png;base64,[encoded data, 14432 characters]\" alt=\"Excel Certify\" class=\"main-logo\">\n    \n    <div class=\"partner-logos\">\n        <img src=\"data:image/png;base64,[encoded data, 43856 characters]\" alt=\"Microsoft Partner\" class=\"partner-img\">\n        <img src=\"data:image/png;base64,[encoded data, 18680 characters]\" alt=\"Google Partner\" class=\"partner-img\">\n    </div>\n  </div>\n\n  <div class=\"meta-info\">\n    <p><strong>Fecha de Emisión:</strong> 05/01/2026</p>\n    <p><strong>Válido hasta:</strong> <span class=\"highlight\">04/02/2026</span></p>\n    <p><strong>Presupuesto N°:</strong> PRE-26-27675</p>\n  </div>\n</div>\n\n<h1>Presupuesto de Capacitación</h1>\n<p style=\"color: #6b7280; margin-top: 0; font-size: 0.9rem;\">Propuesta profesional con tarifa congelada Enero 2025.</p>\n\n<div class=\"client-info\">\n  <div class=\"client-col\">\n    <p style=\"text-transform: uppercase; font-weight:bold; font-size: 0.75rem; color:#9ca3af; margin-bottom:5px;\">Cliente</p>\n    <p><span class=\"label\">Empresa:</span> <strong>Colussi</strong></p>\n    <p><span class=\"label\">CUIT / ID:</span> 30718566475</p>\n  </div>\n  <div class=\"client-col\">\n    <p style=\"text-transform: uppercase; font-weight:bold; font-size: 0.75rem; color:#9ca3af; margin-bottom:5px;\">Contacto</p>\n    <p><span class=\"label\">Atención a:</span> Victor</p>\n    <p><span class=\"label\">Email:</span> info@excelcertify.com</p>\n  </div>\n</div>\n\n<h2>Detalle de la Inversión</h2>\n<table>\n  <thead><tr><th width=\"65%\">Descripción del Servicio</th><th width=\"35%\" style=\"text-align: right;\">Inversión Total</th></tr></thead>\n  <tbody>\n    <tr>\n      <td class=\"plan-desc\">\n        <strong>Curso Individual</strong>\n        <span>Modalidad Online en Vivo. Incluye certificación oficial.</span>\n      </td>\n      <td class=\"price-col\">\n        $980.000 s / IVA\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n<h2>Tecnologías Incluidas</h2>\n<p style=\"margin-bottom: 8px; font-size: 0.9rem;\">El presente presupuesto contempla la capacitación en las siguientes áreas seleccionadas:</p>\n\n<div class=\"courses-box\">\n  • Inteligencia Artificial y Automatización\n  <span class=\"change-warning\">/ Los cursos pueden ser cambiados hasta 30 días antes de la capacitación efectiva.</span>\n</div>\n\n<div class=\"terms\">\n  <h3 style=\"margin-top: 0; font-size: 0.9rem; font-weight: 700; color: #111827; margin-bottom: 8px;\">Términos y Condiciones Comerciales</h3>\n  <ul>\n    <li><strong>Validez de la Oferta:</strong> Precios congelados (tarifa Enero 2025) válidos para ejecución hasta Junio 2026, confirmando reserva en Enero.</li>\n    <li><strong>Forma de Pago:</strong> Transferencia bancaria o eCheq a favor de Integralitas S.A.S.</li>\n    <li><strong>Facturación:</strong> Se emitirá Factura A o C tras la confirmación. Con Factura A, el precio promocional está sujeto a un recargo del 16% + IVA.</li>\n    <li><strong>Confidencialidad:</strong> Documento confidencial para uso exclusivo de la empresa destinataria.</li>\n  </ul>\n</div>\n\n<div class=\"footer\">\n  <p><strong>Excel Certify</strong> - Integralitas S.A.S</p>\n  <p>Microsoft Solutions Partner & Google Partner</p>\n  <p>www.excelcertify.com | info@excelcertify.com</p>\n</div>\n\n</body>\n</html>","04/02/2026",{"mimeType":"126","fileType":"127","fileExtension":"127","data":"128","fileName":"129","fileSize":"130"},{"host":"131","user-agent":"132","content-length":"133","accept":"134","accept-encoding":"135","accept-language":"136","cache-control":"137","content-type":"138","origin":"139","pragma":"137","priority":"140","referer":"141","sec-fetch-dest":"142","sec-fetch-mode":"143","sec-fetch-site":"144","x-forwarded-for":"145","x-forwarded-host":"131","x-forwarded-port":"146","x-forwarded-proto":"147","x-forwarded-server":"148","x-real-ip":"145"},{},{},{"nombre_reserva":"149","empresa":"150","cuit":"151","email_responsable":"152","telefono_responsable":"153","plan_detalle":"154","cursos[]":"155","cursos":"155"},"https://n8n.apptlas.cloud/webhook-test/generar-presupuesto-pro","test",{"mimeType":"126","fileType":"127","fileExtension":"127","data":"128","fileName":"156","fileSize":"130"},{"mimeType":"126","fileType":"127","fileExtension":"127","data":"128","fileName":"129","fileSize":"130"},"application/pdf","pdf","[encoded data, 439636 characters]","Presupuesto Colussi 27675.pdf","330 kB","n8n.apptlas.cloud","Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1","304","*/*","gzip, deflate, br, zstd","es-ES,es;q=0.9","no-cache","application/json","https://excelcertify.com","u=1, i","https://excelcertify.com/","empty","cors","cross-site","186.122.104.167","443","https","6a03186a9812","Victor","Colussi","30718566475","info@excelcertify.com","+543624810831","Curso Individual - $980.000","Inteligencia Artificial y Automatización","result.pdf"]


