@nodecfdi/cfdi-cleaner
Version:
Librería para limpiar comprobantes fiscales digitales v3.3 y v4.0
33 lines (32 loc) • 1.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ts_mixer_1 = require("ts-mixer");
const cfdi_x_path_1 = __importDefault(require("#src/internal/cfdi_x_path"));
const xml_element_methods_1 = __importDefault(require("#src/mixins/xml_element_methods"));
class CollapseComplemento extends (0, ts_mixer_1.Mixin)(xml_element_methods_1.default) {
clean(document) {
const xpath = cfdi_x_path_1.default.createFromDocument(document);
const complementos = xpath.queryElements('/cfdi:Comprobante/cfdi:Complemento');
if (complementos.length < 2) {
return;
}
let receiver = null;
for (const complemento of complementos) {
// First complemento
if (!receiver) {
receiver = complemento;
continue;
}
// Non-first complemento
while (complemento.childNodes.length > 0) {
const child = complemento.childNodes.item(0);
this.elementMove(child, receiver);
}
this.elementRemove(complemento);
}
}
}
exports.default = CollapseComplemento;