Как получить товары со скидкой, которые заданны с помощью условий?

Как получить товары со скидкой, которые заданны с помощью условий ?

<?php

 $dbProductDiscounts = CCatalogDiscount::GetList(
            array("SORT" => "ASC"),
            array(
                "SITE_ID" => SITE_ID,
                "ACTIVE" => "Y",
                "!>ACTIVE_FROM" => $DB->FormatDate(date("Y-m-d H:i:s"),
                "YYYY-MM-DD HH:MI:SS",
                CSite::GetDateFormat("FULL")),
                $DB->FormatDate(date("Y-m-d H:i:s"),
                "YYYY-MM-DD HH:MI:SS",
                CSite::GetDateFormat("FULL")),
                "!<ACTIVE_TO" => $DB->FormatDate(date("Y-m-d H:i:s"),
                "YYYY-MM-DD HH:MI:SS",
                CSite::GetDateFormat("FULL")),
                $DB->FormatDate(date("Y-m-d H:i:s"),
                "YYYY-MM-DD HH:MI:SS",
                CSite::GetDateFormat("FULL")),
                
            ),
                false,
                false,
            array(
                "ID", "CONDITIONS"
            )
        );

        while ($arProductDiscounts = $dbProductDiscounts->Fetch()) {
        }
?>
  • Вопрос задан
  • 2379 просмотров
Пригласить эксперта
Ответы на вопрос 2
gromdron
@gromdron
Работаю с Bitrix24
Если Вы используете только товарный маркетинг то эта схема еще может прокатиться, но вот с правилами корзины это уже не прокатит.

Дело в том, что в товарном маркетинге (устарел), использовались реляции к товарам, а вот в правилах корзины уже нет.
Правила корзины применяются исходя из значений указанных в корзине (спс КЭП) и до момента формирования заказа их нет (т.е. нужно создать временный заказ, выполнить его просчет и Вы получите все товары, к которым применены скидки, но увы не поймете какие именно).
Ответ написан
Logic87
@Logic87
Программист/администратор сайтов на 1С-Битрикс.
$discountIds = [];
$discountIterator = Bitrix\Sale\Internals\DiscountTable::getList([
	'select' => ["ID", "ACTIVE_FROM", "ACTIVE_TO", "CONDITIONS_LIST", "ACTIONS_LIST"],
	'filter' => ['ACTIVE' => 'Y', "USE_COUPONS"=>"N", "DISCOUNT_TYPE"=>"P", [
		"LOGIC" => "OR",
		[
			"<=ACTIVE_FROM"=>$DB->FormatDate(date("Y-m-d H:i:s"),"YYYY-MM-DD HH:MI:SS",\CSite::GetDateFormat("FULL")),
			">=ACTIVE_TO"=>$DB->FormatDate(date("Y-m-d H:i:s"),"YYYY-MM-DD HH:MI:SS",\CSite::GetDateFormat("FULL"))
		],
		[
			"=ACTIVE_FROM"=>false,
			">=ACTIVE_TO"=>$DB->FormatDate(date("Y-m-d H:i:s"),"YYYY-MM-DD HH:MI:SS",\CSite::GetDateFormat("FULL"))
		],
		[
			"<=ACTIVE_FROM"=>$DB->FormatDate(date("Y-m-d H:i:s"),"YYYY-MM-DD HH:MI:SS",\CSite::GetDateFormat("FULL")),
			"=ACTIVE_TO"=>false
		],
		[
			"=ACTIVE_FROM"=>false,
			"=ACTIVE_TO"=>false
		],
	]],
]);
while ($discount = $discountIterator->fetch()) {
	$discountIds[$discount['ID']] = $discount;
	$discountProducts[] = $discount["CONDITIONS_LIST"]["CHILDREN"][0]["CHILDREN"][0]["DATA"]["value"][0];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы