コード例 #1
0
ファイル: Totals.php プロジェクト: AleksNesh/pandora
 /**
  * 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()));
 }
コード例 #2
0
 /**
  * When the previously applied discount amount on the item row total
  * is less than the current applied discount recalculate the current discount
  * to account for previously applied discount. Otherwise, don't recalculate
  * the current discount.
  *
  * @param  Mage_Sales_Model_Quote_Item
  * @param  Varien_Object
  * @param  array
  * @return float
  */
 protected function calculateDiscountAmount(Mage_Sales_Model_Quote_Item $item, Varien_Object $result, array $data)
 {
     /** @var float */
     $itemRowTotal = $item->getBaseRowTotal();
     /** @var float */
     $currentDiscountAmount = $result->getBaseDiscountAmount();
     /** @var float */
     $previousAppliedDiscountAmount = 0.0;
     foreach ($data as $discount) {
         $previousAppliedDiscountAmount += $discount['amount'];
     }
     /** @var float */
     $itemRowTotalWithAppliedPreviousDiscount = $itemRowTotal - $previousAppliedDiscountAmount;
     if ($itemRowTotalWithAppliedPreviousDiscount < 0) {
         $itemRowTotalWithAppliedPreviousDiscount = 0;
     }
     return $itemRowTotalWithAppliedPreviousDiscount < $currentDiscountAmount ? $itemRowTotalWithAppliedPreviousDiscount : $currentDiscountAmount;
 }
コード例 #3
0
ファイル: Tax.php プロジェクト: onepica/avatax
 /**
  * Add row total item amount to subtotal
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  * @param   Mage_Sales_Model_Quote_Item    $item
  * @return  $this
  */
 protected function _addSubtotalAmount(Mage_Sales_Model_Quote_Address $address, $item)
 {
     if ($this->_getTaxDataHelper()->priceIncludesTax($item->getStoreId())) {
         $subTotal = $item->getRowTotalInclTax() - $item->getRowTax();
         $baseSubTotal = $item->getBaseRowTotalInclTax() - $item->getBaseRowTax();
         $address->setTotalAmount('subtotal', $address->getTotalAmount('subtotal') + $subTotal);
         $address->setBaseTotalAmount('subtotal', $address->getBaseTotalAmount('subtotal') + $baseSubTotal);
     } else {
         $address->setTotalAmount('subtotal', $address->getTotalAmount('subtotal') + $item->getRowTotal());
         $address->setBaseTotalAmount('subtotal', $address->getBaseTotalAmount('subtotal') + $item->getBaseRowTotal());
     }
     $address->setSubtotalInclTax($address->getSubtotalInclTax() + $item->getRowTotalInclTax());
     $address->setBaseSubtotalInclTax($address->getBaseSubtotalInclTax() + $item->getBaseRowTotalInclTax());
     return $this;
 }
コード例 #4
0
ファイル: Validator.php プロジェクト: rajarshc/Rooja
 /**
  * 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);
 }
コード例 #5
0
ファイル: Redeem.php プロジェクト: rajarshc/Rooja
 /**                                    
  * Calculates tax amounts for the row item using $this->_calculator
  *
  * @param Mage_Sales_Model_Quote_Item $item
  * @return $this
  */
 protected function _calcTaxAmounts(&$item)
 {
     //@nelkaake -a 16/11/10: Calculator only works in magento 1.4 and up.
     if (!Mage::helper('rewards/version')->isMageVersionAtLeast('1.4.2')) {
         return $this;
     }
     // @nelkaake -a 16/11/10: Tax calculation methods
     $tax = $this->_calculator->calcTaxAmount($item->getRowTotal(), $item->getTaxPercent(), false);
     $baseTax = $this->_calculator->calcTaxAmount($item->getBaseRowTotal(), $item->getTaxPercent(), false);
     $item->setTaxAmount($tax);
     $item->setBaseTaxAmount($baseTax);
     $item->setTaxableAmount($item->getRowTotal());
     $item->setBaseTaxableAmount($item->getBaseRowTotal());
     //@nelkaake -a 26/01/11: We don't set this so that we can later use the row total including tax to find out
     // how much of the order was discounted due to catalog redemption rules.
     $item->setRowTotalInclTax($item->getRowTotal() + $tax);
     $item->setBaseRowTotalInclTax($item->getBaseRowTotal() + $baseTax);
     return $this;
 }