Mehmetmasa adlı üyeden alıntı: mesajı görüntüle
Cron işine gerek yok.
campaign diye bir tablo açın.
Id - campaignId - isProduct
şeklinde olsun.
campaignId => Ürün ID ve Kategori ID alabilecek.
isProduct => 0 veya 1 olarak indirimin ürüne mi yoksa kategoriye mi ait olduğunu belirtecek.

Eğer ki;

Id - campaignId - isProduct
1 - 1 - 1 => ID 'si 1 olan üründe indirim
2 - 3 - 0 => ID'si 3 olan kategoride indirim.

Gibi yapmak mantıklı olabilir. Tabii yukarıda belirttiğim gibi direkt TL bakımından net bir fiyat indirimi olabilir, %'li şekilde indirim olabilir. Bunun yanına bir kolon daha açıp artık nasıl indirim yapılacaksa o eklenebilir.
Örneğin %10 indirim eklediniz. Sepeti açarken URUN ID ile bu tabloyu kontrol ettirirsiniz, indirim ekli ise fiyat üzerinden indirin yaparsınız ve kullanıcıya gösterirsiniz.
Aynı şekilde ödemeyi alırken bu tabloyu kontrol ettirir indirimli şekilde ödeme alırsınız.
Sepette indirim işlemini kupon kodu ile yaptırırsınız, ürün indirimi gibi olmaz. Kupon kodları eklenir, sepette kupon kodunu kullanır ve indirim yapılır, get ile o kod alınır backend bölümünde kontrol edilir.
Kargo indirimi de farklı tabloda olması bana göre mantıklı.

Umarım anlatmak istediğim aklında bir şeyleri canlandırmıştır, güzel modül bunun için sağlam tablo yapısı kurmak lazım.

Bu arada kategori açılırken ürünler listeleniyor, direkt olarak kategoriyi sorgulayıp ürünleri listeletirken ürünlerde indirim yaptırabilirsin.
İndirim olan kategoriye ait bir ürün açılırken ürünün id 'sine göre kategorisini bulup tabloda sorgulatman gerekir. Burada yolu biraz uzatırsın ama sürekli cron tetiklemen gerekmez.

Farklı çözümler üretilebilir ama önceliğiniz indirim yapılırken ürünün fiyatını direkt güncellememek olsun.

Ayrıca cron ile güncellerim diyorsunuz ama bunun için tek tek VT'ye yazmanız gerekebilir.
Örnek vermek gerekirse bir kategoride %10 indirim yaptınız. 100 TL olan ürüne 10 TL indirim yaptınız ve 90 TL'ye geri getirdiniz.
Bunun için ya %10 indirim yapıldığında X TL 'ye gelen sayıyı bulacak denklem kurmalısınız ya da eski fiyatı tutmalısınız.
Aksi taktirde 90 TL üzerinden %10 alırsanız 99 TL'ye denk gelir ve indirim yaptığınız fiyatı bulamazsınız.
campanya tablosu oluştrurduğpumda ki senaryolar şu şekilde oluyor
1 bir kategoride kampanya var ise
o kategori açıldığında gelen ürünlerin hepsinde kampanya uygulamana (basit ve hızlı )

fakat bir urune kampanya yaptığımızda her sayfadagelen ürünlerin herbirinin kampanyaswı olup olmadığını sorgulamamzı gerekiyor
bu da yük getirecek (bir sayfada en fazla 24 ürün getirince göz ardı edilebilir belki)
///

urunler tablosuna 3 kolon ekleyip (kampanya_ tip , oran, bitis tarihi)admin tarafında kampanya girişi olduğunda tum urun tablosunu güncellesek admin tarafında gecikme olur bir nebze ama kullanıcı tarafından ek sorgu olmadığ için açılış hızı etkilenmez gibi geliyor. iki yolu da deneyeceğim hangisi daha efektif olursa buraya yazarım