为什么$ address-> hasCouponCode()总是返回null?

Fel*_*hur 11 magento cart quote coupon

喜欢在标题...由于某种原因,magento网站不应用优惠券代码...总是返回无效的"优惠券代码无效"消息.但奇怪的是,当购物车的价格大于120我的货币时会发生这种情况.

示例:如果我在购物车中有一个价格为65的产品,则优惠券代码可以正常工作...如果我在购物车中有相同的产品但是数量为2(这意味着总价格变为130)我得到上述无效错误信息

我已经将代码追溯到"Mage_Sales_Model_Quote"类,它有一个名为:_validateCouponCode()的函数,里面有以下内容:$ address-> hasCouponCode()总是返回false ...我该怎么办?...我重新索引,刷新缓存......等等...没有改变...我似乎无法在地址模型中找到hasCouponCode函数,看看那里发生了什么...非常感谢提前

Lee*_*ite 7

好吧,没有你的确切规则,很难给出完整的答案.

首先,如果优惠券代码不在报价地址上,则Mage_Sales_Model_Quote :: _ validateCouponCode()调用只能从报价中删除优惠券代码.这是因为在collectTotal调用期间,折扣总模型将优惠券代码复制到有效并应用的地址IF.因此,在这种情况下$ address-> hasCouponCode()返回null的事实只是规则验证器拒绝应用所提供的优惠券代码的指示.

其次,您应该找出两种方法来找出您的优惠券未被应用的原因.可能它只是一个或另一个取决于你的优惠券,但我会指出两者.Mage_SalesRule_Model_Validator ::过程()Mage_SalesRule_Model_Validator :: processShippingAmount()是两个地方,将检查您的优惠券代码,并可能运用它和代码复制到地址.

作为旁注,Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode()是负责将优惠券代码从验证器(从报价中获取代码)复制到地址的方法.如果从未调用此方法,则您的优惠券代码将始终从报价中删除.

TL;博士

步骤调试Mage_SalesRule_Model_Validator :: process()Mage_SalesRule_Model_Validator :: processShippingAmount()来调试您的优惠券代码无效的原因.


Suk*_*ini 0

首先 var_dump($address) 并检查详细信息。

然后,

检查以下内容:

  1. 正确的开始和到期日期。
  2. 为优惠券设置正确的客户群体。
  3. 设置它active

如果以上 1、2、3 要求全部成立,则设置Stop further rules processingYES

  • 除此之外,出于某种原因,SKU 还需要字母数字来表示条件。因此,请检查您的产品 SKU 值是否为字母数字。