E-faktura-affärsregelvalidering
HPDFEInvoiceValidator kombinerar Factur-X- eller ZUGFeRD-behållarvalidering med uttryckligen valda, versionshanterade uppsättningar affärsregler och landsregler
Fullständig granskad regelkörning
Biblioteket levererar matchande `.sch`- och `_codedb.xml`-resurser för MINIMUM, BASIC WL, BASIC, EN 16931 och EXTENDED
Motorn från XE2 och senare exekverar den fullständiga granskade XPath 2-ytan genom säker MSXML-tolkning, deterministiska XPath 1-ekvivalenter och direkt utvärdering för kvantifierare, FLWOR-summor, gjutningar, sekvensjämförelser, externa kodlistor, datummönster och booleska indikatorvärden
EN 16931-profilen innehåller 618 kontroller och varje kontroll bearbetas under varje valideringskörning
Kombinerad validering
var
Report: THPDFEInvoiceValidationReport;
begin
if not HPDFValidateEInvoice(PDF,
'Lib\resources\Schematron', Report) then
LogValidationFailure(Report);
end;
HPDFValidateEInvoice anropar först THotPDF.ValidateFacturXInvoice, extraherar och identifierar faktura-XML:en, läser in de profilspecifika Schematron-resurserna och exekverar affärsreglerna
Ett detekterat hybridfaktura misslyckas stängt när XML-extraktion, profildetektering, regelinläsning, koddatabasinläsning eller uttrycksutvärdering inte kan slutföras
Funktionen returnerar true endast när behållaren är giltig, affärsreglerna utvärderades och inget fel- eller varningsfynd återstår
Profilregister och valideringsomfång
THPDFEInvoiceRuleRegistry registrerar ett affärsregellager och, vid behov, ett landsregellager per profil, med uttryckligt resursnamn, regelversion och en valfri IHPDFESchematronEngine-implementering
Standardregistret innehåller de fem medlevererade Factur-X-profilerna och basreglerna för EXTENDED för de franska profilerna EXTENDED-CTC-FR och EXTENDED-B2B-FR
De franska profilerna kräver en ytterligare landsregelregistrering innan ValidationComplete blir true, och XRECHNUNG kräver både EN 16931 CII och tyska landsregler
Okända profiler har inga standardregler och faller aldrig tillbaka på EXTENDED, och HPDFSchematronFileForProfile returnerar en tom sträng för okända eller landspecifika profiler
HPDFValidateEInvoiceWithRegistry använder anroparens register tillsammans med PDF-behållarkontrollen, medan HPDFValidateEInvoiceXML validerar uttryckliga XML-byte och en profil utan att utvärdera en PDF-behållare
Rapporten exponerar ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete och ValidationNote, och dess RuleSets-array registrerar varje vald resurs, version, omfång, sammanfattning och fullgörandestatus
En fullständig regelutvärdering kan fortfarande innehålla överträdelser av affärsregler, så kontrollera det booleska resultatet eller BusinessRuleViolations utöver ValidationComplete
Dessa API:er rapporterar täckning av affärs- och landsregler, medan XML Schema-validering, transportpolicyer och juridiska acceptansbeslut ligger utanför detta omfång
Officiella XRechnung CII-regler
HPDFEInvoiceSaxon tillhandahåller en valfri Saxon HE-brygga som exekverar de omodifierade, kompilerade Schematron 2.6.0-stilmallarna för EN 16931 CII 1.3.16 och XRechnung 3.0.2 som levereras i Lib/resources/Schematron/XRechnung
Resurserna kommer från den officiella KoSIT-validerarkonfigurationen daterad den 31 augusti 2026, och resursernas README dokumenterar deras ursprung, licenser och hashvärden
Värden tillhandahåller Java-exekverbara filen och Saxon-klasssökvägen uttryckligen, och biblioteket startar transformationen utan skal eller synligt konsolfönster, tvingar fram en tidsgräns, tolkar SVRL-fynd och tar bort sina temporärfiler
En tidsgräns på noll väljer 60 sekunder, värden över 3 600 000 millisekunder avvisas, diagnostikutdata begränsas till 8 MiB, och kompilerade stilmallar och SVRL-rapporter begränsas till 64 MiB före tolkning eller inlä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;
Konfigurera Saxon-klasssökvägen med Saxon HE och dess nödvändiga beroenden, och använd ett separat register- och motorinstans per valideringstråd
Den valfria bryggan kräver Delphi XE2 eller senare på Windows samt en Java/Saxon-körtid från värden, och ingen av körtiderna laddas ner eller installeras av biblioteket
Saknade körtider, fel fakturasyntax, förbjudna DTD:er, tidsgränsöverskridande, misslyckad transformation och felformaterad SVRL-utdata ger explicita diagnostiker för ofullständig validering
Officiella franska CTC-fakturaregler
HPDFRegisterFrenchCTCRules väljer det officiella profillagret och det strikta landslaget BR-FR-Flux2 från FNFE-MPE-utgåvan 1.4.0.04, publicerad den 4 september 2026 för AFNOR XP Z12-012 version 1.4
Den officiella FNFE-MPE-utgåvan publiceras under Apache 2.0 och länkas från FNFE-MPE:s resurssida, medan den inkluderade EN 16931 CII-stilmallen behåller EUPL 1.2, och de ursprungliga kompilerade stilmallarna, Schematron-källorna, koddatabaserna, licenserna, källsökvägarna och hashvärdena bevaras under Lib/resources/Schematron/France
För fisFacturX stödjer hjälprutinen BASIC WL, EN 16931 och EXTENDED med de publicerade regellagren för Factur-X 1.09.2, och EXTENDED-CTC-FR-behållarbeteckningen använder samma Factur-X EXTENDED-lager plus de franska landskontrollerna
För fristående fisCII stöds EN 16931 och det dedikerade CII-lagret EXTENDED-CTC-FR, vars begränsningar och riktlinjeidentifierare skiljer sig från det hybrida Factur-X EXTENDED-lagret
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 bevarar separata versioner för profil- och landsregler och gör det franska landslaget obligatoriskt för den valda profilen, inklusive EN 16931 och BASIC WL när de uttryckligen registrerats för Frankrike
Den strikta publicerade nationella stilmallen används direkt, utan att byta ut den separata varianten med endast varningar eller nedgradera fynd
Det låsta officiella paketet har ingen regelprofil för EXTENDED-B2B-FR, så hjälprutinen avvisar det äldre namnet i stället för att behandla det som ett automatiskt certifierat alias
En lyckad validering fastställer fullgörandet av dessa publicerade affärsregellager för fakturor, medan XML Schema, CDAR-livscykelmeddelanden, extraktion av e-rapporteringsdata, plattformsauktorisering, transport och juridisk certifiering förblir separata omfång
Motor-API
Engine := HPDFCreateSchematronEngine;
if not Engine.Load(SchematronPath, ErrorText) then
raise Exception.Create(ErrorText);
Findings := Engine.Validate(XMLBytes);
Summary := Engine.LastSummary;
THPDFSchematronSummary rapporterar Profile, TotalRules, Evaluated, Skipped, EvaluationErrors, Violations, EngineAvailable och EngineNote
Skipped förblir noll i motorn från XE2 och senare och är reserverat för Delphi 7-stubben eller äldre resultatdata
Felformaterade eller icke-stödda uttryck producerar explicita fynd med felsvårighet, ökar EvaluationErrors och försvinner aldrig som lyckade kontroller
Factur-X-XML-hjälpfunktioner
Enheten HPDFFacturX levererar byte-nivåhjälpare som läser en Factur-X-/ZUGFeRD-faktura-XML utan att bygga ett DOM-träd, så att de körs på alla Delphi-versioner som biblioteket stöder och är säkra på extraherade byte från ExtractFacturXXML
HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes) returnerar riktlinjeidentifieraren från elementet GuidelineSpecifiedDocumentContextParameter / ram:ID i ett CII-dokument, eller en tom sträng när den saknas
HPDFIsFacturXConformanceLevel(Value, FileName, Version) validerar ett namn på en överensstämmelsenivå och godtar MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR och XRECHNUNG; den äldre nivån COMFORT kräver dessutom ZUGFeRD 1.0-filnamnet ZUGFeRD-invoice.xml med version 1.0
HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) krysskontrollerar riktlinjen som hittats i XML:en mot den deklarerade överensstämmelsenivån, versionen och det inbäddade filnamnet
HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) fyller en post av typen THPDFFacturXInvoiceSummary från faktura-XML:en och returnerar True när åtminstone den primära faktura-XML:en kunde lokaliseras; posttypen för sammanfattningen är själv deklarerad i HPDFDoc bredvid THPDFFacturXInvoiceInfo
Stabil diagnostik och gränser
- Regelidentifierare tolkas från Schematron-meddelandets token när den finns
- Saknade identifierare får deterministiska profil- och påstående-eller-rapport-ordinaler
- Varje fynd bevarar sitt ursprungliga sammanhang och testuttryck
- Externa koddatabas-sökvägar begränsas till syskonfilnamn
- DTD-behandling och upplösning av externa XML-entiteter är avstängda
- Faktura-XML-indata begränsas till 64 MiB
Verktygskedjans tillgänglighet
Delphi XE2 och senare använder den inbyggda MSXML-kompatibilitetsmotorn
Delphi 7 behåller de delade gränssnitten och resultattyperna men returnerar en motor-otillgänglig-diagnostik
Relaterade API:er
HPDFValidateEInvoiceHPDFValidateEInvoiceWithRegistryHPDFValidateEInvoiceXMLTHPDFEInvoiceRuleRegistryHPDFRegisterXRechnungRulesHPDFRegisterFrenchCTCRulesTHPDFFrenchInvoiceSyntaxHPDFCreateSchematronEngineHPDFSchematronFileForProfileIHPDFESchematronEngineTHPDFBusinessRuleResultTHPDFSchematronSummary- THotPDF.ValidateFacturXInvoice
- THotPDF.ExtractFacturXXML
Godkännande utan GUI
Kör Tests/Delphi/Run-EInvoiceRuleTests.ps1 med uttryckliga värden för JavaExecutable och SaxonClassPath, eller motsvarande miljövariabler HOTPDF_JAVA_EXE och HOTPDF_SAXON_CLASSPATH
Standardköraren kräver konfigurationen för motorn med officiella regler och kör både Win32 och Win64 med start av PDF-visaren undertryckt; -NativeOnly utelämnar medveten exekvering av officiell Saxon