Created
April 20, 2017 12:06
-
-
Save krillo/13108e46e8880b1bcdae6715f6731c27 to your computer and use it in GitHub Desktop.
Magento 1: Generate campaign codes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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