【发布时间】:2013-04-15 20:59:48
【问题描述】:
我正在将系统与 Magento 集成。
当我创建订单时,如果我的非 Magento 系统显示该订单确实有优惠券,我想将该优惠券代码标记为该客户的“已使用”,因此下次他尝试使用它时,Magento 将知道客户已经使用了它。
我怎样才能做到这一点?
【问题讨论】:
我正在将系统与 Magento 集成。
当我创建订单时,如果我的非 Magento 系统显示该订单确实有优惠券,我想将该优惠券代码标记为该客户的“已使用”,因此下次他尝试使用它时,Magento 将知道客户已经使用了它。
我怎样才能做到这一点?
【问题讨论】:
我设法这样做:
$coupon = mage::getModel('salesrule/coupon')->load($code, 'code');
$coupon->setTimesUsed($coupon->getTimesUsed()+1);
$coupon->save();
$rule = Mage::getModel('salesrule/rule')->load($coupon->getRuleId());
$rule->setTimesUsed($rule->getTimesUsed()+1);
$rule->save();
$couponUsage = Mage::getResourceModel('salesrule/coupon_usage');
$couponUsage->updateCustomerCouponTimesUsed($customerId,$coupon->getCouponId());
感谢这篇文章: Magento - Single Coupon marked as used when payment pending
【讨论】:
将购物车规则的 Uses per Customer 设置为 1。
----编辑----
如果您想在代码中应用优惠券,则可以执行以下操作:
$coupon_code = "YOUR_CODE";
Mage::getSingleton('checkout/cart')
->getQuote()
->setCouponCode($coupon_code)
->collectTotals()
->save();
【讨论】: