Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deleting a large number of Magento coupons (shopping cart price rules) programatically

I've been on here before asking about writing code to get Magento to generate a random coupon code for a new e-mail subscriber - Creating a single random Magento coupon

This code worked perfectly and to those who helped I am eternally grateful. I am now looking for a way to delete these coupons as they expire in a bulk fashion because deleting them individually through the Magento admin is a huge pain. As you can see from the picture below, in the span of a couple of days we generated over 300 coupons (all now expired).

enter image description here

Would modifying the create coupon code detailed in the link (from my original question) above work? Something like:

$model = Mage::getModel('salesrule/rule')
       $model->getName('New newsletter subscriber discount');
       $model->getToDate(date('Y-m-d'));
$model->delete();

Or am I totally barking up the wrong tree here?

like image 307
Kale Avatar asked Oct 30 '12 21:10

Kale


1 Answers

Sorry to answer my own question but almost as soon as I posted, I was able to figure it out. So in case anyone else has a question like mine:

ini_set('auto_detect_line_endings', true);

// Requires Mage
require_once('../../app/Mage.php');

//Initializes Mage
Mage::app('default');
deleteCoupon();

function deleteCoupon() {
  $collection = Mage::getModel('salesrule/rule')->getCollection()->load();

  foreach($collection as $model) {

    // Delete all new newsletter sub coupons
    if ($model->getName() == 'New newsletter subscriber discount') {

    // Delete all coupons expiring today    
    if ($model->getToDate() == date('Y-m-d')) { 
      $model->delete();
      echo "Deleted <br />";
    } else {
      echo "No coupons found! <br />"; 
    }
  }
}
like image 197
Kale Avatar answered Sep 30 '22 14:09

Kale