facturacionelectronicapy-qrgen
Version:
Módulo NodeJs para generar el Valor para el Código QR en el Archivo XML Firmado para la Facturación Electrónica en Paraguay
96 lines • 10.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const xml2js_1 = __importDefault(require("xml2js"));
const sha256_1 = __importDefault(require("crypto-js/sha256"));
class QRGen {
/**
* Genera el codigo QR del Archivo XML Firmado
* @param xml
* @returns
*/
generateQR(xml, idCSC, CSC, env) {
return xml2js_1.default.parseStringPromise(xml).then((obj) => {
if (!(obj &&
obj["rDE"] &&
obj["rDE"]["Signature"] &&
obj["rDE"]["Signature"])) {
throw new Error("XML debe estar firmado digitalmente");
}
obj["rDE"]["gCamFuFD"] = {};
let qrLink = "https://ekuatia.set.gov.py/consultas";
if (env == "test") {
qrLink += "-test";
}
qrLink += "/qr?";
let qr = "";
const nVersion = obj["rDE"]["dVerFor"][0];
qr += "nVersion=" + nVersion + "&";
const id = obj["rDE"]["DE"][0]["$"]["Id"];
qr += "Id=" + id + "&";
let dFeEmiDE = obj["rDE"]["DE"][0]["gDatGralOpe"][0]["dFeEmiDE"][0];
dFeEmiDE = Buffer.from(dFeEmiDE, "utf8").toString("hex");
qr += "dFeEmiDE=" + dFeEmiDE + "&";
let dRucRec = "";
if (obj["rDE"]["DE"][0]["gDatGralOpe"][0]["gDatRec"][0]["iNatRec"][0] == 1) {
//Contribuyente
dRucRec =
obj["rDE"]["DE"][0]["gDatGralOpe"][0]["gDatRec"][0]["dRucRec"][0];
qr += "dRucRec=" + dRucRec + "&";
}
else {
//No contribuyente
dRucRec =
obj["rDE"]["DE"][0]["gDatGralOpe"][0]["gDatRec"][0]["dNumIDRec"][0];
/*//Nt010 // Se vuelve a rettirar, por que el valor debe ser como está en el campo
if (
obj["rDE"]["DE"][0]["gDatGralOpe"][0]["gDatRec"][0]["iTiOpe"][0] == 4
) {
//Si es B2F entonces el dNumIDRec=0
dRucRec = "0"; // Se vuelve a rettirar, por que el valor debe ser como está en el campo
}*/
qr += "dNumIDRec=" + dRucRec + "&";
}
let dTotGralOpe = 0;
if (obj["rDE"]["DE"][0]["gTotSub"] &&
obj["rDE"]["DE"][0]["gTotSub"][0] &&
obj["rDE"]["DE"][0]["gTotSub"][0]["dTotGralOpe"] &&
obj["rDE"]["DE"][0]["gTotSub"][0]["dTotGralOpe"][0]) {
dTotGralOpe = obj["rDE"]["DE"][0]["gTotSub"][0]["dTotGralOpe"][0];
}
qr += "dTotGralOpe=" + dTotGralOpe + "&";
let dTotIVA = 0;
if (obj["rDE"]["DE"][0]["gTotSub"] &&
obj["rDE"]["DE"][0]["gTotSub"][0] &&
obj["rDE"]["DE"][0]["gTotSub"][0]["dTotIVA"] &&
obj["rDE"]["DE"][0]["gTotSub"][0]["dTotIVA"][0]) {
dTotIVA = obj["rDE"]["DE"][0]["gTotSub"][0]["dTotIVA"][0];
}
qr += "dTotIVA=" + dTotIVA + "&";
let cItems = 0;
if (obj["rDE"]["DE"][0]["gDtipDE"][0] &&
obj["rDE"]["DE"][0]["gDtipDE"][0]["gCamItem"] &&
obj["rDE"]["DE"][0]["gDtipDE"][0]["gCamItem"].length > 0) {
cItems = obj["rDE"]["DE"][0]["gDtipDE"][0]["gCamItem"].length;
}
qr += "cItems=" + cItems + "&";
let digestValue = obj["rDE"]["Signature"][0]["SignedInfo"][0]["Reference"][0]["DigestValue"][0];
digestValue = Buffer.from(digestValue, "utf8").toString("hex");
qr += "DigestValue=" + digestValue + "&";
qr += "IdCSC=" + idCSC;
const valueForHash = qr;
let valueHashed = sha256_1.default(valueForHash + CSC);
qr += "&cHashQR=" + valueHashed;
obj["rDE"]["gCamFuFD"]["dCarQR"] = {
_: qrLink + qr,
};
var builder = new xml2js_1.default.Builder();
var xmlWithQR = builder.buildObject(obj);
return xmlWithQR;
});
}
}
exports.default = new QRGen();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUVJHZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUVJHZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOERBQXNDO0FBR3RDLE1BQU0sS0FBSztJQUNUOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBb0I7UUFDdEUsT0FBTyxnQkFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pELElBQ0UsQ0FBQyxDQUNDLEdBQUc7Z0JBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDVixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUN2QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQ3hCLEVBQ0Q7Z0JBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUU1QixJQUFJLE1BQU0sR0FBRyxzQ0FBc0MsQ0FBQztZQUNwRCxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxPQUFPLENBQUM7YUFDbkI7WUFDRCxNQUFNLElBQUksTUFBTSxDQUFDO1lBRWpCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNaLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQyxFQUFFLElBQUksV0FBVyxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFFbkMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxD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QUM7Z0JBQ2pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDL0M7Z0JBQ0EsT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRDtZQUNELEVBQUUsSUFBSSxVQUFVLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUVqQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDZixJQUNFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzdDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUN4RDtnQkFDQSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQzthQUMvRDtZQUVELEVBQUUsSUFBSSxTQUFTLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUUvQixJQUFJLFdBQVcsR0FDYixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3pELGFBQWEsQ0FDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxFQUFFLElBQUksY0FBYyxHQUFHLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFFekMsRUFBRSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFFdkIsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksV0FBVyxHQUFHLGdCQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBRTdDLEVBQUUsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBRWhDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRztnQkFDakMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFO2FBQ2YsQ0FBQztZQUVGLElBQUksT0FBTyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsa0JBQWUsSUFBSSxLQUFLLEVBQUUsQ0FBQyJ9