/** * Returns a total discount on the cart from the provided items * @deprecated @see TBT_Rewards_Model_Salesrule_Discount_Action_Cartfixed * * @param Mage_Sales_Model_Quote_Item $item * @param Mage_Sales_Model_Quote_Address $address * @param TBT_Rewards_Model_Sales_Rule $rule * @param array() &$cartRules * @return array($discountAmount, $baseDiscountAmount) */ protected function _getTotalFixedDiscountOnitem($item, $address, $rule, &$cartRules) { $quote = $item->getQuote(); $store = $item->getQuote()->getStore(); $quoteAmount = $quote->getStore()->convertPrice($cartRules[$rule->getId()]); if ($rule->getPointsAction() == TBT_Rewards_Model_Salesrule_Actions::ACTION_DISCOUNT_BY_POINTS_SPENT) { $points_spent = Mage::getSingleton('rewards/session')->getPointsSpending(); $multiplier = floor($points_spent / $rule->getPointsAmount()); } else { $multiplier = 1; } $quoteAmount = $quote->getStore()->convertPrice($cartRules[$rule->getId()]); if (Mage::helper('tax')->discountTax($store) && !Mage::helper('tax')->applyTaxAfterDiscount($store)) { $tax_amount = $item->getTaxAmount(); $base_tax_amount = $item->getBaseTaxAmount(); } else { $tax_amount = 0; $base_tax_amount = 0; } if (Mage::helper('rewards')->isBaseMageVersionAtLeast('1.4.2')) { $itemPrice = $this->_getItemPrice($item); $baseItemPrice = $this->_getItemBasePrice($item); $qty = $this->_getItemQty($item, $rule); if (1 >= $this->_rulesItemTotals[$rule->getId()]['items_count']) { $quoteAmount = $quote->getStore()->convertPrice($cartRules[$rule->getId()]); $discountAmount = min($itemPrice * $qty, $quoteAmount); $baseDiscountAmount = min($baseItemPrice * $qty, $cartRules[$rule->getId()]); } else { $discountRate = $baseItemPrice * $qty / $this->_rulesItemTotals[$rule->getId()]['base_items_price']; $maximumItemDiscount = $rule->getDiscountAmount() * $discountRate; $quoteAmount = $quote->getStore()->convertPrice($maximumItemDiscount); $discountAmount = min($itemPrice * $qty, $quoteAmount); $baseDiscountAmount = min($baseItemPrice * $qty, $maximumItemDiscount); $this->_rulesItemTotals[$rule->getId()]['items_count']--; } } else { $discountAmount = min($item->getRowTotal() - $item->getDiscountAmount() + $tax_amount, $quoteAmount); $baseDiscountAmount = min($item->getBaseRowTotal() - $item->getBaseDiscountAmount() + $base_tax_amount, $cartRules[$rule->getId()]); } return array($discountAmount, $baseDiscountAmount); }
/** * Returns a total discount on the cart from the provided items * * @param Mage_Sales_Model_Quote_Item $item * @param Mage_Sales_Model_Quote_Address $address * @param TBT_Rewards_Model_Sales_Rule $rule * @param array() &$cartRules * @return array($discountAmount, $baseDiscountAmount) */ protected function _getTotalFixedDiscountOnitem($item, $address, $rule, &$cartRules) { $quote = $item->getQuote(); $store = $item->getQuote()->getStore(); if ($rule->getPointsAction() == TBT_Rewards_Model_Salesrule_Actions::ACTION_DISCOUNT_BY_POINTS_SPENT) { $points_spent = Mage::getSingleton('rewards/session')->getPointsSpending(); $multiplier = floor($points_spent / $rule->getPointsAmount()); } else { $multiplier = 1; } $quoteAmount = $quote->getStore()->convertPrice($cartRules[$rule->getId()]); list($item_row_total, $item_base_row_total) = $this->_getDiscountableRowTotal($address, $item, $rule); $discountAmount = min($item_row_total, $quoteAmount); $baseDiscountAmount = min($item_base_row_total, $cartRules[$rule->getId()]); return array($discountAmount, $baseDiscountAmount); }