@nodecfdi/cfdi-cleaner
Version:
Librería para limpiar comprobantes fiscales digitales v3.3 y v4.0
21 lines (20 loc) • 1.05 kB
JavaScript
import { Mixin } from 'ts-mixer';
import CfdiXPath from '#src/internal/cfdi_x_path';
import SchemaLocation from '#src/internal/schema_location';
import XmlAttributeMethods from '#src/mixins/xml_attribute_methods';
import XmlNamespaceMethods from '#src/mixins/xml_namespace_methods';
export default class RemoveNonSatSchemaLocations extends Mixin(XmlAttributeMethods, XmlNamespaceMethods) {
clean(document) {
const xpath = CfdiXPath.createFromDocument(document);
const schemaLocations = xpath.querySchemaLocations();
for (const schemaLocation of schemaLocations) {
const value = this.cleanSchemaLocationsValue(schemaLocation.value);
this.attributeSetValueOrRemoveIfEmpty(schemaLocation, value);
}
}
cleanSchemaLocationsValue(schemaLocationValue) {
const schemaLocation = SchemaLocation.createFromValue(schemaLocationValue);
schemaLocation.filterUsingNamespace((namespace) => this.isNamespaceRelatedToSat(namespace));
return schemaLocation.asValue();
}
}