Kapsamlı Analiz: Subscription vs Shop Modülü Fiyatlandırma Sistemi
Subscription modülünde YANLIŞ KDV HESAPLAMA yapılıyor! Shop modülü ise DOĞRU ÇALIŞIYOR.
Sorun: Bridge servis fiyatı "KDV dahil" sanıyor ve ayrıştırıyor (600 ÷ 1.20 = 500 TL). Sonra Cart tekrar KDV ekliyor (500 × 1.20 = 600 TL). Ama kullanıcıya "600 TL + KDV" gösteriliyor!
Sorun Ne?
Müşteri premium üyelik satın almak istiyor. Plan sayfasında "600 TL + KDV" yazıyor.
Müşteri hesap yapıyor: "600 + %20 KDV = 720 TL ödeyeceğim" diye düşünüyor.
Ama sepete eklediğinde checkout sayfasında şöyle görüyor:
Müşteri Kafası Karışıyor: "Plan sayfasında 600 TL + KDV diyordu, neden toplam 600 TL oldu? KDV nerede?"
Gerçekte Ne Oluyor?
Sistem arkada şöyle çalışıyor:
Sonuç: Müşteri 720 TL bekliyor, 600 TL görüyor. Bu kafayı karıştırıyor ve güven kaybına yol açıyor. Ayrıca fiyat gösterimi yanıltıcı! Eğer fiyat zaten KDV dahil ise "600 TL (KDV dahil)" yazmalı.
| Kriter | Shop Modülü (Doğru) | Subscription Modülü (Hatalı) |
|---|---|---|
| Database Fiyat Field |
base_price
KDV HARİÇ fiyat
|
billing_cycles['price']
BELİRSİZ (KDV dahil mi hariç mi?)
|
| Runtime Hesaplama |
price_with_tax accessor
base_price × 1.20
|
getCyclePriceWithTax()
YOK - Bridge'de manuel ayrıştırma
|
| Bridge Servisi |
ShopCartBridge.php
'unit_price' => $product->final_price
// final_price = base_price (KDV hariç)
// DOĞRU! Ayrıştırma YOK!
|
SubscriptionCartBridge.php
$priceWithTax = $cycle['price'];
$priceWithoutTax = $priceWithTax / 1.20;
// ❌ YANLIŞ! KDV dahil sanıyor!
|
| Cart'a Gönderilen Fiyat |
1000 TL (KDV hariç)
Cart buna KDV ekler → 1200 TL
|
500 TL (ayrıştırılmış!)
Cart buna KDV ekler → 600 TL
|
| Checkout Sonucu |
Ara Toplam: 1000 TL
KDV: 200 TL
Toplam: 1200 TL ✅
|
Ara Toplam: 500 TL
KDV: 100 TL
Toplam: 600 TL ❌
(Beklenen: 720 TL!)
|
| Frontend Fiyat Gösterimi |
1000 TL + KDV
DOĞRU! 1000 + 200 = 1200 TL
|
600 TL + KDV
YANLIŞ! Checkout'ta 600 TL çıkıyor
|
| price_display_mode Field |
✅ VAR
show / hide / request
|
⚠️ VAR AMA KULLANILMIYOR!
Migration'da var, kod kullanmıyor
|
Admin panelde cycle price girilir:
Plan sayfasında gösterilen:
Müşteri 720 TL ödeyeceğini düşünüyor!
Cart'a eklerken:
Ana Hata: Bridge fiyatı "KDV dahil" sanıp ayrıştırıyor!
Shop ile fark: Shop'ta final_price direkt alınıyor (zaten KDV hariç).
Sepet hesaplaması (Shop ve Subscription için AYNI):
Müşteriye gösterilen:
Müşteri 720 TL bekliyordu, 600 TL gördü!
Database'de cycle price'lar KDV hariç girilir (Shop'taki base_price pattern'i).
Bridge ayrıştırma yapmaz, direkt KDV hariç fiyatı gönderir.
Database'de cycle price'lar KDV dahil girilir. Bridge ayrıştırma yapar (mevcut kod kalır). Sadece frontend gösterimi düzeltilir.
+ KDV ({{ number_format($taxAmount, 2) }} TL) = {{ number_format($price, 2) }} TL toplam
{{-- VEYA SEÇENEK B: KDV dahil göster --}}(KDV dahil)
Seçenek 1 (KDV Hariç - Shop Pattern) KESİNLİKLE ÖNERİLİR çünkü:
base_price (KDV hariç) + price_with_tax (runtime accessor)Uygulama Önerisi: Seçenek 1'i uygula. Model'e accessor ekle, Bridge'i düzelt. Böylece Subscription modülü Shop ile tamamen uyumlu hale gelir. Mevcut database'i değiştirmeye gerek yok, sadece "price" field'inin yorumlanmasını değiştiriyoruz (KDV hariç olarak).
İxtif.com: Endüstriyel ekipman satışı (forklift, transpalet, istif makinesi)
base_price field (KDV hariç)
price_with_tax accessor (runtime hesaplama)
final_price (base_price - KDV hariç)
Sonuç: İxtif.com'da Shop modülü DOĞRU çalışıyor. Subscription modülünü de AYNI pattern'e uyarlarsak, tüm sistem tutarlı hale gelir ve bu KDV hatası tamamen ortadan kalkar.
Model Accessor: getCycleBasePrice() ve getCyclePriceWithTax() metodları eklenmiş mi?
Bridge Güncelleme: SubscriptionCartBridge.php KDV ayrıştırma kodunu kaldırdı mı?
Log Kontrolü: Bridge log'unda "Price WITHOUT tax - same as Shop base_price pattern" mesajı var mı?
Test - Plan Sayfası: "600 TL + KDV" gösterimi doğru mu?
Test - Sepete Ekle: Cart item'da unit_price = 600 TL (KDV hariç) mi?
Test - Checkout: Ara Toplam 600 TL, KDV 120 TL, Toplam 720 TL mi?
Mevcut Planlar: Database'deki cycle price'lar kontrol edildi mi? (KDV hariç olarak yorumlanıyor artık)
Admin Döküman: "Cycle price KDV hariç girilmelidir" notu eklendi mi?
Shop Karşılaştırma: Subscription ve Shop aynı pattern'i kullanıyor mu?
getCycleBasePrice() accessor ekle
Claude AI Code Analizi - 11 Ocak 2025 (v2)
Subscription & Shop Modül Karşılaştırması - KDV Hesaplama Sistemi - İxtif.com Analizi