среда, 27 ноября 2013 г.

Создание скидочных купонов в Magento

статья с хабра:  http://habrahabr.ru/sandbox/48357/

Для начала

Создадим правило которое будет едино для всех наших купонов.
(Promotions -> Shopping Cart Price Rules -> Add New Rule)


Заполняем нужные нам и обязательные поля, и обращаем все свое внимание на поле «Coupon». Особо выбирать не из чего поэтому выбираем «Specific Coupon». И тут начинается самое интересное.

У нас появилась возможность ввести код купона и появился checkbox который утверждает, что если мы его выберем то сможем привязать к этому правилу несколько купонов. Отлично! Это то, что нам нужно! Но хочу обратить внимание, что привязка купонов станет возможна только(!) после сохранения правила.
Далее, на вкладке «Actions» настраиваем свою скидку и сохраняем правило.
После сохранения у нас появилась новая закладка «Manage Coupon Codes»

Зайдя на нее вы можете руками создать сколько угодно скидочных купонов. Но ведь нам нужно программно, ведь так?

Знакомьтесь — код

Куда вы вставите нижеописанный код — зависит только от вашей фантазии и от конкретно поставленной задачи. Я повесил observer перед сохранением заказа и проверяю изменился ли статус заказа. Если изменился, и заказ теперь оплачен, то далее отрабатывает следующий код:

  $massgenerator = Mage::getModel('salesrule/coupon_massgenerator'); /*загружаем 
модель генератора купонов */
  $coupon = Mage::getModel('salesrule/coupon'); //загружаем модель самих купонов
  $expirationDate = NULL; /* дата окончания действия купона. Если null , то 
купон бессрочный */
  $now = $massgenerator->getResource()->formatDate(
        Mage::getSingleton('core/date')->gmtTimestamp()
  );  // дата создания купона
  $code = '';   /* далее я посимвольно генерирую новый скидочный купон. Я выбрал 
длину купона 12 символов */
        for ($i=1; $i<= 12; $i++){
            $code.=$massgenerator->generateCode();
        }
/*
* Далее я устанавливаю все значения и сохраняю купон
* setRuleId - здесь указывается id правила для которого создается купон
* setUsageLimit - лимит количества активаций одного купона
* setUsagePerCustomer - лимит количества активаций на одного пользователя
* setExpirationDate - дата окончания действия купона.
* setCreatedAt - дата создания купона
* setType - Тип купона
* setCode - собственно сам код купона
*/
  $coupon->setId(null)
     ->setRuleId(2)
     ->setUsageLimit(1)
     ->setUsagePerCustomer(0)
     ->setExpirationDate($expirationDate)
     ->setCreatedAt($now)
     ->setType(Mage_SalesRule_Helper_Coupon::COUPON_TYPE_SPECIFIC_AUTOGENERATED)
     ->setCode($code)
     ->save();


Вот и все. Купон создан. Осталось только как либо сообщить пользователю код купона (я, например, отправляю пользователю e-mail с кодом купона и инструкциями к его применению).

Комментариев нет:

Отправить комментарий