Mevcut altyapı durumu, kupon çeşitleri, checkout entegrasyonu ve raporlama planı
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.
applies_to alanı: Migration'da all/specific_products/specific_categories/specific_brands, formda all/shop/subscription| Bileşen | Dosya Yolu | Durum |
|---|---|---|
| Model | Modules/Coupon/App/Models/Coupon.php | Hazır |
| Usage Model | Modules/Coupon/App/Models/CouponUsage.php | Hazır |
| Service | Modules/Coupon/App/Services/CouponService.php | Hazır |
| Admin Liste | Modules/Coupon/App/Http/Livewire/Admin/CouponComponent.php | Hazır |
| Admin Form | Modules/Coupon/App/Http/Livewire/Admin/CouponManageComponent.php | Hazır |
| Checkout Page | Modules/Cart/resources/views/livewire/front/checkout-page.blade.php | Kupon alanı yok |
| CartService | Modules/Cart/App/Services/CartService.php | applyCoupon() var, çağrılmıyor |
| Admin Rotaları | Modules/Coupon/routes/admin.php | index + manage |
| Rapor Rotaları | Modules/Coupon/routes/admin.php | Yok |
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.
percentage
Sepet tutarından belirtilen yüzde kadar indirim yapar.
fixed_amount
Sepetten sabit bir tutar düşer. Sepet tutarını geçemez.
free_shipping
Kargo ücretini sıfırlar. Müzik platformu için şu an uygun olmayabilir (dijital ürün).
buy_x_get_y
Belirli miktar alana ekstra ürün hediye. Ör: 3 al 2 öde.
subscription_discount
Premium abonelik planlarına özel indirim. İlk ay veya ilk X ay geçerli.
trial_extension
Ücretsiz deneme süresini uzatır. Yeni kullanıcı kazanımı için etkili.
referral
Arkadaşını davet eden + davet edilen ikisi de indirim kazanır.
first_purchase
Sadece ilk kez sipariş veren kullanıcılara özel. Otomatik uygulanabilir.
| Ö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 |
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.
Sipariş Özeti bölümüne eklenecek kupon alanı taslağı
Checkout sayfasındaki input alanına kupon kodunu yazar ve "Uygula" butonuna basar.
CheckoutPage Livewire bileşeninde applyCoupon() metodu çağrılır. Kupon kodu, kullanıcı ve sepet tutarı doğrulanır.
Cart modeldeki coupon_code ve coupon_discount alanları güncellenir, recalculateTotals() çağrılır.
Sipariş özetinde indirim satırı görünür, toplam tutar güncellenir, "Kaldır" butonu aktif olur.
Ödeme başarılı olduğunda CouponService::apply() ile kullanım kaydı oluşturulur ve used_count artırılır.
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.
| 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) |
| Alan | Tip | Açıklama |
|---|---|---|
| coupon_usage_id | PK | Birincil anahtar |
| coupon_id | FK → coupons | Hangi kupon kullanıldı |
| user_id | FK → users | Kim kullandı |
| usable_type | string | Polymorphic tip (Order, Subscription vb.) |
| usable_id | bigint | Polymorphic ID |
| discount_amount | decimal(12,2) | Uygulanan indirim tutarı |
| created_at | timestamp | Kullanım tarihi |
applies_to alanındaki migration/form uyumsuzluğunu çöz. Muzibu'ya uygun kapsam ekle: all, shop, subscription
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.
Kupon uygulandığında "Kupon İndirimi" satırı göster, toplam tutarı güncelle, eski tutarı üstü çizili göster.
Ödeme başarılı olduğunda CouponService::apply() ile kullanım kaydı oluştur, used_count artır.
CouponReportComponent (genel rapor) ve CouponReportDetailComponent (tekil kupon raporu) Livewire bileşenlerini oluştur. Rotaları admin.php'ye ekle.
Checkout'ta kupon uygulama/kaldırma, geçersiz kupon hatası, kullanım limiti kontrolü, rapor sayfası kontrolü.