Exemplo n.º 1
0
		/**
			* Найти наиболее подходящую скидку для заказа $order
			* @param order $order заказ
			* @return orderDiscount самая подходящая скидка для заказа $order
		*/
		public static function search(order $order) {
			$cmsController = cmsController::getInstance();
			$emarket = $cmsController->getModule('emarket');

			if($emarket instanceof def_module == false) {
				throw new coreException('Emarket module must be installed in order to calculate discounts');
			}
			
			$allDiscounts = $emarket->getAllDiscounts('bonus');
			$discounts = array();
			foreach($allDiscounts as $discountObject) {
				$discount = discount::get($discountObject->id);
				if($discount instanceof bonusDiscount == false) continue;
				if($discount->validate($order)) $discounts[] = $discount;
			}
			
			switch(sizeof($discounts)) {
				case 0: return null;
				default:
					$orderPrice = $order->getOriginalPrice();
					$maxDiscount = null; $minPrice = null;
					foreach($discounts as $i => $discount) {
						$price = $discount->recalcPrice($orderPrice);
						if($price <= 0) continue;

						if(is_null($minPrice) || $minPrice > $price) {
							$minPrice = $price;
							$maxDiscount = $discount;
						}
					}
					return $maxDiscount;
			}
		}
Exemplo n.º 2
0
 /**
  * Найти наиболее оптимальную скидку для товара $element
  * @param iUmiHierarchyElement $element товар в каталоге
  * @return itemDiscount скидка на товар
  */
 public static final function search(iUmiHierarchyElement $element)
 {
     $cmsController = cmsController::getInstance();
     $emarket = $cmsController->getModule('emarket');
     if ($emarket instanceof def_module == false) {
         throw new privateException('Emarket module must be installed in order to calculate discounts');
     }
     $allDiscounts = $emarket->getAllDiscounts('item');
     $discounts = array();
     foreach ($allDiscounts as $discountObject) {
         $discount = discount::get($discountObject->id);
         if ($discount instanceof itemDiscount == false) {
             continue;
         }
         if ($discount->validate($element)) {
             $discounts[] = $discount;
         }
     }
     switch (sizeof($discounts)) {
         case 0:
             return null;
         default:
             $elementPrice = $element->price;
             $maxDiscount = null;
             $minPrice = null;
             foreach ($discounts as $i => $discount) {
                 $price = $discount->recalcPrice($elementPrice);
                 if ($price <= 0) {
                     continue;
                 }
                 if (is_null($minPrice) || $minPrice > $price) {
                     $minPrice = $price;
                     $maxDiscount = $discount;
                 }
             }
             return $maxDiscount;
     }
 }
 public function getRules($discountTypeId = false, $discountId = false)
 {
     $items = discountRule::getList($discountTypeId);
     if ($discountId) {
         $discount = discount::get($discountId);
         $discountRules = $discount->getDiscountRules();
         $discountRulesId = array();
         foreach ($discountRules as $rule) {
             $discountRulesId[] = $rule->getObject()->rule_type_id;
         }
         foreach ($items as $i => $rule) {
             $items[$i] = array('attribute:id' => $rule->id, 'attribute:name' => $rule->name);
             if (in_array($rule->id, $discountRulesId)) {
                 $items[$i]['attribute:selected'] = 'selected';
             }
         }
     }
     return array('items' => array('nodes:item' => $items));
 }