System rabatowania w Sklepie LogiShop

Napisany przez Radosław Gołębiowski dnia 25 lutego 2009, godzina 09:35  Rss do tej wiadomości

Tagi: LogiShop + PHP + oprogramowanie sklepu + rabaty + sklep

System LogiShop został wzbogacony o możliwości udzielania rabatów klientom.

W najnowszej wersji systemu istnieją dwa rodzaje rabatów:

  • rabat udzielany przy określonej ilości zakupionego towaru
  • stały rabat przydzielany określonym klientom 

Pierwszy rodzaj rabatu włącza się automatycznie po dodaniu do koszyka odpowiedniej ilości produktów. Rabat ten przypisywany jest do określonego produktu w koszyku. Można bez większego problemu ustawić odpowiednie wartości rabatu dla określonej ilości produktów.

Na przykład można zdefiniować następującą regułę: przy zakupie 10 sztuk danego produktu klient otrzymuje rabat w wysokości 2%, natomiast jeśli ilość wyniesie 100 to rabat jest większy i wynosi 5%.

Rabat przypisywany jest dynamicznie podczas pobierania danych z koszyka za pomocą następującego fragmentu kodu: 

if(!$discount && sfConfig::get('app_product_discount_quantity'))
{
	$ranges = sfConfig::get('app_product_discount_range');
	if($ranges && is_array($ranges))
	{
		foreach($ranges as $k => $range)
		{
			if($cartItem->getQuantity()>=$k && $range>$discount)
				$discount = $range;
		}
	}
}

$cartItem->setDiscount($discount);

 

Drugi rodzaj rabatu jest możliwy do zrealizowania na dwa sposoby:

  1. przydzielenie stałego rabatu na wszystkie produkty w sklepie - rabat jest zapisany w profilu użytkownika
  2. przydzielenie określonego rabatu na wybrane kategorie w sklepie dla klienta

Przypisywanie wymienionego rabatu realizowane jest następująco

$discount = 0;
if($profile)
{
	//rabat na kategorie
	if($categories_discount)
	{
		$product_category = $product->getCategory();
		foreach($categories_discount as $category_discount)
		{
			if($category_discount->getCategory()->getTreeLeft() <= $product_category->getTreeLeft() && $category_discount->getCategory()->getTreeRight() >= $product_category->getTreeRight())
			{
				$discount = $category_discount->getValue();
				break;
			}
		}
	}
	
	// stały rabat w profilu klienta
	if(!$discount && $profile->getDiscount())
	{
		$discount = $profile->getDiscount();
	}
} 

jeden komentarz

Napisany przez Szymon dnia 25 lutego 2009, godzina 12:52
System jest rozwijany bardzo elegancko. Serce roście...