Как получить всю информацию о заказе Есть решение

Не хочется опять плеваться в сторону документации и движка форума, но копаясь уже два дня так и не нашёл информации по простому вопросу: как получить всю информацию о заказе. Хорошо если надо написать плагин доставки. Ему хоть передаётся объект order. А что делать тем, кто пытается в узнать по orderId? Запрос к модели? Там нет данных о позициях заказа. Наверно можно полезть и в ордерайтемс, но это не прибавит знаний о доставке и контрагенте. Есть далее класс шопордер, но и он ничего не даст. Неужели это вообще настолько не важная информация из магазина, стол для неё даже нет стандартного способа, описанного в документации "дай мне всю информацию одним запросом?" Каждый разработчик должен сам изобретать свой велосипед копаясь в исходниках? Которые в следующей версии возьмут и поменяют...

7 ответов

  • 1
    creativit.ru 17 ноября 2018 16:43 #
    $order_model = new shopOrderModel();
    $order = $order_model->getOrder($order_id);

    • +2
      Аркадий Глазов Аркадий Глазов 17 ноября 2018 17:26 #

      Заказ - это совокупность данных о покупателе, товарах, доставке, данных об оплате, история изменения та же. Т.е каждый должен сам изобретать велосипед и рыться в исходниках? ЧТо то на поверхности:

      $order_model = new shopOrderModel();
      $order = $order_model->getById($order_id);
      $items_model = new shopOrderItemsModel();
      $order['items'] = $items_model->getItems($order_id);
      $params_model = new shopOrderParamsModel();
      $order['params'] = $params_model->get($order_id);

      А дальше? Где покупатель? Тут ещё надо опять самому добавить расчёт полного веса заказа... Я  говорю - каждый сам себе велосипедист. Больше 5 лет движку, только на моей памяти уже третье обновление версии шопскрипта, а документации как не было, так и нет. А то, что есть - убого. Зато попробуйте опубликовать плагин - специалисты начнут цепляться к каждой фигурной скобке и тыкать носом есл ине дай бог вы что-то вытащите не оттуда, куда они засунули.

  • 0
    Алексей Webasyst 17 ноября 2018 17:57 # Решение

    Старый способ

    $collection = new shopOrdersCollection('id/1');
    $order = $collection->getOrders('*, items, params, contact');

    новый способ

    $order = new shopOrder(1);

    • +1
      Аркадий Глазов Аркадий Глазов 17 ноября 2018 18:15 #

      Новый способ я попробовал сразу. Создаётся объект с кучей информации, но там не нашёл ни позиций ни доставки ни покупателя, зато перечислено всё что есть в shopScript.

      • +1
        Алексей Алексей Webasyst 17 ноября 2018 18:30 #

        $order['items'] и $order['items_extended']- позиции
        $order['contact'] - покупатель и далее $order['contact']['name'] например.
        $order['params']['shipping_id'] - идентифкатор способа доставки или $order['shipping_name'] - просто название.

    • +1
      Аркадий Глазов Аркадий Глазов 17 ноября 2018 18:18 #

      А старый мне выдал:

      Event handling error in shopOrder21cPlugin: Unknown collection hash type: 8007

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

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