Я хочу обновить валидатор идентификационной карты (I C или ID) до валидатора единого налогоплательщика (STR или RU C в Испании sh)
Процесс валидации следующий: следует:
- Эквадорский идентификатор состоит из первых двух цифр, которые соответствуют провинции, в которой он был выдан, поэтому первые две цифры не будут больше 24 и меньше 0.
- Третье di git - это число меньше 6 (0,1,2,3,4,5).
- Следующие до девятого di git являются последовательными номер.
- Десятый чек ди git. Коэффициенты, используемые для проверки десятого di git идентификатора, используя «Модуль 10». Коэффициенты = 2.1.2.1.2.1.2.1.2
function validarCedula(cedula: string) {
if (cedula.length === 10) {
const digitoRegion = cedula.substring(0, 2);
if (digitoRegion >= String(1) && digitoRegion <= String(24)) {
const ultimoDigito = Number(cedula.substring(9, 10));
const pares = Number(cedula.substring(1, 2)) + Number(cedula.substring(3, 4)) + Number(cedula.substring(5, 6)) + Number(cedula.substring(7, 8));
let numeroUno: any = cedula.substring(0, 1);
numeroUno = (numeroUno * 2);
if (numeroUno > 9) {
numeroUno = (numeroUno - 9);
}
let numeroTres: any = cedula.substring(2, 3);
numeroTres = (numeroTres * 2);
if (numeroTres > 9) {
numeroTres = (numeroTres - 9);
}
let numeroCinco: any = cedula.substring(4, 5);
numeroCinco = (numeroCinco * 2);
if (numeroCinco > 9) {
numeroCinco = (numeroCinco - 9);
}
let numeroSiete: any = cedula.substring(6, 7);
numeroSiete = (numeroSiete * 2);
if (numeroSiete > 9) {
numeroSiete = (numeroSiete - 9);
}
let numeroNueve: any = cedula.substring(8, 9);
numeroNueve = (numeroNueve * 2);
if (numeroNueve > 9) {
numeroNueve = (numeroNueve - 9);
}
const impares = numeroUno + numeroTres + numeroCinco + numeroSiete + numeroNueve;
const sumaTotal = (pares + impares);
const primerDigitoSuma = String(sumaTotal).substring(0, 1);
const decena = (Number(primerDigitoSuma) + 1) * 10;
let digitoValidador = decena - sumaTotal;
if (digitoValidador === 10) {
digitoValidador = 0;
}
if (digitoValidador === ultimoDigito) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
But in the case of the STR(RUC on Spanish) which requires
The ruc will be 13 digits, no letters, no special characters.
- The third digit will be 6 or 9 depending on the type of person.
- The last three digits are 001,002,003 etc., depending on the number of additional establishments.
- The validation of the Identity Card passes an algorithm "Module 11". The number is divided into 13 parts, the first 9 are the number itself, 10 is the self-checking digit for legal entities and position 9 is the self-checking digit for public institutions, and the remaining 3 indicate whether it is the main or establishment additional.
- The first 2 positions correspond to the province where it was issued, so the first two numbers will not be greater than 22 nor less than 1.
- The last 3 digits cannot be 000 for legal entities and the last digits cannot be 0000 for public institutions, since they will always have at least one main one.
- The coefficients used to verify the tenth digit of the ID, using the algorithm "Module 11".
Exceptions:
- If the remainder is 0, it is a check digit 0.
введите описание изображения здесь
, который мне остается, чтобы оптимизировать идентификационный код или повторно использовать, не знаю и ищу множество вариантов, пытаясь решить эту проблему