Created
February 13, 2014 21:57
-
-
Save anunay/8984712 to your computer and use it in GitHub Desktop.
Magento: Import Coupon Code with CSV
This file contains hidden or 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
<?php | |
// Import coupon codes | |
// Thanks go out to Marius Strajeru | |
// Original URL: http://marius-strajeru.blogspot.nl/2010/04/create-bulk-discount-rules.html | |
require 'app/Mage.php'; | |
Mage::app(); | |
// Import CSV from ViArt format: | |
$handle = fopen('coupons.csv', 'r'); | |
$cols = array_flip(fgetcsv($handle)); | |
while($data = fgetcsv($handle)) | |
{ | |
if($data[$cols['is_active']] == 1) | |
{ | |
echo 'Importing coupon with code: '.$data[$cols['coupon_code']].'<br />'; | |
createCoupon( | |
$data[$cols['coupon_code']], | |
$data[$cols['description']], | |
'by_fixed', | |
$data[$cols['discount_amount']] | |
); | |
} else { | |
echo 'Not imported (not active): '.$data[$cols['coupon_code']].'<br />'; | |
} | |
} | |
/** | |
* Import coupon | |
* @param $code String Coupon code | |
* @param $description String Description | |
* @param $type String by_percent, by_fixed, cart_fixed, buy_x_get_y (not implemented) | |
* @param $amount int The amount | |
* @param array $options Optional options (from, to) | |
*/ | |
function createCoupon($code, $description, $type, $amount, $options = array()) | |
{ | |
// Create coupon: | |
/* @var $rule Mage_SalesRule_Model_Rule */ | |
$rule = Mage::getModel('salesrule/rule'); | |
$rule->setName($code); | |
$rule->setCouponCode($code); | |
$rule->setDescription($description); | |
// Default options: | |
if(!isset($options['from'])) { $options['from'] = date('Y-m-d'); } | |
$rule->setFromDate($options['from']); // From date | |
// To date: | |
if(isset($options['to'])) { | |
$rule->setToDate($options['to']);//if you need an expiration date | |
} | |
$rule->setUsesPerCoupon(1);//number of allowed uses for this coupon | |
$rule->setUsesPerCustomer(1);//number of allowed uses for this coupon for each customer | |
$rule->setCustomerGroupIds(getAllCustomerGroups());//if you want only certain groups replace getAllCustomerGroups() with an array of desired ids | |
$rule->setIsActive(1); | |
$rule->setStopRulesProcessing(0);//set to 1 if you want all other rules after this to not be processed | |
$rule->setIsRss(0);//set to 1 if you want this rule to be public in rss | |
$rule->setIsAdvanced(1);//have no idea what it means :) | |
$rule->setProductIds(''); | |
$rule->setSortOrder(0);// order in which the rules will be applied | |
$rule->setSimpleAction($type); | |
$rule->setDiscountAmount($amount);//the discount amount/percent. if SimpleAction is by_percent this value must be <= 100 | |
$rule->setDiscountQty(0);//Maximum Qty Discount is Applied to | |
$rule->setDiscountStep(0);//used for buy_x_get_y; This is X | |
$rule->setSimpleFreeShipping(0);//set to 1 for Free shipping | |
$rule->setApplyToShipping(1);//set to 0 if you don't want the rule to be applied to shipping | |
$rule->setWebsiteIds(getAllWbsites());//if you want only certain websites replace getAllWbsites() with an array of desired ids | |
$labels = array(); | |
$labels[0] = $description; | |
$rule->setStoreLabels($labels); | |
$rule->setCouponType(2); | |
$rule->save(); | |
} | |
/** | |
* Get all customer groups | |
* @return array | |
*/ | |
function getAllCustomerGroups(){ | |
//get all customer groups | |
$customerGroups = Mage::getModel('customer/group')->getCollection(); | |
$groups = array(); | |
foreach ($customerGroups as $group){ | |
$groups[] = $group->getId(); | |
} | |
return $groups; | |
} | |
/** | |
* Get all websites | |
* @return array | |
*/ | |
function getAllWbsites(){ | |
//get all wabsites | |
$websites = Mage::getModel('core/website')->getCollection(); | |
$websiteIds = array(); | |
foreach ($websites as $website){ | |
$websiteIds[] = $website->getId(); | |
} | |
return $websiteIds; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
i need coupons.csv format