Kullanıcılara indirim sağlayan esnek kupon sistemi
Abonelik satışlarınızda kullanabileceğiniz esnek bir kupon sistemi oluşturduk. Yüzdelik veya sabit tutar indirimler tanımlayabilir, kullanım limitleri koyabilir ve tarih bazlı geçerlilik belirleyebilirsiniz.
Örnek: %20 indirim
Örnek: 50 TL indirim
Kişi başı ve toplam limit
Başlangıç ve bitiş tarihi
Kupon uygulandı, indirim tutarı sepet toplamından düşüldü
Kullanıcı kupon kodu girip "Uygula" butonuna tıkladığında, sistem şu doğrulama ve hesaplama adımlarını gerçekleştiriyor:
CouponService::findByCode() metodu girilen kodu coupons tablosunda arıyor. Kod büyük/küçük harf duyarsız olarak UPPER(code) ile karşılaştırılıyor.
Kuponun starts_at ve expires_at alanları kontrol ediliyor. Bugünün tarihi bu aralıkta değilse "Kupon süresi dolmuş" veya "Kupon henüz aktif değil" hatası döndürülüyor.
coupon_usages tablosunda bu kuponun toplam ve bu kullanıcı tarafından kaç kez kullanıldığı sayılıyor. max_uses ve max_uses_per_user limitleri aşıldıysa hata döndürülüyor.
Kuponun type alanına göre indirim hesaplanıyor: percentage ise sepet tutarı * (yüzde/100), fixed ise doğrudan tutar düşülüyor. Maksimum indirim limiti (max_discount) varsa o sınırda kalınıyor.
Tüm kontroller geçildiyse carts.coupon_id alanı güncelleniyor ve carts.discount_amount hesaplanan indirim tutarıyla dolduruluyor. Sepet toplam tutarı yeniden hesaplanıyor.
Ödeme tamamlandığında coupon_usages tablosuna yeni kayıt ekleniyor: coupon_id, user_id, order_id, discount_amount. Bu sayede kullanım istatistikleri takip ediliyor.
Belirli koşullarda indirim sağlayan özel kod.
Alışveriş merkezlerindeki indirim çeki gibi
Yüzdelik veya sabit tutar indirim seçeneği.
%20 mi yoksa 50 TL mi indirim?
Kuponun kaç kez kullanılabileceği sınırı.
Her kişi 1 kez kullanabilir gibi
Kuponun geçerli olduğu tarih aralığı.
28 Şubat'a kadar geçerli gibi
Yüzde veya Sabit Tutar İndirimi