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

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

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