Пример #1
0
 /**
  * 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');
 }
Пример #2
0
 /**
  * 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;
 }