/** * Make sure that a gift is only added once, create a free item and add it to the cart. * * @param Mage_Sales_Model_Quote $quote * @param Mage_Sales_Model_Quote_Item $item * @param Mage_SalesRule_Model_Rule $rule */ protected static function _handleGift(Mage_Sales_Model_Quote $quote, Mage_Sales_Model_Quote_Item $item, Mage_SalesRule_Model_Rule $rule) { if ($rule->getIsApplied()) { return; } $qty = (int) $rule->getDiscountAmount(); if ($qty) { $freeItem = self::_getFreeQuoteItem($quote, $rule->getGiftSku(), $item->getStoreId(), $qty); self::_addAndApply($quote, $freeItem, $rule); } }