define("NO_KEEP_STATISTIC", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// Количество товара в оплаченных заказах
use \Bitrix\Sale;
use Bitrix\Main\Type\DateTime;
echo "Количество товара в оплаченных заказах со статусом выполнен(чтобы исключить возвраты)
";
$date="2022-01-01";
$objDateTime = DateTime::createFromPhp(new \DateTime($date));
// берем все оплаченные и не отмененные заказы
$arOrders = array();
$dbRes = \Bitrix\Sale\Order::getList([
'select' => ['ID', 'PAYED'],
'filter' => [
//">=DATE_INSERT" => $objDateTime->toString(), //по дате
"STATUS_ID" => "F", //по статусу
"PAYED" => "Y", //оплаченные
"CANCELED" =>"N", //не отмененные
],
'order' => ['ID' => 'ASC']
]);
while ($order = $dbRes->fetch())
{
$arOrders[] = $order["ID"];
}
// берем все товары корзин заказов $arOrders
$arProducts = array();
$dbRes = \Bitrix\Sale\Basket::getList([
'select' => ['*'],
'filter' => [
'=ORDER_ID' => $arOrders,
'=LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
]
]);
while ($item = $dbRes->fetch())
{
if(intval($item['ORDER_ID'])>0)
{
$arProducts[$item["PRODUCT_ID"]]++;
}
}
// устанавливаем количество покупок в свойство PRODUCT_ORDERS_COUNT для вывода в карточке товара
foreach($arProducts as $id => $count)
{
CIBlockElement::SetPropertyValuesEx($id, 2, array("PRODUCT_ORDERS_COUNT" => $count));
}
Теги: \Bitrix\Sale\Basket::getList, \Bitrix\Sale\Order::getList, заказы битрикс, корзины битрикс, d7