将[magento]优惠券代码限制为特定的客户列表?

时间:2011-12-16 23:22:28

标签: magento

有关如何限制特定客户列表使用的优惠券代码的任何想法?

背景:我的公司正在宣传,我们已经通过电子邮件将折扣码发送给2000多名非常有价值的客户。我们不希望所有客户都能够使用代码,只需使用我们列表中的代码。问题是优惠券代码已经发布在一些流行的论坛和其他地方,所以除非我们做一些事情来阻止它,否则我们会从那些不打算获取代码的人那里得到一堆订单。

我正在尝试做一些紧急伤害控制 - 我想我将不得不在某处进行代码修改,但我仍然环顾四周,无法找出最佳位置。我在文件中有一个客户列表。

3 个答案:

答案 0 :(得分:6)

你可以创建一个观察者观察salesrule_validator_process(当应用购物车规则时触发此事件),这将需要检查两件事:

  • 应用的规则是您要限制到客户列表的规则:

    $ruleId = $observer->getEvent()->getRule()->getRuleId();
    
  • 如果满足第一个条件,则检查客户是否已登录,并且电子邮件是列表中的电子邮件之一:

    if ($observer->getEvent()->getQuote()->getCustomer()->getEmail()) {
        $customerEmail = $observer->getEvent()->getQuote()->getCustomer()->getEmail();
        if ($customerEmail IS ON YOUR LIST) {
            return $this;
        } else {
            $event = $observer->getEvent();
            $result = $event->getResult();
            $result->setBaseDiscountAmount(0)->setDiscountAmount(0);
    } else {
        $event = $observer->getEvent();
        $result = $event->getResult();
        $result->setBaseDiscountAmount(0)->setDiscountAmount(0);
    }
    

你应该重构这段代码以使它干涸,而且我还没有制作一个真实的if条件,但你得到的图片。
此外,您还必须更改“优惠券已成功应用”的信息 告诉我你是否需要更多细节。

答案 1 :(得分:1)

Sdek你可以创造像奥斯达夫解释的那样的奥伯。或者,如果您有一个已收到促销代码的客户列表&你不愿意让他们使用那个促销。 你可以这样做

  1. 准备清单(电子邮件)
  2. 创建客户组NO-promo-Customer
  3. 准备脚本可能是一个SQL查询,用于将您列表中的用户组更新为No-promo-customer
  4. 转到您创建的促销规则。编辑它。 &安培;在客户组部分下,选择No-promo-Customer
  5. 这应该符合你想要完成的目标。

答案 2 :(得分:0)

也许您可以使用customer discounts