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

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

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