Esempio n. 1
0
 /**
  * Return cart discounts
  *
  * @result array Discounts
  */
 public function getDiscounts($lite = false, $refresh = false)
 {
     if (!$this->id) {
         return array();
     }
     // if (!$lite AND !$refresh AND isset(self::$_discounts[$this->id]))
     //     return self::$_discounts[$this->id];
     // if ($lite AND isset(self::$_discountsLite[$this->id]))
     //     return self::$_discountsLite[$this->id];
     $sql = 'SELECT d.*, `id_cart`
     FROM `' . _DB_PREFIX_ . 'cart_discount` c
     LEFT JOIN `' . _DB_PREFIX_ . 'discount` d ON c.`id_discount` = d.`id_discount`
     WHERE `id_cart` = ' . (int) $this->id;
     $result = Db::getInstance()->ExecuteS($sql);
     $products = $this->getProducts();
     foreach ($result as $k => $discount) {
         $categories = Discount::getCategories((int) $discount['id_discount']);
         $in_category = false;
         foreach ($products as $product) {
             if (Product::idIsOnCategoryId((int) $product['id_product'], $categories)) {
                 $in_category = true;
                 break;
             }
         }
         if (!$in_category) {
             unset($result[$k]);
         }
     }
     if ($lite) {
         self::$_discountsLite[$this->id] = $result;
         return $result;
     }
     $total_products_wt = $this->getOrderTotal(true, Cart::ONLY_PRODUCTS);
     $total_products = $this->getOrderTotal(false, Cart::ONLY_PRODUCTS);
     $shipping_wt = $this->getOrderShippingCost();
     $shipping = $this->getOrderShippingCost(NULL, false);
     self::$_discounts[$this->id] = array();
     foreach ($result as $row) {
         $discount = new Discount($row['id_discount'], (int) $this->id_lang);
         $row['description'] = $discount->description ? $discount->description : $discount->name;
         $row['value_real'] = $discount->getValueByCartObj(sizeof($result), $total_products_wt, $shipping_wt, $this);
         $row['value_tax_exc'] = $discount->getValueByCartObj(sizeof($result), $total_products, $shipping, $this, false);
         self::$_discounts[$this->id][] = $row;
     }
     return isset(self::$_discounts[$this->id]) ? self::$_discounts[$this->id] : NULL;
 }