[msDiscount]когда происходит перемещение в группу?

Сделал группу Clients_FirstPurchase, поставил 5% скидку и сумму 100.
То есть при покупке на 100 рублей пользователь должен попадать в эту группу.

Был один старый пользователь с покупками. Купил им, изменил ему заказ на оплачен, потом на доставлен — ничего не изменилось в группах…
Потом поменял ему второй заказ на оплачен — смотрю — переместился в группу.

Затем взял другого пользователя с одним старым заказом, поменял ему тоже на оплачен, потом на доставлен — больше не меняется. Он не переместился в группу…

В общем получилось у меня, что один заказ оплачен — ничего не считает, второй заказ оплачен — посчитал. Но толком не понятно когда, как и при каких условиях он меняет группу пользователя… :-(

Василий, помоги разобраться, плз!

Мне надо сделать постоянную скидку любому пользователю при его первой покупке.
Peter Zenin
06 февраля 2014, 14:11
modx.pro
1
1 134
0

Комментарии: 9

Peter Zenin
06 февраля 2014, 18:18
1
0
И в догонку еще вопрос — как в профиле пользователя (Office) вывести скидку этого пользователя (как показать ему его скидку в личном кабинете)?
    Василий Наумкин
    06 февраля 2014, 19:39
    0
    Согласно логике msDiscount, скидка пользователя существует только в применении к какому-то товару.

    Поэтому, ты можешь только вывести принадлежность этого юзера к какой-то группе и её скидку. Скорее всего, нужно будет написать для этого свой несложный сниппет.
      Peter Zenin
      06 февраля 2014, 20:17
      0
      А где хранится скидка группы?
        Василий Наумкин
        06 февраля 2014, 22:39
        2
        +1
        Объект msdUserGroup, его id совпадает с id группы пользователей, а скидка в поле discount.

        Вывод юзеров с присоединением основной группы:
        [[!pdoUsers?
        	&tpl=`@INLINE <p>[[+id]] [[+fullname]] [[+discount]]</p>`
        	&innerJoin=`{"msdUserGroup":{"class":"msdUserGroup","on":"msdUserGroup.id = modUser.primary_group"}}`
        	&select=`{"modUser":"*","msdUserGroup":"*"}`
        ]]
        Следует иметь в виду, что юзер может входить в несколько групп, и тогда показывать его скидку так просто уже не выйдет.
          Peter Zenin
          08 февраля 2014, 20:45
          1
          0
          Может кому пригодится, смотрит все группы текущего юзверя и выводит бОльшую скидку:
          <?php
          /**
           * User: Petja
           * Date: 07.02.14
           * Time: 22:34
           */
          
          $groups = $modx->getCollection('modUserGroupMember',array('member' => $modx->user->id));
          
          $diss = array();
          foreach($groups as $group){
              $gid = $group->get('user_group');
              $t = $modx->getObject('msdUserGroup',$gid);
              $diss[] = (int) $t->get('discount');
          }
          
          $dis = max($diss);
          
          return "$dis%";
    Василий Наумкин
    06 февраля 2014, 19:37
    +1
    Ошибка не в msDiscount, а в MS2. Он делает запись в лог после события, при котором считается потраченные юзером деньги.

    Внеси вот это исправление, и должно работать. В новой версии MS2 это уже будет из коробки, но не знаю, когда она выйдет.
      Peter Zenin
      06 февраля 2014, 20:17
      0
      Завтра попробую, спасибо!
        Peter Zenin
        06 февраля 2014, 20:39
        0
        Пока даже не понял как юзер попадает в группу. В тот раз каким-то чудом попал, второй раз уже и 2 заказа сделал — все равно не попадает… Ладно, завтра буду пробовать внести эти изменения…
          Peter Zenin
          07 февраля 2014, 22:22
          0
          С этим изменением все стало четко — изменяю статус на оплачен — и сразу же копируется в новую группу, оставляя в старой. Так то все ОК! Благодарю.
          Задорнов сказал благодарить, так что переучиваюсь :-) www.youtube.com/watch?v=k5uCl-aS5vs
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          9