Поддержка серверов

CatalogProvider::shipProduct: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=437971

//    Bitrix\Catalog\Product\CatalogProvider::shipProduct()
//    /bitrix/modules/catalog/lib/product/catalogprovider.php:1413

        private static function shipProduct(array $productData, array $productStoreDataList = array())
        {
            $result = new Sale\Result();

            $useStoreControl = Catalog\Config\State::isUsedInventoryManagement();

            $productId = $productData['PRODUCT_ID'];

            $productQuantity = 0;

            if (array_key_exists('QUANTITY', $productData))
            {
                $productQuantity = $productData['QUANTITY'];
            }
            elseif (!empty($productData['QUANTITY_LIST']))
            {
                foreach ($productData['QUANTITY_LIST'] as $basketCode => $quantity)
                {
                    $productQuantity += $quantity;
                }
            }

            $needShip = ($productQuantity < 0);

            if ($useStoreControl === true)
            {
                if (empty($productStoreDataList) && $needShip)
                {
                    $result->addError(
                        new Sale\ResultError(
                            Main\Localization\Loc::getMessage(
                                "DDCT_DEDUCTION_STORE_ERROR",
                                array_merge(
                                    self::getProductCatalogInfo($productId),
                                    array("#PRODUCT_ID#" => $productId)
                                )
                            ), "DDCT_DEDUCTION_STORE_ERROR"
                        )
                    );
                    return $result;
                }

                $setQuantityList = array();
                $r = static::getSetableStoreQuantityProduct($productData, $productStoreDataList);
                if ($r->isSuccess())
                {
                    $resultData = $r->getData();
                    if (!empty($resultData['QUANTITY_LIST']))
                    {
                        $setQuantityList = $resultData['QUANTITY_LIST'];
                    }
                }
                else
                {
                    return $r;
                }

                $r = static::updateCatalogStoreAmount($setQuantityList);
                if ($r->isSuccess())
                {
                    $resultData = $r->getData();
                    if (!empty($resultData['AMOUNT_UPDATED_LIST']))
                    {
                        foreach($resultData['AMOUNT_UPDATED_LIST'] as $catalogStoreId => $catalogStoreIsUpdated)
                        {
                            if ($catalogStoreIsUpdated === true)
                            {
                                static::clearHitCache(self::CACHE_STORE_PRODUCT);
                                if ($needShip)
                                {
                                    $r = static::deleteBarcodes($productData);
                                }
                                else
                                {
                                    $r = static::addBarcodes($productData);
                                }

                                if (!$r->isSuccess())
                                {
                                    $result->addErrors($r->getErrors());
                                }
                            }
                        }
                    }
                }
                else
                {
                    return $r;
                }

                return static::shipQuantityWithStoreControl($productData);
            }
            elseif (isset($productData["CATALOG"]))
            {
                if ($productData["CATALOG"]["QUANTITY_TRACE"] == "N")
                {
                    return $result;
                }
            }

            return static::shipQuantityWithoutStoreControl($productData);

        }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение