- Модуль: 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);
}
}
}
}
}
}