Example #1
0
 /**
  * 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());
     return parent::validate($product);
 }
Example #2
0
 /**
  * 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 && $object->getData($this->getAttribute()) !== null) {
         $product = $object->getProduct();
     } else {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     $product->setQuoteItemQty($object->getQty())->setQuoteItemPrice($object->getPrice())->setQuoteItemRowTotal($object->getBaseRowTotal());
     return parent::validate($product);
 }
Example #3
0
 /**
  * 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());
     $valid = parent::validate($product);
     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)
 {
     $op = $this->getOperator();
     $product = false;
     if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
         $product = $object->getProduct();
     } else {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     $product->setQuoteItemQty($object->getQty())->setQuoteItemPrice($object->getPrice())->setQuoteItemRowTotal($object->getBaseRowTotal());
     if (!$product->getData($this->getAttribute()) && ($op != '==' || $op != '!=') && $this->getAttribute() != 'category_ids') {
         return false;
     }
     return parent::validate($product);
 }
 /**
  * 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;
 }
Example #6
0
 /**
  * Retrieve subtotal price include tax html formated content
  *
  * @param Varien_Object $item
  * @return string
  */
 public function displaySubtotalInclTax($item)
 {
     $baseTax = $item->getTaxBeforeDiscount() ? $item->getTaxBeforeDiscount() : ($item->getTaxAmount() ? $item->getTaxAmount() : 0);
     $tax = $item->getBaseTaxBeforeDiscount() ? $item->getBaseTaxBeforeDiscount() : ($item->getBaseTaxAmount() ? $item->getBaseTaxAmount() : 0);
     return $this->displayPrices($item->getBaseRowTotal() + $baseTax, $item->getRowTotal() + $tax);
 }
Example #7
0
 /**
  * Validate Product Rule Condition
  *
  * @param Varien_Object $object
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     $op = $this->getOperator();
     $product = false;
     if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
         $product = $object->getProduct();
     } else {
         $product = Mage::getModel('catalog/product')->load($object->getProductId());
     }
     $product->setQuoteItemQty($object->getQty())->setQuoteItemPrice($object->getPrice())->setQuoteItemRowTotal($object->getBaseRowTotal());
     //Validate with attribute is is_new
     if ($this->getAttribute() == 'is_new') {
         $result = true;
         if (!$product->getNewsFromDate() && !$product->getNewsToDate()) {
             $result = false;
         } else {
             $today = new DateTime(date('Y-m-d 00:00:00'));
             if ($from = $product->getNewsFromDate()) {
                 $fromNewDate = new DateTime($from);
                 if ($today < $fromNewDate) {
                     $result = false;
                 }
             }
             if ($to = $product->getNewsToDate()) {
                 $toNewDate = new DateTime($to);
                 if ($today > $toNewDate) {
                     $result = false;
                 }
             }
         }
         $value = $this->getValueParsed();
         if ($value == 0) {
             $result = !$result;
         }
         return $result;
     }
     //validate with attribute is is_special
     if ($this->getAttribute() == 'is_special') {
         $result = true;
         if (!$product->getSpecialPrice()) {
             $result = false;
         } else {
             $today = new DateTime(date('Y-m-d 00:00:00'));
             if (!($from = $product->getSpecialFromDate())) {
                 $fromNewDate = $today;
             } else {
                 $fromNewDate = new DateTime($from);
             }
             if (!($to = $product->getSpecialToDate())) {
                 $toNewDate = $today;
             } else {
                 $toNewDate = new DateTime($to);
             }
             if ($today < $fromNewDate || $toNewDate < $today) {
                 $result = false;
             }
             $value = $this->getValueParsed();
             if ($value == 0) {
                 $result = !$result;
             }
             return $result;
         }
     }
     //validate with attribute is qty
     if ($this->getAttribute() == 'qty') {
         $result = true;
         $qty = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty();
         $value = $this->getValueParsed();
         switch ($op) {
             case '==':
             case '!=':
                 $result = $qty == $value;
                 break;
             case '>=':
             case '<':
                 $result = $qty >= $value;
                 break;
             case '<=':
             case '>':
                 $result = $qty <= $value;
                 break;
         }
         if ($op == '!=' || $op == '<' || $op == '>') {
             $result = !$result;
         }
         return $result;
     }
     //validate with attribute is qty
     if ($this->getAttribute() == 'out_of_stock') {
         $result = true;
         if ($product->isSaleable()) {
             $result = false;
         }
         if ($this->getValueParsed() == 0) {
             $result = !$result;
         }
         return $result;
     }
     //validate best seller
     if ($this->getAttribute() == 'best_seller') {
         $result = true;
         $value = $this->getValueParsed();
         // Get Best Seller product
         $storeId = Mage::app()->getStore()->getId();
         if (Mage::registry('bestSelletListId')) {
             $bestSellerId = Mage::registry('bestSelletListId');
         } else {
             $products = Mage::getResourceModel('reports/product_collection')->addOrderedQty()->setStoreId($storeId)->addStoreFilter($storeId)->setOrder('ordered_qty', 'desc')->setPageSize($value);
             Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
             //Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
             $bestSellerId = array();
             foreach ($products as $p) {
                 $bestSellerId[] = $p->getId();
             }
             if (!empty($bestSellerId)) {
                 Mage::register('bestSelletListId', $bestSellerId);
             }
         }
         if (!count($bestSellerId)) {
             $result = false;
         } else {
             $childProducts = null;
             if ($product->getTypeId() == 'configurable') {
                 $childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
             } elseif ($product->getTypeId() == 'grouped') {
                 $childProducts = Mage::getModel('catalog/product_type_grouped')->getAssociatedProducts($product);
             } elseif ($product->getTypeId() == 'bundle') {
                 $childProducts = $product->getTypeInstance(true)->getSelectionsCollection($product->getTypeInstance(true)->getOptionsIds($product), $product);
             } else {
                 if (!in_array($product->getId(), $bestSellerId)) {
                     return false;
                 }
             }
             $flag = 0;
             if (isset($childProducts)) {
                 foreach ($childProducts as $c) {
                     if (in_array($c->getId(), $bestSellerId)) {
                         $flag = 1;
                         break;
                     }
                 }
             }
             if ($flag == 0) {
                 $result = false;
             }
         }
         return $result;
     }
     if (!$product->getData($this->getAttribute()) && ('!=' == $op || '>' == $op || '<' == $op || '!{}' == $op || '!()' == $op)) {
         return false;
     }
     return parent::validate($product);
 }
Example #8
0
 /**
  * Add a usual line item with amount and qty
  *
  * @param Varien_Object $salesItem
  * @return Varien_Object
  */
 protected function _addRegularItem(Varien_Object $salesItem)
 {
     if ($this->_salesEntity instanceof Mage_Sales_Model_Order) {
         $qty = (int) $salesItem->getQtyOrdered();
         $amount = (double) $salesItem->getBasePrice();
         // TODO: nominal item for order
     } else {
         $qty = (int) $salesItem->getTotalQty();
         $amount = $salesItem->isNominal() ? 0 : (double) $salesItem->getBaseCalculationPrice();
     }
     // workaround in case if item subtotal precision is not compatible with PayPal (.2)
     $subAggregatedLabel = '';
     if ($amount - round($amount, 2)) {
         $amount = $amount * $qty;
         $subAggregatedLabel = ' x' . $qty;
         $qty = 1;
     }
     // aggregate item price if item qty * price does not match row total
     if ($amount * $qty != $salesItem->getBaseRowTotal()) {
         $amount = (double) $salesItem->getBaseRowTotal();
         $subAggregatedLabel = ' x' . $qty;
         $qty = 1;
     }
     return $this->addItem($salesItem->getName() . $subAggregatedLabel, $qty, $amount, $salesItem->getSku());
 }
 public function renderExport(Varien_Object $_item)
 {
     return Mage::helper('mageworx_customerplus')->displayPrices($_item->getBaseRowTotal() - $_item->getBaseDiscountAmount() + $_item->getBaseTaxAmount() + $_item->getBaseWeeeTaxAppliedRowAmount(), $_item->getRowTotal() - $_item->getDiscountAmount() + $_item->getTaxAmount() + $_item->getWeeeTaxAppliedRowAmount(), $_item->getOrderId());
 }
    /**
     * 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
            ->setQuoteItemQty($object->getQty())
            ->setQuoteItemPrice($object->getPrice()) // possible bug: need to use $object->getBasePrice()
            ->setQuoteItemRowTotal($object->getBaseRowTotal());

        return parent::validate($product);
    }