Ответить Новая тема Новый опрос 
Всего: 2 1 2 >
 Создание купонов PHP
sharos
Cпециалист
Сообщений: 167
Регистрация: 18-06-2011


06-02-2019 16:45
Привет.

Купоны на скидку создаются прямо в коде модуля. Как установить ограничение для клиентов из разных групп?
Нашел параметр $cart_rule->group_restriction = 1;
Он фактически ставит галочку в настройках купона, что будут ограничения для групп. А как в PHP прописать, какие именно группы разрешены? не подскажите пример кода, например, разрешено для группы с ID 3 и 4 ?
Заранее благодарен!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


07-02-2019 13:06
Цитата:( sharos @ 06-02-2019 17:45 Смотреть сообщение )
Как установить ограничение для клиентов из разных групп?
Нашел параметр $cart_rule->group_restriction = 1;
Он фактически ставит галочку в настройках купона, что будут ограничения для групп. А как в PHP прописать, какие именно группы разрешены? не подскажите пример кода, например, разрешено для группы с ID 3 и 4 ?

После создания скидки ($cart_rule->add()), выполните:
Код:
Db::getInstance()->insert('cart_rule_group', ['id_cart_rule' => $cart_rule->id, 'id_group' => 3]);
Db::getInstance()->insert('cart_rule_group', ['id_cart_rule' => $cart_rule->id, 'id_group' => 4]);

Не забывайте при обновлении использовать (при необходимости обновления групп):
Код:
Db::getInstance()->delete('cart_rule_group', 'id_cart_rule = ЗДЕСЬ ID ПРАВИЛА');
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
sharos
Cпециалист
Сообщений: 167
Регистрация: 18-06-2011


12-02-2019 02:23
Алекс, спасибо большое. Но у меня там нет $cart_rule->add()) ;(((

там где все эти параметры в функции
public static function createNewCartRule(Customer $customer, $type, $user_data)
{
$cart_rule = new CartRule();

........

идут-идут-идут, и заканчиваются этим:

$cart_rule->group_restriction = 1;
return ($cart_rule->save() ? $cart_rule : false);


пробовал и перед и после вставлять, группы в разрешенные не добавляются, все группы запрещенные получаются. Сможете посмотреть, Алекс, за денежку?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


12-02-2019 10:32
Цитата:( sharos @ 12-02-2019 03:23 Смотреть сообщение )
Но у меня там нет $cart_rule->add()) ;(((
В вашем коде используется метод save выполняющий доп. проверку на существование объекта, тк. купон новый - это лишено смысла и можно использовать add, но и это лишено смысла тк. - экономия на спичках :box:

Попробуйте подобный код, замените:
Код:
return ($cart_rule->save() ? $cart_rule : false);

на:
Код:
if($res = $cart_rule->save())
{
Db::getInstance()->insert('cart_rule_group', ['id_cart_rule' => $cart_rule->id, 'id_group' => 3]);
Db::getInstance()->insert('cart_rule_group', ['id_cart_rule' => $cart_rule->id, 'id_group' => 4]);
}

return ($res ? $cart_rule : false);


код не проверял, если возникнут ошибки сообщите
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
sharos
Cпециалист
Сообщений: 167
Регистрация: 18-06-2011


12-02-2019 16:13
Супер, Алекс, заработало, спасибо огромное!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
RusBolik
Новичок
Сообщений: 62
Регистрация: 28-07-2016


18-02-2019 22:13
У меня подобный вопрос.
Тут конкретно описывается для групп клиент.
А как прописать чтобы создаваемый купон не был совместим с другими правилами корзины?
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


20-02-2019 15:21
Цитата:( RusBolik @ 18-02-2019 23:13 Смотреть сообщение )
А как прописать чтобы создаваемый купон не был совместим с другими правилами корзины?

Добавить подобный код:
Код:
$cart_rule->cart_rule_restriction = 1;

, а также:
Код:
if($cart_rule->add())
{
    Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'cart_rule_combination` WHERE id_cart_rule_1 = '. $cart_rule->id .' OR id_cart_rule_2 = '. $cart_rule->id);
}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
RusBolik
Новичок
Сообщений: 62
Регистрация: 28-07-2016


21-02-2019 00:55
Алекс, большое спасибо. работает на 50%
Правила формирует сторонний модуль.
Я прописал в php всё что ты указал. Однако
В Несочетаемые правила корзины попадают только те правила которые создаются этим модулем.
Правила которые я создаю в ручную в бэкофисе, остаются как Сочетаемые правила корзины

Помоги пожалуйста


Сообщение отредактировал RusBolik (20-02-2019 20:56)
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


21-02-2019 18:40
Цитата:( RusBolik @ 21-02-2019 01:55 Смотреть сообщение )
В Несочетаемые правила корзины попадают только те правила которые создаются этим модулем.
Правила которые я создаю в ручную в бэкофисе, остаются как Сочетаемые правила корзины

Добавьте после:
Код:
if($cart_rule->add())
{

подобный код:
Код:
Db::getInstance()->update('cart_rule', ['cart_rule_restriction' => 1]);

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
RusBolik
Новичок
Сообщений: 62
Регистрация: 28-07-2016


21-02-2019 19:44
перед?
Код:
Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'cart_rule_combination` WHERE id_cart_rule_1 = '. $cart_rule->id .' OR id_cart_rule_2 = '. $cart_rule->id);
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 1 2 >