/** * Return discount item qty * * @param Mage_Sales_Model_Quote_Item_Abstract $item * @param Mage_SalesRule_Model_Rule $rule * @return int */ protected function _getItemQty($item, $rule) { //@nelkaake: Magento 1.3 and lower doesnt have the item->getTotalQty attribute. if (Mage::helper('rewards/version')->isBaseMageVersionAtLeast('1.4')) { $qty = $item->getTotalQty(); } else { $qty = $item->getQty(); if ($item->getParentItem()) { $qty *= $item->getParentItem()->getQty(); } } return $rule->getDiscountQty() ? min($qty, $rule->getDiscountQty()) : $qty; }
/** * Get the quantity requeted for a single item. * * @param Mage_Sales_Model_Quote_Item_Abstract * @return int */ public function getRequestedItemQuantity(Mage_Sales_Model_Quote_Item_Abstract $item) { // Child item quantity is the static quantity of the child // item within a single unit of the parent. E.g. a configurable // product's child item's quantity, will always be 1 - one child in // the configurable item. Bundle items, however, will be // the number of the child items in a single unit of the // parent bundle, depending on how the bundle was configured when // added to cart - actual quantity of the child is child // quantity * parent quantity. $parentItem = $item->getParentItem(); return $item->getQty() * ($parentItem ? $parentItem->getQty() : 1); }
/** * returns true if the item is the child of configurable/grouped product * * @param Mage_Sales_Model_Quote_Item_Abstract * @return bool */ public function isExcludedItem(Mage_Sales_Model_Quote_Item_Abstract $item) { return $item->getParentItem() instanceof Mage_Sales_Model_Quote_Item; }
/** * Check if the item is the child of a configurable product. * * @param Mage_Sales_Model_Quote_Item_Abstract * @return bool */ protected function itemIsConfigurableChild(Mage_Sales_Model_Quote_Item_Abstract $item) { $parentItem = $item->getParentItem(); return $parentItem && $parentItem->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; }
/** * Recalculate child discount. Separate discount between children * * @param Mage_Sales_Model_Quote_Item_Abstract $child * @return Mage_SalesRule_Model_Quote_Discount */ protected function _recalculateChildDiscount($child) { $item = $child->getParentItem(); $prices = array('base' => $item->getBaseOriginalPrice(), 'current' => $item->getPrice()); $keys = array('discount_amount', 'original_discount_amount'); foreach ($keys as $key) { $child->setData($key, $child->getData($key) * $child->getPrice() / $prices['current']); $child->setData('base_' . $key, $child->getData('base_' . $key) * $child->getPrice() / $prices['base']); } return $this; }