[Решено] 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 и оно не знает ничего о заказах. так что придется как то получать данные о заказе юзера и добавлять туда товар
Спасибо за ответ буду пробовать сделать.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.