@nodecfdi/cfdi-cleaner
Version:
Librería para limpiar comprobantes fiscales digitales v3.3 y v4.0
27 lines (26 loc) • 971 B
JavaScript
import { Mixin } from 'ts-mixer';
import CfdiXPath from '#src/internal/cfdi_x_path';
import XmlElementMethods from '#src/mixins/xml_element_methods';
export default class CollapseComplemento extends Mixin(XmlElementMethods) {
clean(document) {
const xpath = CfdiXPath.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);
}
}
}