Package Exports
- validate-rfc
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (validate-rfc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Validate RFC
Una librería sencilla y ligera para validar RFCs Mexicanos (Registro Federal de Contribuyentes).
Instalación
NodeJS
Usa NPM o YARN:
$ npm install --save validate-rfcNavegador
Añade el siguiente script a tu proyecto:
<!-- última versión -->
<script src="https://cdn.jsdelivr.net/gh/manuelmhtr/validate-rfc@latest/dist/index.js" type="text/javascript"></script>
<!-- O especifica una versión -->
<script src="https://cdn.jsdelivr.net/gh/manuelmhtr/validate-rfc@v2.0.1/dist/index.js" type="text/javascript"></script>
<!-- Esto va a exportar una función "validateRfc": -->
<script type="text/javascript">
var data = validateRfc('mhtr93041179a');
console.log(data);
</script>API
La librería expone una sola función (.validateRfc).
.validateRfc(rfc)
Valida que un string sea un RFC válido y entrega detalles sobre la validación.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
rfc |
String | El RFC a validar. |
options |
Object | Parámetros de configuración (Opcional). |
options.omitVerificationDigit |
Boolean | Si esta opción es true, se omite la validación del dígito verificador (Default: false). |
Respuesta
Regresa un objeto plano con los siguientes valores:
| Parámetro | Tipo | Descripción |
|---|---|---|
isValid |
Boolean | Indica si el string ingresado es un RFC válido. |
rfc |
String | El RFC formateado (en mayúsculas, sin espacios ni símbolos). Regresa null en caso de que el RFC sea inválido. |
type |
String | El tipo del RFC ingresado. Los valores pueden ser person para personas físicas, company para personas morales, generic para el RFC genérico "XAXX010101000" o foreign para el RFC "XEXX010101000" para residentes en el extranjero. Regresa null en caso de que el RFC sea inválido. |
errors |
Array[String] | En caso de que el RFC no sea válido, aquí se indican los motivos por los que no fue válido. |
Los posibles valores que puede contener errors y su descripción son:
| Error | Descripción |
|---|---|
INVALID_FORMAT |
El formato es inválido, es decir, no cuenta con la longitud o estructura de caracteres esperado. Ej: XYZ porque claramente no es un RFC. |
INVALID_DATE |
El string tiene el formato adecuado, pero los dígitos para la fecha generan una fecha inválida. Ej: MHTR815511A70 porque refiere al mes 55. |
INVALID_VERIFICATION_DIGIT |
El string tiene el formato adecuado, pero el último caracter (dígito verificador) es inválido. Ej: MHTR810511A79 termina en 9 pero se espera que termine en 2. |
FORBIDDEN_WORD |
El string contiene una de las palabras inconvenientes que no pueden formar un RFC. Ej: FETO930411792 las iniciales forman la palabra FETO. |
Ejemplo
const validateRfc = require('validate-rfc');
const response = validateRfc('mhtr93041179a');
console.log(response);
/*
Imprime:
{
isValid: true,
rfc: 'MHTR93041179A',
type: 'person'
}
*/
const response = validateRfc('Este no es un RFC');
console.log(response);
/*
Imprime:
{
isValid: false,
rfc: null,
type: null,
errors: ['INVALID_FORMAT']
}
*/Pruebas
Para correr las pruebas ejecuta el comando:
$ npm testProblemas conocidos
Discrepancias en el dígito verificador
Algunos RFC registrados ante el SAT no pasan la validación del dígito verificador. Por ejemplo el RFC LME060822IH5 es válido y susceptible a recibir facturas según el validador oficial del SAT, sin embargo al calcular su dígito verificador este debería terminar en 3 en lugar de 5. Por lo tanto en estos casos la librería retorna isValid como false y el error INVALID_VERIFICATION_DIGIT.
Soluciones:
- Si encuentras un caso en particular agrega el RFC a la lista de RFCs válidos. En mayúsculas y en orden alfabético. Al agregarlo a la lista ese RFC ayudas a documentar estos casos y evitar que regrese error.
- Utiliza la opción
omitVerificationDigitpara ignorar la validación del dígito verificador. Tiene la ventaja de que es una solución más rápida y cubre todos lo casos; pero va a regresar como válidos muchos RFC que no están permitidos.
Referencias:
Relacionado
Además de validar el formato, necesitas validar que un RFC esté registrado en el SAT o no esté en una lista negra? Prueba con Verifier.
Licencia
MIT