/** * Init gift wrapping and printed card tax rate for address * * @param Mage_Sales_Model_Quote_Address $address * @return Enterprise_GiftWrapping_Model_Total_Quote_Tax_Giftwrapping */ protected function _initRate($address) { $store = $address->getQuote()->getStore(); $billingAddress = $address->getQuote()->getBillingAddress(); $custTaxClassId = $address->getQuote()->getCustomerTaxClassId(); $this->_request = $this->_taxCalculationModel->getRateRequest($address, $billingAddress, $custTaxClassId, $store); $this->_request->setProductClassId($this->_helper->getWrappingTaxClass($store)); $this->_rate = $this->_taxCalculationModel->getRate($this->_request); 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); $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; }
public function getRateRequest($shippingAddress = null, $billingAddress = null, $customerTaxClass = null, $store = null) { $request = parent::getRateRequest($shippingAddress, $billingAddress, $customerTaxClass, $store); $countryCode = Mage::getSingleton('geoip/country')->getCountry(); if ($countryCode) { if (is_null($shippingAddress) && is_null($billingAddress) || $shippingAddress === false && $billingAddress === false) { $request->setCountryId($countryCode); $request->setRegionId(0); $request->setPostcode('*'); } elseif (!$shippingAddress->getCountryId() && !$billingAddress->getCountryId()) { $request->setCountryId($countryCode); $request->setRegionId(0); $request->setPostcode('*'); } } return $request; }
/** * 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; }
/** * Get request for fetching address tax rate * * @deprecated after 1.4.0.0 * @param Mage_Sales_Model_Quote_Address $address * @return Varien_Object */ protected function _getAddressTaxRequest($address) { $addressTaxRequest = $this->_calculator->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $address->getQuote()->getStore()); return $addressTaxRequest; }