我正在努力进行税收估算。情景是这样的。当登录用户更改状态时,不会根据基于更改状态估算税,而是基于其配置文件中的状态(区域)。任何人都可以指出我为什么会发生这种情况的正确方向?感谢。
$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 :(得分:0)
请尝试从目录中添加价格规则 - >价格规则并根据您的州制定规则。
答案 1 :(得分:0)
我终于找到了这个问题。我正在向购物车控制器方法estimatePostAction使用Ajax请求,并且在成功返回时,应该重新加载应该显示税的页面。实际发生的是新报价送货地址被登录用户的地址信息所取代。我通过检查sales_flat_quote_address表找到了更改为新的region_id并立即恢复到原始region_id的结果。
当我停止重新加载页面时,保留了估计的region_id。现在我只需使用jquery即可更新税务和总计html控件。希望有人稍后会发现这些信息很有用。