Пример #1
0
 /**
  * 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);
 }
Пример #2
0
 /**
  * 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);
 }