Search code examples
phpmagento-1.7magentocoupon

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?


Solution

  • 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 />"; 
        }
      }
    }