@Zzpro

Как изменить товар после оформления заказа?

Стоит задача вывести сколько человек купило товар.

По сколько необходимо, что бы можно было количество задавать по умолчанию или менять, хочу сделать через свойство товара и после каждого заказа добавлять +1

На сколько я понял, требуется в init.php написать код который изменит свойство товара после оформленного заказа. Но не могу найти как сделать что бы срабатывал код после оформленного заказа.

Если у кого то есть подобный код или можете накидать буду признателен.
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
anton99zel
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Держи очень плохую кашу, которую не проверял. Дорабатывай.
AddEventHandler("sale", "OnSaleStatusOrder", Array("Zzpro", "habr")); 
CModule::IncludeModule('sale');
class Zzpro
{ 
function habr($ID, $val)
{if ($val == "F") { 
//F замени на статус заказа при котором должно происходить действие, в моем случае это доставлен
use Bitrix\Sale;
$order = Sale\Order::load($ID);
$basket = \Bitrix\Sale\Order::load($ID)->getBasket();
//загрузили заказ, смотрим его состав
foreach ($basket as $basketItem) {
$dbItem = \Bitrix\Iblock\ElementTable::getList(array(
    'select' => array('ID', 'IBLOCK_ID', 'NAME'),
    'filter' => array('ID' => $basketItem->getProductId()),
    'limit' => 10,
    'order' => array('TIMESTAMP_X' => 'ASC')
));
while ($arItem = $dbItem->fetch()) {
//echo $arItem[ID];
//echo $basketItem->getQuantity();
//получили ID товара и количество
$db_props = CIBlockElement::GetProperty(8, $arItem[ID], Array("CODE"=>"KUPLENO"));
//8 это твой инфоблок, KUPLENO это код твоего свойства, нам нужно получить кол-во ранее записанное
if($ar_props = $db_props->Fetch()) $KUPLENO = IntVal($ar_props["VALUE"]);
//Берем прежнее значение, и добавляем сколько куплено
//почему не +1? потому что могли же купить 10))
$property_value = $KUPLENO + $basketItem->getQuantity() ;
CIBlockElement::SetPropertyValuesEx($arItem[ID], false, array($property_id => $property_value));
//запишем в свойства товара новое значение
//$property_id это id свойства KUPLENO
}
}}};
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexeyCaTHaR
@AlexeyCaTHaR
А не проще ли тогда повесить обработчик на смену статуса заказа в Завершён(нам же нужно только успешные заказы, а не все оформленные)? Потом смотреть корзину заказа и количество товара и потом обновлять свойство на нужное число.

Ну или как вариант, повесить скрипт по расписанию, который будет собирать информацию по всем проданным товарам и хранить где\то обновлять данные у всех отслеживаемых товаров
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы