Учет наличия товаров на складах поставщиков

Востребовалось тут в интернет-магазине сделать учет наличия товаров не только на собственном складе, но и на складах поставщиков, где его можно шустро перехватить в случае необходимости.

Дело было в УТ 11, где такой возможности, странно, но факт, нет. Есть разные предложения по «закостыливанию», к примеру, сделать отдельный склад в 1С и заводить туда товары через инвентаризацию, но это изничтожит весь учет в программе, или есть вариант скопировать обработки склада в конфигурации, но это тоже не айс, т.к. требует сильных изменений.

Тогда решили сделать отдельный ИБ в Битрикс, где будет всего два поля — Название, оно же артикул товара, и наличие на складах поставщика.

Далее в работе компонентов битрикса по определению наличия товара добавили вызов нашего компонента:

$APPLICATION->IncludeComponent("spl:instock","",Array("SKU" => $arResult["DISPLAY_PROPERTIES"]["CML2_ARTICLE"]["VALUE"]));

Само тело компонента:

<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$search_in=array(12,13);//список ИБ, где искать наличие

if(CModule::IncludeModule("iblock")) {
    foreach ($search_in as $search_block_id){
        $arSelect = Array("ID","NAME","PROPERTY_INSTOCK");
        $arFilter = Array("IBLOCK_ID"=>$search_block_id,"NAME"=>$arParams['SKU']);
        $arCargo = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);

        if ($ob = $arCargo->GetNextElement()) {
            $arFields = $ob->GetFields();
            $arProps = $ob->GetProperties();
            if ($arFields['PROPERTY_INSTOCK_VALUE']>0)break;
        }
    }
    return $arFields['PROPERTY_INSTOCK_VALUE'];
}
?>

Один комментарий к “Учет наличия товаров на складах поставщиков”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *