Validacija poslovnih pravila e-računa
HPDFEInvoiceValidator kombinuje validaciju kontejnera Factur-X ili ZUGFeRD sa eksplicitno izabranim, verzionisanim skupovima poslovnih i državnih pravila
Kompletno pregledano izvršavanje pravila
Biblioteka isporučuje odgovarajuće `.sch` i `_codedb.xml` resurse za MINIMUM, BASIC WL, BASIC, EN 16931 i EXTENDED
Motor XE2 i noviji izvršava kompletan pregledani XPath 2 opseg kroz bezbedno MSXML parsiranje, determinističke XPath 1 ekvivalente i direktnu evaluaciju za kvantifikatore, FLWOR sume, cast-ove, poređenja sekvenci, eksterne liste kodova, obrasce datuma i boolove vrednosti indikatora
Profil EN 16931 sadrži 618 provera i svaka provera se obrađuje tokom svakog pokretanja validacije
Kombinovana validacija
var
Report: THPDFEInvoiceValidationReport;
begin
if not HPDFValidateEInvoice(PDF,
'Lib\resources\Schematron', Report) then
LogValidationFailure(Report);
end;
HPDFValidateEInvoice prvo poziva THotPDF.ValidateFacturXInvoice, izdvaja i identifikuje XML računa, učitava resurse Schematron-a specifične za profil i izvršava poslovna pravila
Otkriveni hibridni račun ne uspeva 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 tačno samo kada je kontejner važeći, poslovna pravila su evaluirana i ne ostaje nijedan nalaz greške ili upozorenja
Registar profila i opseg validacije
THPDFEInvoiceRuleRegistry registruje jedan sloj poslovnih pravila i, kada je potrebno, jedan sloj državnih pravila po profilu, sa eksplicitnim imenom resursa, verzijom pravila i opcionom implementacijom IHPDFESchematronEngine
Podrazumevani registry sadrži pet isporučenih Factur-X profila i osnovna EXTENDED pravila za francuske profile EXTENDED-CTC-FR i EXTENDED-B2B-FR
Francuski profili zahtevaju dodatnu registraciju sloja državnih pravila pre nego što ValidationComplete postane tačan, a XRECHNUNG zahteva i EN 16931 CII i nemačka državna pravila
Nepoznati profili nemaju podrazumevana pravila i nikada ne padaju na EXTENDED, a HPDFSchematronFileForProfile vraća prazan string za nepoznate ili državno-specifične profile
HPDFValidateEInvoiceWithRegistry koristi registry pozivaoca uz proveru PDF kontejnera, dok HPDFValidateEInvoiceXML validira eksplicitne XML bajtove i profil bez evaluacije PDF kontejnera
Izveštaj izlaže ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete i ValidationNote, a njegov niz RuleSets beleži svaki izabrani resurs, verziju, opseg, sažetak i status završenosti
Završena evaluacija pravila i dalje može sadržati povrede poslovnih pravila, pa proverite Boolean rezultat ili BusinessRuleViolations pored ValidationComplete
Ovi API-ji prijavljuju pokrivenost poslovnim i državnim pravilima, dok XML Schema validacija, transportne politike i pravne odluke o prihvatanju ostaju van ovog opsega
Zvanična XRechnung CII pravila
HPDFEInvoiceSaxon isporučuje opcion Saxon HE most koji izvršava nemodifikovane kompajlirane EN 16931 CII 1.3.16 i XRechnung 3.0.2 Schematron 2.6.0 stylesheets isporučene u Lib/resources/Schematron/XRechnung
Resursi potiču iz zvanične KoSIT konfiguracije validatora od 31. avgusta 2026, a README resursa beleži njihovo poreklo, licence i heš vrednosti
Host eksplicitno dostavlja Java izvršnu datoteku i Saxon class path, a biblioteka pokreće transformaciju bez shell-a ili vidljivog konzolnog prozora, sprovodi tajmaut, parsira SVRL nalaze i uklanja svoje privremene datoteke
Tajmaut od nule bira 60 sekundi, vrednosti iznad 3,600,000 milisekundi se odbacuju, dijagnostički izlaz je ograničen na 8 MiB, a kompajlirani stylesheets i SVRL izveštaji na 64 MiB pre 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;
Podesite Saxon class path sa Saxon HE i njegovim potrebnim zavisnostima, i koristite posebne instance registry-a i engine-a po niti validacije
Opicioni most zahteva Delphi XE2 ili noviji na Windows-u i Java/Saxon runtime koji obezbeđuje host, i nijedan runtime se ne preuzima niti instalira od strane biblioteke
Nedostajući runtime-i, pogrešna sintaksa računa, zabranjeni DTD-ovi, tajmaut, neuspela transformacija i neispravan SVRL izlaz proizvode eksplicitnu dijagnostiku nepotpune validacije
Zvanična francuska CTC pravila za e-račune
HPDFRegisterFrenchCTCRules bira zvanični sloj profila i strogi BR-FR-Flux2 sloj državnih pravila iz FNFE-MPE izdanja 1.4.0.04, objavljenog 4. septembra 2026 za AFNOR XP Z12-012 verziju 1.4
Zvanično FNFE-MPE izdanje objavljeno je pod Apache 2.0 i povezano sa FNFE-MPE stranice resursa, dok uključeni EN 16931 CII stylesheet zadržava EUPL 1.2, a originalni kompajlirani stylesheets, Schematron izvori, baze kodova, licence, izvorne putanje i heš vrednosti čuvaju se pod Lib/resources/Schematron/France
Za fisFacturX, pomoćnik podržava BASIC WL, EN 16931 i EXTENDED koristeći objavljene Factur-X 1.09.2 slojeve pravila, a oznaka kontejnera EXTENDED-CTC-FR koristi isti Factur-X EXTENDED sloj plus francuske državne provere
Za samostalni fisCII, podržava EN 16931 i posvećeni EXTENDED-CTC-FR CII sloj, čije se restrikcije i identifikator smernica 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 i čini francuski državni sloj obaveznim za izabrani profil, uključujući EN 16931 i BASIC WL kada su eksplicitno registrovani za Francusku
Strogi objavljeni nacionalni stylesheet koristi se direktno, bez zamenjivanja odvojenom varijantom koja samo upozorava ili smanjivanja nalaza
Prikovani zvanični paket nema profil pravila EXTENDED-B2B-FR, pa pomoćnik odbacuje to zastarelo ime umesto da ga tretira kao automatski sertifikovani alias
Uspešna validacija utvrđuje završenost ovih objavljenih slojeva poslovnih pravila za e-račune, dok XML Schema, CDAR poruke životnog ciklusa, izdvajanje podataka za e-reporting, autorizacija platforme, transport i pravna sertifikacija ostaju posebni opsezi
API motora
Engine := HPDFCreateSchematronEngine;
if not Engine.Load(SchematronPath, ErrorText) then
raise Exception.Create(ErrorText);
Findings := Engine.Validate(XMLBytes);
Summary := Engine.LastSummary;
THPDFSchematronSummary izveštava Profile, TotalRules, Evaluated, Skipped, EvaluationErrors, Violations, EngineAvailable i EngineNote
Skipped ostaje nula u motoru XE2 i novijim i rezervisan je za Delphi 7 stub ili podatke starih rezultata
Neispravni ili nepodržani izrazi proizvode eksplicitne nalaze težine greške, uvećavaju EvaluationErrors i nikada ne nestaju kao uspešne provere
Pomoćne funkcije za Factur-X XML
Jedinica HPDFFacturX isporučuje pomoćnike na nivou bajtova koji čitaju Factur-X / ZUGFeRD XML računa bez izgradnje DOM-a, pa rade na svakoj Delphi verziji koju biblioteka podržava i bezbedni su na izdvojenim bajtovima iz ExtractFacturXXML
HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes) vraća identifikator smernica iz elementa GuidelineSpecifiedDocumentContextParameter / ram:ID CII dokumenta, ili prazan string kada nedostaje
HPDFIsFacturXConformanceLevel(Value, FileName, Version) validira ime nivoa usaglašenosti, prihvatajući MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR i XRECHNUNG; zastareli nivo COMFORT dodatno zahteva ime datoteke ZUGFeRD-invoice.xml verzije 1.0
HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) unakrsno proverava smernice pronađene u XML-u protiv deklarisanog nivoa usaglašenosti, verzije i ugrađenog imena datoteke
HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) popunjava zapis THPDFFacturXInvoiceSummary iz XML računa i vraća True kada je pronađen bar primarni XML računa; sam tip zapisa sažetka deklarisan je u HPDFDoc pored THPDFFacturXInvoiceInfo
Stabilna dijagnostika i ograničenja
- Identifikatori pravila parsiraju se iz tokena poruke Schematron-a kada je prisutan
- Identifikatori koji nedostaju dobijaju determinističke ordinale odobrenja ili izveštaja
- Svaki nalaz čuva svoje originalne izraze konteksta i testa
- Eksterne putanje baza kodova ograničene su na imena sestrinskih datoteka
- Obrada DTD-a i razrešavanje eksternih XML entiteta su onemogućeni
- XML ulaz računa ograničen je na 64 MiB
Dostupnost okvira alata
Delphi XE2 i noviji koriste ugrađeni MSXML kompatibilni motor
Delphi 7 zadržava deljene interfejse i tipove rezultata ali vraća dijagnostiku nedostupnog motora
Povezani API-ji
HPDFValidateEInvoiceHPDFValidateEInvoiceWithRegistryHPDFValidateEInvoiceXMLTHPDFEInvoiceRuleRegistryHPDFRegisterXRechnungRulesHPDFRegisterFrenchCTCRulesTHPDFFrenchInvoiceSyntaxHPDFCreateSchematronEngineHPDFSchematronFileForProfileIHPDFESchematronEngineTHPDFBusinessRuleResultTHPDFSchematronSummary- THotPDF.ValidateFacturXInvoice
- THotPDF.ExtractFacturXXML
Prihvatanje bez GUI-ja
Pokrenite Tests/Delphi/Run-EInvoiceRuleTests.ps1 sa eksplicitnim vrednostima JavaExecutable i SaxonClassPath, ili odgovarajućim promenljivama okruženja HOTPDF_JAVA_EXE i HOTPDF_SAXON_CLASSPATH
Podrazumevani runner zahteva konfiguraciju engine-a sa zvaničnim pravilima i pokreće i Win32 i Win64 uz potisnuto pokretanje PDF pregledača; -NativeOnly namerno izostavlja Saxon izvršavanje zvaničnih pravila