Validering af forretningsregler for e-faktura

HPDFEInvoiceValidator kombinerer validering af Factur-X- eller ZUGFeRD-container med eksplicit udvalgte, versionerede business-rule- og country-rule-sæt

Komplet gennemgået regeleksekvering

Biblioteket leveres med matchende `.sch`- og `_codedb.xml`-ressourcer til MINIMUM, BASIC WL, BASIC, EN 16931 og EXTENDED

XE2- og senere-motoren udfører den komplette gennemgåede XPath 2-overflade gennem sikker MSXML-parsing, deterministiske XPath 1-ækvivalenter og direkte evaluering af kvantorer, FLWOR-summer, casts, sekvenssammenligninger, eksterne kodelister, datomønstre og booleske indikatorværdier

EN 16931-profilen indeholder 618 kontroller, og hver kontrol behandles under hver valideringskørsel

Kombineret validering

var
  Report: THPDFEInvoiceValidationReport;
begin
  if not HPDFValidateEInvoice(PDF,
    'Lib\resources\Schematron', Report) then
    LogValidationFailure(Report);
end;

HPDFValidateEInvoice kalder først THotPDF.ValidateFacturXInvoice, udtrækker og identificerer faktura-XML'en, indlæser de profilspecifikke Schematron-ressourcer og udfører forretningsreglerne

En detekteret hybridfaktura fejler lukket, når XML-udtrækning, profildetektion, regelindlæsning, kodedatabaseindlæsning eller udtryksevaluering ikke kan fuldføres

Funktionen returnerer kun true, når containeren er gyldig, forretningsreglerne er evalueret, og der ikke er nogen fejl- eller advarselsfund tilbage

Profilregistry og valideringsomfang

THPDFEInvoiceRuleRegistry registrerer ét business-rule-lag og, når det er påkrævet, ét country-rule-lag pr. profil med et eksplicit ressourcenavn, regelversion og valgfri IHPDFESchematronEngine-implementering

Standard-registryet indeholder de fem leverede Factur-X-profiler og basis-EXTENDED-reglerne for de franske profiler EXTENDED-CTC-FR og EXTENDED-B2B-FR

De franske profiler kræver en yderligere country-rule-registrering, før ValidationComplete bliver true, og XRECHNUNG kræver både EN 16931 CII og tyske country rules

Ukendte profiler har ingen standardregler og falder aldrig tilbage til EXTENDED, og HPDFSchematronFileForProfile returnerer en tom streng for ukendte eller landespecifikke profiler

HPDFValidateEInvoiceWithRegistry bruger kalderens registry med PDF-containerkontrollen, mens HPDFValidateEInvoiceXML validerer eksplicitte XML-bytes og en profil uden at evaluere en PDF-container

Rapporten eksponerer ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete og ValidationNote, og dens RuleSets-array registrerer hver valgt ressource, version, scope, summary og fuldførelsesstatus

En fuldført regevaluering kan stadig indeholde forretningsregel-overtrædelser, så tjek det booleske resultat eller BusinessRuleViolations samt ValidationComplete

Disse API'er rapporterer business- og country-rule-dækning, mens XML Schema-validering, transportpolicyer og juridiske acceptbeslutninger forbliver uden for dette omfang

Officielle XRechnung CII-regler

HPDFEInvoiceSaxon leverer en valgfri Saxon HE-bro, der eksekverer de umodificerede kompilerede EN 16931 CII 1.3.16- og XRechnung 3.0.2 Schematron 2.6.0-stylesheets, der følger med i Lib/resources/Schematron/XRechnung

Ressourcerne kommer fra den officielle KoSIT validator-konfiguration dateret 31. august 2026, og ressourcens README registrerer deres oprindelse, licenser og hashes

Værten leverer Java-eksekverbaren og Saxon-klassestien eksplicit, og biblioteket starter transformationen uden en shell eller et synligt konsolvindue, håndhæver en timeout, parser SVRL-fund og fjerner sine midlertidige filer

En timeout på nul vælger 60 sekunder, værdier over 3.600.000 millisekunder afvises, diagnostikoutput er begrænset til 8 MiB, og kompilerede stylesheets og SVRL-rapporter er begrænset til 64 MiB før parsing eller indlæsning

uses HPDFEInvoiceValidator, HPDFEInvoiceSaxon;

Registry := THPDFEInvoiceRuleRegistry.Create;
try
  Engine := HPDFCreateSaxonSchematronEngine(
    JavaExecutable, SaxonClassPath, 60000);
  HPDFRegisterXRechnungRules(Registry, Engine);
  Valid := HPDFValidateEInvoiceWithRegistry(PDF,
    'Lib\resources\Schematron', Registry, Report);
finally
  Registry.Free;
end;

Konfigurér Saxon-klassestien med Saxon HE og dets påkrævede afhængigheder, og brug et separat registry- og engine-eksemplar pr. valideringstråd

Den valgfri bro kræver Delphi XE2 eller senere i Windows og en vært-leveret Java/Saxon-runtime, og ingen af runtimeerne downloades eller installeres af biblioteket

Manglende runtimes, forkert fakturasyntaks, forbudte DTD'er, timeout, fejlet transformation og misdannet SVRL-output giver eksplicit diagnostik om ufuldstændig validering

Officielle franske CTC-fakturaregler

HPDFRegisterFrenchCTCRules vælger det officielle profillag og det strict BR-FR-Flux2-country-lag fra FNFE-MPE-udgivelsen 1.4.0.04, publiceret 4. september 2026 til AFNOR XP Z12-012 version 1.4

Den officielle FNFE-MPE-udgivelse er publiceret under Apache 2.0 og linket fra FNFE-MPE-ressourcensiden, mens det inkluderede EN 16931 CII-stylesheet bevarer EUPL 1.2, og de oprindelige kompilerede stylesheets, Schematron-kilder, kodedatabaser, licenser, kildestier og hashes bevares under Lib/resources/Schematron/France

Til fisFacturX understøtter hjælperen BASIC WL, EN 16931 og EXTENDED med de publicerede Factur-X 1.09.2-regellag, og EXTENDED-CTC-FR-containerbetegnelsen bruger samme Factur-X EXTENDED-lag plus de franske country-kontroller

Til selvstændig fisCII understøtter den EN 16931 og det dedikerede EXTENDED-CTC-FR CII-lag, hvis restriktioner og guideline-identifikator adskiller sig fra det hybride Factur-X EXTENDED-lag

Engine := HPDFCreateSaxonSchematronEngine(
  JavaExecutable, SaxonClassPath, 60000);

HPDFRegisterFrenchCTCRules(Registry, 'EN 16931',
  Engine, fisFacturX);
Valid := HPDFValidateEInvoiceWithRegistry(PDF,
  'Lib\resources\Schematron', Registry, Report);

HPDFRegisterFrenchCTCRules(Registry, 'EXTENDED-CTC-FR',
  Engine, fisCII);
Valid := HPDFValidateEInvoiceXML(XMLBytes, 'EXTENDED-CTC-FR',
  'Lib\resources\Schematron', Registry, Report);

Registreringen bevarer separate profil- og country-rule-versioner og gør det franske country-lag påkrævet for den valgte profil, inklusive EN 16931 og BASIC WL, når de eksplicit er registreret for Frankrig

Det strict publicerede nationale stylesheet bruges direkte uden at erstatte den separate kun-advarsels-variant eller nedgradere fund

Den fastlåste officielle pakke har ingen EXTENDED-B2B-FR-regelprofil, så hjælperen afviser det ældre navn i stedet for at behandle det som et automatisk certificeret alias

Succesfuld validering etablerer fuldførelse af disse publicerede faktura-business-rule-lag, mens XML Schema, CDAR-livscyklusbeskeder, e-reporting-dataudtræk, platformautorisering, transport og juridisk certificering forbliver separate omfang

Motor-API

Engine := HPDFCreateSchematronEngine;
if not Engine.Load(SchematronPath, ErrorText) then
  raise Exception.Create(ErrorText);

Findings := Engine.Validate(XMLBytes);
Summary := Engine.LastSummary;

THPDFSchematronSummary rapporterer Profile, TotalRules, Evaluated, Skipped, EvaluationErrors, Violations, EngineAvailable og EngineNote

Skipped forbliver nul i XE2- og senere-motoren og er reserveret til Delphi 7-stubben eller ældre resultatdata

Fejldannede eller ikke-understøttede udtryk producerer eksplicitte fund med fejlalvor, øger EvaluationErrors og forsvinder aldrig som vellykkede kontroller

Factur-X XML-hælpefunktioner

Enheden HPDFFacturX leverer byte-niveau-hjælpere, der læser en Factur-X / ZUGFeRD-faktura-XML uden at bygge en DOM, så de kører på alle Delphi-versioner, biblioteket understøtter, og er sikre på udtrukne bytes fra ExtractFacturXXML

HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes) returnerer guideline-identifikatoren fra GuidelineSpecifiedDocumentContextParameter / ram:ID-elementet i et CII-dokument eller en tom streng, når den mangler

HPDFIsFacturXConformanceLevel(Value, FileName, Version) validerer et conformance level-navn og accepterer MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR og XRECHNUNG; det ældre COMFORT-niveau kræver derudover ZUGFeRD 1.0-filnavnet ZUGFeRD-invoice.xml med version 1.0

HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) krydstjekker den i XML'en fundne guideline mod den deklarerede conformance level, version og indlejrede filnavn

HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) udfylder en THPDFFacturXInvoiceSummary-record ud fra faktura-XML'en og returnerer True, når i det mindste den primære faktura-XML kunne lokaliseres; selve summary-record-typen er deklareret i HPDFDoc ved siden af THPDFFacturXInvoiceInfo

Stabil diagnosticering og grænser

Tilgængelighed af værktøjskæde

Delphi XE2 og senere bruger den indbyggede MSXML-kompatibilitetsmotor

Delphi 7 bevarer de delte grænseflader og resultattyper, men returnerer diagnosticering for utilgængelig motor

Relaterede API'er

Ikke-GUI-accept

Kør Tests/Delphi/Run-EInvoiceRuleTests.ps1 med eksplicitte JavaExecutable- og SaxonClassPath-værdier eller de tilsvarende HOTPDF_JAVA_EXE- og HOTPDF_SAXON_CLASSPATH-miljøvariabler

Standard-runneren kræver konfigurationen til den officielle regelmotor og kører både Win32 og Win64 med opstart af PDF-viewer undertrykt; -NativeOnly udelader bevidst officiel Saxon-eksekvering