/** * Sets all variations of price on final totals for use with standard items. Not the parent bundle/configurable. * * @param Mage_Sales_Model_Quote_Item $item * @param Webshopapps_Wsacommon_Model_Totals $finalTotals */ protected function setStandardPrices($item, &$finalTotals) { $finalTotals->setBasePrice($finalTotals->getBasePrice() + $item->getBaseRowTotal()); $finalTotals->setPrice($finalTotals->getPrice() + $item->getRowTotal()); $finalTotals->setPriceInclTax($finalTotals->getPriceInclTax() + $item->getRowTotalInclTax()); $finalTotals->setBasePriceInclTax($finalTotals->getBasePriceInclTax() + $item->getBaseRowTotalInclTax()); $finalTotals->setDiscountedPrice($finalTotals->getDiscountedPrice() + ($item->getRowTotal() - $item->getDiscountAmount())); $finalTotals->setBaseDiscountedPrice($finalTotals->getBaseDiscountedPrice() + ($item->getBaseRowTotal() - $item->getBaseDiscountAmount())); $finalTotals->setDiscountedPriceInclTax($finalTotals->getDiscountedPriceInclTax() + ($item->getRowTotalInclTax() - $item->getDiscountAmount())); $finalTotals->setBaseDiscountedPriceInclTax($finalTotals->getBaseDiscountedPriceInclTax() + ($item->getBaseRowTotalInclTax() - $item->getBaseDiscountAmount())); }
/** * 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 * @param int $qty max discount qty or unlimited if null * @return array($discountAmount, $baseDiscountAmount) */ protected function _getTotalPercentDiscountOnitem($item, $address, $rule, &$cartRules, $qty = null) { $quote = $item->getQuote(); $store = $item->getQuote()->getStore(); $qty = empty($qty) ? $item->getQty() : (int) $qty; $quoteAmount = $quote->getStore()->convertPrice($cartRules[$rule->getId()]); $quoteAmountBase = $cartRules[$rule->getId()]; if (Mage::helper('tax')->discountTax($store) && !Mage::helper('tax')->applyTaxAfterDiscount($store)) { $tax_amount = $item->getTaxAmount() / $item->getQty() * $qty; $base_tax_amount = $item->getBaseTaxAmount() / $item->getQty() * $qty; $quoteAmount += $tax_amount; // $cartItem->getTaxAmount(); $quoteAmountBase += $base_tax_amount; // $cartItem->getTaxAmount(); } else { $tax_amount = $base_tax_amount = 0; } $shipping_amount = $address->getShippingAmount(); $base_shipping_amount = $address->getBaseShippingAmount(); $add_shipping = $rule->getApplyToShipping() ? $shipping_amount : 0; $add_base_shipping = $rule->getApplyToShipping() ? $base_shipping_amount : 0; $discountAmount = min($item->getRowTotal() / $item->getQty() * $qty - $item->getDiscountAmount() + $add_shipping + $tax_amount, $quoteAmount); $baseDiscountAmount = min($item->getBaseRowTotal() / $item->getQty() * $qty - $item->getBaseDiscountAmount() + $add_base_shipping + $base_tax_amount, $quoteAmountBase); return array($discountAmount, $baseDiscountAmount); }