2012-10-24 71 views
1

Magento CE ver。 1.7.0.2试图计算Magento中的单个项目的销售税,而不显示包括税的价格

我试图从我们的Magento商店获取一些订单数据以集成到我们的其他商业软件中。在我的情况下,我需要计算单个项目的价格加税。 产品目录中的产品价格设置为包括两者都(在系统>配置>销售>税收)。我如何计算某件商品的税额,同时让网站的显示价格不含税?

$customer_tax_class = Mage::getModel('tax/calculation')->getRateRequest()->getCustomerClassId(); 
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku',$skunumber); 
$my_price = Mage::helper('tax')->getPrice($_product, $_product->getPrice(), true, $shippingAddress, $billingAddress, $customer_tax_class); 

我也尝试用这个代替,但我仍然得到的价格不含税(除非我改变上述显示设置):

$_finalPriceInclTax = Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice(), true, $shippingAddress, $billingAddress, $customer_tax_class); 

我知道那一定是可能的,因为Magento的数字出您下订单时需要缴税。任何帮助将不胜感激。

回答

1

过了一段时间才能得到我所需要的所有参数,因为我们使用的是高度定制结账,但这里是什么最终为我工作

$my_quote = Mage::getSingleton('checkout/session')->getQuote();    
    $my_customer = Mage::getSingleton('customer/session')->getCustomer(); 
    $my_items = $quote->getAllItems(); 
    $taxClassId = $qty = $price = array(); 
    foreach ($my_items as $key => $my_item) { 
     //get the price plus tax for this item 
     // get the product tax id for this item first. 
     $my_sku = $my_item->getSku(); 
     $qty[$my_sku] = $my_item->getQty(); 
     $taxClassId[$my_sku] = Mage::getModel('catalog/product')->load(
        $my_item->getProductID())->getData("tax_class_id"); 
     $price[$my_sku] = Mage::getModel('catalog/product')->load(
        $my_item->getProductID())->getData("price"); 
    } 
    $my_store = Mage::app()->getStore($my_quote->getStoreId()); 
    $ctc = $my_customer->getTaxClassId(); 
    $tax_calc = Mage::getSingleton('tax/calculation'); 
    $tax_rate_req = $tax_calc->getRateRequest(
     $shippingAddress, 
     $billingAddress, 
     $ctc, 
     $my_store); 
    if(is_Array($taxClassId)){ 
    foreach($taxClassId as $key => $value){ 
     $my_rate[$key] = Mage::getSingleton('tax/calculation')->getRate(
       $tax_rate_req->setProductClassId($value)); 
    }  
    foreach($my_rate as $key => $value){ 
     foreach($split_filter as $my_key => $my_value){ 
     //This is used because we split orders based on their shipping method 
     if($my_value == $key){ 
     // This code might malfunction if tax rate is an integer (i.e. 8%) 
     if(is_float($value)){ 
      $my_price = $price[$key]; 
      $my_qty = $qty[$key]; 
      $taxy = Mage::getModel('tax/calculation')->calcTaxAmount(
      $my_price, 
      $value 
     ); 
      $price_withtax = $my_price + $taxy; 
      // still need to multiply times qty ordered to get row totals 
      $row_total = ($price_withtax * $my_qty); 
     } else {// $value is not a float. 
      $row_total = ($price[$key] * $qty[$key]); 
     } 
      // then add to other rows to get subtotal 
      $subtotal_with_tax += $row_total; 
     } 
    }