E-Fatura İş Kuralı Doğrulaması

HPDFEInvoiceValidator, Factur-X veya ZUGFeRD container doğrulamasını açıkça seçilmiş, sürümlü iş kuralı ve ülke kuralı kümeleriyle birleştirir

Eksiksiz gözden geçirilmiş kural yürütümü

Kütüphane; MINIMUM, BASIC WL, BASIC, EN 16931 ve EXTENDED için eşleşen `.sch` ve `_codedb.xml` kaynaklarıyla gelir

XE2 ve sonrası motor; güvenli MSXML ayrıştırması, deterministik XPath 1 eşdeğerleri ve quantifier'lar, FLWOR toplamları, cast'ler, dizi karşılaştırmaları, harici kod listeleri, tarih desenleri ve boolean gösterge değerleri için doğrudan değerlendirme üzerinden eksiksiz gözden geçirilmiş XPath 2 yüzeyini yürütür

EN 16931 profili 618 denetim içerir ve her denetim, her doğrulama çalıştırmasında işlenir

Birleşik doğrulama

var
  Report: THPDFEInvoiceValidationReport;
begin
  if not HPDFValidateEInvoice(PDF,
    'Lib\resources\Schematron', Report) then
    LogValidationFailure(Report);
end;

HPDFValidateEInvoice önce THotPDF.ValidateFacturXInvoice'ı çağırır, fatura XML'ini çıkarır ve tanımlar, profile özgü Schematron kaynaklarını yükler ve iş kurallarını yürütür

Tespit edilen bir hibrit fatura; XML çıkarımı, profil tespiti, kural yükleme, kod-veritabanı yükleme veya ifade değerlendirmesi tamamlanamadığında fail closed davranır

Fonksiyon, yalnızca container geçerliyken, iş kuralları değerlendirilmişken ve hiçbir hata veya uyarı bulgusu kalmamışken true döndürür

Profil kayıt defteri ve doğrulama kapsamı

THPDFEInvoiceRuleRegistry, profil başına açık bir kaynak adı, kural sürümü ve isteğe bağlı IHPDFESchematronEngine uygulamasıyla bir iş kuralı katmanını ve gerektiğinde bir ülke kuralı katmanını kaydeder

Varsayılan kayıt defteri, dağıtılan beş Factur-X profilini ve Fransız profilleri EXTENDED-CTC-FR ile EXTENDED-B2B-FR için temel EXTENDED kurallarını içerir

Fransız profilleri, ValidationComplete değerinin true dönebilmesi için ek bir ülke kuralı kaydı gerektirir; XRECHNUNG ise hem EN 16931 CII hem de Alman ülke kurallarını ister

Bilinmeyen profillerin varsayılan kuralı yoktur ve asla EXTENDED'a düşmez; HPDFSchematronFileForProfile bilinmeyen veya ülkeye özgü profiller için boş bir dizgi döndürür

HPDFValidateEInvoiceWithRegistry, PDF container denetimiyle çağıranın kayıt defterini kullanır; HPDFValidateEInvoiceXML ise PDF container değerlendirmeden açık XML baytlarını ve bir profili doğrular

Rapor ProfileSupported, CountryRulesRequired, CountryRulesEvaluated, ValidationComplete ve ValidationNote alanlarını açığa çıkarır; RuleSets dizisi her seçilen kaynağın sürümünü, kapsamını, özetini ve tamamlanma durumunu kaydeder

Tamamlanan bir kural değerlendirmesi hâlâ iş kuralı ihlalleri içerebilir; bu yüzden ValidationComplete yanında Boolean sonucu veya BusinessRuleViolations değerini de kontrol edin

Bu API'ler iş ve ülke kuralı kapsamını bildirir; XML Schema doğrulaması, taşıma politikaları ve hukuki kabul kararları bu kapsamın dışında kalır

Resmi XRechnung CII kuralları

HPDFEInvoiceSaxon, Lib/resources/Schematron/XRechnung altında dağıtılan derlenmiş EN 16931 CII 1.3.16 ve XRechnung 3.0.2 Schematron 2.6.0 stylesheet'lerini değiştirilmeden çalıştıran isteğe bağlı bir Saxon HE köprüsü sağlar

Kaynaklar, 31 Ağustos 2026 tarihli resmi KoSIT validator yapılandırmasından gelir; kaynakların README'si kökenlerini, lisanslarını ve hash'lerini kaydeder

Java çalıştırılabilirini ve Saxon class path'ini ana uygulama açıkça sağlar; kütüphane dönüşümü shell'siz ve görünür bir konsol penceresi olmadan başlatır, timeout uygular, SVRL bulgularını ayrıştırır ve geçici dosyalarını kaldırır

Sıfır timeout 60 saniye seçer, 3.600.000 milisaniyenin üzerindeki değerler reddedilir; teşhis çıktısı 8 MiB ile, derlenmiş stylesheet'ler ve SVRL raporları ayrıştırma veya yükleme öncesinde 64 MiB ile sınırlanır

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;

Saxon class path'ini Saxon HE ve gerekli bağımlılıklarıyla yapılandırın ve her doğrulama iş parçacığı için ayrı bir registry ve engine örneği kullanın

İsteğe bağlı köprü, Windows'ta Delphi XE2 veya sonrasını ve ana uygulamanın sağladığı bir Java/Saxon çalışma zamanı gerektirir; çalışma zamanlarının hiçbiri kütüphane tarafından indirilmez veya kurulmaz

Eksik çalışma zamanları, yanlış fatura sözdizimi, yasaklı DTD'ler, timeout, başarısız dönüşüm ve hatalı biçimli SVRL çıktısı açık eksik-doğrulama teşhisleri üretir

Resmi Fransız CTC fatura kuralları

HPDFRegisterFrenchCTCRules, AFNOR XP Z12-012 sürüm 1.4 için 4 Eylül 2026'da yayımlanan FNFE-MPE release 1.4.0.04 içinden resmi profil katmanını ve katı BR-FR-Flux2 ülke katmanını seçer

Resmi FNFE-MPE release'ı Apache 2.0 altında yayımlanır ve FNFE-MPE kaynak sayfasından bağlanır; dahil edilen EN 16931 CII stylesheet'i EUPL 1.2'yi korur ve özgün derlenmiş stylesheet'ler, Schematron kaynakları, kod veritabanları, lisanslar, kaynak yolları ve hash'ler Lib/resources/Schematron/France altında saklanır

fisFacturX için yardımcı, yayımlanmış Factur-X 1.09.2 kural katmanlarıyla BASIC WL, EN 16931 ve EXTENDED destekler; EXTENDED-CTC-FR container tanımı, aynı Factur-X EXTENDED katmanını Fransız ülke denetimleriyle birlikte kullanır

Bağımsız fisCII için EN 16931'i ve özel EXTENDED-CTC-FR CII katmanını destekler; bu katmanın kısıtları ve guideline tanımlayıcısı hibrit Factur-X EXTENDED katmanından farklıdır

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);

Kayıt, profil ve ülke kuralı sürümlerini ayrı tutar ve Fransız ülke katmanını seçilen profil için zorunlu kılar; France için açıkça kaydedildiklerinde EN 16931 ve BASIC WL de buna dahildir

Yayımlanmış katı ulusal stylesheet doğrudan kullanılır; ayrı yalnızca-uyarı varyantıyla değiştirilmez ve bulgular aşağı çekilmez

Sabitlenen resmi pakette EXTENDED-B2B-FR kural profili yoktur; yardımcı bu eski adı otomatik sertifikalı bir takma ad saymak yerine reddeder

Başarılı doğrulama, yayımlanan bu fatura iş kuralı katmanlarının tamamlandığını gösterir; XML Schema, CDAR yaşam döngüsü mesajları, e-reporting veri çıkarımı, platform yetkilendirmesi, taşıma ve hukuki sertifikasyon ayrı kapsamlar olarak kalır

Motor API'si

Engine := HPDFCreateSchematronEngine;
if not Engine.Load(SchematronPath, ErrorText) then
  raise Exception.Create(ErrorText);

Findings := Engine.Validate(XMLBytes);
Summary := Engine.LastSummary;

THPDFSchematronSummary; Profile, TotalRules, Evaluated, Skipped, EvaluationErrors, Violations, EngineAvailable ve EngineNote alanlarını bildirir

Skipped, XE2 ve sonrası motorun içinde sıfır kalır; Delphi 7 stub'u veya eski sonuç verisi için ayrılmıştır

Hatalı biçimli veya desteklenmeyen ifadeler; açık hata-şiddetli bulgular üretir, EvaluationErrors sayacını artırır ve asla başarılı denetim gibi kaybolmaz

Factur-X XML yardımcı işlevleri

HPDFFacturX birimi, Factur-X / ZUGFeRD fatura XML'ini DOM kurmadan okuyan bayt düzeyi yardımcılar sağlar; böylece kütüphanenin desteklediği her Delphi sürümünde çalışır ve ExtractFacturXXML çıktısı baytlar üzerinde güvenlidir

HPDFFacturXGuidelineIDFromXMLBytes(XMLBytes), bir CII belgesinin GuidelineSpecifiedDocumentContextParameter / ram:ID elementinden guideline tanımlayıcısını döndürür; yoksa boş dizgi döner

HPDFIsFacturXConformanceLevel(Value, FileName, Version), bir conformance düzeyi adını doğrular ve MINIMUM, BASIC WL, BASIC, EN 16931, EN16931, EXTENDED, EXTENDED-CTC-FR, EXTENDED-B2B-FR ve XRECHNUNG kabul eder; eski COMFORT düzeyi ayrıca 1.0 sürümüyle ZUGFeRD-invoice.xml dosya adını gerektirir

HPDFFacturXXMLGuidelineOK(XMLBytes, ConformanceLevel, Version, FileName), XML'de bulunan guideline'ı bildirilen conformance düzeyi, sürüm ve gömülü dosya adıyla çapraz kontrol eder

HPDFFacturXInvoiceSummaryFromXML(XMLBytes, out ASummary), fatura XML'inden bir THPDFFacturXInvoiceSummary kaydını doldurur ve en az birincil fatura XML'i bulunabildiyse True döndürür; özet kayıt türünün kendisi HPDFDoc içinde THPDFFacturXInvoiceInfo'nun yanında bildirilir

Kararlı teşhisler ve sınırlar

Araç zinciri kullanılabilirliği

Delphi XE2 ve sonrası yerleşik MSXML uyumluluk motorunu kullanır

Delphi 7, paylaşılan arayüzleri ve sonuç türlerini korur ancak kullanılamayan-motor teşhisi döndürür

İlgili API'ler

Non-GUI kabul testleri

Tests/Delphi/Run-EInvoiceRuleTests.ps1 betiğini açık JavaExecutable ve SaxonClassPath değerleriyle ya da karşılık gelen HOTPDF_JAVA_EXE ve HOTPDF_SAXON_CLASSPATH ortam değişkenleriyle çalıştırın

Varsayılan runner resmi kural motoru yapılandırmasını gerektirir ve PDF görüntüleyici başlatımı bastırılmış şekilde hem Win32 hem Win64 çalıştırır; -NativeOnly resmi Saxon çalıştırımını bilinçli olarak dışarıda bırakır