• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/component/usestore.php
  • Класс: BitrixCatalogComponentUseStore
  • Вызов: UseStore::isQuantityInconsistent
static function isQuantityInconsistent(): bool
{
	$connection = Application::getConnection();

	$productTypes = new SqlExpression('(?i, ?i)', ProductTable::TYPE_PRODUCT, ProductTable::TYPE_OFFER);
	$query = $connection->query("
		select cp.ID, (cp.QUANTITY - (sum(csp.AMOUNT) - sum(csp.QUANTITY_RESERVED))) as QUANTITY_DIFFERENCE from b_catalog_product cp
		inner join b_catalog_store_product csp on cp.ID = csp.PRODUCT_ID
		inner join b_catalog_store cs on cs.ID = csp.STORE_ID
		where cp.TYPE in {$productTypes} and (cs.ACTIVE = 'Y')
		group by cp.ID
		having QUANTITY_DIFFERENCE != 0
		limit 1
	");

	if ($query->fetch())
	{
		return true;
	}

	$query = $connection->query("
		select cp.ID, cp.QUANTITY from b_catalog_product cp
		left outer join b_catalog_store_product csp on cp.ID = csp.PRODUCT_ID
		where cp.TYPE in {$productTypes} and csp.PRODUCT_ID is null and cp.QUANTITY != 0
		limit 1
	");

	if ($query->fetch())
	{
		return true;
	}

	return false;
}