import { BaseValidator } from '../base/base.validator.js'; import { InvoiceFormat, ValidationLevel } from '../../interfaces/common.js'; import type { ValidationResult } from '../../interfaces/common.js'; import { FormatDetector } from '../utils/format.detector.js'; // Import specific validators import { EN16931UBLValidator } from '../ubl/en16931.ubl.validator.js'; import { XRechnungValidator } from '../ubl/xrechnung.validator.js'; import { FacturXValidator } from '../cii/facturx/facturx.validator.js'; import { ZUGFeRDValidator } from '../cii/zugferd/zugferd.validator.js'; // The EN16931UBLValidator handles all UBL-based formats with proper business rules // No need for legacy validator implementations here /** * FatturaPA validator implementation * Basic implementation for Italian electronic invoices */ class FatturaPAValidator extends BaseValidator { validate(level: ValidationLevel = ValidationLevel.SYNTAX): ValidationResult { // Reset errors this.errors = []; let valid = true; if (level === ValidationLevel.SYNTAX) { valid = this.validateSchema(); } else if (level === ValidationLevel.SEMANTIC || level === ValidationLevel.BUSINESS) { valid = this.validateSchema() && this.validateBusinessRules(); } return { valid, errors: this.errors, level }; } protected validateSchema(): boolean { // Basic schema validation for FatturaPA if (!this.xml.includes('