/** * Fetches the item price that should be used for calculating max catalog points spending * for the given item. Uses the following check hierarchy: * CustomPrice * > if not set use item price * > if not set use product final price * > if not set use * * @param Mage_Sales_Model_Quote_Item $item */ public function getItemProductPrice($item) { // Prepare data from item and initalize counters $store_currency = (double) $this->getCurrencyRate($item->getQuote()); if ($item->hasCustomPrice()) { $product_price = (double) $item->getCustomPrice() * $store_currency; } elseif (Mage::helper('tax')->priceIncludesTax() && ($item->getRowTotalBeforeRedemptions() && $item->getRowTotal())) { $rt = (double) $item->getRowTotal(); $item->setRowTotal($item->getRowTotalBeforeRedemptions()); $product_price = (double) Mage::helper('checkout')->getPriceInclTax($item); $item->setRowTotal($rt); } else { // item doesn't have a price, use the item product final price $item_price = (double) $item->getPrice(); $item_price = !empty($item_price) ? $item->getPrice() : $item->getProduct()->getFinalPrice(); $product_price = (double) $item_price * $store_currency; } return $product_price; }
/** * Calculate item row total * * @param Mage_Sales_Model_Quote_Item $item * @return $this * @see Mage_Sales_Model_Quote_Item::calcRowTotal() */ protected function _calcItemRowTotal($item) { $qty = $item->getTotalQty(); $total = $this->_getDataHelper()->roundUp($item->getCalculationPriceOriginal(), 4) * $qty; $baseTotal = $this->_getDataHelper()->roundUp($item->getBaseCalculationPriceOriginal(), 4) * $qty; $item->setRowTotal($this->_getDataHelper()->roundUp($total, 4)); $item->setBaseRowTotal($this->_getDataHelper()->roundUp($baseTotal, 4)); return $this; }
/** * Returns the total accumulated catalog discounts on an item * @param Mage_Sales_Model_Quote_Item|Mage_Sales_Model_Order_Item $item * @return int negative discount amount */ protected function _getTotalItemCatalogDiscount($item) { if (!$item->getQuoteId() || !$item->getId()) { return 0; } $row_total_before_disc = $item->getRowTotalBeforeRedemptions(); $row_total = $item->getRowTotal(); if ($item->getRewardsCatalogDiscount()) { $total_discount = $item->getRewardsCatalogDiscount(); } else { if (empty($row_total_before_disc)) { $item->setRowTotal($item->getRowTotalBeforeRedemptions()); $item->setRowTotalInclTax($item->getRowTotalBeforeRedemptionsInclTax()); $total_discount = $this->_getRedeemer()->getTotalCatalogDiscount($item); } else { $total_discount = $item->getRowTotalBeforeRedemptions() - $item->getRowTotal(); } } return $total_discount; }
/** * * @param Mage_Sales_Model_Quote_Item $item */ public function resetItemDiscounts($item) { if (!$item) { return $this; } if ($item->getRowTotalBeforeRedemptions() == 0) { $item->setRowTotalBeforeRedemptions($item->getRowTotal()); $item->setRowTotalBeforeRedemptionsInclTax($item->getRowTotalInclTax()); } elseif ($item->getRowTotalBeforeRedemptions() < $item->getRowTotal()) { $item->setRowTotal($item->getRowTotalBeforeRedemptions()); $item->setRowTotalInclTax($item->getRowTotalBeforeRedemptionsInclTax()); } else { // do nothing } return $this; }
/** * * @param Mage_Sales_Model_Quote_Item $item */ public function resetItemDiscounts($item) { if (!$item) { return $this; } if ($item->getRowTotalBeforeRedemptions() == 0) { $item->setRowTotalBeforeRedemptions($item->getRowTotal()); $item->setRowTotalBeforeRedemptionsInclTax($item->getRowTotalInclTax()); } elseif ($item->getRowTotalBeforeRedemptions() < $item->getRowTotal()) { $item->setRowTotal($item->getRowTotalBeforeRedemptions()); $item->setRowTotalInclTax($item->getRowTotalBeforeRedemptionsInclTax()); } else { // do nothing } if (!Mage::helper('rewards')->isBaseMageVersionAtLeast('1.4')) { // only happens in Magento 1.3 $rowTotalInclTax = $item->getRowTotalBeforeRedemptions() * (1 + $item->getTaxPercent() / 100); $item->setRowTotalBeforeRedemptionsInclTax($rowTotalInclTax); } return $this; }