Kupon Sistemi Analiz & Planlama

Kupon Sistemi — Kapsamlı Analiz

Mevcut altyapı durumu, kupon çeşitleri, checkout entegrasyonu ve raporlama planı

1 Mevcut Durum Analizi

Basit Anlatım

Kupon sistemi altyapısı büyük ölçüde hazır. Admin panelinde kupon oluşturma/düzenleme ekranı çalışıyor. Veritabanı tabloları (kuponlar + kullanım kayıtları) mevcut. Ancak checkout sayfasıyla bağlantısı henüz yapılmamış — yani kullanıcı checkout'ta kupon kodu girecek alan yok. Bu entegrasyonu yapacağız.

Hazır
  • Coupon model + migration
  • CouponUsage model + migration
  • CouponService (validate, apply, getDiscount)
  • Admin CRUD (liste + form)
  • Cart model: coupon_code alanı
  • Order model: coupon_discount alanı
  • CartService: applyCoupon() metodu
Eksik
  • Checkout'ta kupon input alanı
  • Checkout → CouponService bağlantısı
  • Sipariş özetinde indirim satırı
  • Kupon kullanım raporlama sayfası
  • Admin kupon rapor rotaları
Kısmi / Uyumsuz
  • applies_to alanı: Migration'da all/specific_products/specific_categories/specific_brands, formda all/shop/subscription
  • Coupon API rotaları boş
  • CouponUsage kaydı sipariş tamamlanınca oluşmuyor

Teknik Detaylar

Bileşen Dosya Yolu Durum
ModelModules/Coupon/App/Models/Coupon.phpHazır
Usage ModelModules/Coupon/App/Models/CouponUsage.phpHazır
ServiceModules/Coupon/App/Services/CouponService.phpHazır
Admin ListeModules/Coupon/App/Http/Livewire/Admin/CouponComponent.phpHazır
Admin FormModules/Coupon/App/Http/Livewire/Admin/CouponManageComponent.phpHazır
Checkout PageModules/Cart/resources/views/livewire/front/checkout-page.blade.phpKupon alanı yok
CartServiceModules/Cart/App/Services/CartService.phpapplyCoupon() var, çağrılmıyor
Admin RotalarıModules/Coupon/routes/admin.phpindex + manage
Rapor RotalarıModules/Coupon/routes/admin.phpYok

2 Kupon Çeşitleri

Basit Anlatım

Kuponlar farklı şekillerde indirim sağlayabilir. Bazıları yüzdelik keser (örn. %20 indirim), bazıları sabit tutar düşer (örn. 50₺ indirim), bazıları kargonuzu bedava yapar. Ayrıca "2 al 1 öde" gibi miktar bazlı kampanyalar da yapılabilir. Aşağıda mevcut + önerilen tüm kupon türlerini görebilirsiniz.

Mevcut Kupon Türleri (Altyapıda Hazır)

Yüzdelik İndirim

percentage
Hazır

Sepet tutarından belirtilen yüzde kadar indirim yapar.

Örnek:
Sepet: 500₺ → %20 kupon → -100₺ → Ödeme: 400₺
Maks. indirim tavanı belirlenebilir (ör. en fazla 200₺)

Sabit Tutar İndirim

fixed_amount
Hazır

Sepetten sabit bir tutar düşer. Sepet tutarını geçemez.

Örnek:
Sepet: 300₺ → 50₺ kupon → -50₺ → Ödeme: 250₺

Ücretsiz Kargo

free_shipping
Hazır

Kargo ücretini sıfırlar. Müzik platformu için şu an uygun olmayabilir (dijital ürün).

Not:
Muzibu dijital platform — fiziksel ürün yoksa bu tür kullanılmayabilir

X Al Y Öde

buy_x_get_y
Hazır

Belirli miktar alana ekstra ürün hediye. Ör: 3 al 2 öde.

Örnek:
3 albüm al → 1 albüm bedava (en ucuzu düşer)

Önerilen Ek Kupon Türleri (Muzibu'ya Özel)

Abonelik İndirimi

subscription_discount
Öneri

Premium abonelik planlarına özel indirim. İlk ay veya ilk X ay geçerli.

Premium Aylık: 79₺ → İlk 3 ay 49₺

Deneme Süresi Uzatma

trial_extension
Öneri

Ücretsiz deneme süresini uzatır. Yeni kullanıcı kazanımı için etkili.

7 gün deneme → +30 gün ekstra

Referans / Davet Kuponu

referral
Öneri

Arkadaşını davet eden + davet edilen ikisi de indirim kazanır.

Davet eden: 1 ay bedava • Davet edilen: %50 indirim

İlk Alışveriş Kuponu

first_purchase
Öneri

Sadece ilk kez sipariş veren kullanıcılara özel. Otomatik uygulanabilir.

Hoşgeldin kuponu: %15 indirim (tek seferlik)

Kupon Konfigürasyon Seçenekleri

Özellik Açıklama Durum
İndirim Yüzdesi (%) Sepetten yüzde bazlı indirim (0-100) Var
Sabit Tutar İndirimi (₺) Sepetten belirli bir tutar düşme Var
Maks. İndirim Tavanı Yüzdelik indirimin aşamayacağı üst sınır Var
Min. Sepet Tutarı Kuponun geçerli olması için minimum sipariş tutarı Var
Maks. Sepet Tutarı Kuponun geçerli olması için maksimum sipariş tutarı Var
Toplam Kullanım Limiti Kupon toplam kaç kez kullanılabilir (null = sınırsız) Var
Kişi Başı Kullanım Bir kullanıcı kaç kez kullanabilir (varsayılan: 1) Var
Geçerlilik Tarihi Başlangıç ve bitiş tarihi (zamanlı kampanya) Var
Kupon Birleştirme Diğer kuponlarla/kampanyalarla birlikte kullanılabilir mi? Var
Müşteri Kısıtlaması Herkes / belirli müşteriler / belirli gruplar Var
Ürün/Kategori Kısıtlaması Sadece belirli ürünlere/kategorilere uygulanır Var
Hariç Tutulanlar Belirli ürün/kategorileri kupona dahil etme Var

3 Checkout Kupon Yerleşimi

Basit Anlatım

Checkout sayfasındaki "Sipariş Özeti" bölümüne bir kupon giriş alanı eklenecek. Kullanıcı kupon kodunu yazar, "Uygula" butonuna basar. Sistem kuponu kontrol eder — geçerliyse indirim tutarı gösterilir, geçersizse hata mesajı çıkar. Kupon uygulandıktan sonra toplam tutar güncellenir ve "Kaldır" butonu belirir.

Checkout Kupon Alanı Taslağı

Sipariş Özeti
Ara Toplam (2 Ürün) 250 ₺
KDV (%20) 50 ₺
Kupon Kodu
YILSONU20 — %20 indirim
Kupon İndirimi -50 ₺
Toplam
300 ₺ 250 ₺

Sipariş Özeti bölümüne eklenecek kupon alanı taslağı

Kupon Uygulama Akışı

1

Kullanıcı Kupon Kodunu Girer

Checkout sayfasındaki input alanına kupon kodunu yazar ve "Uygula" butonuna basar.

2

Livewire → CouponService::validate()

CheckoutPage Livewire bileşeninde applyCoupon() metodu çağrılır. Kupon kodu, kullanıcı ve sepet tutarı doğrulanır.

3

Doğrulama Kontrolleri

Kupon mevcut mu?
Aktif mi? Süresi dolmamış mı?
Kullanım limiti aşılmamış mı?
Bu kullanıcı daha önce kullanmış mı?
Minimum sepet tutarı karşılanıyor mu?
Kapsam uygun mu? (shop/subscription/all)
4

CartService::applyCoupon() → Sepet Güncelle

Cart modeldeki coupon_code ve coupon_discount alanları güncellenir, recalculateTotals() çağrılır.

5

UI Güncellenmesi

Sipariş özetinde indirim satırı görünür, toplam tutar güncellenir, "Kaldır" butonu aktif olur.

6

Sipariş Tamamlandığında → CouponUsage Kaydı

Ödeme başarılı olduğunda CouponService::apply() ile kullanım kaydı oluşturulur ve used_count artırılır.

4 Kupon Raporlama & Rotalar

Basit Anlatım

Hangi kuponun ne kadar kullanıldığını, kim tarafından kullanıldığını ve ne kadar indirim sağladığını görebileceğiniz bir rapor sayfası olacak. Her kuponun detay sayfasında kullanım geçmişi, grafik ve istatistikler yer alacak.

Planlanan Rotalar

Metod URL Bileşen Açıklama
GET /admin/coupon CouponComponent Kupon listesi (mevcut)
GET /admin/coupon/manage/{id?} CouponManageComponent Kupon oluştur/düzenle (mevcut)
GET /admin/coupon/reports CouponReportComponent Genel kupon raporları (yeni)
GET /admin/coupon/reports/{id} CouponReportDetailComponent Tek kupon detay raporu (yeni)

Rapor Sayfası İçeriği

Genel Rapor (/admin/coupon/reports)

  • Toplam kupon sayısı (aktif/pasif/süresi dolmuş)
  • Toplam kullanım sayısı
  • Toplam sağlanan indirim tutarı (₺)
  • En çok kullanılan kuponlar (Top 10)
  • En çok indirim sağlayan kuponlar
  • Günlük/haftalık/aylık kullanım grafiği
  • Kupon türlerine göre dağılım
  • Tarih aralığı filtresi

Kupon Detay Raporu (/admin/coupon/reports/{id})

  • Kupon bilgileri (kod, tür, indirim değeri)
  • Kullanım sayısı / limit (ör. 45/100)
  • Toplam indirim tutarı
  • Ortalama sipariş tutarı (kuponlu)
  • Kullanım geçmişi tablosu (kullanıcı, tarih, tutar)
  • Günlük kullanım trendi grafiği
  • Dönüşüm oranı (görüntüleyen vs uygulayan)
  • Kupon durumu badge (aktif/sona erdi/limit doldu)

Kullanım Kayıt Yapısı (coupon_usages)

Alan Tip Açıklama
coupon_usage_idPKBirincil anahtar
coupon_idFK → couponsHangi kupon kullanıldı
user_idFK → usersKim kullandı
usable_typestringPolymorphic tip (Order, Subscription vb.)
usable_idbigintPolymorphic ID
discount_amountdecimal(12,2)Uygulanan indirim tutarı
created_attimestampKullanım tarihi

5 Yapılacaklar Listesi

1

Admin Kupon Formu Güncelleme

applies_to alanındaki migration/form uyumsuzluğunu çöz. Muzibu'ya uygun kapsam ekle: all, shop, subscription

2

Checkout Kupon Alanı Ekle

checkout-page.blade.php sipariş özeti bölümüne kupon input + uygula/kaldır butonu ekle. CheckoutPage.php Livewire bileşenine applyCoupon() ve removeCoupon() metodları ekle.

3

Sipariş Özetine İndirim Satırı

Kupon uygulandığında "Kupon İndirimi" satırı göster, toplam tutarı güncelle, eski tutarı üstü çizili göster.

4

Sipariş Tamamlanma → CouponUsage Kaydı

Ödeme başarılı olduğunda CouponService::apply() ile kullanım kaydı oluştur, used_count artır.

5

Admin Rapor Sayfaları Oluştur

CouponReportComponent (genel rapor) ve CouponReportDetailComponent (tekil kupon raporu) Livewire bileşenlerini oluştur. Rotaları admin.php'ye ekle.

6

Test & ABA Doğrulama

Checkout'ta kupon uygulama/kaldırma, geçersiz kupon hatası, kullanım limiti kontrolü, rapor sayfası kontrolü.

28 Şubat 2026 • Muzibu.com.tr