if ($arFields['USER_AUTH'] == "'Y'") {
$registeredUserID = $arFields['USER_ID'];
} else {
$registeredUserID = Site::createUser([
'NAME' => $name,
'PERSONAL_PHONE' => $phone,
'EMAIL' => $email,
]);
}
if (!$registeredUserID) {
array("STATUS" => "ERROR", "MESSAGE" => "Ошибка при оформлении заказа");
}
if(intval($registeredUserID)>0){//все ок и мы получили пользователя, можем работать дальше
$fuser=\Bitrix\Sale\Fuser::getIdByUserId($registeredUserID);
\Bitrix\Sale\DiscountCouponsManager::init();
//очищаем список купонов для данного хита
\Bitrix\Sale\DiscountCouponsManager::clear();
//удаляем если что-то есть в корзине
\CSaleBasket::DeleteAll($fuser,false);
// Получение корзины для текущего пользователя
$basket = \Bitrix\Sale\Basket::loadItemsForFUser( $fuser, 's1' );
\Bitrix\Sale\DiscountCouponsManager::add($coupon);
$item = $basket->createItem("catalog", $productId);
$item->setFields($product);
...
//Сохранение изменений корзины
$basket->save();
//теперь создаем заказ к которому привяжем готовую корзину
$order = \Bitrix\Sale\Order::create($siteId, $registeredUserID);
...
//купон уже был применен, к текущей корзине пользователя, поэтому в заказе использовать уже не нужно будет
$result = $order->save();
}
просто в админке все работает
if ($result->isSuccess()) {
$elementId=$result->getId();
\CIBlockElement::SetPropertyValuesEx($elementId, false, ['MANAGER'=>$this->data['manager'] ]);
// далее пересохраняем объект еще раз
}
вот метод Generate, делаем в нем распринтовку при сохранении скидки
получаем
нет ничего лишнего.
По поводу что легко, ладно, действительно легко для того кто знает