49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { BaseEncoder } from '../base/base.encoder.js';
|
|
import { InvoiceFormat } from '../../interfaces/common.js';
|
|
import type { ExportFormat } from '../../interfaces/common.js';
|
|
|
|
// Import specific encoders
|
|
// import { XRechnungEncoder } from '../ubl/xrechnung/xrechnung.encoder.js';
|
|
import { FacturXEncoder } from '../cii/facturx/facturx.encoder.js';
|
|
// import { ZUGFeRDEncoder } from '../cii/zugferd/zugferd.encoder.js';
|
|
|
|
/**
|
|
* Factory to create the appropriate encoder based on the target format
|
|
*/
|
|
export class EncoderFactory {
|
|
/**
|
|
* Creates an encoder for the specified format
|
|
* @param format Target format for encoding
|
|
* @returns Appropriate encoder instance
|
|
*/
|
|
public static createEncoder(format: ExportFormat | InvoiceFormat): BaseEncoder {
|
|
switch (format.toLowerCase()) {
|
|
case InvoiceFormat.UBL:
|
|
case 'ubl':
|
|
// return new UBLEncoder();
|
|
throw new Error('UBL encoder not yet implemented');
|
|
|
|
case InvoiceFormat.XRECHNUNG:
|
|
case 'xrechnung':
|
|
// return new XRechnungEncoder();
|
|
throw new Error('XRechnung encoder not yet implemented');
|
|
|
|
case InvoiceFormat.CII:
|
|
// For now, use Factur-X encoder for generic CII
|
|
return new FacturXEncoder();
|
|
|
|
case InvoiceFormat.ZUGFERD:
|
|
case 'zugferd':
|
|
// For now, use Factur-X encoder for ZUGFeRD
|
|
return new FacturXEncoder();
|
|
|
|
case InvoiceFormat.FACTURX:
|
|
case 'facturx':
|
|
return new FacturXEncoder();
|
|
|
|
default:
|
|
throw new Error(`Unsupported invoice format for encoding: ${format}`);
|
|
}
|
|
}
|
|
}
|