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
- Identifikatori pravila razrješuju se iz tokena poruke Schematrona kada je prisutan
- Nedostajući identifikatori primaju determinističke redne brojeve profila i tvrdnji-ili-izvješća
- Svaki nalaz čuva svoj izvorni kontekst i testne izraze
- Vanjski putovi baze kodova ograničeni su na sestrinske nazive datoteka
- Obrada DTD-ja i razrješavanje vanjskih XML entiteta onemogućeni su
- XML ulaz računa ograničen je na 64 MiB
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
HPDFValidateEInvoiceHPDFValidateEInvoiceWithRegistryHPDFValidateEInvoiceXMLTHPDFEInvoiceRuleRegistryHPDFRegisterXRechnungRulesHPDFRegisterFrenchCTCRulesTHPDFFrenchInvoiceSyntaxHPDFCreateSchematronEngineHPDFSchematronFileForProfileIHPDFESchematronEngineTHPDFBusinessRuleResultTHPDFSchematronSummary- THotPDF.ValidateFacturXInvoice
- THotPDF.ExtractFacturXXML
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