/** * 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; }