public function fetch(Mage_Sales_Model_Quote_Address $address) { if (!method_exists($address->getQuote(), 'isR4q') || !$address->getQuote()->isR4q() || Mage::helper('request4quote')->isTaxEstimatesEnabled()) { parent::fetch($address); } return $this; }
/** * Calculate tax for shipping amount * * @param Mage_Sales_Model_Quote_Address $address * @param type $taxRateRequest */ protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest) { $discount = $address->getShippingDiscountAmount(); $baseDiscount = $address->getBaseShippingDiscountAmount(); $address->setShippingDiscountAmount($discount + $address->getCustomerrewardAmount()); $address->setBaseShippingDiscountAmount($baseDiscount + $address->getBaseCustomerrewardAmount()); parent::_calculateShippingTax($address, $taxRateRequest); $address->setShippingDiscountAmount($discount); $address->setBaseShippingDiscountAmount($baseDiscount); return $this; }
/** * Calculate tax for shipping amount * * @param Mage_Sales_Model_Quote_Address $address * @param type $taxRateRequest */ protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest) { $discount = $address->getShippingDiscountAmount(); $baseDiscount = $address->getBaseShippingDiscountAmount(); /* hainh add this for calculating discount base on incl or excl tax price 22-04-2014 */ if (!$this->_discountIncludeTax()) { $address->setShippingDiscountAmount($discount + $address->getCustomerrewardAmount()); $address->setBaseShippingDiscountAmount($baseDiscount + $address->getBaseCustomerrewardAmount()); } parent::_calculateShippingTax($address, $taxRateRequest); $address->setShippingDiscountAmount($discount); $address->setBaseShippingDiscountAmount($baseDiscount); return $this; }
/** * Calculate tax for shipping amount * * @param Mage_Sales_Model_Quote_Address $address * @param type $taxRateRequest */ protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest) { $discount = $address->getShippingDiscountAmount(); $baseDiscount = $address->getBaseShippingDiscountAmount(); $taxRateRequest->setProductClassId($this->_config->getShippingTaxClass($this->_store)); if ($address->getIsShippingInclTax()) { $address->setMagestoreDiscountTaxForShipping($this->_calculator->calcTaxAmount($address->getMagestoreDiscountForShipping(), $this->_calculator->getRate($taxRateRequest), false, false)); $address->setMagestoreBaseDiscountTaxForShipping($this->_calculator->calcTaxAmount($address->getMagestoreBaseDiscountForShipping(), $this->_calculator->getRate($taxRateRequest), false, false)); } $address->setShippingDiscountAmount($discount + $address->getMagestoreDiscountForShipping() + $address->getMagestoreDiscountTaxForShipping()); $address->setBaseShippingDiscountAmount($baseDiscount + $address->getMagestoreBaseDiscountForShipping() + $address->getMagestoreBaseDiscountTaxForShipping()); parent::_calculateShippingTax($address, $taxRateRequest); if ($address->getIsShippingInclTax() && $address->getMagestoreDiscountTaxForShipping() > 0) { $length = count($this->_hiddenTaxes); if ($this->_hiddenTaxes[$length - 1]['value'] > 0) { $this->_hiddenTaxes[$length - 1]['value'] = $this->_hiddenTaxes[$length - 1]['value'] - $address->getMagestoreDiscountTaxForShipping(); $this->_hiddenTaxes[$length - 1]['base_value'] = $this->_hiddenTaxes[$length - 1]['base_value'] - $address->getMagestoreBaseDiscountTaxForShipping(); } //fix 1.4 if ($address->getShippingHiddenTaxAmount()) { $address->setShippingHiddenTaxAmount($address->getShippingHiddenTaxAmount() - $address->getMagestoreDiscountTaxForShipping()); $address->setBaseShippingHiddenTaxAmount($address->getBaseShippingHiddenTaxAmount() - $address->getMagestoreBaseDiscountTaxForShipping()); } } $address->setShippingDiscountAmount($discount); $address->setBaseShippingDiscountAmount($baseDiscount); return $this; }
/** * Calculate address total tax based on address subtotal * * @param Mage_Sales_Model_Quote_Address $address * @param Varien_Object $taxRateRequest * @return Mage_Tax_Model_Sales_Total_Quote */ protected function _totalBaseCalculation(Mage_Sales_Model_Quote_Address $address, $taxRateRequest) { $store_id = Mage::app()->getStore()->getId(); if ((int) Mage::helper('rewardpoints')->getRedeemPointsOnTax($store_id) == MW_RewardPoints_Model_Redeemtax::AFTER) { parent::_totalBaseCalculation($address, $taxRateRequest); return; } $items = $this->_getAddressItems($address); $store = $address->getQuote()->getStore(); $taxGroups = array(); $itemTaxGroups = array(); $catalogPriceInclTax = $this->_config->priceIncludesTax($store); /** [Start] Rewardpoint added */ $countItem = 0; foreach ($items as $item) { if ($item->getParentItem()) { continue; } $countItem++; } $pointToRdeem = Mage::getSingleton('core/session')->getMwRewardpointAfterDrop(); $amountRedeem = Mage::helper('core')->currency(Mage::helper('rewardpoints')->exchangePointsToMoneys($pointToRdeem), false, false); $amountRedeemItem = $this->_calculator->round($amountRedeem / $countItem); $lastMemory = 0; $savedReedemItem = array(); if ($amountRedeem > 0) { foreach ($items as $item) { if ($item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { continue; } else { $taxAmount = $item->getTaxableAmount(); if ($taxAmount < $amountRedeemItem + $lastMemory) { $lastMemory = $amountRedeemItem + $lastMemory - $taxAmount; $amountRedeemThisItem = $taxAmount; } else { $amountRedeemThisItem = $lastMemory + $amountRedeemItem; $lastMemory = 0; } $savedReedemItem[$item->getItemId()] = $amountRedeemThisItem; } } foreach ($items as $item) { if ($item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { $amountRedeemChildItem = $this->_calculator->round(($amountRedeemItem + $lastMemory) / count($item->getChildren())); $lastMemoryChildren = 0; foreach ($item->getChildren() as $child) { $taxAmount = $child->getTaxableAmount(); if ($taxAmount < $amountRedeemChildItem + $lastMemoryChildren) { $lastMemoryChildren = $amountRedeemChildItem + $lastMemoryChildren - $taxAmount; $amountRedeemThisChild = $taxAmount; } else { $amountRedeemThisChild = $lastMemoryChildren + $amountRedeemChildItem; $lastMemoryChildren = 0; } $savedReedemItem[$child->getItemId()] = $amountRedeemThisChild; } } } } /** [End] Rewardpoint added */ foreach ($items as $item) { if ($item->getParentItem()) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { foreach ($item->getChildren() as $child) { $this->_totalBaseProcessItemTax($child, $taxRateRequest, $taxGroups, $itemTaxGroups, $catalogPriceInclTax, isset($savedReedemItem[$child->getItemId()]) ? $savedReedemItem[$child->getItemId()] : 0); } $this->_recalculateParent($item); } else { $this->_totalBaseProcessItemTax($item, $taxRateRequest, $taxGroups, $itemTaxGroups, $catalogPriceInclTax, isset($savedReedemItem[$item->getItemId()]) ? $savedReedemItem[$item->getItemId()] : 0); } } if ($address->getQuote()->getTaxesForItems()) { $itemTaxGroups += $address->getQuote()->getTaxesForItems(); } $address->getQuote()->setTaxesForItems($itemTaxGroups); foreach ($taxGroups as $taxId => $data) { if ($catalogPriceInclTax) { $rate = (double) $taxId; } else { $rate = $data['applied_rates'][0]['percent']; } $inclTax = $data['incl_tax']; $totalTax = array_sum($data['tax']); $baseTotalTax = array_sum($data['base_tax']); $this->_addAmount($totalTax); $this->_addBaseAmount($baseTotalTax); $totalTaxRounded = $this->_calculator->round($totalTax); $baseTotalTaxRounded = $this->_calculator->round($totalTaxRounded); $this->_saveAppliedTaxes($address, $data['applied_rates'], $totalTaxRounded, $baseTotalTaxRounded, $rate); } return $this; }
/** * Fetch (Retrieve data as array) * * @param Mage_Sales_Model_Quote_Address $address * * @return $this */ public function fetch(Mage_Sales_Model_Quote_Address $address) { $store = $address->getQuote()->getStore(); if (!$this->getHelper()->isActive($store)) { return parent::fetch($address); } Mage_Sales_Model_Quote_Address_Total_Abstract::fetch($address); $quote = $address->getQuote(); $store = $quote->getStore(); $amount = floatval($address->getTaxAmount()); if ($amount != 0.0 || $this->_config->displayCartZeroTax($store)) { $fullInfo = array(); $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('tax')->__('Tax'), 'full_info' => $fullInfo, 'value' => $amount)); } $displaySubtotal = $this->_config->displayCartSubtotalInclTax($store) ? $address->getSubtotalInclTax() : $address->getSubtotal(); $address->addTotal(array('code' => 'subtotal', 'title' => Mage::helper('sales')->__('Subtotal'), 'value' => $displaySubtotal, 'value_incl_tax' => $address->getSubtotalInclTax(), 'value_excl_tax' => $address->getSubtotal())); $displayShipping = $this->_config->displayCartShippingInclTax($store) ? $address->getShippingInclTax() : $address->getShippingAmount(); $address->addTotal(array('code' => 'shipping', 'title' => Mage::helper('sales')->__('Shipping'), 'value' => $displayShipping, 'value_incl_tax' => $address->getShippingInclTax(), 'value_excl_tax' => $address->getShippingAmount())); return $this; }
/** * Collect tax totals for quote address * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Tax_Model_Sales_Total_Quote */ public function collect141(Mage_Sales_Model_Quote_Address $address) { parent::collect($address); $this->_saveRewardsTaxDiscount($address); //TODO recalculate tax on shipping discounted amount return $this; }
public function collect(Mage_Sales_Model_Quote_Address $address) { parent::collect($address); return $this; }