From 13d955d26c5b1e80cb7503a4a950045881700a3e Mon Sep 17 00:00:00 2001 From: silviroa Date: Tue, 10 Feb 2026 14:18:01 -0300 Subject: [PATCH 1/2] fix(MPI): Corrige generacion de cuil --- .../mpi/validacion/validacion.controller.ts | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/core-v2/mpi/validacion/validacion.controller.ts b/core-v2/mpi/validacion/validacion.controller.ts index 32e3fb4db..b57ca027d 100644 --- a/core-v2/mpi/validacion/validacion.controller.ts +++ b/core-v2/mpi/validacion/validacion.controller.ts @@ -24,29 +24,44 @@ function identidadSinAcentos(ciudadano) { */ function generarCUIL(dni, sexo) { - const sexoNorm = (sexo || '').toString().trim().toLowerCase(); - let sexoFinal = 'M'; + const sexoNorm = (sexo || '') + .toString() + .trim() + .toLowerCase(); + + let prefijo; + if (sexoNorm.startsWith('f')) { - sexoFinal = 'F'; + prefijo = '27'; + } else if (sexoNorm.startsWith('m')) { + prefijo = '20'; + } else { + // casis no binario / X / desconocido + prefijo = '23'; } + const dniStr = dni.toString().padStart(8, '0'); - let prefijo = (sexoFinal === 'F') ? '27' : '20'; + function calcularDigito(p, d) { const base = (p + d).split('').map(Number); const pesos = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]; const suma = base.reduce((acc, num, i) => acc + num * pesos[i], 0); + const resto = suma % 11; let verificador = 11 - resto; + if (verificador === 11) { verificador = 0; } if (verificador === 10) { return null; } return verificador; } + let digito = calcularDigito(prefijo, dniStr); - if (!digito) { + if (digito === null) { prefijo = '23'; digito = calcularDigito(prefijo, dniStr); } + return `${prefijo}${dniStr}${digito}`; } From 6cd83e277dd1bc11ae96e125835683a83ec5d4c5 Mon Sep 17 00:00:00 2001 From: silviroa Date: Thu, 12 Feb 2026 14:37:38 -0300 Subject: [PATCH 2/2] fix(MPI): Quitamos generacion de cuil para no-binario --- core-v2/mpi/validacion/validacion.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-v2/mpi/validacion/validacion.controller.ts b/core-v2/mpi/validacion/validacion.controller.ts index b57ca027d..7a56a5e9c 100644 --- a/core-v2/mpi/validacion/validacion.controller.ts +++ b/core-v2/mpi/validacion/validacion.controller.ts @@ -37,7 +37,7 @@ function generarCUIL(dni, sexo) { prefijo = '20'; } else { // casis no binario / X / desconocido - prefijo = '23'; + return ''; } const dniStr = dni.toString().padStart(8, '0');