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

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

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