Ejemplo n.º 1
0
 /**
  * @param int $productId
  * @param int $quantity
  * @param int $userId
  * @param string $siteId
  * @param array $columns
  * @return array
  * @throws SystemException
  */
 public static function getProductDetails($productId, $quantity, $userId, $siteId, array $columns = array())
 {
     $stored = true;
     $result = OrderEdit::getProductDetails($productId, $userId, $siteId);
     if ($result === false) {
         $stored = false;
     }
     if ($result === false) {
         if (self::$catalogIncluded === null) {
             self::$catalogIncluded = Main\Loader::includeModule('catalog');
         }
         if (!self::$catalogIncluded) {
             return array();
         }
         $result = self::getProductDataToFillBasket($productId, $quantity, $userId, $siteId, implode(",", array_keys($columns)));
         if (!empty($result) && is_array($result)) {
             if (isset($result['DISCOUNT_PRICE'])) {
                 $result['DISCOUNT_PRICE'] = roundEx($result['DISCOUNT_PRICE'], SALE_VALUE_PRECISION);
             }
             if (isset($result['PRICE'])) {
                 $result['PRICE'] = roundEx($result['PRICE'], SALE_VALUE_PRECISION);
             }
             if (isset($result['PRICE_BASE'])) {
                 $result['PRICE_BASE'] = roundEx($result['PRICE_BASE'], SALE_VALUE_PRECISION);
             }
         }
         static $proxyProductData = array();
         if (!empty($proxyProductData[$productId]) && is_array($proxyProductData[$productId])) {
             $productInfo = $proxyProductData[$productId];
         } else {
             $productInfo = \CCatalogSku::getProductInfo($productId);
             $proxyProductData[$productId] = $productInfo;
         }
         if ($productInfo != false) {
             $result["OFFERS_IBLOCK_ID"] = $productInfo["OFFER_IBLOCK_ID"];
             $result["IBLOCK_ID"] = $productInfo["IBLOCK_ID"];
             $result["PRODUCT_ID"] = $productInfo["ID"];
         } else {
             $result["OFFERS_IBLOCK_ID"] = 0;
             $result["IBLOCK_ID"] = $result["PRODUCT_PROPS_VALUES"]["IBLOCK_ID"];
             $result["PRODUCT_ID"] = $result["PRODUCT_PROPS_VALUES"]["ID"];
         }
     }
     if (!$stored) {
         OrderEdit::setProductDetails($productId, $userId, $siteId, $result);
     }
     return $result;
 }