сутки бьюсь.
Правила корзины. Действие "предоставить подарок", переходишь во вкладку купоны. Заполняешь число купонов. Если нужно ставишь период. Тип купонов один раз если нужно и максимальное число использования один. И сохраняешь.
Когда вводишь промокод, не должно быть выбора подарка. Подарок должен автоматически добавиться без права выбора пользователем.
То есть ты хочешь чтоб он сразу подставлялся в товары?
Проблема решена, сейчас пришлю ответ.
Ответ: Берем за основу код из этой ссылки https://dev.1c-bitrix.ru/support/forum/forum6/topic120421/ Но работать этот код не будет. Нужно вносить коррективы. 1. Убедись, что юзаются эти классы: use Bitrix\Main, Bitrix\Sale, Bitrix\Sale\Compatible\DiscountCompatibility, Bitrix\Main\EventManager, Bitrix\Sale\Discount\Gift; 2. Событие OnSaleBasketItemEntitySaved меняем на событие onManagerCouponAdd , которое срабатывает при добавлении купона. Название модуля оставляем "sale". Название функции тоже можно оставить. 3. Убираем строку $basketItemEntity = $event->getParameter("ENTITY"); она не нужна тут. 4. Если переменная $giftCollections на дебаге будет нулевой, то в метод $giftManager->getCollectionsByBasket($basket) нужно добавить второе условие: объект правила работы с корзиной. Первое условие $basket у нас уже есть. Через запятую добавляем метод \CSaleDiscount::GetByID(АЙДИШНИК ПРАВИЛА). Я думаю, можно поиграться с методами класса CSaleDiscount под твои нужны, данный класс как раз работает с правилами работы с корзиной. 5. В конце кода, где задаются поля для айтема подарка, увидишь элемент "LID" => $LID. Переменную $LID автор кода забыл определить - это код сайта (например: "s1"). Поскольку сайтов может быть много, я бы определил ее так: $LID = Main\Context::getCurrent()->getSite(); Как я пришел к такому решению, лучше тебе не знать😄 Но надеюсь, пригодится
Запишите это решение к тому что работать не будет.
Обсуждают сегодня