Отключаем для конкретной воронки складской учет

Как отключить складской учет для определенного вида товаров и сделок CRM? Часто возникает проблема, когда разные отделы в одной компании работают со складским и без складского учета. Когда учет включен по-умолчанию, закрыть сделки с отрицательным количеством сделок нельзя.

Выход прост: мы преобразуем для этой сделки товары в услуги.

Для начала определим состав номенклатуры в сделке.


$CRestProductList = CRest::call(
    'crm.item.productrow.list',
    [
        'filter' => [
            "=ownerType" => 'D',
            "=ownerId" => $dealId,
        ],
        'order' => [
            'id' => "desc"
        ]
    ]
);
    

Далее, если товар имеет торговое предложение, преобразуем родительский товар в услугу. И перенесем в него: налоговую ставку, включенность налога в цену из торгового предложения.


    foreach ($productRowsList as &$productRow) {
        $productId = $productRow['productId'];
        $product = CCatalogProduct::GetByIDEx($productId);
        $vatId = "";
        $vatIncl = "";
        if(isset($product["PRODUCT"])) {
            $vatId = $product["PRODUCT"]["VAT_ID"];
            $vatIncl = $product["PRODUCT"]["VAT_INCLUDED"];
        }
        if(isset($product['PROPERTIES']['CML2_LINK']['VALUE'])) {
            $productId = $product['PROPERTIES']['CML2_LINK']['VALUE'];

            $productRow["productId"] = $productId;
            \Bitrix\Catalog\Model\Product::update($productId, [
                'TYPE' => \Bitrix\Catalog\ProductTable::TYPE_SERVICE,
            ]);
            \Bitrix\Catalog\Model\Product::update($productId, [
                'VAT_ID' => $vatId,
                'VAT_INCLUDED' => $vatIncl,
                'AVAILABLE' => 'Y',
            ]);

        } else {
            \Bitrix\Catalog\Model\Product::update($productId, [
                'TYPE' => \Bitrix\Catalog\ProductTable::TYPE_SERVICE,
                'AVAILABLE' => 'Y',
            ]);
        }
        $productRow["id"] = "";
    }

    

И обновим товары сделки. 


    $CRestProductListSet = CRest::call(
        'crm.item.productrow.set',
        [
            'ownerType' => 'D',
            'ownerId' => $dealId,
            'productRows' => $productRowsList
        ]
    );
    

Готово.

Связаться с нами

Свяжитесь с нами удобным для вас способом

Наши контакты
Написать нам