При использовании партнерских бонусов они списываются все сразу

При создании заказа методом

$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;`, то бонусные баллы не принимаются во внимание от слова "совсем".

1 ответ

  • 1
    Михаил Ушенин Webasyst 2 марта 2020 13:03 #

    Возможно, в массиве заказа у вас не хватает ключа 'discount' с указанием размера скидки в валюте заказа.

    Простой способ посмотреть, какие параметры нужно передать методу run():

    1. Добавьте отладочное логирование значения аргумента $params в методе waWorkflowAction->run().
    2. Оформите на витрине заказ с применёнными бонусными баллами.
    • +1
      Никита Траторов Никита Траторов 6 марта 2020 01:09 #

      За способ - спасибо. Изучу.

      Ключ discount указан со значением "" (пустая строка), чтобы SS посчитал скидку сам. Кроме промо-баллов могут быть еще скидки на отдельные товары. Их тоже надо учесть.

      Я также пробовал ключ "calculate", но в этом случае, в созданном заказе написано что-то вроде "Вручную принудительно установлена скидка в размере 0 руб."

    • +1
      Никита Траторов Никита Траторов 11 марта 2020 02:54 #

      Ключ discount ни при чем. Методу run нужно передать affiliate_bonus. А если работать не на фронтенде, а через api (без сессии), то нужно еще передать force_affiliate, т.к. переменная use_affiliate будет пустой, и скидка не посчитается.

      Правильно ли я понимаю (в частности shopAffiliate::discount()), что сумма бонусов, указанная в affiliate_bonus НЕ имеет значения, а списывается всегда только максимум? И это поведение заложено разработчиками и поменять его не просто?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите