2016-02-08 58 views
-1

我正在为税收估算挣扎。情景是这样的。当登录用户更改状态时,不根据基于更改状态而是基于其配置文件中的状态(区域)来估计税。任何人都可以指出我为什么会发生这种事情的正确方向吗?谢谢。Magento的税收估算

$post = Mage::app()->getFrontController()->getRequest()->getPost(); 
$quote= Mage::getSingleton('checkout/cart')->getQuote(); 
$country = (string) $post['country_id']; 
$postcode = (string) $post['estimate_postcode']; 
$city  = (string) $post['estimate_city']; 
$regionId = (string) $post['region_id']; 
$region  = (string) $post['region']; 

$quote->getShippingAddress() 
->setCountryId($country) 
->setCity($city) 
->setPostcode($postcode) 
->setRegionId($regionId) 
->setRegion($region) 
->setCollectShippingRates(true); 
$quote->collectTotals(); 
$quote->save(); 

,因为我看到,数据库表sales_flat_quote_address与新regionid更新。但是,如果再次浏览,我可以看到该地区已恢复为来自客户资料的地区。

+0

请包括相关的代码。这里有一个方便的[SO指导](http://stackoverflow.com/help/mcve)发布好的示例代码。 –

+0

我不理解的是,即使在使用新的regionid更新sales_flat_quote_address之后,它立即恢复到旧的regionid – MACMAN

回答

0

请尝试从目录 - >价格规则中添加价格规则,并根据您的状态创建规则。

0

我终于找到了问题。我对购物车控制器方法estimatePostAction使用了一个Ajax请求,并且在成功返回时,应该显示税款的页面已重新加载。实际发生的是新报价寄送地址被登录用户的地址信息所取代。我发现通过检查sales_flat_quote_address表更改为新的region_id并立即恢复为原始region_id。

当我停止重新加载页面时,保留了估计的region_id。现在我简单地通过使用jquery更新税和总体html控件。希望稍后有人会发现这些信息很有用。