# PEPPOL-EN16931-R046 Ürün net fiyatı ürün brüt fiyatı eksi ürün fiyat indirimine eşit olmalıdır

Peppol kuralı PEPPOL-EN16931-R046 uyarınca, bir fatura satırında BT-148 (cbc:BaseAmount) alanında ürün brüt fiyatı ve BT-147 (cbc:Amount) alanında fiyat indirimi belirtildiğinde, BT-146 (cbc:PriceAmount) alanındaki net fiyat tam olarak şu eşitliği sağlamalıdır: net fiyat = brüt fiyat − fiyat indirimi. Kural yalnızca brüt fiyat mevcut olduğunda uygulanır ve yuvarlama toleransı olmadan tam ondalık değerleri karşılaştırır.

## Sorun açıklaması

> **HATA**: Peppol BIS Billing 3.0 kuralı (OpenPeppol)

## Bağlam ve önem

Brüt fiyat, birim indirim ve net fiyat arasındaki uyumsuzluklar PEPPOL-EN16931-R046’yı tetikler. Kontrolde yuvarlama toleransı olmadığından, brüt fiyat ve indirim 4 ondalık basamak taşırken 2 basamağa yuvarlanmış bir net fiyat bile başarısız olur. Hata, bir indirim cbc:Amount içinde dışa aktarılıp net fiyat hâlâ brüt fiyata eşit kaldığında da ortaya çıkar.

## Çözüm

ERP fiyatlandırma ayarlarınızda net birim fiyatı dışa aktarmadan önce brüt birim fiyat eksi birim fiyat indirimi olarak hesaplayın ve üç değer için aynı ondalık hassasiyeti kullanın. UBL 2.1’de <cac:Price> içinde <cbc:PriceAmount> değeri <cac:AllowanceCharge><cbc:BaseAmount> eksi <cbc:Amount> değerine tam olarak eşit olmalıdır. Brüt fiyat belirtmiyorsanız cbc:BaseAmount öğesini çıkarın; bu durumda R046 değerlendirilmez.

- [XML doğrula](/tr/xrechnung-validator?source=resource&rule=PEPPOL-EN16931-R046)
- [Faturayı dönüştür](/tr/pdf-to-xrechnung?source=resource&rule=PEPPOL-EN16931-R046)

## Geçerli örnekler

- Brüt fiyat BT-148 = 100.00 EUR, Fiyat indirimi BT-147 = 20.00 EUR, Net fiyat BT-146 = 80.00 EUR
- Brüt fiyat BT-148 = 50.00 EUR, Fiyat indirimi BT-147 = 5.00 EUR, Net fiyat BT-146 = 45.00 EUR

## Geçersiz örnekler

- 100.00 EUR brüt fiyattan 20.00 EUR indirim düşüldüğünde Net fiyat = 85.00 EUR olarak dışa aktarılmış (Aritmetik hata)
- Fiyat indirimi 10.00 EUR olarak bildirilmiş ancak Net fiyat indirim düşülmeden brüt fiyata eşit yazılmış

## Kod örnekleri

### Geçerli XML
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">80.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
```

### Geçersiz XML
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">85.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
```

## Etkilenen alanlar

- [BT-146 Ürün net fiyatı](/resources/xrechnung/bt-146-item-net-price)
- [BT-148 Ürün brüt fiyatı](/resources/xrechnung/bt-148-item-gross-price)
- [BT-147 Ürün fiyat indirimi](/resources/xrechnung/bt-147-item-price-discount)
- [BG-29 Fiyat detayları](/resources/xrechnung/bt-146-item-net-price)

## İlgili kurallar

- [BR-24](/resources/kosit-validator-errors/br-24-invoice-line-net-amount-must-be-present)
- [PEPPOL-EN16931-R120](/resources/kosit-validator-errors/peppol-en16931-r120-line-net-amount-formula)

## Doğrulama araçları

- [Resmi KoSIT doğrulayıcı](https://github.com/itplr-kosit/validator): EN 16931 ve XRechnung kurallarını denetlemek için resmi KoSIT doğrulayıcısını XRechnung yapılandırmasıyla çalıştırın.
- [PDF’yi XRechnung’e dönüştür](/pdf-to-xrechnung): Dönüştürme sırasında doğrulama hatalarını bulun ve her düzeltmeyi inceleyin.

## İlgili kaynaklar

- [Resmi spesifikasyon](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/)
- [Test paketi](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Tüm doğrulama hataları](/resources/kosit-validator-errors): Burada açıklanan EN 16931, XRechnung ve Peppol doğrulama kurallarına genel bakış.
