Files
cruce-cuentas-glm-centralizado/workflows_n8n/Portal de Verificación de Nómina República Dominicana - Envío de Reporte.json
T

348 lines
28 KiB
JSON

{
"name": "Portal de Verificación de Nómina República Dominicana - Envío de Reporte",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "cruce-cuentas-rd-marcar-resuelto",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
784,
592
],
"id": "a022c055-76c6-42a4-a129-7f2c5bf62ed3",
"name": "Webhook Marcar Resuelto",
"webhookId": "fa25ffc4-8acd-4033-b585-95dc2a9fb753"
},
{
"parameters": {
"jsCode": "const body = $input.first().json.body || $input.first().json || {};\n\nfunction clean(value) {\n return String(value ?? '').replace(/\\s+/g, ' ').trim();\n}\n\nconst reportId = clean(body.reportId || body.id);\nconst comentarioResolucion = clean(body.comentarioResolucion || body.comentario || '');\nconst resueltoPorNombre = clean(body.resueltoPorNombre || body.userName || 'Usuario GLM');\nconst resueltoPorEmail = clean(body.resueltoPorEmail || body.userEmail || '');\n\nconst errors = [];\n\nif (!reportId) {\n errors.push('No se recibió el ID del reporte.');\n}\n\nif (!comentarioResolucion) {\n errors.push('Debe indicar un comentario de resolución.');\n}\n\nif (comentarioResolucion.length < 10) {\n errors.push('El comentario de resolución debe ser más descriptivo.');\n}\n\nif (errors.length > 0) {\n return [\n {\n json: {\n ok: false,\n stage: 'validacion_resolucion',\n errors,\n reportId,\n },\n },\n ];\n}\n\nreturn [\n {\n json: {\n ok: true,\n stage: 'resolucion_validada',\n reportId,\n comentarioResolucion,\n resueltoPorNombre,\n resueltoPorEmail,\n resolvedAt: new Date().toISOString(),\n },\n },\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
992,
592
],
"id": "565fac7c-9509-4a0b-b0d3-eb5ddc428200",
"name": "Validar resolución"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "c89884c6-de96-4b08-bd20-54644bb95bc7",
"leftValue": "={{ $json.ok }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
1200,
592
],
"id": "c97e1b04-44d4-418a-af76-3c4372302060",
"name": "¿Solicitud válida?"
},
{
"parameters": {
"method": "PATCH",
"url": "={{ 'https://dbit.digitalcompass.agency/rest/v1/cruces_cuentas_gt_reportes?id=eq.' + encodeURIComponent($json.reportId) + '&country=eq.RD' }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
},
{
"name": "Authorization",
"value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
},
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Prefer",
"value": "return=representation"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{\n {\n estado: 'resuelto',\n resuelto_por_nombre: $json.resueltoPorNombre,\n resuelto_por_email: $json.resueltoPorEmail,\n resuelto_en: $json.resolvedAt,\n comentario_resolucion: $json.comentarioResolucion,\n updated_at: $json.resolvedAt\n }\n}}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
1536,
480
],
"id": "79da760e-34a3-411e-9fb1-8262ed64d0f8",
"name": "Actualizar reporte Supabase"
},
{
"parameters": {
"jsCode": "const input = $input.first().json || {};\nconst report = Array.isArray(input) ? input[0] : input;\n\nif (!report || !report.id) {\n throw new Error(\n 'No se encontró un reporte de República Dominicana con el ID recibido.'\n );\n}\n\nif (String(report.country || '').toUpperCase() !== 'RD') {\n throw new Error(\n 'El reporte localizado no pertenece a República Dominicana.'\n );\n}\nconst original = $('Validar resolución').first().json || {};\n\n\nfunction escapeHtml(value) {\n return String(value ?? '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n}\n\nfunction numberValue(value) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\nconst periodo = report.period_label || 'Período no especificado';\nconst reportUrl = report.report_url || '';\n\nconst discrepancias = numberValue(report.discrepancias);\nconst bancoSinNomina = numberValue(report.banco_sin_nomina);\nconst bancoSinBamboo = numberValue(report.banco_sin_bamboo);\nconst nominaSinCuenta = numberValue(report.nomina_sin_cuenta);\n\nconst resolvedAt = original.resolvedAt || new Date().toISOString();\n\nconst resolvedDateLabel = new Date(resolvedAt).toLocaleString('es-DO', {\n timeZone: 'America/Santo_Domingo',\n dateStyle: 'long',\n timeStyle: 'short',\n});\n\nconst resolvedByName =\n original.resueltoPorNombre || 'Usuario GLM';\n\nconst resolvedByEmail =\n original.resueltoPorEmail || '';\n\nconst resolutionComment =\n original.comentarioResolucion || 'Sin comentario registrado.';\n\nconst logoUrl =\n 'https://dbit.digitalcompass.agency/storage/v1/object/public/public-assets/GLM_completo.png';\n\nconst flagUrl =\n 'https://dbit.digitalcompass.agency/storage/v1/object/public/public-assets/Flag_of_the_Dominican_Republic.svg.webp';\n\nconst subject =\n `Reporte resuelto - Cruce de Cuentas República Dominicana - ${periodo}`;\n\nconst textBody = `\nHola equipo,\n\nSe marcó como resuelto un reporte de Cruce de Cuentas República Dominicana.\n\nPeríodo:\n${periodo}\n\nResuelto por:\n${resolvedByName}${resolvedByEmail ? ` (${resolvedByEmail})` : ''}\n\nFecha/hora:\n${resolvedDateLabel}\n\nResumen:\n- Discrepancias: ${discrepancias}\n- Banco sin nómina: ${bancoSinNomina}\n- Banco sin Bamboo: ${bancoSinBamboo}\n- Nómina sin cuenta: ${nominaSinCuenta}\n\nComentario:\n${resolutionComment}\n\nGoogle Sheet:\n${reportUrl || 'No disponible'}\n\nSaludos,\nPortal Cruce de Cuentas GLM\n`.trim();\n\nconst htmlBody = `\n<!doctype html>\n<html lang=\"es\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width\">\n <title>${escapeHtml(subject)}</title>\n</head>\n\n<body style=\"\n margin:0;\n padding:0;\n background:#F5F5F5;\n font-family:Arial, Helvetica, sans-serif;\n color:#4A4A4A;\n\">\n\n <table\n role=\"presentation\"\n width=\"100%\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n style=\"background:#F5F5F5;padding:24px 12px;\"\n >\n <tr>\n <td align=\"center\">\n\n <table\n role=\"presentation\"\n width=\"640\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n style=\"\n width:100%;\n max-width:640px;\n background:#FFFFFF;\n border:1px solid #D0D0D0;\n border-collapse:separate;\n \"\n >\n\n <tr>\n <td style=\"padding:28px 32px 20px 32px;\">\n <img\n src=\"${escapeHtml(logoUrl)}\"\n width=\"230\"\n alt=\"GomezLee Marketing\"\n style=\"\n display:block;\n width:230px;\n max-width:100%;\n height:auto;\n border:0;\n \"\n >\n </td>\n </tr>\n\n <tr>\n <td style=\"\n height:4px;\n background:#6CC24A;\n font-size:0;\n line-height:0;\n \">&nbsp;</td>\n </tr>\n\n <tr>\n <td style=\"padding:28px 32px 8px 32px;\">\n <div style=\"\n color:#6CC24A;\n font-size:12px;\n font-weight:bold;\n letter-spacing:0.8px;\n text-transform:uppercase;\n margin-bottom:8px;\n \">\n Cruce de Cuentas República Dominicana\n <img src=\"${escapeHtml(flagUrl)}\" alt=\"Bandera de República Dominicana\" width=\"28\" style=\"vertical-align:middle;margin-left:8px;border:1px solid #D0D0D0;\">\n </div>\n\n <h1 style=\"\n margin:0;\n color:#4F758B;\n font-size:25px;\n line-height:1.25;\n font-weight:700;\n \">\n Reporte marcado como resuelto\n </h1>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:12px 32px 8px 32px;\">\n <p style=\"\n margin:0 0 16px 0;\n font-size:15px;\n line-height:1.6;\n \">\n Hola equipo,\n </p>\n\n <p style=\"\n margin:0;\n font-size:15px;\n line-height:1.6;\n \">\n El siguiente reporte fue revisado y marcado como\n <strong style=\"color:#4F758B;\">resuelto</strong>.\n </p>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:20px 32px 8px 32px;\">\n <table\n role=\"presentation\"\n width=\"100%\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n style=\"\n border-collapse:collapse;\n border:1px solid #D0D0D0;\n \"\n >\n <tr>\n <td style=\"\n width:34%;\n padding:11px 14px;\n background:#EEF6E8;\n color:#4F758B;\n font-size:13px;\n font-weight:bold;\n border-bottom:1px solid #D0D0D0;\n \">\n Período\n </td>\n\n <td style=\"\n padding:11px 14px;\n background:#FFFFFF;\n font-size:13px;\n border-bottom:1px solid #D0D0D0;\n \">\n ${escapeHtml(periodo)}\n </td>\n </tr>\n\n <tr>\n <td style=\"\n padding:11px 14px;\n background:#EEF6E8;\n color:#4F758B;\n font-size:13px;\n font-weight:bold;\n border-bottom:1px solid #D0D0D0;\n \">\n Resuelto por\n </td>\n\n <td style=\"\n padding:11px 14px;\n background:#FFFFFF;\n font-size:13px;\n border-bottom:1px solid #D0D0D0;\n \">\n ${escapeHtml(resolvedByName)}\n ${\n resolvedByEmail\n ? `<br><span style=\"color:#6B8FA3;\">${escapeHtml(resolvedByEmail)}</span>`\n : ''\n }\n </td>\n </tr>\n\n <tr>\n <td style=\"\n padding:11px 14px;\n background:#EEF6E8;\n color:#4F758B;\n font-size:13px;\n font-weight:bold;\n \">\n Fecha y hora\n </td>\n\n <td style=\"\n padding:11px 14px;\n background:#FFFFFF;\n font-size:13px;\n \">\n ${escapeHtml(resolvedDateLabel)}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:22px 32px 8px 32px;\">\n <div style=\"\n color:#4F758B;\n font-size:15px;\n font-weight:bold;\n border-bottom:2px solid #6CC24A;\n padding-bottom:7px;\n \">\n Resumen del reporte\n </div>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:12px 32px 8px 32px;\">\n <table\n role=\"presentation\"\n width=\"100%\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n style=\"border-collapse:collapse;\"\n >\n <tr>\n <td style=\"\n width:25%;\n padding:12px 8px;\n text-align:center;\n border:1px solid #D0D0D0;\n background:#FFFFFF;\n \">\n <div style=\"\n color:#4F758B;\n font-size:22px;\n font-weight:bold;\n \">\n ${discrepancias}\n </div>\n\n <div style=\"\n color:#6B8FA3;\n font-size:11px;\n margin-top:4px;\n \">\n Discrepancias\n </div>\n </td>\n\n <td style=\"\n width:25%;\n padding:12px 8px;\n text-align:center;\n border:1px solid #D0D0D0;\n background:#FFFFFF;\n \">\n <div style=\"\n color:#4F758B;\n font-size:22px;\n font-weight:bold;\n \">\n ${bancoSinBamboo}\n </div>\n\n <div style=\"\n color:#6B8FA3;\n font-size:11px;\n margin-top:4px;\n \">\n Banco sin Bamboo\n </div>\n </td>\n\n <td style=\"\n width:25%;\n padding:12px 8px;\n text-align:center;\n border:1px solid #D0D0D0;\n background:#FFFFFF;\n \">\n <div style=\"\n color:#4F758B;\n font-size:22px;\n font-weight:bold;\n \">\n ${bancoSinNomina}\n </div>\n\n <div style=\"\n color:#6B8FA3;\n font-size:11px;\n margin-top:4px;\n \">\n Banco sin nómina\n </div>\n </td>\n\n <td style=\"\n width:25%;\n padding:12px 8px;\n text-align:center;\n border:1px solid #D0D0D0;\n background:#FFFFFF;\n \">\n <div style=\"\n color:#4F758B;\n font-size:22px;\n font-weight:bold;\n \">\n ${nominaSinCuenta}\n </div>\n\n <div style=\"\n color:#6B8FA3;\n font-size:11px;\n margin-top:4px;\n \">\n Nómina sin cuenta\n </div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:22px 32px 8px 32px;\">\n <div style=\"\n color:#4F758B;\n font-size:15px;\n font-weight:bold;\n border-bottom:2px solid #6CC24A;\n padding-bottom:7px;\n \">\n Comentario de resolución\n </div>\n </td>\n </tr>\n\n <tr>\n <td style=\"padding:12px 32px 8px 32px;\">\n <div style=\"\n padding:16px 18px;\n background:#D6E8F4;\n border:1px solid #D0D0D0;\n color:#4A4A4A;\n font-size:14px;\n line-height:1.6;\n \">\n ${escapeHtml(resolutionComment).replace(/\\n/g, '<br>')}\n </div>\n </td>\n </tr>\n\n ${\n reportUrl\n ? `\n <tr>\n <td align=\"center\" style=\"padding:26px 32px 30px 32px;\">\n <a\n href=\"${escapeHtml(reportUrl)}\"\n target=\"_blank\"\n style=\"\n display:inline-block;\n padding:12px 22px;\n background:#4F758B;\n color:#FFFFFF;\n text-decoration:none;\n font-size:14px;\n font-weight:bold;\n border-bottom:4px solid #6CC24A;\n \"\n >\n Abrir Google Sheet\n </a>\n </td>\n </tr>\n `\n : ''\n }\n\n <tr>\n <td style=\"\n padding:18px 32px;\n border-top:1px solid #D0D0D0;\n color:#6B8FA3;\n font-size:11px;\n line-height:1.5;\n \">\n Mensaje automático del Portal Cruce de Cuentas GLM.\n </td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n`.trim();\n\nreturn [\n {\n json: {\n to: 'nlaureano@gomezleemarketing.com',\n cc: [\n 'iaracena@gomezleemarketing.com',\n 'jgomez@gomezleemarketing.com',\n 'mgomez@gomezleemarketing.com',\n 'vparamo@gomezleemarketing.com',\n 'ymadera@gomezleemarketing.com',\n 'adminregional@gomezleemarketing.com',\n ].join(','),\n subject,\n textBody,\n htmlBody,\n report,\n resolution: original,\n },\n },\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1744,
480
],
"id": "02463a59-7266-4147-82fd-0ce5d3b3a266",
"name": "Preparar correo equipo RD"
},
{
"parameters": {
"sendTo": "={{$json.to}}",
"subject": "={{$json.subject}}",
"message": "={{ $json.htmlBody }}",
"options": {
"appendAttribution": false,
"ccList": "={{ $json.cc }}"
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1952,
480
],
"id": "2c04b8bb-d02d-4747-be94-cb57976c75c7",
"name": "Enviar correo equipo RD",
"webhookId": "ad819366-b163-4e58-86de-a7cd158630b1",
"credentials": {
"gmailOAuth2": {
"id": "UDcO1FLJqA453V2D",
"name": "Gmail account 3"
}
}
},
{
"parameters": {
"jsCode": "const original = $('Validar resolución').first().json || {};\nconst updatedResponse = $('Actualizar reporte Supabase').first().json || {};\nconst updatedReport = Array.isArray(updatedResponse) ? updatedResponse[0] : updatedResponse;\n\nreturn [\n {\n json: {\n ok: true,\n stage: 'reporte_resuelto',\n message: 'Reporte marcado como resuelto correctamente.',\n report: {\n id: original.reportId,\n estado: 'resuelto',\n estadoLabel: 'RESUELTO',\n country: 'RD',\n countryName: 'República Dominicana',\n resueltoPorNombre: original.resueltoPorNombre,\n resueltoPorEmail: original.resueltoPorEmail,\n resueltoEn: original.resolvedAt,\n comentarioResolucion: original.comentarioResolucion,\n reportUrl: updatedReport.report_url || '',\n },\n },\n },\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
2160,
480
],
"id": "9764074b-94f0-4da5-a25d-b43a2d19e242",
"name": "Preparar respuesta resuelto"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ $json }}",
"options": {
"responseCode": 200,
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Methods",
"value": "GET,POST,OPTIONS"
},
{
"name": "Access-Control-Allow-Headers",
"value": "Content-Type, Authorization"
}
]
}
}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
2368,
480
],
"id": "5ad5c184-189e-4288-b952-3914998c199c",
"name": "Responder resuelto app"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ $json }}",
"options": {
"responseCode": 400,
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Methods",
"value": "GET,POST,OPTIONS"
},
{
"name": "Access-Control-Allow-Headers",
"value": "Content-Type, Authorization"
}
]
}
}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
1408,
688
],
"id": "793a6fb2-2075-4fe3-8607-aeb5773750d4",
"name": "Responder error resolución"
},
{
"parameters": {
"content": "# ✅ CIERRE DE REPORTE — REPÚBLICA DOMINICANA\n\nRecibe desde el Portal de Verificación de Nóminas la solicitud para marcar un reporte de República Dominicana como resuelto.\n\n## Validación inicial\n\nEl Webhook recibe la información enviada por la aplicación y valida datos como:\n\n- Identificador del reporte.\n- Usuario que realizó el cierre.\n- Estado solicitado.\n- Comentario o detalle de resolución.\n- Datos necesarios para localizar el registro en Supabase.\n\nLa solicitud solamente continúa cuando contiene información válida y suficiente.\n\n## Actualización del reporte\n\nCuando la solicitud es correcta:\n\n1. Localiza el reporte correspondiente en Supabase.\n2. Cambia su estado a RESUELTO.\n3. Registra quién realizó la resolución.\n4. Guarda la fecha y hora del cierre.\n5. Conserva el comentario o información de seguimiento disponible.\n\nSupabase es la fuente oficial del estado del reporte dentro del portal.\n\n## Notificación al equipo de República Dominicana\n\nDespués de actualizar el registro:\n\n1. Se prepara un correo para el equipo responsable de República Dominicana.\n2. Se incluyen los datos principales del reporte.\n3. Se informa que el caso fue marcado como resuelto.\n4. Se identifica al usuario que realizó el cierre.\n5. Se envía el correo mediante Gmail.\n\nLa notificación permite que el equipo conozca el cambio sin tener que revisar manualmente el portal.\n\n## Respuesta a la aplicación\n\nCuando el proceso termina correctamente:\n\n- Se construye una respuesta de éxito.\n- Se confirma que el reporte fue actualizado.\n- Se devuelve el nuevo estado a la aplicación.\n- El portal puede actualizar inmediatamente su interfaz.\n\n## Ruta de error\n\nCuando la solicitud es inválida:\n\n- No se modifica Supabase.\n- No se envía el correo al equipo de República Dominicana.\n- Se devuelve una respuesta de error a la aplicación.\n- Se informa que faltan datos o que la solicitud no pudo procesarse.\n\n## Reglas\n\n- No marcar un reporte como resuelto sin un identificador válido.\n- No enviar la notificación antes de confirmar la actualización en Supabase.\n- No declarar éxito cuando la base de datos no fue actualizada.\n- Toda respuesta del Webhook debe cerrarse correctamente para evitar solicitudes abiertas.\n- La ruta de error debe terminar sin realizar cambios parciales.",
"height": 1264,
"width": 2624,
"color": "#28765F"
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
0
],
"id": "45a0e3c4-7cd3-4a7b-9cb5-93bf0e4dbb99",
"name": "Sticky Note"
}
],
"pinData": {},
"connections": {
"Webhook Marcar Resuelto": {
"main": [
[
{
"node": "Validar resolución",
"type": "main",
"index": 0
}
]
]
},
"Validar resolución": {
"main": [
[
{
"node": "¿Solicitud válida?",
"type": "main",
"index": 0
}
]
]
},
"¿Solicitud válida?": {
"main": [
[
{
"node": "Actualizar reporte Supabase",
"type": "main",
"index": 0
}
],
[
{
"node": "Responder error resolución",
"type": "main",
"index": 0
}
]
]
},
"Actualizar reporte Supabase": {
"main": [
[
{
"node": "Preparar correo equipo RD",
"type": "main",
"index": 0
}
]
]
},
"Preparar respuesta resuelto": {
"main": [
[
{
"node": "Responder resuelto app",
"type": "main",
"index": 0
}
]
]
},
"Preparar correo equipo RD": {
"main": [
[
{
"node": "Enviar correo equipo RD",
"type": "main",
"index": 0
}
]
]
},
"Enviar correo equipo RD": {
"main": [
[
{
"node": "Preparar respuesta resuelto",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate"
},
"versionId": "d6f26eac-3b3b-4bfa-909d-b9cfcfaf0c7f",
"meta": {
"instanceId": "b4b77b17af092830e794eef639ce2f6d7daccf7eddc075060b03b3b6545aac70"
},
"id": "",
"tags": []
}