Skip to content

Instantly share code, notes, and snippets.

@krillo
Created April 20, 2017 12:06
Show Gist options
  • Save krillo/13108e46e8880b1bcdae6715f6731c27 to your computer and use it in GitHub Desktop.
Save krillo/13108e46e8880b1bcdae6715f6731c27 to your computer and use it in GitHub Desktop.
Magento 1: Generate campaign codes
/**
* Generate campaign codes
* @param type $cuponRuleId
* @param type $nbr
* @param type $prefix
* @param type $suffix optional
* @return type
*/
public function generateCampaignCode($cuponRuleId, $nbr, $prefix, $suffix = '') {
$rule = Mage::getModel('salesrule/rule')->load($cuponRuleId); // Get the rule in question
// Define a coupon code generator model instance
// Look at Mage_SalesRule_Model_Coupon_Massgenerator for options
$generator = Mage::getModel('salesrule/coupon_massgenerator');
$parameters = array(
'count' => $nbr,
'format' => 'alphanumeric',
'dash_every_x_characters' => 4,
'prefix' => $prefix.'-',
'suffix' => $suffix,
'length' => 8
);
if (!empty($parameters['format'])) {
switch (strtolower($parameters['format'])) {
case 'alphanumeric':
case 'alphanum':
$generator->setFormat(Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC);
break;
case 'alphabetical':
case 'alpha':
$generator->setFormat(Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL);
break;
case 'numeric':
case 'num':
$generator->setFormat(Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC);
break;
}
}
$generator->setDash(!empty($parameters['dash_every_x_characters']) ? (int) $parameters['dash_every_x_characters'] : 0);
$generator->setLength(!empty($parameters['length']) ? (int) $parameters['length'] : 6);
$generator->setPrefix(!empty($parameters['prefix']) ? $parameters['prefix'] : '');
$generator->setSuffix(!empty($parameters['suffix']) ? '-'.$parameters['suffix'] : '');
// Set the generator, and coupon type so it's able to generate
$rule->setCouponCodeGenerator($generator);
$rule->setCouponType(Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO);
// Get as many coupons as you required
$count = !empty($parameters['count']) ? (int) $parameters['count'] : 1;
$codes = array();
for ($i = 0; $i < $count; $i++) {
$coupon = $rule->acquireCoupon();
$coupon
->setType(Mage_SalesRule_Helper_Coupon::COUPON_TYPE_SPECIFIC_AUTOGENERATED)
->save();
$code = $coupon->getCode();
$codes[] = $code;
}
if(count($codes) == 1){
return $codes[0];
} else {
return $codes;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment