Validacija poslovnih pravila e-računa

HPDFEInvoiceValidator kombinira validaciju spremnika Factur-X ili ZUGFeRD s eksplicitno odabranim, verzioniranim skupovima poslovnih pravila i državnih pravila

Kompletno pregledano izvršenje pravila

Biblioteka isporučuje podudarne resurse `.sch` i `_codedb.xml` za MINIMUM, BASIC WL, BASIC, EN 16931 i EXTENDED

Motor XE2 i noviji izvršava kompletnu pregledanu XPath 2 površinu kroz sigurno MSXML razrješavanje, determinističke XPath 1 ekvivalente i izravnu evaluaciju za kvantifikatore, FLWOR zbrojeve, pretvorbe, usporedbe slijeda, vanjske liste kodova, uzorke datuma i booleove indikatorske vrijednosti

Profil EN 16931 sadrži 618 provjera i svaka se provjera obrađuje tijekom svakog pokretanja validacije

Kombinirana validacija

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

HPDFValidateEInvoice najprije poziva THotPDF.ValidateFacturXInvoice, izdvaja i identificira XML računa, učitava Schematron resurse specifične za profil i izvršava poslovna pravila

Otkriveni hibridni račun ne uspijeva zatvoreno kada se izdvajanje XML-a, otkrivanje profila, učitavanje pravila, učitavanje baze kodova ili evaluacija izraza ne mogu dovršiti

Funkcija vraća true samo kada je spremnik valjan, poslovna pravila suprocijenjena i nijedan nalaz pogreške ili upozorenja ne ostaje

Registar profila i opseg validacije

THPDFEInvoiceRuleRegistry registrira jedan sloj poslovnih pravila i, kada je potrebno, jedan sloj državnih pravila po profilu, uz eksplicitni naziv resursa, verziju pravila i neobaveznu implementaciju IHPDFESchematronEngine

Zadani registar sadrži pet isporučenih Factur-X profila i osnovna EXTENDED pravila za francuske profile EXTENDED-CTC-FR i EXTENDED-B2B-FR

Francuski profili zahtijevaju dodatnu registraciju državnih pravila prije nego ValidationComplete postane true, a XRECHNUNG zahtijeva i EN 16931 CII i njemačka državna pravila

Nepoznati profili nemaju zadana pravila i nikada ne padaju na EXTENDED, a HPDFSchematronFileForProfile vraća prazan niz za nepoznate ili državno specifične profile

HPDFValidateEInvoiceWithRegistry koristi registar pozivatelja uz provjeru PDF spremnika, dok HPDFValidateEInvoiceXML validira eksplicitne XML bajtove i profil bez evaluacije PDF spremnika

Izvješće izlaže ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete i ValidationNote, a njegovo polje RuleSets bilježi svaki odabrani resurs, verziju, opseg, sažetak i status dovršenosti

Dovršena evaluacija pravila i dalje može sadržavati povrede poslovnih pravila, pa provjerite i logički rezultat ili BusinessRuleViolations uz ValidationComplete

Ovi API-ji izvještavaju o pokrivenosti poslovnih i državnih pravila, dok validacija XML Scheme, transportne politike i pravne odluke o prihvaćanju ostaju izvan ovog opsega

Službena XRechnung CII pravila

HPDFEInvoiceSaxon isporučuje neobavezni Saxon HE most koji izvršava nemodificirane kompilirane Schematron 2.6.0 stylesheetove EN 16931 CII 1.3.16 i XRechnung 3.0.2 isporučene u Lib/resources/Schematron/XRechnung

Resursi dolaze iz službene KoSIT konfiguracije validatora od 31. kolovoza 2026., a README resursa bilježi njihovo porijeklo, licence i sažetke

Host eksplicitno dostavlja Java izvršnu datoteku i Saxon class path, a biblioteka pokreće transformaciju bez ljuske ili vidljivog konzolnog prozora, provodi vremensko ograničenje, parsira SVRL nalaze i uklanja svoje privremene datoteke

Nula za vremensko ograničenje bira 60 sekundi, vrijednosti iznad 3.600.000 milisekundi se odbijaju, dijagnostički izlaz je ograničen na 8 MiB, a kompilirani stylesheetovi i SVRL izvješća na 64 MiB prije parsiranja ili učitavanja

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;

Konfigurirajte Saxon class path sa Saxon HE i njegovim potrebnim ovisnostima te koristite zasebnu instancu registra i motora po niti validacije

Neobavezni most zahtijeva Delphi XE2 ili noviji na Windowsu i Java/Saxon runtime koji dostavlja host, i nijedan runtime se ne preuzima ni instalira bibliotekom

Nedostajući runtimei, pogrešna sintaksa računa, zabranjeni DTD-ovi, istek vremena, neuspjela transformacija i deformirani SVRL izlaz proizvode eksplicitnu dijagnostiku nepotpune validacije

Službena francuska CTC pravila računa

HPDFRegisterFrenchCTCRules odabire službeni sloj profila i strogi državni sloj BR-FR-Flux2 iz FNFE-MPE izdanja 1.4.0.04, objavljenog 4. rujna 2026. za AFNOR XP Z12-012 verziju 1.4

Službeno FNFE-MPE izdanje objavljeno je pod Apache 2.0 i povezano sa stranice resursa FNFE-MPE, dok uključeni EN 16931 CII stylesheet zadržava EUPL 1.2, a izvorni kompilirani stylesheetovi, Schematron izvori, baze kodova, licence, izvorne putanje i sažeci sačuvani su pod Lib/resources/Schematron/France

Za fisFacturX pomoćnik podržava BASIC WL, EN 16931 i EXTENDED koristeći objavljene slojeve pravila Factur-X 1.09.2, a oznaka spremnika EXTENDED-CTC-FR koristi isti Factur-X EXTENDED sloj plus francuske državne provjere

Za samostalni fisCII podržava EN 16931 i namjenski EXTENDED-CTC-FR CII sloj, čije se ograničenje i identifikator smjernica razlikuju od hibridnog Factur-X EXTENDED sloja

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);

Registracija čuva odvojene verzije profila i državnih pravila te čini francuski državni sloj obaveznim za odabrani profil, uključujući EN 16931 i BASIC WL kada su eksplicitno registrirani za Francusku

Strogi objavljeni nacionalni stylesheet koristi se izravno, bez zamjene odvojenom varijantom samo-s-upozorenjima ili spuštanja nalaza

Prikovano službeno pakiranje nema profil pravila EXTENDED-B2B-FR, pa pomoćnik odbija taj naslijeđeni naziv umjesto da ga tretira kao automatski certificirani alias

Uspješna validacija utvrđuje dovršenost ovih objavljenih slojeva poslovnih pravila računa, dok XML Schema, CDAR poruke životnog ciklusa, izdvajanje podataka za e-reporting, autorizacija platforme, transport i pravna certificiranja ostaju odvojeni opsezi

API motora

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

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

THPDFSchematronSummary izvještava o Profile, TotalRules, Evaluated, Skipped, EvaluationErrors, Violations, EngineAvailable i EngineNote

Skipped ostaje nula u motoru XE2 i novijim te je rezerviran za Delphi 7 stub ili naslijeđene podatke rezultata

Neispravni ili nepodržani izrazi proizvode eksplicitne nalaze s težinom pogreške, povećavaju EvaluationErrors i nikada ne nestaju kao uspješne provjere

Pomoćne funkcije Factur-X XML-a

Jedinica HPDFFacturX isporučuje pomoćnike na razini bajtova koji čitaju Factur-X / ZUGFeRD XML računa bez izgradnje DOM-a, pa rade na svakoj Delphi verziji koju biblioteka podržava i sigurni su na izdvojenim bajtovima iz ExtractFacturXXML

HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes) vraća identifikator smjernica iz elementa GuidelineSpecifiedDocumentContextParameter / ram:ID CII dokumenta ili prazan niz kada je odsutan

HPDFIsFacturXConformanceLevel(Value, FileName, Version) validira naziv razine usklađenosti, prihvaćajući MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR i XRECHNUNG; naslijeđena razina COMFORT dodatno zahtijeva naziv datoteke ZUGFeRD 1.0 ZUGFeRD-invoice.xml s verzijom 1.0

HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) unakrsno provjerava smjernice pronađene u XML-u naspram deklarirane razine usklađenosti, verzije i ugrađenog naziva datoteke

HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) popunjava zapis THPDFFacturXInvoiceSummary iz XML-a računa i vraća True kada se može locirati barem primarni XML računa; sam tip zapisa sažetka deklariran je u HPDFDoc uz THPDFFacturXInvoiceInfo

Stabilna dijagnostika i ograničenja

Dostupnost alatnog lanca

Delphi XE2 i noviji koriste ugrađeni MSXML kompatibilni motor

Delphi 7 zadržava dijeljena sučelja i vrste rezultata, ali vraća dijagnostiku nedostupnog motora

Povezani API-ji

Prihvat bez GUI-ja

Pokrenite Tests/Delphi/Run-EInvoiceRuleTests.ps1 s eksplicitnim vrijednostima JavaExecutable i SaxonClassPath ili odgovarajućim varijablama okoline HOTPDF_JAVA_EXE i HOTPDF_SAXON_CLASSPATH

Zadani runner zahtijeva konfiguraciju motora službenih pravila i izvodi i Win32 i Win64 uz potisnuto pokretanje PDF preglednika; -NativeOnly namjerno izostavlja izvršavanje službenog Saxona