diff --git a/app/code/community/Oyst/OneClick/Model/Catalog.php b/app/code/community/Oyst/OneClick/Model/Catalog.php index aa51ec4b..c7eb103f 100644 --- a/app/code/community/Oyst/OneClick/Model/Catalog.php +++ b/app/code/community/Oyst/OneClick/Model/Catalog.php @@ -32,7 +32,7 @@ class Oyst_OneClick_Model_Catalog extends Mage_Core_Model_Abstract Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE, Mage_Catalog_Model_Product_Type::TYPE_GROUPED, //Mage_Catalog_Model_Product_Type::TYPE_BUNDLE, - //Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL, + Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL, //Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE, ); diff --git a/app/code/community/Oyst/OneClick/Model/OneClick/ApiWrapper.php b/app/code/community/Oyst/OneClick/Model/OneClick/ApiWrapper.php index 4be602d3..9a391c20 100644 --- a/app/code/community/Oyst/OneClick/Model/OneClick/ApiWrapper.php +++ b/app/code/community/Oyst/OneClick/Model/OneClick/ApiWrapper.php @@ -76,6 +76,7 @@ public function authorizeOrder($dataFormated) } $orderParams = $this->getOneClickOrderParams(); + $orderParams->setIsMaterialized($this->productsAreMaterialized($oystProducts)); $context = $this->getContext(); try { @@ -163,4 +164,27 @@ private function getContext() return $context; } + + /** + * Check if all products are materialized. + * + * @param $oystProducts + * + * @return bool + */ + private function productsAreMaterialized($oystProducts) + { + $productModel = Mage::getModel('catalog/product'); + $materialised = false; + + foreach ($oystProducts as $oystProduct) { + $product = $productModel->load($oystProduct->reference); + + if ($product->getTypeId() !== Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL) { + $materialised = true; + } + } + + return $materialised; + } } diff --git a/skin/frontend/base/default/js/oyst/oneclick.js b/skin/frontend/base/default/js/oyst/oneclick.js index ef37e33c..4c5cfd07 100644 --- a/skin/frontend/base/default/js/oyst/oneclick.js +++ b/skin/frontend/base/default/js/oyst/oneclick.js @@ -35,6 +35,7 @@ function oystOneClick(productTypeId, oneClickUrl, isProductAddtocartFormValidate var productId, quantity, configurableProductChildId, superGroupEl, productsEl; switch (productTypeId) { case "simple": + case "virtual": // [Hook] Custom function allow anyone to use custom function to retrieve product id productId = "function" === typeof customGetProductId ? customGetProductId() :