Example #1
0
 /**
  * Add svea data to additional_information
  *
  * @param Varien_Event_Observer $observer
  */
 public function addSveaData(Varien_Event_Observer $observer)
 {
     $payment = $observer->getEvent()->getPayment();
     $data = $observer->getEvent()->getInput();
     $payment = $this->_addAdditionalInfoToPayment($data, $payment);
     if ($data['method'] == 'svea_invoice') {
         // Get fee and tax class
         $paymentFee = Mage::getStoreConfig('payment/svea_invoice/handling_fee');
         $paymentFeeTaxId = Mage::getStoreConfig('payment/svea_invoice/handling_fee_tax_class');
         if ($paymentFee > 0) {
             $quote = Mage::getSingleton('checkout/session')->getQuote();
             // Get tax rate for select tax
             $taxRequest = new Varien_Object();
             $taxRequest->setProductClassId($paymentFeeTaxId);
             $taxRequest->setCustomerClassId($quote->getCustomerTaxClassId());
             $taxRequest->setCountryId($quote->getShippingAddress()->getCountry());
             $taxHelper = Mage::getSingleton('tax/calculation');
             $percent = (100 + $taxHelper->getRate($taxRequest)) / 100;
             $paymentFeeTaxAmount = $paymentFee - $paymentFee / $percent;
             $payment->setAdditionalInformation('svea_payment_fee', $paymentFee);
             $payment->setAdditionalInformation('svea_payment_fee_tax_amount', $paymentFeeTaxAmount);
             $payment->setAdditionalInformation('svea_payment_fee_refunded', 0);
             $payment->setAdditionalInformation('svea_payment_fee_invoiced', 0);
         }
     }
 }
Example #2
0
 /**
  * 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)
 {
     $items = $address->getAllItems();
     $store = $address->getQuote()->getStore();
     $taxGroups = array();
     $inclTax = false;
     foreach ($items as $item) {
         if ($item->getParentItemId()) {
             continue;
         }
         if ($item->getHasChildren() && $item->isChildrenCalculated()) {
             foreach ($item->getChildren() as $child) {
                 $taxRateRequest->setProductClassId($child->getProduct()->getTaxClassId());
                 $rate = $this->_calculator->getRate($taxRateRequest);
                 $taxGroups[(string) $rate]['applied_rates'] = $this->_calculator->getAppliedRates($taxRateRequest);
                 $this->_aggregateTaxPerRate($child, $rate, $taxGroups);
                 $this->_getAddress()->addTotalAmount('hidden_tax', $child->getHiddenTaxAmount());
                 $this->_getAddress()->addBaseTotalAmount('hidden_tax', $child->getBaseHiddenTaxAmount());
                 $inclTax = $child->getIsPriceInclTax();
             }
             $this->_recalculateParent($item);
         } else {
             $taxRateRequest->setProductClassId($item->getProduct()->getTaxClassId());
             $rate = $this->_calculator->getRate($taxRateRequest);
             $taxGroups[(string) $rate]['applied_rates'] = $this->_calculator->getAppliedRates($taxRateRequest);
             $this->_aggregateTaxPerRate($item, $rate, $taxGroups);
             $this->_getAddress()->addTotalAmount('hidden_tax', $item->getHiddenTaxAmount());
             $this->_getAddress()->addBaseTotalAmount('hidden_tax', $item->getBaseHiddenTaxAmount());
             $inclTax = $item->getIsPriceInclTax();
         }
     }
     foreach ($taxGroups as $rateKey => $data) {
         $rate = (double) $rateKey;
         $totalTax = $this->_calculator->calcTaxAmount(array_sum($data['totals']), $rate, $inclTax);
         $baseTotalTax = $this->_calculator->calcTaxAmount(array_sum($data['base_totals']), $rate, $inclTax);
         $totalRewardPointDiscount = $baseTotalRewardPointDiscount = Mage::getSingleton('checkout/session')->getCredit();
         $totalRewardPointDiscount = $this->_calculator->calcTaxAmount($totalRewardPointDiscount, $rate, $inclTax);
         $baseTotalRewardPointDiscount = $this->_calculator->calcTaxAmount($baseTotalRewardPointDiscount, $rate, $inclTax);
         if ($totalRewardPointDiscount > $totalTax) {
             $totalRewardPointDiscount = $totalTax;
         }
         if ($baseTotalRewardPointDiscount > $baseTotalTax) {
             $baseTotalRewardPointDiscount = $baseTotalTax;
         }
         $this->_addAmount($totalTax - $totalRewardPointDiscount);
         $this->_addBaseAmount($baseTotalTax - $baseTotalRewardPointDiscount);
         $this->_saveAppliedTaxes($address, $data['applied_rates'], $totalTax, $baseTotalTax, $rate);
     }
     return $this;
 }
Example #3
0
 protected function _beforeToHtml()
 {
     /** @var $order Ess_M2ePro_Model_Order */
     $order = Mage::helper('M2ePro/Data_Global')->getValue('temp_data');
     /** @var $store Mage_Core_Model_Store */
     $store = Mage::getModel('core/store')->load($order->getStoreId());
     if (!is_null($store->getId())) {
         $this->setData('store_tax_calculation_algorithm', $store->getConfig(Mage_Tax_Model_Config::XML_PATH_ALGORITHM));
         $this->setData('store_tax_calculation_based_on', $store->getConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_BASED_ON));
         $this->setData('store_price_includes_tax', $store->getConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_PRICE_INCLUDES_TAX));
         $this->setData('store_shipping_price_includes_tax', $store->getConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_SHIPPING_INCLUDES_TAX));
         $taxClass = Mage::getModel('tax/class')->load($store->getConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_SHIPPING_TAX_CLASS));
         $this->setData('store_shipping_tax_class', $taxClass->getClassName());
         // --------------------
         $request = new Varien_Object();
         $request->setProductClassId($store->getConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_SHIPPING_TAX_CLASS));
         /** @var $taxCalculator Mage_Tax_Model_Calculation */
         $taxCalculator = Mage::getSingleton('tax/calculation');
         $this->setData('store_shipping_tax_rate', $taxCalculator->getStoreRate($request, $store));
         // --------------------
     }
 }
Example #4
0
 /**
  * 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)
 {
     $items = $this->_getAddressItems($address);
     $store = $address->getQuote()->getStore();
     $taxGroups = array();
     $itemTaxGroups = array();
     $inclTax = false;
     foreach ($items as $item) {
         if ($item->getParentItem()) {
             continue;
         }
         if ($item->getHasChildren() && $item->isChildrenCalculated()) {
             foreach ($item->getChildren() as $child) {
                 $taxRateRequest->setProductClassId($child->getProduct()->getTaxClassId());
                 $rate = $this->_calculator->getRate($taxRateRequest);
                 $taxGroups[(string) $rate]['applied_rates'] = $this->_calculator->getAppliedRates($taxRateRequest);
                 $this->_aggregateTaxPerRate($child, $rate, $taxGroups);
                 $inclTax = $child->getIsPriceInclTax();
                 $itemTaxGroups[$child->getId()] = $this->_calculator->getAppliedRates($taxRateRequest);
             }
             $this->_recalculateParent($item);
         } else {
             $taxRateRequest->setProductClassId($item->getProduct()->getTaxClassId());
             $rate = $this->_calculator->getRate($taxRateRequest);
             $taxGroups[(string) $rate]['applied_rates'] = $this->_calculator->getAppliedRates($taxRateRequest);
             $this->_aggregateTaxPerRate($item, $rate, $taxGroups);
             $inclTax = $item->getIsPriceInclTax();
             $itemTaxGroups[$item->getId()] = $this->_calculator->getAppliedRates($taxRateRequest);
         }
     }
     if ($address->getQuote()->getTaxesForItems()) {
         $itemTaxGroups += $address->getQuote()->getTaxesForItems();
     }
     $address->getQuote()->setTaxesForItems($itemTaxGroups);
     foreach ($taxGroups as $rateKey => $data) {
         $rate = (double) $rateKey;
         $totalTax = $this->_calculator->calcTaxAmount(array_sum($data['totals']), $rate, $inclTax);
         $baseTotalTax = $this->_calculator->calcTaxAmount(array_sum($data['base_totals']), $rate, $inclTax);
         $this->_addAmount($totalTax);
         $this->_addBaseAmount($baseTotalTax);
         $this->_saveAppliedTaxes($address, $data['applied_rates'], $totalTax, $baseTotalTax, $rate);
     }
     return $this;
 }
 /**
  * Calculate item price and row total including/excluding tax based on total price rounding level
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract $item
  * @param Varien_Object $request
  *
  * @return Mage_Tax_Model_Sales_Total_Quote_Subtotal
  */
 protected function _totalBaseCalculation($item, $request)
 {
     $calc = $this->_calculator;
     $request->setProductClassId($item->getProduct()->getTaxClassId());
     $rate = $calc->getRate($request);
     $qty = $item->getTotalQty();
     $price = $taxPrice = $this->_calculator->round($item->getCalculationPriceOriginal());
     $basePrice = $baseTaxPrice = $this->_calculator->round($item->getBaseCalculationPriceOriginal());
     $subtotal = $taxSubtotal = $this->_calculator->round($item->getRowTotal());
     $baseSubtotal = $baseTaxSubtotal = $this->_calculator->round($item->getBaseRowTotal());
     // if we have a custom price, determine if tax should be based on the original price
     $taxOnOrigPrice = !$this->_helper->applyTaxOnCustomPrice($this->_store) && $item->hasCustomPrice();
     if ($taxOnOrigPrice) {
         $origSubtotal = $item->getOriginalPrice() * $qty;
         $baseOrigSubtotal = $item->getBaseOriginalPrice() * $qty;
     }
     $item->setTaxPercent($rate);
     if ($this->_config->priceIncludesTax($this->_store)) {
         if ($this->_sameRateAsStore($request)) {
             // determine which price to use when we calculate the tax
             if ($taxOnOrigPrice) {
                 $taxable = $origSubtotal;
                 $baseTaxable = $baseOrigSubtotal;
             } else {
                 $taxable = $subtotal;
                 $baseTaxable = $baseSubtotal;
             }
             $rowTaxExact = $calc->calcTaxAmount($taxable, $rate, true, false);
             $rowTax = $this->_deltaRound($rowTaxExact, $rate, true);
             $baseRowTaxExact = $calc->calcTaxAmount($baseTaxable, $rate, true, false);
             $baseRowTax = $this->_deltaRound($baseRowTaxExact, $rate, true, 'base');
             $taxPrice = $price;
             $baseTaxPrice = $basePrice;
             $taxSubtotal = $subtotal;
             $baseTaxSubtotal = $baseSubtotal;
             $subtotal = $subtotal - $rowTax;
             $baseSubtotal = $baseSubtotal - $baseRowTax;
             $price = $calc->round($subtotal / $qty);
             $basePrice = $calc->round($baseSubtotal / $qty);
             $isPriceInclTax = true;
             //Save the tax calculated
             $item->setRowTax($rowTax);
             $item->setBaseRowTax($baseRowTax);
         } else {
             $storeRate = $calc->getStoreRate($request, $this->_store);
             if ($taxOnOrigPrice) {
                 // the merchant already provided a customer's price that includes tax
                 $taxPrice = $price;
                 $baseTaxPrice = $basePrice;
                 // determine which price to use when we calculate the tax
                 $taxable = $this->_calculatePriceInclTax($item->getOriginalPrice(), $storeRate, $rate);
                 $baseTaxable = $this->_calculatePriceInclTax($item->getBaseOriginalPrice(), $storeRate, $rate);
             } else {
                 // determine the customer's price that includes tax
                 $taxPrice = $this->_calculatePriceInclTax($price, $storeRate, $rate);
                 $baseTaxPrice = $this->_calculatePriceInclTax($basePrice, $storeRate, $rate);
                 // determine which price to use when we calculate the tax
                 $taxable = $taxPrice;
                 $baseTaxable = $baseTaxPrice;
             }
             // determine the customer's tax amount based on the taxable price
             $tax = $this->_calculator->calcTaxAmount($taxable, $rate, true, true);
             $baseTax = $this->_calculator->calcTaxAmount($baseTaxable, $rate, true, true);
             // determine the customer's price without taxes
             $price = $taxPrice - $tax;
             $basePrice = $baseTaxPrice - $baseTax;
             // determine subtotal amounts
             $taxable *= $qty;
             $baseTaxable *= $qty;
             $taxSubtotal = $taxPrice * $qty;
             $baseTaxSubtotal = $baseTaxPrice * $qty;
             $rowTax = $this->_deltaRound($calc->calcTaxAmount($taxable, $rate, true, false), $rate, true);
             $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseTaxable, $rate, true, false), $rate, true, 'base');
             $subtotal = $taxSubtotal - $rowTax;
             $baseSubtotal = $baseTaxSubtotal - $baseRowTax;
             $isPriceInclTax = true;
             $item->setRowTax($rowTax);
             $item->setBaseRowTax($baseRowTax);
         }
     } else {
         // determine which price to use when we calculate the tax
         if ($taxOnOrigPrice) {
             $taxable = $origSubtotal;
             $baseTaxable = $baseOrigSubtotal;
         } else {
             $taxable = $subtotal;
             $baseTaxable = $baseSubtotal;
         }
         $appliedRates = $this->_calculator->getAppliedRates($request);
         $rowTaxes = array();
         $baseRowTaxes = array();
         foreach ($appliedRates as $appliedRate) {
             $taxId = $appliedRate['id'];
             $taxRate = $appliedRate['percent'];
             $rowTaxes[] = $this->_deltaRound($calc->calcTaxAmount($taxable, $taxRate, false, false), $taxId, false);
             $baseRowTaxes[] = $this->_deltaRound($calc->calcTaxAmount($baseTaxable, $taxRate, false, false), $taxId, false, 'base');
         }
         $taxSubtotal = $subtotal + array_sum($rowTaxes);
         $baseTaxSubtotal = $baseSubtotal + array_sum($baseRowTaxes);
         $taxPrice = $calc->round($taxSubtotal / $qty);
         $baseTaxPrice = $calc->round($baseTaxSubtotal / $qty);
         $isPriceInclTax = false;
     }
     if ($item->hasCustomPrice()) {
         /**
          * Initialize item original price before declaring custom price
          */
         $item->getOriginalPrice();
         $item->setCustomPrice($price);
         $item->setBaseCustomPrice($basePrice);
     } else {
         $item->setConvertedPrice($price);
     }
     $item->setPrice($basePrice);
     $item->setBasePrice($basePrice);
     $item->setRowTotal($subtotal);
     $item->setBaseRowTotal($baseSubtotal);
     $item->setPriceInclTax($taxPrice);
     $item->setBasePriceInclTax($baseTaxPrice);
     $item->setRowTotalInclTax($taxSubtotal);
     $item->setBaseRowTotalInclTax($baseTaxSubtotal);
     $item->setTaxableAmount($taxable);
     $item->setBaseTaxableAmount($baseTaxable);
     $item->setIsPriceInclTax($isPriceInclTax);
     if ($this->_config->discountTax($this->_store)) {
         $item->setDiscountCalculationPrice($taxSubtotal / $qty);
         $item->setBaseDiscountCalculationPrice($baseTaxSubtotal / $qty);
     } elseif ($isPriceInclTax) {
         $item->setDiscountCalculationPrice($subtotal / $qty);
         $item->setBaseDiscountCalculationPrice($baseSubtotal / $qty);
     }
     return $this;
 }
Example #6
0
 /**
  * Return store tax rate for shipping
  *
  * @param Mage_Core_Model_Store $store
  * @return float
  */
 public function getStoreShippingTaxRate($store)
 {
     $request = new Varien_Object();
     $request->setProductClassId(Mage::getSingleton('tax/config')->getShippingTaxClass($store));
     return Mage::getSingleton('tax/calculation')->getStoreRate($request, $store);
 }
Example #7
0
 /**
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract $item
  * @param Varien_Object $taxRateRequest
  * @param array $taxGroups
  * @param array $itemTaxGroups
  * @param boolean $catalogPriceInclTax
  */
 protected function _totalBaseProcessItemTax($item, $taxRateRequest, &$taxGroups, &$itemTaxGroups, $catalogPriceInclTax)
 {
     $taxRateRequest->setProductClassId($item->getProduct()->getTaxClassId());
     $rate = $this->_calculator->getRate($taxRateRequest);
     $item->setTaxAmount(0);
     $item->setBaseTaxAmount(0);
     $item->setHiddenTaxAmount(0);
     $item->setBaseHiddenTaxAmount(0);
     $item->setTaxPercent($rate);
     $item->setDiscountTaxCompensation(0);
     $rowTotalInclTax = $item->getRowTotalInclTax();
     $recalculateRowTotalInclTax = false;
     if (!isset($rowTotalInclTax)) {
         $item->setRowTotalInclTax($item->getTaxableAmount());
         $item->setBaseRowTotalInclTax($item->getBaseTaxableAmount());
         $recalculateRowTotalInclTax = true;
     }
     $appliedRates = $this->_calculator->getAppliedRates($taxRateRequest);
     if ($catalogPriceInclTax) {
         $taxGroups[(string) $rate]['applied_rates'] = $appliedRates;
         $taxGroups[(string) $rate]['incl_tax'] = $item->getIsPriceInclTax();
         $this->_aggregateTaxPerRate($item, $rate, $taxGroups);
     } else {
         //need to calculate each tax separately
         foreach ($appliedRates as $appliedTax) {
             $taxId = $appliedTax['id'];
             $taxRate = $appliedTax['percent'];
             $taxGroups[$taxId]['applied_rates'] = array($appliedTax);
             $taxGroups[$taxId]['incl_tax'] = $item->getIsPriceInclTax();
             $this->_aggregateTaxPerRate($item, $taxRate, $taxGroups, $taxId, $recalculateRowTotalInclTax);
         }
         //We need to calculate weeeAmountInclTax using multiple tax rate here
         //because the _calculateWeeeTax and _calculateRowWeeeTax only take one tax rate
         if ($this->_weeeHelper->isEnabled() && $this->_weeeHelper->isTaxable()) {
             $this->_calculateWeeeAmountInclTax($item, $appliedRates, false);
             $this->_calculateWeeeAmountInclTax($item, $appliedRates, true);
         }
     }
     if ($rate > 0) {
         $itemTaxGroups[$item->getId()] = $appliedRates;
     }
     return;
 }
Example #8
0
 /**
  * Calculate item price and row total including/excluding tax based on total price rounding level
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract $item
  * @param Varien_Object $request
  * @return Mage_Tax_Model_Sales_Total_Quote_Subtotal
  */
 protected function _totalBaseCalculation($item, $request)
 {
     $calc = $this->_calculator;
     $request->setProductClassId($item->getProduct()->getTaxClassId());
     $rate = $calc->getRate($request);
     $qty = $item->getTotalQty();
     $price = $taxPrice = $item->getCalculationPriceOriginal();
     $basePrice = $baseTaxPrice = $item->getBaseCalculationPriceOriginal();
     $subtotal = $taxSubtotal = $item->getRowTotal();
     $baseSubtotal = $baseTaxSubtotal = $item->getBaseRowTotal();
     $taxOnOrigPrice = !$this->_helper->applyTaxOnCustomPrice($this->_store) && $item->hasCustomPrice();
     if ($taxOnOrigPrice) {
         $origSubtotal = $item->getOriginalPrice() * $qty;
         $baseOrigSubtotal = $item->getBaseOriginalPrice() * $qty;
     }
     $item->setTaxPercent($rate);
     if ($this->_config->priceIncludesTax($this->_store)) {
         if ($this->_sameRateAsStore($request)) {
             if ($taxOnOrigPrice) {
                 $rowTax = $this->_deltaRound($calc->calcTaxAmount($origSubtotal, $rate, true, false), $rate, true);
                 $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseOrigSubtotal, $rate, true, false), $rate, true, 'base');
                 $taxable = $origSubtotal;
                 $baseTaxable = $baseOrigSubtotal;
             } else {
                 $rowTax = $this->_deltaRound($calc->calcTaxAmount($subtotal, $rate, true, false), $rate, true);
                 $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseSubtotal, $rate, true, false), $rate, true, 'base');
                 $taxable = $subtotal;
                 $baseTaxable = $baseSubtotal;
             }
             $taxPrice = $price;
             $baseTaxPrice = $basePrice;
             $taxSubtotal = $subtotal;
             $baseTaxSubtotal = $baseSubtotal;
             $subtotal = $subtotal - $rowTax;
             $baseSubtotal = $baseSubtotal - $baseRowTax;
             $price = $calc->round($subtotal / $qty);
             $basePrice = $calc->round($baseSubtotal / $qty);
             $isPriceInclTax = true;
         } else {
             $storeRate = $calc->getStoreRate($request, $this->_store);
             if ($taxOnOrigPrice) {
                 $storeTax = $calc->calcTaxAmount($origSubtotal, $storeRate, true, false);
                 $baseStoreTax = $calc->calcTaxAmount($baseOrigSubtotal, $storeRate, true, false);
             } else {
                 $storeTax = $calc->calcTaxAmount($subtotal, $storeRate, true, false);
                 $baseStoreTax = $calc->calcTaxAmount($baseSubtotal, $storeRate, true, false);
             }
             $subtotal = $calc->round($subtotal - $storeTax);
             $baseSubtotal = $calc->round($baseSubtotal - $baseStoreTax);
             $price = $calc->round($subtotal / $qty);
             $basePrice = $calc->round($baseSubtotal / $qty);
             $rowTax = $this->_deltaRound($calc->calcTaxAmount($subtotal, $rate, false, false), $rate, true);
             $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseSubtotal, $rate, false, false), $rate, true, 'base');
             $taxSubtotal = $subtotal + $rowTax;
             $baseTaxSubtotal = $baseSubtotal + $baseRowTax;
             $taxPrice = $calc->round($taxSubtotal / $qty);
             $baseTaxPrice = $calc->round($baseTaxSubtotal / $qty);
             $taxable = $subtotal;
             $baseTaxable = $baseSubtotal;
             $isPriceInclTax = false;
         }
     } else {
         if ($taxOnOrigPrice) {
             $rowTax = $this->_deltaRound($calc->calcTaxAmount($origSubtotal, $rate, false, false), $rate, true);
             $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseOrigSubtotal, $rate, false, false), $rate, true, 'base');
             $taxable = $origSubtotal;
             $baseTaxable = $baseOrigSubtotal;
         } else {
             $rowTax = $this->_deltaRound($calc->calcTaxAmount($subtotal, $rate, false, false), $rate, true);
             $baseRowTax = $this->_deltaRound($calc->calcTaxAmount($baseSubtotal, $rate, false, false), $rate, true, 'base');
             $taxable = $subtotal;
             $baseTaxable = $baseSubtotal;
         }
         $taxSubtotal = $subtotal + $rowTax;
         $baseTaxSubtotal = $baseSubtotal + $baseRowTax;
         $taxPrice = $calc->round($taxSubtotal / $qty);
         $baseTaxPrice = $calc->round($baseTaxSubtotal / $qty);
         $isPriceInclTax = false;
     }
     if ($item->hasCustomPrice()) {
         /**
          * Initialize item original price before declaring custom price
          */
         $item->getOriginalPrice();
         $item->setCustomPrice($price);
         $item->setBaseCustomPrice($basePrice);
     } else {
         $item->setConvertedPrice($price);
     }
     $item->setPrice($basePrice);
     $item->setBasePrice($basePrice);
     $item->setRowTotal($subtotal);
     $item->setBaseRowTotal($baseSubtotal);
     $item->setPriceInclTax($taxPrice);
     $item->setBasePriceInclTax($baseTaxPrice);
     $item->setRowTotalInclTax($taxSubtotal);
     $item->setBaseRowTotalInclTax($baseTaxSubtotal);
     $item->setTaxableAmount($taxable);
     $item->setBaseTaxableAmount($baseTaxable);
     $item->setIsPriceInclTax($isPriceInclTax);
     if ($this->_config->discountTax($this->_store)) {
         $item->setDiscountCalculationPrice($taxSubtotal / $qty);
         $item->setBaseDiscountCalculationPrice($baseTaxSubtotal / $qty);
     } elseif ($isPriceInclTax) {
         $item->setDiscountCalculationPrice($subtotal / $qty);
         $item->setBaseDiscountCalculationPrice($baseSubtotal / $qty);
     }
     return $this;
 }
Example #9
0
 /**
  * Return store tax rate for shipping
  *
  * @param Mage_Core_Model_Store $store
  * @return float
  */
 public function getStoreShippingTaxRate($store)
 {
     $request = new Varien_Object();
     $request->setProductClassId($this->getTaxConfig()->getShippingTaxClass($store));
     /** @var $taxCalculator Mage_Tax_Model_Calculation */
     $taxCalculator = Mage::getSingleton('tax/calculation');
     return $taxCalculator->getStoreRate($request, $store);
 }
Example #10
0
 private function needToSubtractTax()
 {
     if (!$this->quoteBuilder->getProxyOrder()->isTaxModeChannel() && !$this->quoteBuilder->getProxyOrder()->isTaxModeMixed()) {
         return false;
     }
     if (!$this->proxyItem->hasVat()) {
         return false;
     }
     /** @var $taxCalculator Mage_Tax_Model_Calculation */
     $taxCalculator = Mage::getSingleton('tax/calculation');
     $store = $this->quoteBuilder->getQuote()->getStore();
     $request = new Varien_Object();
     $request->setProductClassId($this->product->getTaxClassId());
     return $this->proxyItem->getTaxRate() != $taxCalculator->getStoreRate($request, $store);
 }