You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Omitir validación del módulo 11 para personas jurídicas (#5)
## Descripción
Este PR ajusta la lógica de validación del RUC para personas jurídicas
para alinearla con la disposición oficial del Servicio de Rentas
Internas (SRI) [1].
El cambio principal consiste en **omitir la validación del algoritmo
módulo 11** para los RUCs pertenecientes a personas jurídicas (aquellos
cuyo tercer dígito es '9'). Esto sigue la recomendación explícita del
SRI, ya que sus procesos internos de generación pueden resultar en RUCs
válidos que no pasarían la comprobación tradicional del módulo 11.
Fixes#4
## Cambios Realizados
* Se modificó la función `isRUC` para **omitir la validación del módulo
11** específicamente para los RUCs identificados como pertenecientes a
personas jurídicas. Estos RUCs ahora se consideran válidos por `isRUC`
si cumplen los criterios básicos (longitud 13, numérico, código de
provincia correcto, sufijo '001').
* Se introdujo una nueva función auxiliar `isLegalEntityRUC(ruc:
string): boolean`.
* Se añadieron nuevos casos de prueba para verificar la nueva lógica y
la función auxiliar.
* Se actualizó el README y se incrementó la versión del paquete a
`1.3.0`.
## Uso Recomendado de `isLegalEntityRUC`
La nueva función `isLegalEntityRUC` está diseñada para ayudar a
implementar la estrategia de validación recomendada por el SRI:
1. Puedes usar `isLegalEntityRUC(ruc)` para determinar si un RUC
pertenece a una persona jurídica.
2. **Si `isLegalEntityRUC` devuelve `true`**, y necesitas una
confirmación de validez más allá de los chequeos básicos (longitud,
formato), **la recomendación del SRI es validar ese RUC directamente
contra sus servicios web oficiales**.
3. La función `isRUC` de esta librería ya **no** intentará validar el
dígito verificador para estos casos, simplemente confirmará el formato
general.
## Motivo del Cambio
Asegurar que la librería `validator-ec` refleje con precisión las reglas
de validación oficiales y actuales definidas por el SRI, evitando que
RUCs válidos de personas jurídicas sean marcados incorrectamente como
inválidos. Se facilita la implementación de la estrategia de validación
sugerida por el SRI mediante la función `isLegalEntityRUC`.
## Enlaces Relacionados
[1] Comunicación SRI (Comunicado Registro Único de Contribuyentes -
RUC):
https://minka.gob.ec/mintel/ge/rutr/gobec_forms/uploads/1ef593d96275a7c07987c5bc043ce654/comunicado_cambio_generacion_RUC.pdf
## Pruebas
* Las pruebas existentes pasan.
* Se han añadido y pasan nuevas pruebas que cubren específicamente la
lógica actualizada para los RUCs de personas jurídicas y la función
`isLegalEntityRUC`.
|`isCedula(cedula: string): boolean`| Valida una cédula de identidad ecuatoriana. Devuelve `true` si la cédula es válida, de lo contrario `false`. |`isCedula('1710034065')`|
40
-
|`isRUC(ruc: string): boolean`| Valida un número de RUC (Registro Único de Contribuyentes). Devuelve `true` si el RUC es válido, de lo contrario `false`. |`isRUC('1790016919001')`|
41
-
|`isZipCode(zipCode: string): boolean`| Valida un código postal ecuatoriano. Devuelve `true` si el código postal es válido, de lo contrario `false`. |`isZipCode('131401')`|
|`isCedula(cedula: string): boolean`| Valida una cédula de identidad ecuatoriana. Devuelve `true` si la cédula es válida, de lo contrario `false`. |`isCedula('1710034065')`|
40
+
|`isRUC(ruc: string): boolean`| Valida un número de RUC (Registro Único de Contribuyentes). Devuelve `true` si el RUC es válido, de lo contrario `false`. |`isRUC('1790016919001')`|
41
+
|`isLegalEntityRUC(ruc: string): boolean`| Devuelve `true` si un RUC pertenece a una persona jurídica (tercer dígito igual a 9), de lo contrario `false`. |`isLegalEntityRuc('0992345678001')`|
42
+
|`isZipCode(zipCode: string): boolean`| Valida un código postal ecuatoriano. Devuelve `true` si el código postal es válido, de lo contrario `false`. |`isZipCode('131401')`|
0 commit comments