208 похожих чатов

Ребята, как сделать автоматическое добавление подарка про промокоду? Я уже третьи

сутки бьюсь.

6 ответов

81 просмотр

Правила корзины. Действие "предоставить подарок", переходишь во вкладку купоны. Заполняешь число купонов. Если нужно ставишь период. Тип купонов один раз если нужно и максимальное число использования один. И сохраняешь.

Андрей- Автор вопроса
アレキサンダー
Правила корзины. Действие "предоставить подарок", ...

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

Андрей
Когда вводишь промокод, не должно быть выбора пода...

То есть ты хочешь чтоб он сразу подставлялся в товары?

Андрей- Автор вопроса
Андрей- Автор вопроса

Ответ: Берем за основу код из этой ссылки 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(); Как я пришел к такому решению, лучше тебе не знать😄 Но надеюсь, пригодится

Андрей
Ответ: Берем за основу код из этой ссылки https:/...

Запишите это решение к тому что работать не будет.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта