Jump to content

Modül Içinden Değişkenler Ile Veritabanına Erişim


efxtr

Recommended Posts

Değerli arkadaşlar,

 

Müşteri alışverişi bitirmeden önce, o ay içinde yaptığı alışverişin toplam miktarını öğrenip, mevcut alışveriş sepeti + toplam harcaması belirli bir miktarın üzerindeyse uyarı mesajı vererek alışverişi bitirmesini engellemek istiyorum.

 

Çalıştırmak istediğim örnek SQL kodu aşağıdaki şekilde (değişkenlerin altı çizili):

 

SELECT sum(`ps_orders`.`total_products_wt`)

FROM ps_orders

WHERE ((`ps_orders`.`id_customer` =MUSTERI_NO) and (`ps_orders`.`date_add` BETWEEN ICINDE_BULUNDUGUMUZ_AYIN_ILK_GUNU AND AYIN_SON_GUNU) )

 

Modül içerisinde, yukarıdaki query'den gelen değer+ mevcut alışveriş sepeti değerini toplayıp, örneğin 5000'in altındaysa alışverişin bitmesine izin vereceğim, üstündeyse hata mesajı ürettirmeye çalışıyorum.

 

PHP ile kod yazmayalı çok zaman olduğu için modül içerisinde değişkenleri tam olarak nasıl çekeceğimden emin değilim. Belirli bir noktaya geldim ancak tecrübeli birisi kodları toparlayabilirse ya da en azından yönlendirme yapabilirse çok memnun olurum.

 

1- MUSTERI_NO yerine $customer_id'i kullanabilirim sanırım,

 

2- İlk gün için (AYIN_ILK_GUNU) date("m/d/Y", strtotime(date('m').'/01/'.date('Y').' 00:00:00'));

Son gün için (AYIN_SON_GUNU) date("m/d/Y", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00'))));

 

3- Alışveriş sepetinin mevcut tutarına $total_products_wt ile ulaşabilirim sanırım?

 

 

Şimdiden teşekkürler

Link to comment
Share on other sites

Arkadaşlar,

 

Kimseden cevap gelmedi ancak kör topal kendim hallettim :) Henüz optimizasyon yapmadım, belki birileriin ihtiyacı olabilir diyerek kodu paylaşıyorum. Planladığımdan farklı bir yol izledim, kısıtlamayı farklı iki tarih arasında değil aynı gün içinde ayarladım. Limit olarak, alışveriş tutarını 100, alışveriş miktarını 1 olarak ayarladım. Sürekli değiştireceğim değerler olmayacağı için veritabanında yeni bir tablo oluşturup oradan çekme ihtiyacı duymadım. One page checkout kullandığım için, \controllers\OrderOpcController.php dosyası üzerinde çalıştım.

 

Herkese iyi çalışmalar dilerim.

 

 

protected function _getPaymentMethods()

fonksiyonu içinde

 /* Check minimal amount */
 $currency = Currency::getCurrency((int)self::$cart->id_currency);

 

kodunun altına

 

 $MaksimumAlisverisLimiti=100;
 $Musteri = new Customer((int)self::$cookie->id_customer);
 $MusteriID=(int)self::$cookie->id_customer;
 $MusteriAdSoyad= $Musteri->firstname.' '.$Musteri->lastname;
 $Sepet=self::$cart->getOrderTotal();
 $AlisverisLimiti=1;

 $IlkGun= date("Y-m-d").' 00:00:00';
 $SonGun= date("Y-m-d").' 23:59:59';

 $VeritabaniSonuc = mysql_query("SELECT SUM(`ps_orders`.`total_products_wt`) as Toplam ,`ps_orders`.`id_customer` FROM `ps_orders` WHERE ((`ps_orders`.`id_customer` =".$MusteriID.") and (`ps_orders`.`date_add` BETWEEN `".$IlkGun."` AND `".$SonGun."`) ) )");
 $row = mysql_fetch_array($VeritabaniSonuc);
 $ToplamHarcama= $row['Toplam'];

 $VeritabaniSonuc2 = mysql_query("SELECT COUNT(`ps_orders`.`id_order`) as Sayi FROM `ps_orders` WHERE ((`ps_orders`.`id_customer` =".$MusteriID.") and (`ps_orders`.`date_add` BETWEEN \"".$IlkGun."\" AND \"".$SonGun."\") )");
 $row2 = mysql_fetch_array($VeritabaniSonuc2);
 $ToplamAlisveris= $row2['Sayi'];

   if ($ToplamAlisveris >= $AlisverisLimiti)
       {
       echo "<p class=\"warning\">".Tools::displayError("Sayın ".$MusteriAdSoyad.", bir gün içerisinde maksimum ".$AlisverisLimiti." defa alışveriş yapılabilmektedir. <br>Yarın yine bekleriz.")."</p>"    ;    
       }

       if ($ToplamAlisveris >= $AlisverisLimiti)
       return  ' ';
  	 if ( (self::$cart->getOrderTotal() ) >= $MaksimumAlisverisLimiti)
       echo   
           "<p class=\"warning\">".Tools::displayError("Sayın ".$MusteriAdSoyad.", günlük maksimum alışveriş sayısı ".$AlisverisLimiti.", alışveriş sepeti limiti ".$MaksimumAlisverisLimiti." TL\'dir.".    
           " Toplam harcamanız: ".number_format ( $Sepet ,  0 , '.' ,  '.' )." TL\'dir.")."</p>".
           "<p class=\"warning\">".Tools::displayError(" "."Lütfen sepetinizden ".number_format ( (-$MaksimumAlisverisLimiti+$Sepet),  0 , '.' ,  '.' )." TL miktarında ürün çıkartınız.")."</p>"    ;    

       if ( (self::$cart->getOrderTotal() +$ToplamHarcama) >= $MaksimumAlisverisLimiti)
       return  ' ';

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...