/** * Ensures that the given product model is a rewards catlaog product * * @param mixed $product * @return TBT_Rewards_Model_Catalog_Product */ private function ensureProduct($product) { if ($product == null) { $product = $this->getProduct(); } if ($product instanceof Mage_Catalog_Model_Product) { $product = TBT_Rewards_Model_Catalog_Product::wrap($product); } return $product; }
/** * Set the product to create the predict points block for. * * @param TBT_Rewards_Model_Catalog_Product $_product */ public function setProduct($_product) { if (!$_product instanceof TBT_Rewards_Model_Catalog_Product) { $_product = TBT_Rewards_Model_Catalog_Product::wrap($_product); } $this->product = $_product; //@nelkaake Wednesday March 10, 2010 10:04:42 PM : New caching functionality //@nelkaake -m 5/11/10: new key generation functionality $this->setCacheKey($this->_genCacheKey()); return $this; }
/** * Returns an array of the lowest possible price using points, * and the points used to obtain that price * * @deprecated * * @param TBT_Rewards_Model_Catalog_Product $product * @return array */ public function getRewardAdjustedPrice($product) { if ($product instanceof Mage_Catalog_Model_Product) { $product = TBT_Rewards_Model_Catalog_Product::wrap($product); } if (!$product instanceof TBT_Rewards_Model_Catalog_Product) { $product = Mage::getModel('rewards/catalog_product')->load($product->getId()); } $optimized_price = $product->getRewardAdjustedPrice(); return $optimized_price; }
/** * returns an empty product if the product model could not be found * * @param Mage_Sales_Model_Quote_Item||TBT_Rewards_Model_Catalog_Product $item : the catalog item associated * @return TBT_Rewards_Model_Catalog_Product */ private function assureProduct($item) { if ($item instanceof TBT_Rewards_Model_Catalog_Product) { $product =& $item; } else { if ($item instanceof Mage_Catalog_Model_Product) { $product = $this->assureProduct(TBT_Rewards_Model_Catalog_Product::wrap($item)); } else { if ($this->hasGetProductFunc($item)) { $product = $item->getProduct(); if (empty($product)) { $product = Mage::getModel('rewards/catalog_product'); } } else { $product = Mage::getModel('rewards/catalog_product'); } } } return $product; }
/** * AJAX CALL. return a list of rules given a product and product price * param product_id * param rule_id * param price */ public function getProductPriceRuleSettingsAction() { try { //$storeId = $product->getStoreId(); // Mage::app()->getStore($storeId); /* @var $store Mage_Core_Model_Store */ $store = Mage::app()->getStore(); /* @var $product Mage_Catalog_Model_Product */ $productId = $this->getRequest()->get("productId"); $product = Mage::getModel('catalog/product')->setStoreId($store->getId())->load($productId); if (!$product->getId()) { throw new Exception("Product ID provided does not exist"); } if ($product instanceof Mage_Catalog_Model_Product) { $product = TBT_Rewards_Model_Catalog_Product::wrap($product); } /* @var $customer TBT_Rewards_Model_Customer */ $customer = false; // set to false becaue getCatalogRedemptionRules( false | customer ) if (Mage::getSingleton('rewards/session')->isCustomerLoggedIn()) { $customer = Mage::getSingleton('rewards/session')->getCustomer(); } $price = (double) $this->getRequest()->get("price"); $productPriceRuleMap = array(); $applicableRules = $product->getCatalogRedemptionRules($customer); foreach ($applicableRules as $i => &$r) { $r = (array) $r; $ruleId = $r[TBT_Rewards_Model_Catalogrule_Rule::POINTS_RULE_ID]; $rule = Mage::getModel('rewards/catalogrule_rule')->load($ruleId); if ($rule->getId()) { $productPriceRuleMap[$ruleId] = $rule->getPointSliderSettings($store, $product, $customer, $price); } } echo json_encode($productPriceRuleMap); } catch (Exception $e) { die("Error: " . $e->getMessage()); } }