[Решено] minishop2 как сформировать заказ для определенного пользователя

Добрый день.

Столкнулся с необходимостью создать инструмент, чтоб можно было программно создавать заказ для пользователя. Например, по звонку оператор формирует клиенту заказ.

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

Подскажите, если не готовое решение то хотя бы куда копать.

UPD: Нашел решение, поразбиравшись с Минишопом. привожу код функции из сниппета:

global $modx;
    $scriptProperties = array(
        'json_response' => true, // ответ в виде json
    );
    
    $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
    if (!($miniShop2 instanceof miniShop2)) return '{"error": "getService minishop error"}';

    $miniShop2->initialize($modx->context->key, $scriptProperties);
    $miniShop2->cart->clean();
    $miniShop2->order->clean();
    $miniShop2->order->add('user_id', $uid); //указываем id юзера, на чье имя совершить заказ
    $miniShop2->order->add('delivery', 2);
    $miniShop2->order->add('payment', 1);
    $miniShop2->order->add('email', $email);
    $miniShop2->order->add('phone', $phone);
    $miniShop2->order->add('receiver', $receiver);
    $miniShop2->order->add('street', $address);
    $miniShop2->order->add('comment', $comment);

    //$productlist - массив в виде ID продукта => количество
    foreach ($productlist as $productid => $count){
        $miniShop2->cart->add($productid, $count);
    }

    $res = $miniShop2->order->submit();
    return($res);
gruzoveek
25 апреля 2018, 12:28
modx.pro
1
5 099
0

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

Sergey Perepechin
25 апреля 2018, 17:18
0
sharecart пробовали?
    gruzoveek
    25 апреля 2018, 21:25
    0
    Судя по описанию это немного не то, там админ формирует корзина и затем юзер сам должен пройти по ссылке на нее и заказать. Мне же надо возможность сформировать и отправить заказ на любого юзера.
    UDAV
    25 апреля 2018, 23:04
    0
    Под менеджером или админом собираешь и оформляешь заказ, потом в админке меняешь в заказе пользователя. Если нужны уведомления на почту, то можно через плагины сделать, повесив событие на смену юзера например.
      Константин Ильин
      28 января 2019, 21:47
      0
      Приветствую! Не хочется плодить топик.

      Подскажите пожалуйста, небольшая проблемка с созданием заказа в ручную. При отсутствии пользователя, он создается автоматически все работает ок, но не подставляется в имя пользователя name пришедший из POST.
      Код
      joxi.ru/p27V9KytoBG7Ym
      $scriptProperties = array(
          'json_response' => true, 
          'max_count' => 1, 
          'allow_deleted' => false, 
          'allow_unpublished' => false, 
      );
      
      
      $id = $modx->resource->get('id');
      $miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
      
      $miniShop2->initialize($modx->context->key, $scriptProperties);
      $temp = $miniShop2->cart->get();
      $miniShop2->cart->clean();
      $miniShop2->order->clean();
      
      $miniShop2->cart->add($id, 1, $options);
      
      
      $miniShop2->order->add('receiver', $name);
      $miniShop2->order->add('phone', $phone);
      $miniShop2->order->add('email', $email);
      $miniShop2->order->add('username', $name);
      $miniShop2->order->add('fullname', $name);
      
      $miniShop2->order->add( 'delivery', 1 );
      //$miniShop2->order->add( 'payment', 1 );
      
      
      $orderfeed = $miniShop2->order->submit();
      
      $arr = json_decode($orderfeed,true);
      
      
      $miniShop2->cart->set($temp);
      
      return $AjaxForm->success( 'Успешный заказ.' );
      Заказ создается, создается пользователь, но в имени у него «Test» вместо $name
      joxi.ru/J2bjVbQtXZPWW2

      Как правильно передать данные чтобы он нормально создал пользователя?
        gruzoveek
        04 июля 2019, 12:22
        0
        полей username и fullname в заказе нет, как я помню. fullname это поле таблицы профиля а username поле таблицы юзера. проверьте отдельно скрипт создания пользователя, а заказу достаточно скормить user_id от него.
        eflit
        05 июня 2020, 06:52
        0
        Здравствуйте, подскажите а как быть если известно какой товар добавить в заказ? Получается товар с id 15 нужно оформлять програмно заказ формируется по событию.
          gruzoveek
          05 июня 2020, 09:19
          0
          если надо добавить товар в плагине на какое то событие, то это зависит какое у вас событие. В некоторых из них доступны сразу объекты корзины, и тогда товар надо добавлять туда:

          $cart->add($productid, $count);
          в некоторых есть только заказ, тогда надо уже выгребать продукты по заказу и добавлять туда ваш, потом обратно сохранить это все. В случае когда заказ уже есть, поможет вот этот ход:

          https://modx.pro/help/15666

          вот список событий с указаниями какой там есть объект
            eflit
            05 июня 2020, 16:18
            0
            Дле в том что я мочу повесить все это на событие OnDocFormSave.
              gruzoveek
              06 июня 2020, 07:45
              0
              это системное событие modx и оно не знает ничего о заказах. так что придется как то получать данные о заказе юзера и добавлять туда товар
                eflit
                07 июня 2020, 01:07
                0
                Спасибо за ответ буду пробовать сделать.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10