/** * Initialize the fixture. */ protected function setUp() { parent::setUp(); // demo article $sId = $this->getTestConfig()->getShopEdition() == 'EE' ? '2275' : '2077'; $sNewId = oxUtilsObject::getInstance()->generateUId(); $this->oArticle = oxNew('oxArticle'); $this->oArticle->disableLazyLoading(); $this->oArticle->Load($sId); // making copy $this->oArticle->setId($sNewId); $this->oArticle->oxarticles__oxweight = new oxField(10, oxField::T_RAW); $this->oArticle->oxarticles__oxstock = new oxField(100, oxField::T_RAW); $this->oArticle->oxarticles__oxprice = new oxField(19, oxField::T_RAW); $this->oArticle->oxarticles__oxstockflag = new oxField(2, oxField::T_RAW); $this->oArticle->save(); // demo category $sId = $this->getTestConfig()->getShopEdition() == 'EE' ? '30e44ab82c03c3848.49471214' : '8a142c3e4143562a5.46426637'; $sNewId = oxUtilsObject::getInstance()->generateUId(); $this->oCategory = oxNew('oxBase'); $this->oCategory->Init('oxcategories'); $this->oCategory->Load($sId); // making copy $this->oCategory->setId($sNewId); $this->oCategory->save(); // assigning article to category $oO2Group = oxNew('oxobject2category'); $oO2Group->oxobject2category__oxshopid = new oxField($this->getConfig()->getShopId(), oxField::T_RAW); $oO2Group->oxobject2category__oxobjectid = new oxField($this->oArticle->getId(), oxField::T_RAW); $oO2Group->oxobject2category__oxcatnid = new oxField($this->oCategory->getId(), oxField::T_RAW); $oO2Group->save(); $this->dDefaultVAT = $this->getConfig()->getConfigParam('dDefaultVAT'); $this->getConfig()->setConfigParam('dDefaultVAT', '99'); }
/** * Retrieves the article .Throws an exception if article does not exist, * is not buyable or visible. * * @param bool $blCheckProduct checks if product is buyable and visible * @param string $sProductId product id * @param bool $blDisableLazyLoading disable lazy loading * * @throws oxArticleException exception in case of no current object product id is set * @throws oxNoArticleException exception in case if product not exitst or not visible * @throws oxArticleInputException exception if product is not buyable (stock and so on) * * @return oxArticle|oxOrderArticle */ public function getArticle($blCheckProduct = false, $sProductId = null, $blDisableLazyLoading = false) { if ($this->_oArticle === null || !$this->_oArticle->isOrderArticle() && $blDisableLazyLoading) { $sProductId = $sProductId ? $sProductId : $this->_sProductId; if (!$sProductId) { //this exception may not be caught, anyhow this is a critical exception /** @var oxArticleException $oEx */ $oEx = oxNew('oxArticleException'); $oEx->setMessage('EXCEPTION_ARTICLE_NOPRODUCTID'); throw $oEx; } $this->_oArticle = oxNew('oxArticle'); // #M773 Do not use article lazy loading on order save if ($blDisableLazyLoading) { $this->_oArticle->modifyCacheKey('_allviews'); $this->_oArticle->disableLazyLoading(); } // performance: // - skipping variants loading // - skipping 'ab' price info // - load parent field $this->_oArticle->setNoVariantLoading(true); $this->_oArticle->setLoadParentData(true); if (!$this->_oArticle->load($sProductId)) { /** @var oxNoArticleException $oEx */ $oEx = oxNew('oxNoArticleException'); $oLang = oxRegistry::getLang(); $oEx->setMessage(sprintf($oLang->translateString('ERROR_MESSAGE_ARTICLE_ARTICLE_DOES_NOT_EXIST', $oLang->getBaseLanguage()), $sProductId)); $oEx->setArticleNr($sProductId); $oEx->setProductId($sProductId); throw $oEx; } // cant put not visible product to basket (M:1286) if ($blCheckProduct && !$this->_oArticle->isVisible()) { /** @var oxNoArticleException $oEx */ $oEx = oxNew('oxNoArticleException'); $oLang = oxRegistry::getLang(); $oEx->setMessage(sprintf($oLang->translateString('ERROR_MESSAGE_ARTICLE_ARTICLE_DOES_NOT_EXIST', $oLang->getBaseLanguage()), $this->_oArticle->oxarticles__oxartnum->value)); $oEx->setArticleNr($sProductId); $oEx->setProductId($sProductId); throw $oEx; } // cant put not buyable product to basket if ($blCheckProduct && !$this->_oArticle->isBuyable()) { /** @var oxArticleInputException $oEx */ $oEx = oxNew('oxArticleInputException'); $oEx->setMessage('ERROR_MESSAGE_ARTICLE_ARTICLE_NOT_BUYABLE'); $oEx->setArticleNr($sProductId); $oEx->setProductId($sProductId); throw $oEx; } } return $this->_oArticle; }