Sähköisen laskun liiketoimintasääntöjen vahvistus
HPDFEInvoiceValidator yhdistää Factur-X- tai ZUGFeRD-säiliön vahvistuksen eksplisiittisesti valittuihin, versioituihin liiketoimintasääntö- ja maasääntöjoukkoihin
Täydellinen tarkistettu sääntösuoritus
Kirjasto toimittaa vastaavat `.sch`- ja `_codedb.xml`-resurssit MINIMUM-, BASIC WL-, BASIC-, EN 16931- ja EXTENDED-profiileille
XE2- ja uudempi moottori suorittaa täydellisen tarkistetun XPath 2 -pinnan turvallisen MSXML-jäsentämisen, determinististen XPath 1 -vastineiden ja kvantifikaattoreiden, FLWOR-sumien, muunnosten, sekvenssivertailujen, ulkoisten koodilistojen, päivämääräjäsenten ja loogisten indikaattoriarvojen suoran arvioinnin kautta
EN 16931 -profiili sisältää 618 tarkistusta, ja jokainen tarkistus käsitellään jokaisella vahvistusajolla
Yhdistetty vahvistus
var
Report: THPDFEInvoiceValidationReport;
begin
if not HPDFValidateEInvoice(PDF,
'Lib\resources\Schematron', Report) then
LogValidationFailure(Report);
end;
HPDFValidateEInvoice kutsuu ensin THotPDF.ValidateFacturXInvoice-metodia, erottaa ja tunnistaa lasku-XML:n, lataa profiilikohtaiset Schematron-resurssit ja suorittaa liiketoimintasäännöt
Havaittu hybridilasku epäonnistuu suljettuna, kun XML-erottelu, profiilitunnistus, sääntöjen lataus, kooditietokannan lataus tai lausekkeen arviointi ei voi suorittua loppuun
Funktio palauttaa toden vain, kun säiliö on kelvollinen, liiketoimintasäännöt on arvioitu ja virhe- tai varoituslöydöksiä ei jää jäljelle
Profiilirekisteri ja vahvistuksen laajuus
THPDFEInvoiceRuleRegistry rekisteröi profiilia kohden yhden liiketoimintasääntökerroksen ja tarvittaessa yhden maasääntökerroksen erillisellä resurssinimellä, sääntöversiolla ja valinnaisella IHPDFESchematronEngine-toteutuksella
Oletusrekisteri sisältää viisi mukana toimitettua Factur-X-profiilia ja perus-EXTENDED-säännöt ranskalaisille profiileille EXTENDED-CTC-FR ja EXTENDED-B2B-FR
Ranskalaiset profiilit vaativat erillisen maasääntörekisteröinnin ennen kuin ValidationComplete muuttuu todeksi, ja XRECHNUNG vaatii sekä EN 16931 CII- että saksalaiset maasäännöt
Tuntemattomilla profiileilla ei ole oletussääntöjä, eivätkä ne koskaan palaude EXTENDEDiin, ja HPDFSchematronFileForProfile palauttaa tyhjän merkkijonon tuntemattomille tai makohtaisille profiileille
HPDFValidateEInvoiceWithRegistry käyttää kutsujan rekisteriä PDF-säiliötarkistuksen kanssa, kun taas HPDFValidateEInvoiceXML vahvistaa eksplisiittiset XML-tavut ja profiilin arvioimatta PDF-säiliötä
Raportti näyttää kentät ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete ja ValidationNote, ja sen RuleSets-taulukko tallentaa jokaisen valitun resurssin, version, laajuuden, yhteenvedon ja valmistumistilan
Valmistunut sääntöarviointi voi silti sisältää liiketoimintasääntörikkomuksia, joten tarkista totuustulos tai BusinessRuleViolations ValidationComplete:n lisäksi
Nämä API:t raportoivat liiketoiminta- ja maasääntöjen kattavuuden, kun taas XML Schema -vahvistus, siirtokäytännöt ja juridiset hyväksymispäätökset jäävät tämän laajuuden ulkopuolelle
Viralliset XRechnung CII -säännöt
HPDFEInvoiceSaxon tarjoaa valinnaisen Saxon HE -sillan, joka suorittaa muokkaamattomat käännettyt EN 16931 CII 1.3.16- ja XRechnung 3.0.2 Schematron 2.6.0 -tyylisivut kohteesta Lib/resources/Schematron/XRechnung
Resurssit tulevat virallisesta KoSIT validator -konfiguraatiosta 31.8.2026, ja resurssien README tallentaa niiden alkuperän, lisenssit ja tiivisteet
Isäntä toimittaa Java-suoritettavan ja Saxon-luokkapolun erikseen, ja kirjasto käynnistää muunnoksen ilman kuorta tai näkyvää konsoliikkunaa, valvoo aikakatkaisua, jäsentää SVRL-löydökset ja poistaa väliaikaistiedostonsa
Nolla-aikakatkaisu valitsee 60 sekuntia, yli 3 600 000 millisekunnin arvot hylätään, diagnostiikkatuloste on rajattu 8 MiB:hen ja käännettyjen tyylisivujen sekä SVRL-raporttien koko 64 MiB:hen ennen jäsentämistä tai lataamista
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;
Konfiguroi Saxon-luokkapolku Saxon HE:llä ja sen vaadituilla riippuvuuksilla ja käytä erillistä rekisteriä ja moottori-instanssia per vahvistussäie
Valinnainen silta vaatii Delphi XE2:n tai uudemman Windowsilla ja isännän toimittaman Java/Saxon-ajoympäristön, eikä kumpaakaan asenna tai lataa kirjasto
Puuttuvat ajoympäristöt, väärä laskusyntaksi, kielletyt DTD:t, aikakatkaisu, epäonnistunut muunnos ja rikkonainen SVRL-tuloste tuottavat eksplisiittiset puutteellisen vahvistuksen diagnoosit
Viralliset ranskalaiset CTC-laskusäännöt
HPDFRegisterFrenchCTCRules valitsee virallisen profiilikerroksen ja tiukan BR-FR-Flux2-maakerroksen FNFE-MPE-julkaisusta 1.4.0.04, joka julkaistiin 4.9.2026 AFNOR XP Z12-012 -versiolle 1.4
Virallinen FNFE-MPE-julkaisu on lisensoitu Apache 2.0:lla ja linkitetty FNFE-MPE:n resurssisivulta, mukana tuleva EN 16931 CII -tyylisivu säilyttää EUPL 1.2:n, ja alkuperäiset käännettyt tyylisivut, Schematron-lähteet, kooditietokannat, lisenssit, lähtöpolut ja tiivisteet on säilytetty polussa Lib/resources/Schematron/France
Kohteelle fisFacturX apufunktio tukee BASIC WL-, EN 16931- ja EXTENDED-profiileja julkaistuilla Factur-X 1.09.2 -sääntökerroksilla, ja EXTENDED-CTC-FR-säiliön nimitys käyttää samaa Factur-X EXTENDED -kerrosta ranskalaisine maatarkistuksineen
Erilliselle fisCII-muodolle se tukee EN 16931:tä ja erillistä EXTENDED-CTC-FR CII -kerrosta, jonka rajoitukset ja ohjeidentifikaattori poikkeavat hybridin Factur-X EXTENDED -kerroksesta
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);
Rekisteröinti säilyttää erilliset profiili- ja maasääntöversiot ja tekee ranskalaisesta maakerroksesta pakollisen valitulle profiilille, mukaan lukien EN 16931 ja BASIC WL, kun ne on eksplisiittisesti rekisteröity Ranskalle
Tiukkaa julkaistua kansallista tyylisivua käytetään suoraan korvaamatta erillistä vain varoituksia antavaa varianttia tai alentamatta löydösten vakavuutta
Lukittu virallinen paketti ei sisällä EXTENDED-B2B-FR-sääntöprofiilia, joten apufunktio hylkää sen vanhan nimen sen sijaan, että käsittelisi sen automaattisesti sertifioituna aliaksena
Onnistunut vahvistus osoittaa näiden julkaistujen laskujen liiketoimintasääntökerrosten valmistumisen, kun taas XML Schema, CDAR-elinkaariviestit, e-raportoinnin tietojen poiminta, alustan valtuutus, siirto ja juridiset sertifikaatiot pysyvät erillisinä laajuuksina
Moottori-API
Engine := HPDFCreateSchematronEngine;
if not Engine.Load(SchematronPath, ErrorText) then
raise Exception.Create(ErrorText);
Findings := Engine.Validate(XMLBytes);
Summary := Engine.LastSummary;
THPDFSchematronSummary raportoi Profile-, TotalRules-, Evaluated-, Skipped-, EvaluationErrors-, Violations-, EngineAvailable- ja EngineNote-arvot
Skipped-arvo pysyy nollana XE2- ja uudemmassa moottorissa ja on varattu Delphi 7 -sovelmen tai vanhan tulostiedon käyttöön
Virheelliset tai tukemattomat lausekkeet tuottavat eksplisiittisiä virhevakavuuden löydöksiä, lisäävät EvaluationErrors-arvoa eivätkä koskaan häviä onnistuneina tarkistuksina
Factur-X XML -apufunktiot
Yksikkö HPDFFacturX sisältää tavutason apufunktiot, jotka lukevat Factur-X-/ZUGFeRD-lasku-XML:n rakentamatta DOM:ia, joten ne toimivat kaikilla kirjaston tukemilla Delphi-versioilla ja ovat turvallisia ExtractFacturXXML-metodin erottamille tavuille
HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes) palauttaa ohjeidentifikaattorin CII-asiakirjan GuidelineSpecifiedDocumentContextParameter / ram:ID -elementistä tai tyhjän merkkijonon, jos sitä ei ole
HPDFIsFacturXConformanceLevel(Value, FileName, Version) validoi vaatimustenmukaisuustason nimen hyväksyen arvot MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR ja XRECHNUNG; vanha COMFORT-taso vaatii lisäksi ZUGFeRD 1.0 -tiedostonimen ZUGFeRD-invoice.xml versiolla 1.0
HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName) ristitarkistaa XML:stä löytyneen ohjeidentifikaattorin ilmoitettua vaatimustenmukaisuustasoa, versiota ja upotettua tiedostonimeä vasten
HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary) täyttää THPDFFacturXInvoiceSummary-tietueen lasku-XML:stä ja palauttaa arvon True, kun vähintään ensisijainen lasku-XML löytyy; itse yhteenvetotietueen tyyppi on määritelty yksikössä HPDFDoc tietueen THPDFFacturXInvoiceInfo yhteydessä
Vakaat diagnostiikat ja rajat
- Sääntötunnisteet jäsennetään Schematron-viestitokenista, kun se on läsnä
- Puuttuvat tunnisteet vastaanottavat deterministiset profiili- ja toteamus-tai-raportti-järjestysluvut
- Jokainen löydös säilyttää alkuperäisen kontekstinsa ja testilausekkeensa
- Ulkoiset kooditietokantapolut rajataan sisarustiedoston nimiin
- DTD-käsittely ja ulkoisten XML-entityjen ratkaisu on poistettu käytöstä
- Lasku-XML-syöte on rajattu 64 MiB:hen
Työketjun saatavuus
Delphi XE2 ja uudemmat käyttävät sisäänrakennettua MSXML-yhteensopivuusmoottoria
Delphi 7 säilyttää jaetut rajapinnat ja tulosrivit, mutta palauttaa epäkäytettävissä-oleva-moottori-diagnostiikan
Liittyvät API:t
HPDFValidateEInvoiceHPDFValidateEInvoiceWithRegistryHPDFValidateEInvoiceXMLTHPDFEInvoiceRuleRegistryHPDFRegisterXRechnungRulesHPDFRegisterFrenchCTCRulesTHPDFFrenchInvoiceSyntaxHPDFCreateSchematronEngineHPDFSchematronFileForProfileIHPDFESchematronEngineTHPDFBusinessRuleResultTHPDFSchematronSummary- THotPDF.ValidateFacturXInvoice
- THotPDF.ExtractFacturXXML
Ei-GUI-hyväksyntä
Suorita Tests/Delphi/Run-EInvoiceRuleTests.ps1 erillisillä JavaExecutable- ja SaxonClassPath-arvoilla tai vastaavilla HOTPDF_JAVA_EXE- ja HOTPDF_SAXON_CLASSPATH-ympäristömuuttujilla
Oletusajaja vaatii virallisten sääntöjen moottorikonfiguraation ja ajaa sekä Win32- että Win64-alustat PDF-katselimen käynnistys estettynä; -NativeOnly jättää virallisen Saxon-suorituksen tarkoituksella pois