Forretningsregel-validering for e-faktura

HPDFEInvoiceValidator kombinerer Factur-X- eller ZUGFeRD-beholder-validering med eksplisitt valgte, versjonerte sett av forretningsregler og landsregler

Fullstendig gjennomgått regelutførelse

Biblioteket leverer samsvarende `.sch`- og `_codedb.xml`-ressurser for MINIMUM, BASIC WL, BASIC, EN 16931 og EXTENDED

XE2+-motoren utfører den fullstendige gjennomgåtte XPath 2-overflaten gjennom sikker MSXML-parsing, deterministiske XPath 1-ekvivalenter og direkte evaluering for kvantifiserere, FLWOR-sum, kaster, sekvens-sammenligninger, eksterne kodelister, datomønstre og boolske indikatorverdier

EN 16931-profilen inneholder 618 kontroller, og hver kontroll behandles under hver valideringskjøring

Kombinert validering

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

HPDFValidateEInvoice kaller først THotPDF.ValidateFacturXInvoice, henter ut og identifiserer faktura-XML-en, laster de profilspesifikke Schematron-ressursene og utfører forretningsreglene

En detektert hybridfaktura mislykkes lukket når XML-uthenting, profildeteksjon, regellasting, kodedatabase-lasting eller uttrykksevaluering ikke kan fullføres

Funksjonen returnerer bare ekte når beholderen er gyldig, forretningsregler ble evaluert og ingen feil- eller advarselsfunn gjenstår

Profilregister og valideringsomfang

THPDFEInvoiceRuleRegistry registrerer ett forretningsregellag og, når det kreves, ett landsregellag per profil, med eksplisitt ressursnavn, regelversjon og valgfri IHPDFESchematronEngine-implementasjon

Standardregisteret inneholder de fem medfølgende Factur-X-profilene og basis-EXTENDED-reglene for de franske profilene EXTENDED-CTC-FR og EXTENDED-B2B-FR

De franske profilene krever en ekstra landsregel-registrering før ValidationComplete blir sann, og XRECHNUNG krever både EN 16931 CII og tyske landsregler

Ukjente profiler har ingen standardregler og faller aldri tilbake til EXTENDED, og HPDFSchematronFileForProfile returnerer en tom streng for ukjente eller landsspesifikke profiler

HPDFValidateEInvoiceWithRegistry bruker oppkallerens register sammen med PDF-beholdersjekken, mens HPDFValidateEInvoiceXML validerer eksplisitte XML-byte og en profil uten å vurdere en PDF-beholder

Rapporten eksponerer ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete og ValidationNote, og RuleSets-arrayen registrerer hver valgt ressurs, versjon, omfang, oppsummering og fullføringsstatus

En fullført regelsvurdering kan fortsatt inneholde forretningsregelbrudd, så sjekk det boolske resultatet eller BusinessRuleViolations i tillegg til ValidationComplete

Disse API-ene rapporterer dekning av forretnings- og landsregler, mens XML Schema-validering, transportpolicyer og juridiske akseptbeslutninger forblir utenfor dette omfanget

Offisielle XRechnung CII-regler

HPDFEInvoiceSaxon leverer en valgfri Saxon HE-bro som kjører de umodifiserte, kompilerte Schematron 2.6.0-stilarkene EN 16931 CII 1.3.16 og XRechnung 3.0.2 som følger med i Lib/resources/Schematron/XRechnung

Ressursene kommer fra den offisielle KoSIT validator-konfigurasjonen datert 31. august 2026, og ressursenes README dokumenterer opprinnelse, lisenser og hash-verdier

Verten oppgir Java-kjørbar fil og Saxon class path eksplisitt, og biblioteket starter transformasjonen uten skall eller synlig konsollvindu, håndhever tidsavbrudd, parser SVRL-funn og fjerner sine midlertidige filer

Null som tidsavbrudd velger 60 sekunder, verdier over 3 600 000 millisekunder avvises, diagnostikk-utdata takseres til 8 MiB, og kompilerte stilark og SVRL-rapporter takseres til 64 MiB før parsing eller lasting

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;

Konfigurer Saxon class path med Saxon HE og dets nødvendige avhengigheter, og bruk separate register- og motorinstanser per valideringstråd

Den valgfrie broen krever Delphi XE2 eller nyere på Windows og et vert-levert Java/Saxon-kjøretidsmiljø, og ingen av dem lastes ned eller installeres av biblioteket

Manglende kjøretidsmiljøer, feil fakturasyntaks, forbudte DTD-er, tidsavbrudd, mislykket transformasjon og feilformet SVRL-utdata produserer eksplisitt diagnostikk om ufullstendig validering

Offisielle franske CTC-fakturaregler

HPDFRegisterFrenchCTCRules velger det offisielle profillaget og det strenge BR-FR-Flux2-landslaget fra FNFE-MPE-utgivelsen 1.4.0.04, publisert 4. september 2026 for AFNOR XP Z12-012 versjon 1.4

Den offisielle FNFE-MPE-utgivelsen er publisert under Apache 2.0 og lenket fra FNFE-MPEs ressurside, mens det medfølgende EN 16931 CII-stilarket beholder EUPL 1.2, og de opprinnelige kompilerte stilarkene, Schematron-kildene, kodedatabasene, lisensene, kildestinene og hash-verdiene bevares under Lib/resources/Schematron/France

For fisFacturX støtter hjelperen BASIC WL, EN 16931 og EXTENDED med de publiserte Factur-X 1.09.2-regellagene, og EXTENDED-CTC-FR-containerbetegnelsen bruker samme Factur-X EXTENDED-lag pluss de franske landskontrollene

For frittstående fisCII støtter den EN 16931 og det dedikerte EXTENDED-CTC-FR CII-laget, hvis restriksjoner og retningslinjeidentifikator skiller seg fra det hybride Factur-X EXTENDED-laget

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 beholder separate profil- og landsregelversjoner og gjør det franske landslaget påkrevd for den valgte profilen, inkludert EN 16931 og BASIC WL når de eksplisitt registreres for Frankrike

Det strenge, publiserte nasjonale stilarket brukes direkte, uten å bytte inn den separate kun-advarsels-varianten eller nedgradere funn

Den låste offisielle pakken har ingen EXTENDED-B2B-FR-regelprofil, så hjelperen avviser det eldre navnet i stedet for å behandle det som et automatisk sertifisert alias

Vellykket validering etablerer fullførelse av disse publiserte faktura-forretningsregellagene, mens XML Schema, CDAR-livssyklusmeldinger, e-rapporteringsdatauttrekk, plattformautorisasjon, transport og juridisk sertifisering forblir separate områder

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 forblir null i XE2+-motoren og er reservert for Delphi 7-stubben eller eldre resultatdata

Feilformede eller ustøttede uttrykk produserer eksplisitte funn med feil-alvorlighet, øker EvaluationErrors og forsvinner aldri som vellykkede kontroller

Factur-X XML-hjelpefunksjoner

Uniten HPDFFacturX leverer bytenivå-hjelpere som leser en Factur-X / ZUGFeRD-faktura-XML uten å bygge et DOM, så de kjører på alle Delphi-versjoner biblioteket støtter og er trygge på uttrukne byte fra ExtractFacturXXML

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

HPDFIsFacturXConformanceLevel(Value, FileName, Version) validerer et samsvarsnivånavn og godtar MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR og XRECHNUNG; det eldre COMFORT-nivået krever i tillegg ZUGFeRD 1.0-filnavnet ZUGFeRD-invoice.xml med versjon 1.0

HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) krysssjekker retningslinjen funnet i XML-en mot deklarert samsvarsnivå, versjon og innebygd filnavn

HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) fyller en THPDFFacturXInvoiceSummary-record fra faktura-XML-en og returnerer True når i det minste den primære faktura-XML-en kunne lokaliseres; record-typen for oppsummeringen er selv deklarert i HPDFDoc ved siden av THPDFFacturXInvoiceInfo

Stabil diagnostikk og grenser

Tilgjengelighet for verktøykjede

Delphi XE2 og nyere bruker den innebygde MSXML-kompatibilitetsmotoren

Delphi 7 beholder de delte grensesnittene og resultattypene, men returnerer en diagnostikk om utilgjengelig motor

Relaterte API-er

Ikke-GUI-godkjennelse

Kjør Tests/Delphi/Run-EInvoiceRuleTests.ps1 med eksplisitte verdier for JavaExecutable og SaxonClassPath, eller de tilsvarende miljøvariablene HOTPDF_JAVA_EXE og HOTPDF_SAXON_CLASSPATH

Standardkjøreren krever konfigurasjonen for motoren med offisielle regler og kjører både Win32 og Win64 med oppstart av PDF-leser undertrykket; -NativeOnly utelater med vilje offisiell Saxon-kjøring