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