Skip to content

Instantly share code, notes, and snippets.

@anunay
Created February 13, 2014 21:57
Show Gist options
  • Save anunay/8984712 to your computer and use it in GitHub Desktop.
Save anunay/8984712 to your computer and use it in GitHub Desktop.
Magento: Import Coupon Code with CSV
<?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;
}
@matinict
Copy link

i need coupons.csv format

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment