【问题标题】:Set coupon code used for customer in Magento在 Magento 中设置用于客户的优惠券代码
【发布时间】:2013-04-15 20:59:48
【问题描述】:

我正在将系统与 Magento 集成。

当我创建订单时,如果我的非 Magento 系统显示该订单确实有优惠券,我想将该优惠券代码标记为该客户的“已使用”,因此下次他尝试使用它时,Magento 将知道客户已经使用了它。

我怎样才能做到这一点?

【问题讨论】:

    标签: magento coupon


    【解决方案1】:

    我设法这样做:

     $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

    【讨论】:

    • 如果访客用户消费了会怎样?
    • 不要忘记 $ruleUsageModel = Mage::getModel('salesrule/rule_customer'); $ruleUsage = $ruleUsageModel->loadByCustomerRule($order->getCustomerId(), $rule->getId());
    【解决方案2】:

    将购物车规则的 Uses per Customer 设置为 1。

    ----编辑----

    如果您想在代码中应用优惠券,则可以执行以下操作:

    $coupon_code = "YOUR_CODE";
    
    Mage::getSingleton('checkout/cart')
        ->getQuote()
        ->setCouponCode($coupon_code)
        ->collectTotals()
        ->save();
    

    【讨论】:

    • 对,但是,在代码中,如何设置客户使用的代码?
    • 我对这个问题有点困惑。你在兑换优惠券吗?请参阅上面的答案编辑。
    • 谢谢seanbreeen。但是这种情况不适用于我的情况,因为我没有在 Magento 中为所述客户创建购物车,我从另一个系统接收购物车信息,我只是在 Magento 中创建订单。我想要实现的是当我创建该客户使用的优惠券的订单集时
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2019-04-24
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多