control-see
Version:
Control Util Documentos Electronicos SUNAT
73 lines • 2.79 kB
JavaScript
import { CDR } from '@fe/common/exchange';
import * as xmlCore from 'xml-core';
export class XmlUtilsCDR {
constructor(xml) {
this.xmlCdr = xmlCore.Parse(xml);
}
get applicationResponseNode() {
return this.xmlCdr.getElementsByTagName('ar:ApplicationResponse').item(0);
}
get hashNode() {
return this.applicationResponseNode
.getElementsByTagName('ext:ExtensionContent').item(0)
.getElementsByTagName('Signature').item(0)
.getElementsByTagName('SignedInfo').item(0)
.getElementsByTagName('Reference').item(0)
.getElementsByTagName('DigestValue').item(0);
}
get responseNode() {
return this.applicationResponseNode
.getElementsByTagName('cac:DocumentResponse').item(0)
.getElementsByTagName('cac:Response').item(0);
}
get statusNode() {
return this.responseNode
.getElementsByTagName('cac:Status');
}
get hashCDR() {
return this.hashNode.textContent;
}
get date() {
let date = this.applicationResponseNode.getElementsByTagName('cbc:ResponseDate').item(0).textContent.split('-');
let time = this.applicationResponseNode.getElementsByTagName('cbc:ResponseTime').item(0).textContent.split(':');
return new Date(Number(date[0]), Number(date[1]) - 1, Number(date[2]), Number(time[0]), Number(time[1]), Number(time[2]));
}
get code() {
return this.responseNode
.getElementsByTagName('cbc:ResponseCode').item(0)
.textContent;
}
get referenceID() {
return this.responseNode
.getElementsByTagName('cbc:ReferenceID').item(0)
.textContent;
}
get description() {
return this.responseNode
.getElementsByTagName('cbc:Description').item(0)
.textContent;
}
get status() {
let status = new Array();
for (let i = 0; i < this.statusNode.length; i++) {
if (!this.statusNode.item(i).hasChildNodes())
break;
status.push({
code: this.statusNode.item(i).getElementsByTagName('cbc:StatusReasonCode').item(0).textContent,
reason: this.statusNode.item(i).getElementsByTagName('cbc:StatusReason').item(0).textContent
});
}
return status;
}
get reponseCDR() {
const cdr = new CDR();
cdr.hash = this.hashCDR;
cdr.date = this.date;
cdr.code = this.code;
cdr.referenceID = this.referenceID;
cdr.description = this.description;
cdr.status = this.status;
return cdr;
}
}
//# sourceMappingURL=xml-cdr-utils.js.map