Связаться с нами
Как отключить складской учет для определенного вида товаров и сделок 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
]
);
Готово.