Добавление свойств товара в корзину Битрикс

Иногда требуется отправить в 1с какую-либо дополнительную информацию о товаре в заказе, или же пересчитать цену товара в корзине, или провести какую манипуляцию со складами, перед оформлением заказа.

Рассмотрим пример добавления свойств товара к товарам в заказе, перед оформлением заказа в битрикс.

Для этого создадим файл /local/php_interface/init.php, если его еще нет.

Добавим в файл следующий код:

use Bitrix\Main\Diag\Debug;
use Bitrix\Main\EventManager;
use Bitrix\Sale\Location\LocationTable;
use Bitrix\Sale\Order;
use Bitrix\Sale;

$eventManager = EventManager::getInstance();

$eventManager->addEventHandler('sale', 'OnSaleComponentOrderResultPrepared', 'OnSaleComponentOrderResultPrepared');

function OnSaleComponentOrderResultPrepared(&$order, &$arUserResult, $request, &$arParams, &$arResult)
{
		$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Bitrix\Main\Context::getCurrent()->getSite()); // получаем корзину текущего пользователя
		//$basketItems = $basket->getBasketItems();
		foreach ($basket as $basketItem) {
		$els = CIBlockElement::GetList(array(),array("ID" => $basketItem->GetProductID()), false, false, array("ID", "IBLOCK_ID", "PROPERTY_CODE"));	// получаем товары из корзины
		if($el = $els ->GetNext()){
				$basketPropertyCollection = $basketItem->getPropertyCollection();
				$basketPropertyCollection->setProperty(array(
								array(
								   'NAME' => 'Номенклатура',
								   'CODE' => 'CODE',
								   'VALUE' => $el['PROPERTY_CODE_VALUE'],
								   'SORT' => 100,
								),
							));
				$basketPropertyCollection->save();
		}
	}
		

	

}
Событие OnSaleComponentOrderResultPrepared вызывается после формирования всех данных компонента на этапе заполнения формы заказа, может быть использовано для модификации данных.

Во время вызова этого события заказ еще не создан, но создан объект заказа, отсутствует ID заказа. Этот объект мы и меняем.

В результате получим свойство «номенклатура», которое отправится в 1с вместе с заказом.

При вызове этого события можно менять параметры корзины заказа, количество товара, цену и многое другое.



Статьи на тему: Оставить комментарий
x
Комментарий успешно отправлен и будет доступен после проверки модератором!