Для создания системы купонов, мы используем класс Mage_SalesRule_Model_Coupon_Massgenerator . Чтобы использовать его по своему усмотрению, вы можете создать экземпляр класса:

$generator = Mage::getModel('salesrule/coupon_massgenerator');

Теперь вам нужно установить некоторые опции:


$data = array(
    'max_probability'   => .25,
   'max_attempts'      => 10,
    'uses_per_customer' => 1,
    'uses_per_coupon'   => 1,
    'qty'               => 5, //number of coupons to generate
    'length'            => 14, //length of coupon string
    'to_date'           => '2013-12-31', //ending date of generated promo
    /**
     * Possible values include:
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL
     * Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC
     */
    'format'          => Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC,
    'rule_id'         => 1234 //the id of the rule you will use as a template
);

Проверяем $data:

$generator->validateData($data);

Сохраняем  эти параметры для генератора:

$generator->setData($data);

И теперь создаем:

$generator->generatePool();

Параметры заполняются в salesrule_coupon :

 

</p>

 

Это работает достаточно хорошо, в так же можете удалить полученные купоны. Чтобы это сделать обратитесь в раздел "Manage Coupon Codes" либо “Управление купонами”.

 

 

Если же вы хотите  вывести коллекцию, используйте:

 


$salesRule = Mage::getModel('salesrule/rule')->load($data['rule_id']);
$collection = Mage::getResourceModel('salesrule/coupon_collection')
->addRuleToFilter($salesRule)
->addGeneratedCouponsFilter();

Так же вы можете получить количество купонов, сгенерированных успешно:

 

$generator->getGeneratedCount();

Спасибо за внимание !