feat(ZUGFERD): Add dedicated ZUGFERD v1/v2 support and refine invoice format detection logic

This commit is contained in:
2025-04-03 20:08:02 +00:00
parent b4a95de482
commit 46331c2bf6
28 changed files with 1191 additions and 294 deletions

View File

@ -27,6 +27,12 @@ import { CIIBaseValidator } from './formats/cii/cii.validator.js';
// Import PDF utilities
import { PDFEmbedder } from './formats/pdf/pdf.embedder.js';
import { PDFExtractor } from './formats/pdf/pdf.extractor.js';
import {
BaseXMLExtractor,
StandardXMLExtractor,
AssociatedFilesExtractor,
TextXMLExtractor
} from './formats/pdf/extractors/index.js';
// Import format detector
import { FormatDetector } from './formats/utils/format.detector.js';
@ -36,6 +42,12 @@ import { FacturXDecoder } from './formats/cii/facturx/facturx.decoder.js';
import { FacturXEncoder } from './formats/cii/facturx/facturx.encoder.js';
import { FacturXValidator } from './formats/cii/facturx/facturx.validator.js';
// Import ZUGFeRD implementation
import { ZUGFeRDDecoder } from './formats/cii/zugferd/zugferd.decoder.js';
import { ZUGFeRDEncoder } from './formats/cii/zugferd/zugferd.encoder.js';
import { ZUGFeRDValidator } from './formats/cii/zugferd/zugferd.validator.js';
import { ZUGFeRDV1Decoder } from './formats/cii/zugferd/zugferd.v1.decoder.js';
// Export interfaces
export type {
// Common interfaces
@ -46,12 +58,12 @@ export type {
TLetterEnvelope,
TDocumentEnvelope,
IPdf,
// Validation interfaces
ValidationError,
ValidationResult,
IValidator,
// Format interfaces
ExportFormat,
XInvoiceOptions
@ -80,8 +92,18 @@ export { CIIBaseDecoder, CIIBaseEncoder, CIIBaseValidator };
// Export Factur-X implementation
export { FacturXDecoder, FacturXEncoder, FacturXValidator };
// Export ZUGFeRD implementation
export { ZUGFeRDDecoder, ZUGFeRDEncoder, ZUGFeRDValidator, ZUGFeRDV1Decoder };
// Export PDF utilities
export { PDFEmbedder, PDFExtractor };
export {
PDFEmbedder,
PDFExtractor,
BaseXMLExtractor,
StandardXMLExtractor,
AssociatedFilesExtractor,
TextXMLExtractor
};
// Export format detector
export { FormatDetector };
@ -93,7 +115,7 @@ export { FormatDetector };
* @returns ValidationResult with the result of validation
*/
export function validateXml(
xml: string,
xml: string,
level: common.ValidationLevel = common.ValidationLevel.SYNTAX
): common.ValidationResult {
try {