facturacionelectronicapy-ts-xmlgen
Version:
Genera el contenido del archivo XML del Documento electrónico exigido por la SET
32 lines (31 loc) • 974 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = calcDV;
/**
* Calcula Digito Verificador numérico con entrada alfanumérica y basemax 11
* @link https://www.dnit.gov.py/documents/d/global/digito-verificador
*/
function calcDV(cdc, baseMax = 11) {
let v_total = 0, v_resto, k = 2, v_digit;
let v_numero_al = '';
for (let i = 0; i < cdc.length; i++) {
let v_caracter = cdc[i];
if (v_caracter >= '0' && v_caracter <= '9') {
v_numero_al += v_caracter;
}
else {
v_numero_al += v_caracter.charCodeAt(0);
}
}
let i = v_numero_al.length - 1;
let p = v_numero_al.charCodeAt(i);
while (i--) {
k = k > baseMax ? 2 : k;
let v_numero_aux = p - 48;
v_total += v_numero_aux * k++;
p = v_numero_al.charCodeAt(i);
}
v_resto = v_total % 11;
v_digit = v_resto > 1 ? 11 - v_resto : 0;
return v_digit;
}