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

sha*_*une 3 magento

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

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

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

OSd*_*ave 6

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

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

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

    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);
    }
    
    Run Code Online (Sandbox Code Playgroud)

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