本文整理汇总了PHP中Mage_Tax_Model_Config::getShippingTaxClass方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_Tax_Model_Config::getShippingTaxClass方法的具体用法?PHP Mage_Tax_Model_Config::getShippingTaxClass怎么用?PHP Mage_Tax_Model_Config::getShippingTaxClass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_Tax_Model_Config
的用法示例。
在下文中一共展示了Mage_Tax_Model_Config::getShippingTaxClass方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: collect
/**
* Collect totals information about shipping
*
* @param Mage_Sales_Model_Quote_Address $address
* @return Mage_Sales_Model_Quote_Address_Total_Shipping
*/
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent::collect($address);
$calc = $this->_calculator;
$store = $address->getQuote()->getStore();
$storeTaxRequest = $calc->getRateOriginRequest($store);
$addressTaxRequest = $calc->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $store);
$storeTaxRequest->setProductClassId($this->_config->getShippingTaxClass($store));
$addressTaxRequest->setProductClassId($this->_config->getShippingTaxClass($store));
$this->_areTaxRequestsSimilar = $calc->compareRequests($addressTaxRequest, $storeTaxRequest);
$shipping = $taxShipping = $address->getShippingAmount();
$baseShipping = $baseTaxShipping = $address->getBaseShippingAmount();
$rate = $calc->getRate($addressTaxRequest);
if ($this->_config->shippingPriceIncludesTax($store)) {
if ($this->_areTaxRequestsSimilar) {
$tax = $this->_round($calc->calcTaxAmount($shipping, $rate, true, false), $rate, true);
$baseTax = $this->_round($calc->calcTaxAmount($baseShipping, $rate, true, false), $rate, true, 'base');
$taxShipping = $shipping;
$baseTaxShipping = $baseShipping;
$shipping = $shipping - $tax;
$baseShipping = $baseShipping - $baseTax;
$taxable = $taxShipping;
$baseTaxable = $baseTaxShipping;
$isPriceInclTax = true;
} else {
$storeRate = $calc->getStoreRate($addressTaxRequest, $store);
$storeTax = $calc->calcTaxAmount($shipping, $storeRate, true, false);
$baseStoreTax = $calc->calcTaxAmount($baseShipping, $storeRate, true, false);
$shipping = $calc->round($shipping - $storeTax);
$baseShipping = $calc->round($baseShipping - $baseStoreTax);
$tax = $this->_round($calc->calcTaxAmount($shipping, $rate, false, false), false, $rate);
$baseTax = $this->_round($calc->calcTaxAmount($baseShipping, $rate, false, false), $rate, false, 'base');
$taxShipping = $shipping + $tax;
$baseTaxShipping = $baseShipping + $baseTax;
$taxable = $shipping;
$baseTaxable = $baseShipping;
$isPriceInclTax = false;
}
} else {
$tax = $this->_round($calc->calcTaxAmount($shipping, $rate, false, false), false, $rate);
$baseTax = $this->_round($calc->calcTaxAmount($baseShipping, $rate, false, false), $rate, false, 'base');
$taxShipping = $shipping + $tax;
$baseTaxShipping = $baseShipping + $baseTax;
$taxable = $shipping;
$baseTaxable = $baseShipping;
$isPriceInclTax = false;
}
$address->setTotalAmount('shipping', $shipping);
$address->setBaseTotalAmount('shipping', $baseShipping);
$address->setShippingInclTax($taxShipping);
$address->setBaseShippingInclTax($baseTaxShipping);
$address->setShippingTaxable($taxable);
$address->setBaseShippingTaxable($baseTaxable);
$address->setIsShippingInclTax($isPriceInclTax);
if ($this->_config->discountTax($store)) {
$address->setShippingAmountForDiscount($taxShipping);
$address->setBaseShippingAmountForDiscount($baseTaxShipping);
}
return $this;
}
示例2: _calculateShippingTax
/**
* Tax caclulation for shipping price
*
* @param Mage_Sales_Model_Quote_Address $address
* @param Varien_Object $taxRateRequest
* @return Mage_Tax_Model_Sales_Total_Quote
*/
protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest)
{
$store = $address->getQuote()->getStore();
$shippingTaxClass = $this->_config->getShippingTaxClass($store);
$shippingAmount = $address->getShippingAmount();
$baseShippingAmount = $address->getBaseShippingAmount();
$shippingDiscountAmount = $address->getShippingDiscountAmount();
$baseShippingDiscountAmount = $address->getBaseShippingDiscountAmount();
/**
* Subtract discount before calculate tax amount
*/
if ($this->_config->applyTaxAfterDiscount($store)) {
$calcAmount = $shippingAmount - $shippingDiscountAmount;
$baseCalcAmount = $baseShippingAmount - $baseShippingDiscountAmount;
} else {
$calcAmount = $shippingAmount;
$baseCalcAmount = $baseShippingAmount;
}
$shippingTax = 0;
$shippingBaseTax = 0;
if ($shippingTaxClass) {
$taxRateRequest->setProductClassId($shippingTaxClass);
$rate = $this->_calculator->getRate($taxRateRequest);
if ($rate) {
if ($this->_config->shippingPriceIncludesTax($store) && $this->_areTaxRequestsSimilar) {
$shippingTax = $this->_calculator->calcTaxAmount($calcAmount, $rate, true);
$shippingBaseTax = $this->_calculator->calcTaxAmount($baseCalcAmount, $rate, true);
$shippingAmount -= $shippingTax;
$baseShippingAmount -= $shippingBaseTax;
} else {
$shippingTax = $this->_calculator->calcTaxAmount($calcAmount, $rate);
$shippingBaseTax = $this->_calculator->calcTaxAmount($baseCalcAmount, $rate);
}
$address->setTotalAmount('shipping', $shippingAmount);
$address->setBaseTotalAmount('shipping', $baseShippingAmount);
/**
* Provide additional attributes for apply discount on price include tax
*/
if ($this->_config->discountTax($store)) {
$address->setShippingAmountForDiscount($shippingAmount + $shippingTax);
$address->setBaseShippingAmountForDiscount($baseShippingAmount + $shippingBaseTax);
}
$this->_addAmount($shippingTax);
$this->_addBaseAmount($shippingBaseTax);
$applied = $this->_calculator->getAppliedRates($taxRateRequest);
$this->_saveAppliedTaxes($address, $applied, $shippingTax, $shippingBaseTax, $rate);
}
}
$address->setShippingTaxAmount($shippingTax);
$address->setBaseShippingTaxAmount($shippingBaseTax);
return $this;
}
示例3: _calculateShippingTax
/**
* Tax caclulation for shipping price
*
* @param Mage_Sales_Model_Quote_Address $address
* @param Varien_Object $taxRateRequest
* @return Mage_Tax_Model_Sales_Total_Quote
*/
protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest)
{
$taxRateRequest->setProductClassId($this->_config->getShippingTaxClass($this->_store));
$rate = $this->_calculator->getRate($taxRateRequest);
$inclTax = $address->getIsShippingInclTax();
$shipping = $address->getShippingTaxable();
$baseShipping = $address->getBaseShippingTaxable();
$hiddenTax = null;
$baseHiddenTax = null;
switch ($this->_helper->getCalculationSequence($this->_store)) {
case Mage_Tax_Model_Calculation::CALC_TAX_BEFORE_DISCOUNT_ON_EXCL:
case Mage_Tax_Model_Calculation::CALC_TAX_BEFORE_DISCOUNT_ON_INCL:
$tax = $this->_calculator->calcTaxAmount($shipping, $rate, $inclTax, false);
$baseTax = $this->_calculator->calcTaxAmount($baseShipping, $rate, $inclTax, false);
break;
case Mage_Tax_Model_Calculation::CALC_TAX_AFTER_DISCOUNT_ON_EXCL:
case Mage_Tax_Model_Calculation::CALC_TAX_AFTER_DISCOUNT_ON_INCL:
$discountAmount = $address->getShippingDiscountAmount();
$baseDiscountAmount = $address->getBaseShippingDiscountAmount();
$tax = $this->_calculator->calcTaxAmount($shipping - $discountAmount, $rate, $inclTax, false);
$baseTax = $this->_calculator->calcTaxAmount($baseShipping - $baseDiscountAmount, $rate, $inclTax, false);
break;
}
if ($this->_config->getAlgorithm($this->_store) == Mage_Tax_Model_Calculation::CALC_TOTAL_BASE) {
$tax = $this->_deltaRound($tax, $rate, $inclTax);
$baseTax = $this->_deltaRound($baseTax, $rate, $inclTax, 'base');
} else {
$tax = $this->_calculator->round($tax);
$baseTax = $this->_calculator->round($baseTax);
}
if ($inclTax && !empty($discountAmount)) {
$hiddenTax = $shipping - $tax - $address->getShippingAmount();
$baseHiddenTax = $baseShipping - $baseTax - $address->getBaseShippingAmount();
}
$this->_addAmount(max(0, $tax));
$this->_addBaseAmount(max(0, $baseTax));
$address->setShippingTaxAmount(max(0, $tax));
$address->setBaseShippingTaxAmount(max(0, $baseTax));
$address->setShippingHiddenTaxAmount(max(0, $hiddenTax));
$address->setBaseShippingHiddenTaxAmount(max(0, $baseHiddenTax));
$address->addTotalAmount('shipping_hidden_tax', $hiddenTax);
$address->addBaseTotalAmount('shipping_hidden_tax', $baseHiddenTax);
$applied = $this->_calculator->getAppliedRates($taxRateRequest);
$this->_saveAppliedTaxes($address, $applied, $tax, $baseTax, $rate);
return $this;
}
示例4: _calculateShippingTax
/**
* Tax caclulation for shipping price
*
* @param Mage_Sales_Model_Quote_Address $address
* @param Varien_Object $taxRateRequest
* @return Mage_Tax_Model_Sales_Total_Quote
*/
protected function _calculateShippingTax(Mage_Sales_Model_Quote_Address $address, $taxRateRequest)
{
$taxRateRequest->setProductClassId($this->_config->getShippingTaxClass($this->_store));
$rate = $this->_calculator->getRate($taxRateRequest);
$inclTax = $address->getIsShippingInclTax();
$address->setShippingTaxAmount(0);
$address->setBaseShippingTaxAmount(0);
$address->setShippingHiddenTaxAmount(0);
$address->setBaseShippingHiddenTaxAmount(0);
$appliedRates = $this->_calculator->getAppliedRates($taxRateRequest);
if ($inclTax) {
$this->_calculateShippingTaxByRate($address, $rate, $appliedRates);
} else {
foreach ($appliedRates as $appliedRate) {
$taxRate = $appliedRate['percent'];
$taxId = $appliedRate['id'];
$this->_calculateShippingTaxByRate($address, $taxRate, array($appliedRate), $taxId);
}
}
return $this;
}
示例5: _processShippingAmount
/**
* Calculate shipping price without store tax
*
* @param Mage_Sales_Model_Quote_Address $address
* @return Mage_Tax_Model_Sales_Total_Quote_Subtotal
*/
protected function _processShippingAmount($address)
{
if ($this->_areTaxRequestsSimilar) {
return $this;
}
$store = $address->getQuote()->getStore();
$shippingTaxClass = $this->_config->getShippingTaxClass($store);
$shippingAmount = $address->getShippingAmount();
$baseShippingAmount = $address->getBaseShippingAmount();
if ($shippingTaxClass) {
$request = $this->_getStoreTaxRequest($address);
$request->setProductClassId($shippingTaxClass);
$rate = $this->_calculator->getRate($request);
if ($rate) {
$shippingTax = $this->_calculator->calcTaxAmount($shippingAmount, $rate, true, false);
$shippingBaseTax = $this->_calculator->calcTaxAmount($baseShippingAmount, $rate, true, false);
$shippingAmount -= $shippingTax;
$baseShippingAmount -= $shippingBaseTax;
$address->setTotalAmount('shipping', $this->_calculator->roundUp($shippingAmount));
$address->setBaseTotalAmount('shipping', $this->_calculator->roundUp($baseShippingAmount));
}
}
return $this;
}
示例6: getShippingTaxClass
/**
* Get tax class id specified for shipping tax estimation
*
* @param mixed $store
* @return int
*/
public function getShippingTaxClass($store)
{
return $this->_config->getShippingTaxClass($store);
}
示例7: collect
/**
* Collect totals information about shipping
*
* @param Mage_Sales_Model_Quote_Address $address
* @return Mage_Sales_Model_Quote_Address_Total_Shipping
*/
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent::collect($address);
$calc = $this->_calculator;
$store = $address->getQuote()->getStore();
$storeTaxRequest = $calc->getRateOriginRequest($store);
$addressTaxRequest = $calc->getRateRequest($address, $address->getQuote()->getBillingAddress(), $address->getQuote()->getCustomerTaxClassId(), $store);
$shippingTaxClass = $this->_config->getShippingTaxClass($store);
$storeTaxRequest->setProductClassId($shippingTaxClass);
$addressTaxRequest->setProductClassId($shippingTaxClass);
$priceIncludesTax = $this->_config->shippingPriceIncludesTax($store);
if ($priceIncludesTax) {
if ($this->_helper->isCrossBorderTradeEnabled($store)) {
$this->_areTaxRequestsSimilar = true;
} else {
$this->_areTaxRequestsSimilar = $this->_calculator->compareRequests($storeTaxRequest, $addressTaxRequest);
}
}
$shipping = $taxShipping = $address->getShippingAmount();
$baseShipping = $baseTaxShipping = $address->getBaseShippingAmount();
$rate = $calc->getRate($addressTaxRequest);
if ($priceIncludesTax) {
if ($this->_areTaxRequestsSimilar) {
$tax = $this->_round($calc->calcTaxAmount($shipping, $rate, true, false), $rate, true);
$baseTax = $this->_round($calc->calcTaxAmount($baseShipping, $rate, true, false), $rate, true, 'base');
$taxShipping = $shipping;
$baseTaxShipping = $baseShipping;
$shipping = $shipping - $tax;
$baseShipping = $baseShipping - $baseTax;
$taxable = $taxShipping;
$baseTaxable = $baseTaxShipping;
$isPriceInclTax = true;
$address->setTotalAmount('shipping', $shipping);
$address->setBaseTotalAmount('shipping', $baseShipping);
} else {
$storeRate = $calc->getStoreRate($addressTaxRequest, $store);
$storeTax = $calc->calcTaxAmount($shipping, $storeRate, true, false);
$baseStoreTax = $calc->calcTaxAmount($baseShipping, $storeRate, true, false);
$shipping = $calc->round($shipping - $storeTax);
$baseShipping = $calc->round($baseShipping - $baseStoreTax);
$tax = $this->_round($calc->calcTaxAmount($shipping, $rate, false, false), $rate, true);
$baseTax = $this->_round($calc->calcTaxAmount($baseShipping, $rate, false, false), $rate, true, 'base');
$taxShipping = $shipping + $tax;
$baseTaxShipping = $baseShipping + $baseTax;
$taxable = $taxShipping;
$baseTaxable = $baseTaxShipping;
$isPriceInclTax = true;
$address->setTotalAmount('shipping', $shipping);
$address->setBaseTotalAmount('shipping', $baseShipping);
}
} else {
$appliedRates = $calc->getAppliedRates($addressTaxRequest);
$taxes = array();
$baseTaxes = array();
foreach ($appliedRates as $appliedRate) {
$taxRate = $appliedRate['percent'];
$taxId = $appliedRate['id'];
$taxes[] = $this->_round($calc->calcTaxAmount($shipping, $taxRate, false, false), $taxId, false);
$baseTaxes[] = $this->_round($calc->calcTaxAmount($baseShipping, $taxRate, false, false), $taxId, false, 'base');
}
$tax = array_sum($taxes);
$baseTax = array_sum($baseTaxes);
$taxShipping = $shipping + $tax;
$baseTaxShipping = $baseShipping + $baseTax;
$taxable = $shipping;
$baseTaxable = $baseShipping;
$isPriceInclTax = false;
$address->setTotalAmount('shipping', $shipping);
$address->setBaseTotalAmount('shipping', $baseShipping);
}
$address->setShippingInclTax($taxShipping);
$address->setBaseShippingInclTax($baseTaxShipping);
$address->setShippingTaxable($taxable);
$address->setBaseShippingTaxable($baseTaxable);
$address->setIsShippingInclTax($isPriceInclTax);
if ($this->_config->discountTax($store)) {
$address->setShippingAmountForDiscount($taxShipping);
$address->setBaseShippingAmountForDiscount($baseTaxShipping);
}
return $this;
}