/**
  * Validate Product Rule Condition
  *
  * @param Varien_Object $object
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     $product = false;
     if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
         $product = $object->getProduct();
     } else {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     $product->setQuoteItemSku($object->getSku());
     //$newObject = new Varien_Object();
     $object->setProduct($product);
     return parent::validate($object);
 }
 /**
  * @param Varien_Object $object
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     // check product type
     if ($this->getAttribute() == 'product_type') {
         if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
             $product = $object->getProduct();
         } else {
             $product = Mage::getModel('catalog/product')->load($object->getProductId());
         }
         if ($product->getTypeId() == $this->getValue()) {
             return true;
         } else {
             return false;
         }
     }
     return parent::validate($object);
 }
 /**
  * Validate Product Rule Condition
  *
  * @param Varien_Object $object
  *
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     /** @var Mage_Catalog_Model_Product $product */
     $product = $object->getProduct();
     if (!$product instanceof Mage_Catalog_Model_Product) {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     $product->setQuoteItemQty($object->getQty())->setQuoteItemPrice($object->getPrice())->setQuoteItemRowTotal($object->getBaseRowTotal());
     // Allows attributes to take custom option SKU into consideration
     if ($this->getAttribute() === self::QUOTE_ITEM_SKU) {
         $product->setData($this->getAttribute(), $object->getSku());
         $valid = Mage_Rule_Model_Condition_Product_Abstract::validate($product);
     } else {
         $valid = parent::validate($object);
     }
     if (!$valid && $product->getTypeId() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
         $children = $object->getChildren();
         $valid = $children && $this->validate($children[0]);
     }
     return $valid;
 }
 /**
  * Validate Product Rule Condition
  *
  * @param Varien_Object $object
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     $product = false;
     if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
         $product = $object->getProduct();
     } else {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     if (Mage::getStoreConfig('amrules/general/options_values')) {
         $options = $product->getTypeInstance(true)->getOrderOptions($product);
         $values = '';
         if (isset($options['options'])) {
             foreach ($options['options'] as $option) {
                 $values .= '|' . $option['value'];
             }
         }
         $product->setQuoteItemValue($values);
     }
     $product->setQuoteItemSku($object->getSku());
     $object->setProduct($product);
     return parent::validate($object);
 }
 /**
  * Overwrite parent method to add new operators
  *
  * @param   mixed $validatedValue
  *
  * @return  bool
  */
 public function validateAttribute($validatedValue)
 {
     if (is_object($validatedValue)) {
         return false;
     }
     /**
      * Condition attribute value
      */
     $value = $this->getValueParsed();
     /**
      * Comparison operator
      */
     $op = $this->getOperatorForValidate();
     // if operator requires array and it is not, or on opposite, return false
     if ($this->isArrayOperatorType() xor is_array($value)) {
         return false;
     }
     switch ($op) {
         case '><':
         case '<>':
             $explodedValue = explode('-', $value);
             $result = $validatedValue >= $explodedValue[0] && $validatedValue <= $explodedValue[1];
             break;
         default:
             return parent::validateAttribute($validatedValue);
             break;
     }
     if ($op == '<>') {
         $result = !$result;
     }
     return $result;
 }