Tek komutla UBL-TR belgelerinde XSD doğrulama ve iş kuralı & aritmetik tutarlılık denetimleri yapmanızı sağlar. Kendinize özel iş kurallarını yazmanızı da destekler.
- XSD doğrulama
- Örnek iş kuralları:
SUM-001Satır toplamları =LegalMonetaryTotalolmalıdır.VAT-002KDV %0 iseTaxExemptionReasonCodedeğeri zorunludur.CUR-001Para birimi ölçeğine uygun ondalık basamak sayısı kontrolü yapılır.
- Profiller:
einvoice,earchive,edespatch(örnek profil dosyası) - Rapor Formatları: console, json, markdown
- CI-dostu:
--fail-on warn|errorçıkış kodlarını destekler.
# .NET 8 gerekir
dotnet build ./src/UblTr.Cli/UblTr.Cli.csproj -c Release
# XSD + iş kuralları
dotnet run --project ./src/UblTr.Cli -- check ./samples/invoice-invalid.xml --profile einvoice --report json:out/report.json --fail-on error
# Sadece XSD
dotnet run --project ./src/UblTr.Cli -- validate ./samples/invoice-valid.xml
# Sadece iş kuralları
dotnet run --project ./src/UblTr.Cli -- rules ./samples/invoice-invalid.xml --profile einvoice --report md:out/summary.md- Resmi UBL-TR XSD/Schematron dosyalarını
schemas/altına bırakın. - Örn.
schemas/ubltr-1.0/*.xsd— araç tüm.xsddosyalarını yükler. - Şema bulunamazsa XSD doğrulaması otomatik atlanır ve raporda bilgi notu görünür.
E-fatura için oluşturulan örnek kontrol profilini rules/profiles/einvoice.json altında görebilirsiniz. CLI ile --profile argümanını vererek kontrol profilini belirleyebilirsiniz. --rules argümanı da ileride eklenecektir.
samples/invoice-valid.xml— tüm kurallara uygun örneksamples/invoice-invalid.xml— toplam/istisna ve kur cinsinden ondalık hataları içeren örnek
- .NET 8.0 SDK veya üzeri
- Git (geliştirme için)
# Projeyi klonlayın
git clone https://github.com/devoplus/UBL-TR-Inspector.git
cd UBL-TR-Inspector
# Projeyi derleyin
dotnet build -c Release
# Araç testini çalıştırın
dotnet run --project ./src/UblTr.Cli -- check ./samples/invoice-valid.xml --profile einvoice# Tek dosya olarak yayınlama
dotnet publish ./src/UblTr.Cli -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
# Linux için
dotnet publish ./src/UblTr.Cli -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true# Tüm denetimler (XSD + iş kuralları)
dotnet run --project ./src/UblTr.Cli -- check ./samples/invoice-invalid.xml --profile einvoice
# JSON rapor oluşturma
dotnet run --project ./src/UblTr.Cli -- check ./samples/invoice-invalid.xml --profile einvoice --report json:./output/report.json
# Markdown rapor oluşturma
dotnet run --project ./src/UblTr.Cli -- rules ./samples/invoice-invalid.xml --profile einvoice --report md:./output/summary.md
# CI/CD entegrasyonu için çıkış kodları
dotnet run --project ./src/UblTr.Cli -- check ./samples/invoice-invalid.xml --profile einvoice --fail-on error
echo $LASTEXITCODE # Windows PowerShell
echo $? # Linux/macOS- console: Konsol çıktısı (varsayılan)
- json: JSON formatında detaylı rapor
- markdown: Markdown formatında özet rapor
0: Başarılı (hata yok)1: Uyarı seviyesinde bulgular2: Hata seviyesinde bulgular
src/
├── UblTr.Cli/ # Ana komut satırı uygulaması
├── UblTr.Core/ # Temel modeller ve sınıflar
├── UblTr.Rules/ # İş kuralları motoru
│ └── Rules/ # Mevcut iş kuralları
└── UblTr.Xml/ # XSD doğrulama motoru
src/UblTr.Rules/Rules/klasörü altında yeni kural dosyası oluşturunIRulearayüzünü uygulayın- Profil dosyasında kuralı etkinleştirin
Örnek kural implementasyonu:
public class MyCustomRule : IBusinessRule
{
public string Id => "CUSTOM-001";
public string Title => "Örnek iş kuralı";
public Severity Severity => Severity.Error;
public IEnumerable<RuleViolation> Evaluate(XDocument doc, RuleContext ctx)
{
// Kural mantığınız burada yer alır.
yield return new RuleViolation
{
Id = Id,
Severity = Severity,
Message = "Özel kural ihlali mesajı",
Line = 0,
Column = 0
};
}
}# Tüm testleri çalıştır
dotnet test
# Belirli bir test projesi
dotnet test ./tests/UblTr.Rules.Tests/- Bu projeyi fork edin
- Yeni bir feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit edin (
git commit -m 'Add some amazing feature') - Branch'inizi push edin (
git push origin feature/amazing-feature) - Pull Request oluşturun
- Kod standartlarına uyun
- Testlerinizi yazın
- Commit mesajlarını Türkçe veya İngilizce olarak açık yazın
- Büyük değişiklikler için önce issue oluşturun
Resmi ve güncel UBL-TR XSD dosyalarını GİB'in resmi e-belge sitesinden indirebilirsiniz. İndirdiğiniz dosyaları schemas/ klasörüne yerleştirin.
rules/profiles/ klasörü altında yeni bir JSON dosyası oluşturun ve hangi kuralların etkin olacağını belirtin:
{
"name": "my-custom-profile",
"rules": {
"enable": ["SUM-*", "CUR-001"],
"disable": ["VAT-002"]
}
}# GitHub Actions örneği
- name: Validate UBL documents
run: |
dotnet run --project ./src/UblTr.Cli -- check ./documents/*.xml --profile einvoice --fail-on error- v1.0.0: İlk kararlı sürüm
- XSD doğrulama desteği
- Temel iş kuralları (SUM-001, VAT-002, CUR-001)
- JSON ve Markdown rapor formatları
- Profil desteği
Proje, MIT lisansı ile lisanslanmıştır.