/** * Get request for fetching store tax rate * * @deprecated after 1.4.0.0 * @param Mage_Sales_Model_Quote_Address $address * @return Varien_Object */ protected function _getStoreTaxRequest($address) { if (is_null($this->_storeTaxRequest)) { $this->_storeTaxRequest = $this->_calculator->getRateOriginRequest($address->getQuote()->getStore()); } return $this->_storeTaxRequest; }
/** * Collect tax totals for quote address * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Tax_Model_Sales_Total_Quote */ public function collect(Mage_Sales_Model_Quote_Address $address) { parent::collect($address); $this->_roundingDeltas = array(); $this->_baseRoundingDeltas = array(); $this->_hiddenTaxes = array(); $address->setShippingTaxAmount(0); $address->setBaseShippingTaxAmount(0); $this->_store = $address->getQuote()->getStore(); $customer = $address->getQuote()->getCustomer(); if ($customer) { $this->_calculator->setCustomer($customer); } if (!$address->getAppliedTaxesReset()) { $address->setAppliedTaxes(array()); } $items = $this->_getAddressItems($address); if (!count($items)) { return $this; } $request = $this->_calculator->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $this->_store); if ($this->_config->priceIncludesTax($this->_store)) { if ($this->_helper->isCrossBorderTradeEnabled($this->_store)) { $this->_areTaxRequestsSimilar = true; } else { $this->_areTaxRequestsSimilar = $this->_calculator->compareRequests($this->_calculator->getRateOriginRequest($this->_store), $request); } } switch ($this->_config->getAlgorithm($this->_store)) { case Mage_Tax_Model_Calculation::CALC_UNIT_BASE: $this->_unitBaseCalculation($address, $request); break; case Mage_Tax_Model_Calculation::CALC_ROW_BASE: $this->_rowBaseCalculation($address, $request); break; case Mage_Tax_Model_Calculation::CALC_TOTAL_BASE: $this->_totalBaseCalculation($address, $request); break; default: break; } $this->_addAmount($address->getExtraTaxAmount()); $this->_addBaseAmount($address->getBaseExtraTaxAmount()); $this->_calculateShippingTax($address, $request); $this->_processHiddenTaxes(); //round total amounts in address $this->_roundTotals($address); return $this; }
/** * Collect tax totals for quote address * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Tax_Model_Sales_Total_Quote */ public function collect(Mage_Sales_Model_Quote_Address $address) { parent::collect($address); $store = $address->getQuote()->getStore(); $customer = $address->getQuote()->getCustomer(); if ($customer) { $this->_calculator->setCustomer($customer); } if (!$address->getAppliedTaxesReset()) { $address->setAppliedTaxes(array()); } $items = $address->getAllItems(); if (!count($items)) { return $this; } $request = $this->_calculator->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $store); $this->_areTaxRequestsSimilar = $this->_calculator->compareRequests($this->_calculator->getRateOriginRequest($address->getQuote()->getStore()), $request); switch ($this->_config->getAlgorithm($store)) { case Mage_Tax_Model_Calculation::CALC_UNIT_BASE: $this->_unitBaseCalculation($address, $request); break; case Mage_Tax_Model_Calculation::CALC_ROW_BASE: $this->_rowBaseCalculation($address, $request); break; case Mage_Tax_Model_Calculation::CALC_TOTAL_BASE: $this->_totalBaseCalculation($address, $request); break; default: break; } /** * Subtract taxes from subtotal amount if prices include tax */ if ($this->_usePriceIncludeTax($store)) { $subtotal = $address->getSubtotalInclTax() - $address->getTotalAmount('tax'); $baseSubtotal = $address->getBaseSubtotalInclTax() - $address->getBaseTotalAmount('tax'); $address->setTotalAmount('subtotal', $subtotal); $address->setBaseTotalAmount('subtotal', $baseSubtotal); } $this->_addAmount($address->getExtraTaxAmount()); $this->_addBaseAmount($address->getBaseExtraTaxAmount()); $this->_calculateShippingTax($address, $request); return $this; }