/** * * @loadFixture testPrepareCart * @dataProvider provider__testPrepareCartObserverQty * The main goul of this test is to check if the error will be araised if items are added one by one * */ public function testPrepareCartObserverQty($dealId, $qty, $productId, $expectedPrice, $infoBuyRequest, $count, $uid) { $deal = Mage::getModel('collpur/deal')->load($dealId); /* set deal id in request */ Mage::app()->getRequest()->setParam('deal_id', $dealId); Mage::app()->getRequest()->setParam('product', $productId); $observer = new Varien_Object(); $buyRequest = new Varien_Object(); $product = Mage::getModel('catalog/product')->load($productId); $buyRequest->setQty($qty); $observer->setBuyRequest($buyRequest); $observer->setProduct($product); /* set quote id and replace existing one in session */ $quote = $this->getModelMock('sales/quote'); $quoteItemsCollection = array(); for ($i = 0; $i < $count; $i++) { $item = $this->getModelMock('sales/quote_item'); $optionByCode = new Varien_Object(); $optionByCode->setValue($infoBuyRequest); $item->expects($this->any())->method('getOptionByCode')->will($this->returnValue($optionByCode)); $item->expects($this->any())->method('getQty')->will($this->returnValue(1)); $quoteItemsCollection[] = $item; } $quote->expects($this->any())->method('getId')->will($this->returnValue(1)); $quote->expects($this->any())->method('getItemsCollection')->will($this->returnValue($quoteItemsCollection)); Mage::getSingleton('checkout/session')->replaceQuote($quote); if ($uid == '002') { $this->setExpectedException('Mage_Checkout_Exception'); } Mage::getModel('collpur/observer')->prepareCart($observer); }
public function validate(Varien_Object $object) { // for optimization if we no conditions if (!$this->getConditions()) { return true; } $origProduct = null; if ($object->getHasChildren() && $object->getProductType() == 'configurable') { //remember original product $origProduct = $object->getProduct(); $origSku = $object->getSku(); foreach ($object->getChildren() as $child) { // only one itereation. $categoryIds = array_merge($child->getProduct()->getCategoryIds(), $origProduct->getCategoryIds()); $categoryIds = array_unique($categoryIds); $object->setProduct($child->getProduct()); $object->setSku($child->getSku()); $object->getProduct()->setCategoryIds($categoryIds); } } $result = @Mage_Rule_Model_Condition_Combine::validate($object); if ($origProduct) { // restore original product $object->setProduct($origProduct); $object->setSku($origSku); } return $result; }
/** * @test * @loadFixture questions */ public function deleteProductQuestionsForProduct() { $observer = new Varien_Object(); $event = new Varien_Object(); $store = Mage::getModel('core/store'); $product = Mage::getModel('catalog/product'); $product->setId(12); $product->setStore($store); $event->setProduct($product); $observer->setEvent($event); $this->assertEquals(2, $this->_data->deleteProductQuestionsForProduct($observer)); }
/** * 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); }
/** * 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); }
/** * Prepare and set request to this instance * * @param Mage_Shipping_Model_Rate_Request $request * @return Mage_Usa_Model_Shipping_Carrier_Ups */ public function setRequest(Mage_Shipping_Model_Rate_Request $request) { $this->_request = $request; $r = new Varien_Object(); if ($request->getLimitMethod()) { $r->setAction($this->getCode('action', 'single')); $r->setProduct($request->getLimitMethod()); } else { $r->setAction($this->getCode('action', 'all')); $r->setProduct('GND' . $this->getConfigData('dest_type')); } if ($request->getUpsPickup()) { $pickup = $request->getUpsPickup(); } else { $pickup = $this->getConfigData('pickup'); } $r->setPickup($this->getCode('pickup', $pickup)); if ($request->getUpsContainer()) { $container = $request->getUpsContainer(); } else { $container = $this->getConfigData('container'); } $r->setContainer($this->getCode('container', $container)); if ($request->getUpsDestType()) { $destType = $request->getUpsDestType(); } else { $destType = $this->getConfigData('dest_type'); } $r->setDestType($this->getCode('dest_type', $destType)); if ($request->getOrigCountry()) { $origCountry = $request->getOrigCountry(); } else { $origCountry = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID, $request->getStoreId()); } $r->setOrigCountry(Mage::getModel('directory/country')->load($origCountry)->getIso2Code()); if ($request->getOrigRegionCode()) { $origRegionCode = $request->getOrigRegionCode(); } else { $origRegionCode = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_REGION_ID, $request->getStoreId()); } if (is_numeric($origRegionCode)) { $origRegionCode = Mage::getModel('directory/region')->load($origRegionCode)->getCode(); } $r->setOrigRegionCode($origRegionCode); if ($request->getOrigPostcode()) { $r->setOrigPostal($request->getOrigPostcode()); } else { $r->setOrigPostal(Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_ZIP, $request->getStoreId())); } if ($request->getOrigCity()) { $r->setOrigCity($request->getOrigCity()); } else { $r->setOrigCity(Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_CITY, $request->getStoreId())); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } //for UPS, puero rico state for US will assume as puerto rico country if ($destCountry == self::USA_COUNTRY_ID && ($request->getDestPostcode() == '00912' || $request->getDestRegionCode() == self::PUERTORICO_COUNTRY_ID)) { $destCountry = self::PUERTORICO_COUNTRY_ID; } // For UPS, Guam state of the USA will be represented by Guam country if ($destCountry == self::USA_COUNTRY_ID && $request->getDestRegionCode() == self::GUAM_REGION_CODE) { $destCountry = self::GUAM_COUNTRY_ID; } $r->setDestCountry(Mage::getModel('directory/country')->load($destCountry)->getIso2Code()); $r->setDestRegionCode($request->getDestRegionCode()); if ($request->getDestPostcode()) { $r->setDestPostal($request->getDestPostcode()); } else { } $weight = $this->getTotalNumOfBoxes($request->getPackageWeight()); $weight = $this->_getCorrectWeight($weight); $r->setWeight($weight); if ($request->getFreeMethodWeight() != $request->getPackageWeight()) { $r->setFreeMethodWeight($request->getFreeMethodWeight()); } $r->setValue($request->getPackageValue()); $r->setValueWithDiscount($request->getPackageValueWithDiscount()); if ($request->getUpsUnitMeasure()) { $unit = $request->getUpsUnitMeasure(); } else { $unit = $this->getConfigData('unit_of_measure'); } $r->setUnitMeasure($unit); $r->setIsReturn($request->getIsReturn()); $this->_rawRequest = $r; return $this; }
private function _getProductInformationWork($item, $getInfo, $hasChildren, $children) { $getProduct = in_array('product', $getInfo); $getImage = in_array('image_url', $getInfo); $getLink = in_array('product_url', $getInfo); $result = new Varien_Object(); $result->setProductId((int) $item->getProductId()); $result->setIsConfigurable(false); $result->setIsBundle(false); $result->setSku($item->getSku()); if (Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE == $item->getProductType() && $hasChildren) { $result->setIsConfigurable(true); $result->setParentId($result->getProductId()); $result->setProductId((int) $children[0]->getProductId()); } if (Mage_Catalog_Model_Product_Type::TYPE_BUNDLE == $item->getProductType() && $hasChildren) { $result->setIsBundle(true); $product = Mage::getModel('catalog/product')->load($result->getProductId()); $result->setSku($product->getSku()); $result->setProduct($product); } else { if ($getProduct || $getImage || $getLink && !$result->getIsConfigurable()) { $result->setProduct(Mage::getModel('catalog/product')->load($result->getProductId())); } } if ($getLink) { $result->setProductUrl($this->getProductUrl($result->getIsConfigurable() ? Mage::getModel('catalog/product')->load($result->getParentId()) : $result->getProduct())); } if ($getImage) { $result->setImageUrl($this->getProductImage($result['product'])); } return $result; }
public function setRequest(Mage_Shipping_Model_Rate_Request $request) { $this->_request = $request; $r = new Varien_Object(); if ($request->getLimitMethod()) { $r->setAction($this->getCode('action', 'single')); $r->setProduct($request->getLimitMethod()); } else { $r->setAction($this->getCode('action', 'all')); $r->setProduct('GNDRES'); } if ($request->getUpsPickup()) { $pickup = $request->getUpsPickup(); } else { $pickup = $this->getConfigData('pickup'); } $r->setPickup($this->getCode('pickup', $pickup)); if ($request->getUpsContainer()) { $container = $request->getUpsContainer(); } else { $container = $this->getConfigData('container'); } $r->setContainer($this->getCode('container', $container)); if ($request->getUpsDestType()) { $destType = $request->getUpsDestType(); } else { $destType = $this->getConfigData('dest_type'); } $r->setDestType($this->getCode('dest_type', $destType)); if ($request->getOrigCountry()) { $origCountry = $request->getOrigCountry(); } else { $origCountry = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore()); } $r->setOrigCountry(Mage::getModel('directory/country')->load($origCountry)->getIso2Code()); if ($request->getOrigPostcode()) { $r->setOrigPostal($request->getOrigPostcode()); } else { $r->setOrigPostal(Mage::getStoreConfig('shipping/origin/postcode', $this->getStore())); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } $r->setDestCountry(Mage::getModel('directory/country')->load($destCountry)->getIso2Code()); if ($request->getDestPostcode()) { $r->setDestPostal($request->getDestPostcode()); } else { } $r->setWeight($request->getPackageWeight()); if ($request->getFreeMethodWeight() != $request->getPackageWeight()) { $r->setFreeMethodWeight($request->getFreeMethodWeight()); } $r->setValue($request->getPackageValue()); if ($request->getUpsUnitMeasure()) { $unit = $request->getUpsUnitMeasure(); } else { $unit = $this->getConfigData('unit_of_measure'); } $r->setUnitMeasure($unit); $this->_rawRequest = $r; return $this; }
/** * Load and collect any other product info that we may need * * @param Mage_Catalog_Model_Product $product * @param array $productInfo * @return array */ protected function _collectAdditionalProductInfo($product, $productInfo) { //can be overridden and used in productType-specific classes to get more detailed attributes //allow for collecting additional data outside of the renderer $transportObject = new Varien_Object(); $transportObject->setProductInfo($productInfo); $transportObject->setProduct($product); Mage::dispatchEvent(self::EVENT_COLLECT_ADDITIONAL_INFO, array('transport_object' => $transportObject)); $productInfo = $transportObject->getProductInfo(); return $productInfo; }
public function convertOrderToQuote($observer) { $order = $observer->getEvent()->getOrder(); $quote = $observer->getEvent()->getQuote(); $documentIds = array(); foreach ($order->getItemsCollection() as $orderItem) { $documentIds[$orderItem->getProductId()][] = $orderItem->getProductOptionByCode('chili_document_id'); } foreach ($quote->getAllItems() as $quoteItem) { $documentId = $documentIds[$quoteItem->getProduct()->getId()][0]; if ($documentId) { $option = new Varien_Object(); $option->setProduct($quoteItem->getProduct()); $option->setCode('chili_document_id'); $option->setValue($documentId); $quoteItem->addOption($option); } } }
public function setRequest(Mage_Shipping_Model_Rate_Request $request) { $this->_request = $request; $r = new Varien_Object(); if ($request->getLimitMethod()) { $r->setAction($this->getCode('action', 'single')); $r->setProduct($request->getLimitMethod()); } else { $r->setAction($this->getCode('action', 'all')); $r->setProduct('GND' . $this->getConfigData('dest_type')); } if ($request->getUpsPickup()) { $pickup = $request->getUpsPickup(); } else { $pickup = $this->getConfigData('pickup'); } $r->setPickup($this->getCode('pickup', $pickup)); if ($request->getUpsContainer()) { $container = $request->getUpsContainer(); } else { $container = $this->getConfigData('container'); } $r->setContainer($this->getCode('container', $container)); if ($request->getUpsDestType()) { $destType = $request->getUpsDestType(); } else { $destType = $this->getConfigData('dest_type'); } $r->setDestType($this->getCode('dest_type', $destType)); if ($request->getOrigCountry()) { $origCountry = $request->getOrigCountry(); } else { $origCountry = AO::getStoreConfig('shipping/origin/country_id', $this->getStore()); } $r->setOrigCountry(AO::getModel('directory/country')->load($origCountry)->getIso2Code()); if ($request->getOrigRegionCode()) { $origRegionCode = $request->getOrigRegionCode(); } else { $origRegionCode = AO::getStoreConfig('shipping/origin/region_id', $this->getStore()); if (is_numeric($origRegionCode)) { $origRegionCode = AO::getModel('directory/region')->load($origRegionCode)->getCode(); } } $r->setOrigRegionCode($origRegionCode); if ($request->getOrigPostcode()) { $r->setOrigPostal($request->getOrigPostcode()); } else { $r->setOrigPostal(AO::getStoreConfig('shipping/origin/postcode', $this->getStore())); } if ($request->getOrigCity()) { $r->setOrigCity($request->getOrigCity()); } else { $r->setOrigCity(AO::getStoreConfig('shipping/origin/city', $this->getStore())); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } //for UPS, puero rico state for US will assume as puerto rico country if ($destCountry == self::USA_COUNTRY_ID && ($request->getDestPostcode() == '00912' || $request->getDestRegionCode() == self::PUERTORICO_COUNTRY_ID)) { $destCountry = self::PUERTORICO_COUNTRY_ID; } $r->setDestCountry(AO::getModel('directory/country')->load($destCountry)->getIso2Code()); $r->setDestRegionCode($request->getDestRegionCode()); if ($request->getDestPostcode()) { $r->setDestPostal($request->getDestPostcode()); } else { } $weight = $this->getTotalNumOfBoxes($request->getPackageWeight()); $r->setWeight($weight); if ($request->getFreeMethodWeight() != $request->getPackageWeight()) { $r->setFreeMethodWeight($request->getFreeMethodWeight()); } $r->setValue($request->getPackageValue()); $r->setValueWithDiscount($request->getPackageValueWithDiscount()); if ($request->getUpsUnitMeasure()) { $unit = $request->getUpsUnitMeasure(); } else { $unit = $this->getConfigData('unit_of_measure'); } $r->setUnitMeasure($unit); $this->_rawRequest = $r; return $this; }