Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nayemmajhar/27676c2b18b9dfcea89678d0948ad74b to your computer and use it in GitHub Desktop.
Save nayemmajhar/27676c2b18b9dfcea89678d0948ad74b to your computer and use it in GitHub Desktop.
Magento - Create shopping cart price rule with a specific coupon code programmatically.
<?php
/**
* Create Shopping Cart Sales Rule with Specific Coupon Code Programmatically
*/
// All customer group ids
$customerGroupIds = Mage::getModel('customer/group')->getCollection()->getAllIds();
// SalesRule Rule model
$rule = Mage::getModel('salesrule/rule');
// Rule data
$rule->setName('Rule name')
->setDescription('Rule description')
->setFromDate('')
->setCouponType(Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC)
->setCouponCode('my-coupon-code')
->setUsesPerCustomer(1)
->setUsesPerCoupon(1)
->setCustomerGroupIds($customerGroupIds)
->setIsActive(1)
->setConditionsSerialized('')
->setActionsSerialized('')
->setStopRulesProcessing(0)
->setIsAdvanced(1)
->setProductIds('')
->setSortOrder(0)
->setSimpleAction(Mage_SalesRule_Model_Rule::BY_FIXED_ACTION)
->setDiscountAmount(10)
->setDiscountQty(1)
->setDiscountStep(0)
->setSimpleFreeShipping('0')
->setApplyToShipping('0')
->setIsRss(0)
->setWebsiteIds(array(1))
->setStoreLabels(array('My Rule Frontend Label'));
// Product found condition type
$productFoundCondition = Mage::getModel('salesrule/rule_condition_product_found')
->setType('salesrule/rule_condition_product_found')
->setValue(1) // 0 == not found, 1 == found
->setAggregator('all'); // match all conditions
// 'Attribute set id 1' product condition
$attributeSetCondition = Mage::getModel('salesrule/rule_condition_product')
->setType('salesrule/rule_condition_product')
->setAttribute('attribute_set_id')
->setOperator('==')
->setValue(1);
// Bind attribute set condition to product found condition
$productFoundCondition->addCondition($attributeSetCondition);
// If a product with 'attribute set id 1' is found in the cart
$rule->getConditions()->addCondition($productFoundCondition);
// Only apply the rule discount to this specific product
$rule->getActions()->addCondition($attributeSetCondition);
// Here we go
$rule->save();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment