При использовании партнерских бонусов они списываются все сразу
При создании заказа методом
$workflow->getActionById('create')->run($order);
где в массиве $order помимо прочего, передается следующее:
$order['params']['affiliate_bonus'] = 300; $order['params']['force_affiliate'] = true;
бонусные баллы, имеющиеся на балансе у клиента списываются целиком (в пределах установленного процентного ограничения), например 1432.7, а не 300, как указано в params.
Это баг или фича Shop-Script 8?
ПРИМЕЧАНИЕ:
Если не указывать `$order['params']['force_affiliate'] = true;`, то бонусные баллы не принимаются во внимание от слова "совсем".
3 ответа
Возможно, в массиве заказа у вас не хватает ключа 'discount' с указанием размера скидки в валюте заказа.
Простой способ посмотреть, какие параметры нужно передать методу run():
За способ - спасибо. Изучу.
Ключ discount указан со значением "" (пустая строка), чтобы SS посчитал скидку сам. Кроме промо-баллов могут быть еще скидки на отдельные товары. Их тоже надо учесть.
Я также пробовал ключ "calculate", но в этом случае, в созданном заказе написано что-то вроде "Вручную принудительно установлена скидка в размере 0 руб."
Ключ discount ни при чем. Методу run нужно передать affiliate_bonus. А если работать не на фронтенде, а через api (без сессии), то нужно еще передать force_affiliate, т.к. переменная use_affiliate будет пустой, и скидка не посчитается.
Правильно ли я понимаю (в частности shopAffiliate::discount()), что сумма бонусов, указанная в affiliate_bonus НЕ имеет значения, а списывается всегда только максимум? И это поведение заложено разработчиками и поменять его не просто?