购物车规则=免费送货的小册子> $ 99.00
场景01 - 带3个简单产品的购物车 - 确定,适用规则,免运费。 场景02 - 购物车有2个简单产品和1个虚拟 - 失败,规则未应用。
搜索我猜这可能是Magento 1.7的错误。
你能否对此有所了解?
答案 0 :(得分:0)
到目前为止,从未找到过解决方法,但建议在单独的attribute set
或单独的category
中使用简单的产品,然后您可以将规则应用为属性集和/或类别可用于应用规则。
答案 1 :(得分:0)
因此,问题是类Mage_SalesRule_Model_Validator
protected function _getAddress(Mage_Sales_Model_Quote_Item_Abstract $item)
{
if ($item instanceof Mage_Sales_Model_Quote_Address_Item) {
$address = $item->getAddress();
} elseif ($item->getQuote()->getItemVirtualQty() > 0) {
$address = $item->getQuote()->getBillingAddress();
} else {
$address = $item->getQuote()->getShippingAddress();
}
return $address;
}
根据项目决定要检查的地址。如果购物车中有可下载的商品,则会使用结算地址。 但是,当可下载项目与简单项目一起出现时,Magento会将所有货币值分配到送货地址。
因此,您的规则将失败,因为帐单邮寄地址的小计为0,但可下载项目要检查帐单邮寄地址。
我认为这是Magento中的一个错误,应该更改此方法以反映此问题。
一个简单的解决方法是将方法重写为:
protected function _getAddress(Mage_Sales_Model_Quote_Item_Abstract $item)
{
$quote = $item->getQuote();
if ($quote->isVirtual()) {
return $quote->getBillingAddress();
} else {
return $quote->getShippingAddress();
}
}