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

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

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

<?php 
//    /bitrix/modules/catalog/lib/product/catalogprovider.phpCatalogProvider::shipProduct()
//    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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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