[Решено] minishop2 как сформировать заказ для определенного пользователя
        Добрый день.
Столкнулся с необходимостью создать инструмент, чтоб можно было программно создавать заказ для пользователя. Например, по звонку оператор формирует клиенту заказ.
Поиск юзера, вывод каталога и выбор товара я сделал, а вот с заказом вышла заминка. Если делать как описано тут то заказ не попадает на нужного пользователя.
Подскажите, если не готовое решение то хотя бы куда копать.
UPD: Нашел решение, поразбиравшись с Минишопом. привожу код функции из сниппета:
    
    
                                                                                
            Столкнулся с необходимостью создать инструмент, чтоб можно было программно создавать заказ для пользователя. Например, по звонку оператор формирует клиенту заказ.
Поиск юзера, вывод каталога и выбор товара я сделал, а вот с заказом вышла заминка. Если делать как описано тут то заказ не попадает на нужного пользователя.
Подскажите, если не готовое решение то хотя бы куда копать.
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);    Комментарии: 10
                sharecart пробовали?            
                    
                Судя по описанию это немного не то, там админ формирует корзина и затем юзер сам должен пройти по ссылке на нее и заказать. Мне же надо возможность сформировать и отправить заказ на любого юзера.            
                    
                Под менеджером или админом собираешь и оформляешь заказ, потом в админке меняешь в заказе пользователя. Если нужны уведомления на почту, то можно через плагины сделать, повесив событие на смену юзера например.            
                    
                Приветствую! Не хочется плодить топик.
Подскажите пожалуйста, небольшая проблемка с созданием заказа в ручную. При отсутствии пользователя, он создается автоматически все работает ок, но не подставляется в имя пользователя name пришедший из POST.
Код
joxi.ru/p27V9KytoBG7Ym
joxi.ru/J2bjVbQtXZPWW2
Как правильно передать данные чтобы он нормально создал пользователя?
                    Подскажите пожалуйста, небольшая проблемка с созданием заказа в ручную. При отсутствии пользователя, он создается автоматически все работает ок, но не подставляется в имя пользователя 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
Как правильно передать данные чтобы он нормально создал пользователя?
                полей username и fullname в заказе нет, как я помню. fullname это поле таблицы профиля а username поле таблицы юзера. проверьте отдельно скрипт создания пользователя, а заказу достаточно скормить user_id от него.            
                    
                Здравствуйте, подскажите а как быть если известно какой товар добавить в заказ? Получается товар с id 15 нужно оформлять програмно заказ формируется по событию.            
                    
                если надо добавить товар в плагине на какое то событие, то это зависит какое у вас событие. В некоторых из них доступны сразу объекты корзины, и тогда товар надо добавлять туда:
https://modx.pro/help/15666
вот список событий с указаниями какой там есть объект
                    $cart->add($productid, $count);в некоторых есть только заказ, тогда надо уже выгребать продукты по заказу и добавлять туда ваш, потом обратно сохранить это все. В случае когда заказ уже есть, поможет вот этот ход:https://modx.pro/help/15666
вот список событий с указаниями какой там есть объект
                Дле в том что я мочу повесить все это на событие OnDocFormSave.            
                    
                это системное событие modx и оно не знает ничего о заказах. так что придется как то получать данные о заказе юзера и добавлять туда товар            
                    
                Спасибо за ответ буду пробовать сделать.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.