From b5f3f1c8c95fedda927b447dc66324eadf6ee2ec Mon Sep 17 00:00:00 2001 From: Isaac_Aracena Date: Sun, 26 Jul 2026 04:01:15 +0000 Subject: [PATCH] Update backup: Finiquitos GT - Procesar 1 empleado --- finiquitos-gt-procesar-1-empleado.json | 308 +++++++++++++++++-------- 1 file changed, 212 insertions(+), 96 deletions(-) diff --git a/finiquitos-gt-procesar-1-empleado.json b/finiquitos-gt-procesar-1-empleado.json index 33f8021..3df2af1 100644 --- a/finiquitos-gt-procesar-1-empleado.json +++ b/finiquitos-gt-procesar-1-empleado.json @@ -1,5 +1,5 @@ { - "updatedAt": "2026-07-16T16:20:47.768Z", + "updatedAt": "2026-07-25T17:32:19.265Z", "createdAt": "2026-07-10T14:34:52.976Z", "id": "KBV3AEEpys8KqPLX", "name": "Finiquitos GT - Procesar 1 empleado", @@ -14,8 +14,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 656, - 16 + 1568, + 48 ], "id": "5b002dd7-d1af-43e0-9902-f6fc8fec1081", "name": "Identificar candidatos DPI" @@ -27,8 +27,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 864, - 16 + 1776, + 48 ], "id": "eb8977c1-3a2e-4a4a-9e93-656b10155b20", "name": "Seleccionar DPI único" @@ -43,8 +43,8 @@ "type": "n8n-nodes-base.bambooHr", "typeVersion": 1, "position": [ - 1088, - 16 + 2000, + 48 ], "id": "eae54fc8-1cdb-4d29-b2a8-cb6c315e4238", "name": "BambooHR - Descargar DPI Anderson", @@ -63,8 +63,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1296, - 16 + 2208, + 48 ], "id": "9a11b238-a0fa-408e-9427-16cfb83e6059", "name": "Validar descarga DPI" @@ -74,9 +74,9 @@ "resource": "document", "modelId": { "__rl": true, - "value": "models/gemini-2.5-pro", + "value": "models/gemini-2.5-flash-lite", "mode": "list", - "cachedResultName": "models/gemini-2.5-pro" + "cachedResultName": "models/gemini-2.5-flash-lite" }, "text": "Analiza exclusivamente el Documento Personal de Identificación de Guatemala\nincluido en este PDF.\n\nEl documento puede contener el frente y el reverso del DPI.\n\nDevuelve ÚNICAMENTE un objeto JSON válido.\nNo utilices Markdown.\nNo incluyas explicaciones antes ni después del JSON.\nNo envuelvas la respuesta en bloques ```json.\nNo inventes información.\nCuando un dato no sea visible o no pueda determinarse con seguridad, utiliza null.\n\nUsa exactamente esta estructura:\n\n{\n \"documentoEsDpiGuatemala\": true,\n \"tieneFrente\": true,\n \"tieneReverso\": true,\n \"nombreCompleto\": \"\",\n \"nombres\": \"\",\n \"apellidos\": \"\",\n \"numeroDpi\": \"\",\n \"nacionalidadCodigo\": \"\",\n \"sexo\": \"\",\n \"fechaNacimiento\": \"\",\n \"lugarNacimientoMunicipio\": \"\",\n \"lugarNacimientoDepartamento\": \"\",\n \"vecindadMunicipio\": \"\",\n \"vecindadDepartamento\": \"\",\n \"estadoCivil\": \"\",\n \"fechaEmision\": \"\",\n \"fechaVencimiento\": \"\",\n \"municipioExpedicion\": null,\n \"departamentoExpedicion\": null,\n \"observaciones\": []\n}\n\nReglas de extracción:\n\n1. numeroDpi:\n - Devuelve únicamente los 13 dígitos.\n - No incluyas espacios, guiones ni otros caracteres.\n\n2. fechaNacimiento, fechaEmision y fechaVencimiento:\n - Usa formato YYYY-MM-DD.\n - Si no es legible, devuelve null.\n\n3. sexo:\n - Usa exclusivamente MASCULINO, FEMENINO o null.\n\n4. estadoCivil:\n - Usa el valor visible en el documento, en mayúsculas.\n - Ejemplos: CASADO, SOLTERO.\n\n5. nacionalidadCodigo:\n - Conserva el código impreso en el documento, por ejemplo GTM.\n\n6. lugarNacimiento:\n - Extrae únicamente la sección titulada LUGAR DE NACIMIENTO.\n\n7. vecindad:\n - Extrae únicamente la sección titulada VECINDAD.\n\n8. municipioExpedicion y departamentoExpedicion:\n - No confundas lugar de nacimiento ni vecindad con lugar de expedición.\n - Si el documento no contiene explícitamente el lugar de expedición,\n devuelve null.\n\n9. tieneFrente y tieneReverso:\n - Indica true solo cuando cada lado realmente esté visible.\n\n10. observaciones:\n - Incluye advertencias de legibilidad, campos dudosos o inconsistencias.\n - Si no hay observaciones, devuelve un arreglo vacío.", "inputType": "binary", @@ -85,15 +85,15 @@ "type": "@n8n/n8n-nodes-langchain.googleGemini", "typeVersion": 1.2, "position": [ - 1504, - 16 + 2416, + 48 ], "id": "19e4c7a6-286e-4e72-8fc5-72e222cd78e4", "name": "Gemini - Extraer datos DPI", "credentials": { "googlePalmApi": { - "id": "jvsXYwL6IOoY2DBU", - "name": "Isaac - Gemini Api Pago" + "id": "6Jdcd9FONxG35YuJ", + "name": "Isaac - Gemini Api Gratis" } } }, @@ -104,8 +104,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1728, - 16 + 2640, + 48 ], "id": "22a89eb1-5167-42b8-9110-e18a03504fe4", "name": "Normalizar y validar datos DPI" @@ -126,8 +126,8 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 2480, - 32 + 3392, + 64 ], "id": "0c831877-7bca-4dd3-983c-9d1c8f23a51e", "name": "Merge" @@ -139,8 +139,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 2688, - 32 + 3600, + 64 ], "id": "bcef7f92-dbba-4bd4-9982-22d2581d196e", "name": "Preparar DPI PDF para Drive" @@ -163,8 +163,8 @@ "type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [ - 2896, - 32 + 3808, + 64 ], "id": "906e1835-8214-4162-b8ef-cc7edac4935c", "name": "Google Drive - Subir DPI PDF", @@ -182,8 +182,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3104, - 32 + 4016, + 64 ], "id": "7da435cd-e674-48cc-96b8-22e0957badfc", "name": "Validar DPI PDF subido" @@ -202,7 +202,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3664, + 6112, -64 ], "id": "d96b3b82-2c7d-4ba5-be52-ba04c4a0f006", @@ -228,7 +228,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 4080, + 6528, 32 ], "id": "0e60792f-c844-457c-a222-ed71df39f2f9", @@ -254,7 +254,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3904, + 6352, -288 ], "id": "c26696c1-2330-4d2c-bec0-50836dbfd0ec", @@ -280,7 +280,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3840, + 6288, 320 ], "id": "e620258a-47ae-46cc-b4bf-f7d694d5c293", @@ -561,8 +561,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 256, - 16 + 1168, + 48 ], "id": "931249ae-3c90-4b94-b066-e3f520b362e0", "name": "BambooHR - Datos completos", @@ -583,8 +583,8 @@ "type": "n8n-nodes-base.bambooHr", "typeVersion": 1, "position": [ - 464, - 16 + 1376, + 48 ], "id": "09694117-c52e-4939-a156-04a170c163ef", "name": "BambooHR - Listar documentos", @@ -615,8 +615,8 @@ "type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [ - 1936, - -128 + 2848, + -96 ], "id": "591938b6-e98e-4bfa-b549-407cdcbaf365", "name": "Google Drive - Crear carpeta empleado", @@ -634,7 +634,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3424, + 5872, 32 ], "id": "471a42bd-85d1-4a1c-95fd-549995b30476", @@ -657,7 +657,7 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 4576, + 7024, -16 ], "id": "7f9cede5-f86f-4ee2-8307-035c40d99e2c", @@ -670,7 +670,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 4848, + 7296, 16 ], "id": "9eac5b6e-84a4-458e-b1fa-f1c3b556b7a0", @@ -690,7 +690,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3840, + 6288, 32 ], "id": "6364ebf4-a990-4aaf-89cb-6e167faac977", @@ -716,7 +716,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3696, + 6144, -288 ], "id": "4c9098bc-52e2-4b32-84ec-955b7b63239e", @@ -742,7 +742,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3632, + 6080, 320 ], "id": "9f47c165-87df-4bd4-add3-164593ff6e54", @@ -783,11 +783,59 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 2176, - -128 + 3088, + -96 ], "id": "60d5567b-9006-42ad-8ba4-6fdc869f5ddf", "name": "Preparar datos carpeta empleado" + }, + { + "parameters": { + "content": "# 🔎 VALIDACIÓN Y RESOLUCIÓN DEL EMPLEADO\n\nRecibe la información de un empleado que debe procesarse para la generación de su finiquito en Guatemala.\n\n## Validación inicial\n\nEl bloque comprueba que la entrada contenga los datos mínimos necesarios para iniciar, como:\n\n- Nombre del empleado.\n- Identificador disponible.\n- Información enviada por el flujo principal.\n- Datos requeridos para localizar su carpeta y expediente.\n\n## Control de carpeta\n\nAntes de crear documentos, se busca si ya existe una carpeta asociada al empleado.\n\nEl flujo:\n\n1. Consulta las carpetas disponibles en Google Drive.\n2. Evalúa las coincidencias encontradas.\n3. Determina si corresponde continuar con una carpeta nueva.\n4. Evita procesar nuevamente a un empleado cuya carpeta ya existe.\n\nCuando se detecta una carpeta previamente creada, el flujo devuelve un resultado controlado y no duplica documentos.\n\n## Resolución en BambooHR\n\nSi el proceso puede continuar:\n\n1. Busca al empleado en BambooHR.\n2. Compara nombres, IDs y otros datos disponibles.\n3. Selecciona únicamente una coincidencia exacta.\n4. Conserva el ID oficial para consultar documentos y datos completos.\n\nCuando no existe una coincidencia suficientemente confiable:\n\n- No se descargan documentos.\n- No se crea una carpeta.\n- No se generan formatos.\n- Se devuelve el resultado “empleado no identificado”.\n\n## Reglas\n\n- No continuar con información incompleta.\n- No crear carpetas duplicadas.\n- No seleccionar automáticamente empleados ambiguos.\n- No confiar únicamente en una coincidencia parcial de nombre.\n- Utilizar el ID confirmado de BambooHR en las etapas posteriores.", + "height": 960, + "width": 3136, + "color": 2 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -3040, + -448 + ], + "id": "05fa4267-462a-43fc-991a-b21f54240b78", + "name": "Sticky Note" + }, + { + "parameters": { + "content": "# 🪪 EXPEDIENTE, DPI Y CARPETA DEL EMPLEADO\n\nRecupera la información completa del empleado y guarda su documento de identificación dentro de una carpeta individual en Google Drive.\n\n## Consulta del expediente\n\nEl flujo obtiene desde BambooHR:\n\n- Datos personales.\n- Datos laborales.\n- Fechas relevantes.\n- Información necesaria para los documentos de finiquito.\n- Lista de archivos asociados al empleado.\n\n## Selección del DPI\n\nEntre los documentos disponibles:\n\n1. Identifica los posibles archivos de DPI.\n2. Filtra documentos que no corresponden.\n3. Selecciona un único candidato válido.\n4. Descarga el PDF original desde BambooHR.\n5. Verifica que exista contenido binario utilizable.\n\nNo debe continuar cuando:\n\n- No existe un DPI.\n- Existen varios candidatos ambiguos.\n- La descarga está vacía.\n- El archivo no puede procesarse correctamente.\n\n## Extracción con Gemini\n\nGemini analiza el documento para recuperar información útil del DPI.\n\nDespués del análisis:\n\n- Se limpia la respuesta de la IA.\n- Se normalizan nombres y números.\n- Se validan los campos detectados.\n- Se combinan los datos del DPI con el expediente de BambooHR.\n\nGemini complementa la información, pero no reemplaza las validaciones del workflow.\n\n## Carpeta y almacenamiento\n\nEl bloque crea una carpeta individual para el empleado y conserva:\n\n- ID de la carpeta.\n- Enlace de Google Drive.\n- Nombre normalizado del empleado.\n- Datos que utilizarán los documentos posteriores.\n\nEl DPI se guarda como PDF original dentro de esa carpeta, con un nombre identificable para facilitar su revisión.\n\n## Reglas\n\n- Mantener el DPI en formato PDF.\n- No modificar el documento original.\n- No subir el archivo antes de crear la carpeta.\n- No declarar éxito hasta verificar que el PDF existe en Drive.\n- Mantener relacionados el empleado, la carpeta y el DPI mediante sus IDs.", + "height": 1168, + "width": 3984, + "color": "#722C2C" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 304, + -736 + ], + "id": "054ab1c2-12f4-433f-92c2-d83af4168990", + "name": "Sticky Note1" + }, + { + "parameters": { + "content": "# 📄 GENERACIÓN DE DOCUMENTOS DEL FINIQUITO\n\nPrepara y genera todos los documentos requeridos para completar el expediente de finiquito del empleado.\n\n## Preparación de datos\n\nAntes de modificar las plantillas, el flujo consolida información como:\n\n- Nombre completo.\n- Datos del DPI.\n- Cargo y departamento.\n- Fechas de ingreso y salida.\n- Montos calculados.\n- Información bancaria o de pago.\n- Identificador del empleado.\n- Carpeta de Google Drive donde se guardarán los archivos.\n\n## Voucher\n\nEl flujo:\n\n1. Copia la plantilla oficial del voucher.\n2. Crea una versión exclusiva para el empleado.\n3. Reemplaza los campos de la plantilla.\n4. Conserva el documento dentro de la carpeta correspondiente.\n\n## Consolidado\n\nActualiza el archivo consolidado con la información procesada del empleado para mantener control general sobre los finiquitos generados.\n\n## Finiquito\n\nEl flujo:\n\n1. Copia la plantilla oficial del finiquito.\n2. Personaliza nombres, fechas, datos laborales y montos.\n3. Conserva el documento generado como parte del expediente individual.\n\n## Formato de cheque\n\nTambién:\n\n1. Copia el formato base del cheque.\n2. Completa los datos del beneficiario y el pago.\n3. Guarda el archivo junto con los demás documentos.\n\n## Sincronización y cierre\n\nLas diferentes ramas se ejecutan en paralelo.\n\nEl nodo de espera solamente permite finalizar cuando se han completado:\n\n- Voucher.\n- Consolidado.\n- Finiquito.\n- Formato de cheque.\n\nAl terminar, se genera un resultado único con el estado del empleado procesado y las referencias de sus documentos.\n\n## Reglas\n\n- No modificar las plantillas originales.\n- Crear una copia independiente por empleado.\n- No finalizar mientras falte alguno de los documentos obligatorios.\n- Mantener todos los archivos dentro de la carpeta individual.\n- No informar éxito cuando alguna rama haya fallado.\n- Conservar los IDs y enlaces de los documentos para el flujo principal.", + "height": 1280, + "width": 2832, + "color": "#33704B" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 4736, + -592 + ], + "id": "e53ea834-35ec-4e31-b004-c6fd11e77f48", + "name": "Sticky Note2" } ], "connections": { @@ -1170,15 +1218,19 @@ "settings": { "executionOrder": "v1", "binaryMode": "separate", - "availableInMCP": true + "availableInMCP": true, + "timeSavedMode": "fixed", + "errorWorkflow": "puF4LUczoSz3hcek", + "timezone": "America/Santo_Domingo", + "callerPolicy": "workflowsFromSameOwner" }, "staticData": null, "meta": { "templateCredsSetupCompleted": true }, - "versionId": "7aedbe70-75f8-4dc0-971f-130f9ced8ec1", - "activeVersionId": "7aedbe70-75f8-4dc0-971f-130f9ced8ec1", - "versionCounter": 193, + "versionId": "00f0a2be-e144-4cf4-8185-781988351da7", + "activeVersionId": "00f0a2be-e144-4cf4-8185-781988351da7", + "versionCounter": 237, "triggerCount": 0, "shared": [ { @@ -1201,9 +1253,9 @@ ], "tags": [], "activeVersion": { - "updatedAt": "2026-07-11T01:47:01.000Z", - "createdAt": "2026-07-11T01:46:53.229Z", - "versionId": "7aedbe70-75f8-4dc0-971f-130f9ced8ec1", + "updatedAt": "2026-07-21T22:14:51.000Z", + "createdAt": "2026-07-21T22:14:47.297Z", + "versionId": "00f0a2be-e144-4cf4-8185-781988351da7", "workflowId": "KBV3AEEpys8KqPLX", "nodes": [ { @@ -1213,8 +1265,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 656, - 16 + 1568, + 48 ], "id": "5b002dd7-d1af-43e0-9902-f6fc8fec1081", "name": "Identificar candidatos DPI" @@ -1226,8 +1278,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 864, - 16 + 1776, + 48 ], "id": "eb8977c1-3a2e-4a4a-9e93-656b10155b20", "name": "Seleccionar DPI único" @@ -1242,8 +1294,8 @@ "type": "n8n-nodes-base.bambooHr", "typeVersion": 1, "position": [ - 1088, - 16 + 2000, + 48 ], "id": "eae54fc8-1cdb-4d29-b2a8-cb6c315e4238", "name": "BambooHR - Descargar DPI Anderson", @@ -1262,8 +1314,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1296, - 16 + 2208, + 48 ], "id": "9a11b238-a0fa-408e-9427-16cfb83e6059", "name": "Validar descarga DPI" @@ -1273,9 +1325,9 @@ "resource": "document", "modelId": { "__rl": true, - "value": "models/gemini-2.5-pro", + "value": "models/gemini-2.5-flash-lite", "mode": "list", - "cachedResultName": "models/gemini-2.5-pro" + "cachedResultName": "models/gemini-2.5-flash-lite" }, "text": "Analiza exclusivamente el Documento Personal de Identificación de Guatemala\nincluido en este PDF.\n\nEl documento puede contener el frente y el reverso del DPI.\n\nDevuelve ÚNICAMENTE un objeto JSON válido.\nNo utilices Markdown.\nNo incluyas explicaciones antes ni después del JSON.\nNo envuelvas la respuesta en bloques ```json.\nNo inventes información.\nCuando un dato no sea visible o no pueda determinarse con seguridad, utiliza null.\n\nUsa exactamente esta estructura:\n\n{\n \"documentoEsDpiGuatemala\": true,\n \"tieneFrente\": true,\n \"tieneReverso\": true,\n \"nombreCompleto\": \"\",\n \"nombres\": \"\",\n \"apellidos\": \"\",\n \"numeroDpi\": \"\",\n \"nacionalidadCodigo\": \"\",\n \"sexo\": \"\",\n \"fechaNacimiento\": \"\",\n \"lugarNacimientoMunicipio\": \"\",\n \"lugarNacimientoDepartamento\": \"\",\n \"vecindadMunicipio\": \"\",\n \"vecindadDepartamento\": \"\",\n \"estadoCivil\": \"\",\n \"fechaEmision\": \"\",\n \"fechaVencimiento\": \"\",\n \"municipioExpedicion\": null,\n \"departamentoExpedicion\": null,\n \"observaciones\": []\n}\n\nReglas de extracción:\n\n1. numeroDpi:\n - Devuelve únicamente los 13 dígitos.\n - No incluyas espacios, guiones ni otros caracteres.\n\n2. fechaNacimiento, fechaEmision y fechaVencimiento:\n - Usa formato YYYY-MM-DD.\n - Si no es legible, devuelve null.\n\n3. sexo:\n - Usa exclusivamente MASCULINO, FEMENINO o null.\n\n4. estadoCivil:\n - Usa el valor visible en el documento, en mayúsculas.\n - Ejemplos: CASADO, SOLTERO.\n\n5. nacionalidadCodigo:\n - Conserva el código impreso en el documento, por ejemplo GTM.\n\n6. lugarNacimiento:\n - Extrae únicamente la sección titulada LUGAR DE NACIMIENTO.\n\n7. vecindad:\n - Extrae únicamente la sección titulada VECINDAD.\n\n8. municipioExpedicion y departamentoExpedicion:\n - No confundas lugar de nacimiento ni vecindad con lugar de expedición.\n - Si el documento no contiene explícitamente el lugar de expedición,\n devuelve null.\n\n9. tieneFrente y tieneReverso:\n - Indica true solo cuando cada lado realmente esté visible.\n\n10. observaciones:\n - Incluye advertencias de legibilidad, campos dudosos o inconsistencias.\n - Si no hay observaciones, devuelve un arreglo vacío.", "inputType": "binary", @@ -1284,15 +1336,15 @@ "type": "@n8n/n8n-nodes-langchain.googleGemini", "typeVersion": 1.2, "position": [ - 1504, - 16 + 2416, + 48 ], "id": "19e4c7a6-286e-4e72-8fc5-72e222cd78e4", "name": "Gemini - Extraer datos DPI", "credentials": { "googlePalmApi": { - "id": "jvsXYwL6IOoY2DBU", - "name": "Isaac - Gemini Api Pago" + "id": "6Jdcd9FONxG35YuJ", + "name": "Isaac - Gemini Api Gratis" } } }, @@ -1303,8 +1355,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1728, - 16 + 2640, + 48 ], "id": "22a89eb1-5167-42b8-9110-e18a03504fe4", "name": "Normalizar y validar datos DPI" @@ -1325,8 +1377,8 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 2480, - 32 + 3392, + 64 ], "id": "0c831877-7bca-4dd3-983c-9d1c8f23a51e", "name": "Merge" @@ -1338,8 +1390,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 2688, - 32 + 3600, + 64 ], "id": "bcef7f92-dbba-4bd4-9982-22d2581d196e", "name": "Preparar DPI PDF para Drive" @@ -1362,8 +1414,8 @@ "type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [ - 2896, - 32 + 3808, + 64 ], "id": "906e1835-8214-4162-b8ef-cc7edac4935c", "name": "Google Drive - Subir DPI PDF", @@ -1381,8 +1433,8 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3104, - 32 + 4016, + 64 ], "id": "7da435cd-e674-48cc-96b8-22e0957badfc", "name": "Validar DPI PDF subido" @@ -1401,7 +1453,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3664, + 6112, -64 ], "id": "d96b3b82-2c7d-4ba5-be52-ba04c4a0f006", @@ -1427,7 +1479,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 4080, + 6528, 32 ], "id": "0e60792f-c844-457c-a222-ed71df39f2f9", @@ -1453,7 +1505,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3904, + 6352, -288 ], "id": "c26696c1-2330-4d2c-bec0-50836dbfd0ec", @@ -1479,7 +1531,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3840, + 6288, 320 ], "id": "e620258a-47ae-46cc-b4bf-f7d694d5c293", @@ -1760,8 +1812,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 256, - 16 + 1168, + 48 ], "id": "931249ae-3c90-4b94-b066-e3f520b362e0", "name": "BambooHR - Datos completos", @@ -1782,8 +1834,8 @@ "type": "n8n-nodes-base.bambooHr", "typeVersion": 1, "position": [ - 464, - 16 + 1376, + 48 ], "id": "09694117-c52e-4939-a156-04a170c163ef", "name": "BambooHR - Listar documentos", @@ -1814,8 +1866,8 @@ "type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [ - 1936, - -128 + 2848, + -96 ], "id": "591938b6-e98e-4bfa-b549-407cdcbaf365", "name": "Google Drive - Crear carpeta empleado", @@ -1833,7 +1885,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3424, + 5872, 32 ], "id": "471a42bd-85d1-4a1c-95fd-549995b30476", @@ -1856,7 +1908,7 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 4576, + 7024, -16 ], "id": "7f9cede5-f86f-4ee2-8307-035c40d99e2c", @@ -1869,7 +1921,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 4848, + 7296, 16 ], "id": "9eac5b6e-84a4-458e-b1fa-f1c3b556b7a0", @@ -1889,7 +1941,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3840, + 6288, 32 ], "id": "6364ebf4-a990-4aaf-89cb-6e167faac977", @@ -1915,7 +1967,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3696, + 6144, -288 ], "id": "4c9098bc-52e2-4b32-84ec-955b7b63239e", @@ -1941,7 +1993,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3632, + 6080, 320 ], "id": "9f47c165-87df-4bd4-add3-164593ff6e54", @@ -1982,11 +2034,59 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 2176, - -128 + 3088, + -96 ], "id": "60d5567b-9006-42ad-8ba4-6fdc869f5ddf", "name": "Preparar datos carpeta empleado" + }, + { + "parameters": { + "content": "# 🔎 VALIDACIÓN Y RESOLUCIÓN DEL EMPLEADO\n\nRecibe la información de un empleado que debe procesarse para la generación de su finiquito en Guatemala.\n\n## Validación inicial\n\nEl bloque comprueba que la entrada contenga los datos mínimos necesarios para iniciar, como:\n\n- Nombre del empleado.\n- Identificador disponible.\n- Información enviada por el flujo principal.\n- Datos requeridos para localizar su carpeta y expediente.\n\n## Control de carpeta\n\nAntes de crear documentos, se busca si ya existe una carpeta asociada al empleado.\n\nEl flujo:\n\n1. Consulta las carpetas disponibles en Google Drive.\n2. Evalúa las coincidencias encontradas.\n3. Determina si corresponde continuar con una carpeta nueva.\n4. Evita procesar nuevamente a un empleado cuya carpeta ya existe.\n\nCuando se detecta una carpeta previamente creada, el flujo devuelve un resultado controlado y no duplica documentos.\n\n## Resolución en BambooHR\n\nSi el proceso puede continuar:\n\n1. Busca al empleado en BambooHR.\n2. Compara nombres, IDs y otros datos disponibles.\n3. Selecciona únicamente una coincidencia exacta.\n4. Conserva el ID oficial para consultar documentos y datos completos.\n\nCuando no existe una coincidencia suficientemente confiable:\n\n- No se descargan documentos.\n- No se crea una carpeta.\n- No se generan formatos.\n- Se devuelve el resultado “empleado no identificado”.\n\n## Reglas\n\n- No continuar con información incompleta.\n- No crear carpetas duplicadas.\n- No seleccionar automáticamente empleados ambiguos.\n- No confiar únicamente en una coincidencia parcial de nombre.\n- Utilizar el ID confirmado de BambooHR en las etapas posteriores.", + "height": 960, + "width": 3136, + "color": 2 + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -3040, + -448 + ], + "id": "05fa4267-462a-43fc-991a-b21f54240b78", + "name": "Sticky Note" + }, + { + "parameters": { + "content": "# 🪪 EXPEDIENTE, DPI Y CARPETA DEL EMPLEADO\n\nRecupera la información completa del empleado y guarda su documento de identificación dentro de una carpeta individual en Google Drive.\n\n## Consulta del expediente\n\nEl flujo obtiene desde BambooHR:\n\n- Datos personales.\n- Datos laborales.\n- Fechas relevantes.\n- Información necesaria para los documentos de finiquito.\n- Lista de archivos asociados al empleado.\n\n## Selección del DPI\n\nEntre los documentos disponibles:\n\n1. Identifica los posibles archivos de DPI.\n2. Filtra documentos que no corresponden.\n3. Selecciona un único candidato válido.\n4. Descarga el PDF original desde BambooHR.\n5. Verifica que exista contenido binario utilizable.\n\nNo debe continuar cuando:\n\n- No existe un DPI.\n- Existen varios candidatos ambiguos.\n- La descarga está vacía.\n- El archivo no puede procesarse correctamente.\n\n## Extracción con Gemini\n\nGemini analiza el documento para recuperar información útil del DPI.\n\nDespués del análisis:\n\n- Se limpia la respuesta de la IA.\n- Se normalizan nombres y números.\n- Se validan los campos detectados.\n- Se combinan los datos del DPI con el expediente de BambooHR.\n\nGemini complementa la información, pero no reemplaza las validaciones del workflow.\n\n## Carpeta y almacenamiento\n\nEl bloque crea una carpeta individual para el empleado y conserva:\n\n- ID de la carpeta.\n- Enlace de Google Drive.\n- Nombre normalizado del empleado.\n- Datos que utilizarán los documentos posteriores.\n\nEl DPI se guarda como PDF original dentro de esa carpeta, con un nombre identificable para facilitar su revisión.\n\n## Reglas\n\n- Mantener el DPI en formato PDF.\n- No modificar el documento original.\n- No subir el archivo antes de crear la carpeta.\n- No declarar éxito hasta verificar que el PDF existe en Drive.\n- Mantener relacionados el empleado, la carpeta y el DPI mediante sus IDs.", + "height": 1168, + "width": 3984, + "color": "#722C2C" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 304, + -736 + ], + "id": "054ab1c2-12f4-433f-92c2-d83af4168990", + "name": "Sticky Note1" + }, + { + "parameters": { + "content": "# 📄 GENERACIÓN DE DOCUMENTOS DEL FINIQUITO\n\nPrepara y genera todos los documentos requeridos para completar el expediente de finiquito del empleado.\n\n## Preparación de datos\n\nAntes de modificar las plantillas, el flujo consolida información como:\n\n- Nombre completo.\n- Datos del DPI.\n- Cargo y departamento.\n- Fechas de ingreso y salida.\n- Montos calculados.\n- Información bancaria o de pago.\n- Identificador del empleado.\n- Carpeta de Google Drive donde se guardarán los archivos.\n\n## Voucher\n\nEl flujo:\n\n1. Copia la plantilla oficial del voucher.\n2. Crea una versión exclusiva para el empleado.\n3. Reemplaza los campos de la plantilla.\n4. Conserva el documento dentro de la carpeta correspondiente.\n\n## Consolidado\n\nActualiza el archivo consolidado con la información procesada del empleado para mantener control general sobre los finiquitos generados.\n\n## Finiquito\n\nEl flujo:\n\n1. Copia la plantilla oficial del finiquito.\n2. Personaliza nombres, fechas, datos laborales y montos.\n3. Conserva el documento generado como parte del expediente individual.\n\n## Formato de cheque\n\nTambién:\n\n1. Copia el formato base del cheque.\n2. Completa los datos del beneficiario y el pago.\n3. Guarda el archivo junto con los demás documentos.\n\n## Sincronización y cierre\n\nLas diferentes ramas se ejecutan en paralelo.\n\nEl nodo de espera solamente permite finalizar cuando se han completado:\n\n- Voucher.\n- Consolidado.\n- Finiquito.\n- Formato de cheque.\n\nAl terminar, se genera un resultado único con el estado del empleado procesado y las referencias de sus documentos.\n\n## Reglas\n\n- No modificar las plantillas originales.\n- Crear una copia independiente por empleado.\n- No finalizar mientras falte alguno de los documentos obligatorios.\n- Mantener todos los archivos dentro de la carpeta individual.\n- No informar éxito cuando alguna rama haya fallado.\n- Conservar los IDs y enlaces de los documentos para el flujo principal.", + "height": 1280, + "width": 2832, + "color": "#33704B" + }, + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 4736, + -592 + ], + "id": "e53ea834-35ec-4e31-b004-c6fd11e77f48", + "name": "Sticky Note2" } ], "connections": { @@ -2367,17 +2467,33 @@ } }, "authors": "Isaac Aracena", - "name": "Version 7aedbe70", + "name": "Version 00f0a2be", "description": "", "autosaved": true, "workflowPublishHistory": [ { - "createdAt": "2026-07-11T01:47:01.856Z", - "id": 2793, + "createdAt": "2026-07-21T22:14:51.434Z", + "id": 3342, "workflowId": "KBV3AEEpys8KqPLX", - "versionId": "7aedbe70-75f8-4dc0-971f-130f9ced8ec1", + "versionId": "00f0a2be-e144-4cf4-8185-781988351da7", "event": "activated", "userId": "0a88c0b1-928e-4412-896e-c5d1c99b2029" + }, + { + "createdAt": "2026-07-25T17:32:19.421Z", + "id": 3478, + "workflowId": "KBV3AEEpys8KqPLX", + "versionId": "00f0a2be-e144-4cf4-8185-781988351da7", + "event": "activated", + "userId": "0a88c0b1-928e-4412-896e-c5d1c99b2029" + }, + { + "createdAt": "2026-07-25T17:32:19.372Z", + "id": 3477, + "workflowId": "KBV3AEEpys8KqPLX", + "versionId": "00f0a2be-e144-4cf4-8185-781988351da7", + "event": "deactivated", + "userId": "0a88c0b1-928e-4412-896e-c5d1c99b2029" } ] }