• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/adv/auto.php
  • Класс: BitrixSeoAdvAuto
  • Вызов: Auto::checkQuantity
static function checkQuantity($ID, $productFields)
{
	$checkNeed = (
		isset($productFields['QUANTITY'])
		|| isset($productFields['QUANTITY_TRACE'])
		|| isset($productFields['CAN_BUY_ZERO'])
	);

	if (!$checkNeed)
	{
		return;
	}

	$productIterator = ProductTable::getList(array(
		'filter' => array('=ID' => $ID),
		'select' => array('QUANTITY', 'QUANTITY_TRACE', 'CAN_BUY_ZERO'),
	));
	$product = $productIterator->fetch();
	if($product)
	{
		if($product["QUANTITY_TRACE"] == "Y" && $product['CAN_BUY_ZERO'] == 'N')
		{
			$linkIterator = LinkTable::getList(array(
				"filter" => array(
					"=LINK_TYPE" => LinkTable::TYPE_IBLOCK_ELEMENT,
					"=LINK_ID" => $ID,
					array(
						array(
							"=BANNER.AUTO_QUANTITY_OFF" => YandexBannerTable::ACTIVE,
						),
						array(
							"=BANNER.AUTO_QUANTITY_ON" => YandexBannerTable::ACTIVE,
						),
						'LOGIC' => "OR",
					),
				),
				"select" => array(
					"BANNER_ID",
					"AUTO_QUANTITY_ON" => "BANNER.AUTO_QUANTITY_ON",
					"AUTO_QUANTITY_OFF" => "BANNER.AUTO_QUANTITY_OFF",
				),
			));

			$zeroQuantity = $product['QUANTITY'] <= 0;

			$linkIdMark = array();
			$linkIdUnMark = array();
			while($link = $linkIterator->fetch())
			{
				$linkIdMark[] = $link["BANNER_ID"];

				if(
					$zeroQuantity && $link["AUTO_QUANTITY_ON"] == YandexBannerTable::MARKED
					|| !$zeroQuantity && $link["AUTO_QUANTITY_OFF"] == YandexBannerTable::MARKED
				)
				{
					$linkIdUnMark[] = $link["BANNER_ID"];
				}
			}

			if(count($linkIdMark) > 0)
			{
				if($zeroQuantity)
				{
					YandexBannerTable::markStopped($linkIdMark);
				}
				else
				{
					YandexBannerTable::markResumed($linkIdMark);
				}

				if(count($linkIdUnMark) > 0)
				{
					if($zeroQuantity)
					{
						YandexBannerTable::unMarkResumed($linkIdUnMark);
					}
					else
					{
						YandexBannerTable::unMarkStopped($linkIdUnMark);
					}
				}
			}
		}
	}
}