2013-08-16 99 views
10

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

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

我已经追踪到“Mage_Sales_Model_Quote”类,它有一个名为函数的代码: _validateCouponCode(),里面其中以下内容:$地址 - > hasCouponCode()始终返回false。 .. 我应该尝试什么?...我重新编制索引,刷新缓存..等等......没有任何改变...我似乎无法在地址模型中找到hasCouponCode函数来查看在那里发生了什么... 非常感谢提前

+0

你有没有找到这方面的解决方案? – Taras

+0

我可以看到您的购物车规则的条件吗? –

+0

如果您需要帮助诊断优惠券代码在某些时间无效的原因,则需要发布序列化优惠券代码规则。 –

回答

0

首先var_dump($地址)并检查细节。

然后,

检查如下:

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

如果所有上述1,2,3要求真,那么设置Stop further rules processingYES

  • 除了这些由于某些原因,在成品保持单元需要的条件的字母数字数位。因此,请检查您的产品SKU值是否为字母数字。
3

首先您需要了解$ address-> hasCouponCode()的工作方式。

有没有这样的方法使用魔术函数调用__call。

您不能直接访问它,因为$ _data受到保护。

现在,调试的最佳方法是检查您的地址对象中是否设置了优惠券。

$data = $address->getData(); 
$coupon = $data['coupon_code']; 

现在检查您的购物车中是否有2件商品时,是否设置了优惠券。

另一种方法是尝试使用二传手加息作为

$address->setCouponCode('Your Coupon Code'); 

$address->setData('coupon_code', 'Your Coupon Code'); 

,并检查这是否工作。 如果不那么考虑

_validateCouponCode in Mage_Sales_Model_Quote 

将是一个好的开始调试。

7

那么,没有你的确切规则,很难给出一个完整的答案。

首先,Mage_Sales_Model_Quote :: _ validateCouponCode()调用已经从报价移除优惠券代码,如果优惠券代码是不是在报价地址的单个作业。这是因为在collectTotal调用期间,折扣总计模型会将优惠券代码复制到地址(如果该地址有效且适用)。因此,在这种情况下,$ address-> hasCouponCode()返回null仅仅是规则验证程序拒绝应用提供的优惠券代码的指示。

其次,有两种方法可以找出您的优惠券未被应用的原因。可能它只有一个或另一个取决于您的优惠券,但我会指出两者。 Mage_SalesRule_Model_Validator :: process()Mage_SalesRule_Model_Validator :: processShippingAmount()是将检查您的优惠券代码并可能应用它并将代码复制到地址的两个位置。

作为一个侧面说明,Mage_SalesRule_Model_Validator :: _ maintainAddressCouponCode()负责从验证(谁得到了报价的代码)的地址复制优惠券代码的方法。如果此方法从未被调用,那么您的优惠券代码将始终从报价中删除。

TL;博士

步调试Mage_SalesRule_Model_Validator ::过程()Mage_SalesRule_Model_Validator :: processShippingAmount()调试为什么你的优惠券代码无效。

相关问题