[msStatOrders] - Статистика заказов Minishop2 / Новая версия

[msStatOrders] — Компонент реализует возможность отбора, сортировки заказов и продуктов заказа, реализованных в магазине. Вывод подробной информации и экспорт в файл. Демо пакета


Доступна фильтрация и группировка по колонке таблицы, экспорт заказов и продуктов заказов, управление колонками таблиц, фильтрацией и тд вынесено в отдельную таблицу. Добавлен экспорт/ импорт настроек пакета.

[msStatOrders] в магазине

Как и прежде доступны вкладки с заказами и продуктами заказа.
Доступна фильтрация по отдельно взятой колонке

Доступна группировка по отдельно взятой колонке

Доступен экспандер с выводом таблицы товаров заказа

Для Экспорта раннее использовалась библиотека box/spout и был доступен формат эксель, но у многих пользователей возникали проблемы при экспорте большого кол-ва заказов и было решено от нее избавиться, так что теперь остался только формат csv, но выгружать можно больший объем заказов.
На тесте пару десятков тысяч заказов выгружал без проблем.

Вкладка с продуктами заказа аналогична вкладке Заказы, доступен тот же функционал и управление.

Теперь немного о дополнительном функционале.
Вкладка Рендеры, выводит доступные рендеры.
Что есть рендеры? Блоки кода доступные для обработки данных. Данные можно обрабатывать как в javascript, так и в php.


например вывести ссылку на продукт товара заказа.

или подсветить ячейку таблицы статусом заказа.

например вывести с таблицу заказов размер товара


Все это не зашито в пакет, а доступно для редактирования и вы можете самостоятельно редактировать текущие рендеры или создавать свои собственные.

Вкладка Связи, выводит доступные связи.

Что есть связи? Описывает связь основной таблицы с дополнительными. В дальнейшем по связям будут приджойнены нужные таблицы.

Возьмем для примера таблицу msOrderStatus

Указан алиас таблицы, местный и внешний ключ. В дальнейшем по указанным связям можно будет выбрать нужно поле для выборки.

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

Вкладка Поля, выводит доступные поля для выборки.


Для выборки поля его необходимо включить и… и все! Больше никаких действий не требуется. Поле автоматически будет добавлено в выборку. Если вам необходимо какое свое поле для выборки вам можно создать его вручную.


Для поля можно указать необходимые рендеры, заголовок поля можно задать либо через лексикон если требуется мультиязычность, либо указать его напрямую у поля.
Тип фильтра — на данный момент доступны:
string — текстовое поле, возможно указать несколько значений для фильтрации через разделитель ||. Например нам нужно вывести заказы в город Ковров и Владимир — пишем в поле фильтрации «Ковров||Владимир».
Отрицание можно задать через знак!
combo — инпут с выбором единичного значения
multiselect — инпут с множественного значения

Настройки пакета

grid_order_period — Временной интервал вывода заказов. Используется для вывода фильтра дат заказов.
grid_product_period — Временной интервал вывода продуктов. Используется для вывода фильтра дат продуктов заказа.
renderer_javacript_active — Включить/ Отключить рендер javacript.
renderer_php_active — Включить/ Отключить рендер php.
tab_ms_orders_inactive — При включенной настройке отключает родную таблицу Заказы на странице заказов minishop.
tab_orders_expander — Включить/ Отключить экспандер в таблице заказов.
tab_product_orders_expander — Включить/ Отключить экспандер в таблице продуктов заказов.

Если была установлена старая версия пакета
Перед установкой новой версии необходимо деинсталлировать пакет целиком, проверьте папки старого дополнения, их надо удалить.
core/components/msstatorders
assets/components/msstatorders
запись в extension_packages удалить либо руками, либо через
$modx->removeExtensionPackage('msstatorders');
удалить старые настройки пакета из раздела msstatorders
удалить старый плагин msStatOrders, если он остался после деинсталляции пакета.

После этих манипуляций можно устанавливать новую версию пакета.

Действия после установки
После установке перейдя на страничку пакета вы увидите пустые таблицы, не пугайтесь так оно и должно быть.
Необходимо загрузить сначала Связи, затем Поля для заказов и продуктов заказов. Загрузка доступна по кнопке — Загрузить на вкладке сущности.

Либо вы можете экспортировать текущую конфигурацию Рендеров, Связей, Полей с демо сайта и затем импортировать на свой сайт.

Если после текущих манипуляций список заказов не выводится, смотрите журнал ошибок modx. Если в нем есть информация с ошибками, то вероятно в вашей конфигурации связи или поля отличаются. Тогда вам нужно очистить связи, поля и выполнить их загрузку через кнопку Загрузить. Сначала загружаем связи, затем поля.
После по необходимости привязываем рендеры к нужным полям.

Вкратце все о текущем обновлении, подробней надеюсь изложить в документации.
Дополнение уже доступно в репозитории modstore.pro/

Всем спасибо за внимание!
Володя
23 января 2024, 13:09
modx.pro
701
+11
Поблагодарить автора Отправить деньги

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

Николай Савин
23 января 2024, 14:52
0
Выглядит шикарно, ты молодец
    Володя
    23 января 2024, 16:54
    0
    Рад что оценил!) Спасибо.
    Александр
    23 января 2024, 15:27
    0
    Ошибка: Невозможно установить пакет с подписью: msstatorders-2.1.0-pl

    xPDOObject::fromJSON() -- Could not convert jsonSource to a PHP array.
    Error saving vehicle object of class modCategory; criteria: Array ( [category] => ) 
    
    Vehicle e5b51c56af929be4826b934652e51122 in transport msstatorders-2.1.0-pl failed to install and indicated the process should be aborted.
    Невозможно установить пакет с подписью: msstatorders-2.1.0-pl
    Старый удалил.
    Modx 2.8.6, PHP 7.4, Minishop 4.3.0
      Александр
      23 января 2024, 15:39
      0
      Подозреваю что это из-за передачи ключа, на старом сайте не могу деинсталлировать тоже дополнение
        Андрей Шевяков
        23 января 2024, 16:00
        0
        Такая же ошибка. Не ставится.

        xPDOObject::fromJSON() -- Could not convert jsonSource to a PHP array.
        Error saving vehicle object of class modCategory; criteria: Array ( [category] => )
        
        Vehicle e5b51c56af929be4826b934652e51122 in transport msstatorders-2.1.0-pl failed to install and indicated the process should be aborted.
        Невозможно установить пакет с подписью: msstatorders-2.1.0-pl
          Володя
          23 января 2024, 16:53
          0
          Кодировка в бд какая?
            Андрей Шевяков
            23 января 2024, 16:56
            0
            У каких то таблиц utf8mb4_general_ci, у других utf8_general_ci.
            Сама БД utf8_general_ci
              Андрей Шевяков
              23 января 2024, 17:01
              0
              Таблицы дополнения кстати создались

                Володя
                23 января 2024, 17:28
                0
                Можешь в телегу написать @vgrish_vgrish по поводу ошибки. Спасибо.
                  Андрей Шевяков
                  24 января 2024, 14:23
                  +1
                  Все установилось. Дополнение огонь!
                  Добавление своих полей в таблицу например промо-кодов, которые применили к заказу очень круто сделаны! Все автоматизировано, только галочки проставить)))
                    Володя
                    24 января 2024, 14:24
                    0
                    Рад что оценил!) Спасибо.
                      Андрей Шевяков
                      24 января 2024, 14:28
                      0
                      Пожелание есть одно, если есть такая возможность то выводить порядки у сумм через пробел, чтобы было не так:



                      А вот так 28 649 216,97, как в стандарте у минишопа. А то на больших цифрах не читаемо совсем.
                        Володя
                        24 января 2024, 14:37
                        +1
                        Принято, что нибудь придумаю для форматирования.
                          Володя
                          24 января 2024, 15:10
                          +1

                          в след. обновлении будет доступно, из за одних циферок уж не буду заливать новую версию.
                vrm13
                29 января 2024, 12:32
                0
                Та же ошибка, попереустанавливал с чистками кэшей, не установилась. кодировки такие же
                utf8mb4_general_ci, utf8_general_ci
                Володя
                23 января 2024, 16:53
                0
                Кодировка в бд какая?
                Володя
                24 января 2024, 10:41
                0
                Можешь в телегу написать @vgrish_vgrish по поводу ошибки. Спасибо.
                  Александр
                  24 января 2024, 14:02
                  0
                  Пакет установился, буду разбираться — много всего нового
                    Володя
                    24 января 2024, 14:18
                    0
                    Отлично, будут вопросы — обращайтесь!
                Володя
                08 февраля 2024, 10:17
                +1
                Инсталлятор пакета поправлен — теперь должен корректно устанавливаться у всех.
                  Андрей Шевяков
                  21 февраля 2024, 14:56
                  0
                  Добрый день!
                  Вопрос, возник, никак не получается добавить артикул товара во вкладке продукты. В полях по умолчанию нет поля артикул для выбора. Как его добавить?
                    Володя
                    21 февраля 2024, 15:06
                    +1
                    Добрый день.
                    Добавить вручную связь


                    загрузить поля


                    активировать нужное поле
                      Андрей Шевяков
                      21 февраля 2024, 15:27
                      0
                      Супер. Сработало. Все выводится.
                      А еще вопрос такой, только не ругайтесь, пожалуйста)
                      Как вывести выбранный размер товара в заказе?
                        Володя
                        21 февраля 2024, 15:33
                        0
                        А еще вопрос такой, только не ругайтесь, пожалуйста)
                        Я что так пугающе пишу или у меня буквы страшные? )

                        Как вывести выбранный размер товара в заказе?
                        надо прежде уточнить где вывести?
                          Андрей Шевяков
                          21 февраля 2024, 15:35
                          +1
                          Я что так пугающе пишу или у меня буквы страшные? )
                          Ну я же дергаю с простыми вопросами, поэтому заранее извиняюсь, что отвлекаю)))

                          надо прежде уточнить где вывести?
                          Во вкладке Продукты
                            Володя
                            21 февраля 2024, 15:41
                            0
                            а на демо это разве не размер?
                              Андрей Шевяков
                              21 февраля 2024, 16:15
                              0
                              На Демо такое есть, у меня нет. Хочу добавить, как на демо, но ругается на обязательное поле. На Демо оно тоже пустое. Как быть?

                                Володя
                                21 февраля 2024, 16:19
                                +1
                                поставить пробел?
                                  Андрей Шевяков
                                  21 февраля 2024, 16:21
                                  0
                                  Пробовал, тогда вообще не выводятся товары во вкладке Продукты
                                    Андрей Шевяков
                                    21 февраля 2024, 16:23
                                    0
                                    Нет, вру. Заработало, хорошо почистил кеш и помогло. Спасибо вам огромное!
                                      Володя
                                      21 февраля 2024, 16:42
                                      +1
                                      Пожалуйста, обращайтесь.
                  Андрей Шевяков
                  18 марта 2024, 21:25
                  0
                  Добрый день!
                  На сайте используем дополнение utmMark, оно пишет данные utm меток в формате json в поле properties заказа.

                  Помогите пожалуйста, как вывести поле properties в читаемом виде?

                  По умолчанию выводит [object Object]
                    Володя
                    19 марта 2024, 07:14
                    +1
                    Доброе утро.

                    Добавьте выборку поля Order.properties



                    добавьте рендер



                    <?php
                    /** @var modX $modx */
                    /** @var array $row */
                    $utm= '';
                    
                    if (!empty($row['Order.properties'])) {
                        $utm = $row['Order.properties']['utm']; // тут берете нужное поле из массива properties
                    }
                    
                    return $utm;

                    добавьте поле



                    Должно работать, если не получится — пишите в ТП.
                      Андрей Шевяков
                      19 марта 2024, 10:34
                      0
                      Не заработало, выводит "{" и ошибки в логах вида:
                      PHP warning: Illegal string offset 'utm_source'
                      Скрин

                      Рендер
                      <?php
                      /** @var modX $modx */
                      /** @var array $row */
                      $utm= '';
                      
                      if (!empty($row['Order.properties'])) {
                          $utm = $row['Order.properties']['utm_source']; // тут берете нужное поле из массива properties
                      }
                      
                      return $utm;

                      В ТП к сожалению не могу написать, прошло больше года после покупки дополнения.
                        Володя
                        19 марта 2024, 12:31
                        +1
                        <?php
                        /** @var modX $modx */
                        /** @var array $row */
                        $utm= '';
                        
                        if (!empty($row['Order.properties'])) {
                            $properties = json_decode($row['Order.properties'], true);
                            $utm = $properties['utm_source'] ?? ''; // тут берете нужное поле из массива properties
                        }
                        
                        return $utm;
                          Андрей Шевяков
                          19 марта 2024, 13:55
                          +1
                          Разобрался, благодаря вам!
                          Эти данные надо вынимать из msOrderAddress, а не из msOrder.

                          Получается надо сделать так:

                          1) Добавляем выборку поля Address.properties



                          2) Добавляем рендер



                          <?php
                          /** @var modX $modx */
                          /** @var array $row */
                          $utm= '';
                          
                          if (!empty($row['Address.properties'])) {
                              $properties = json_decode($row['Address.properties'], true);
                              $utm = $properties['utm_campaign'] ?: '';
                          }
                          
                          return $utm;

                          3) Добавляем поле



                          Теперь выводится поле utm_campaign в заказах. Изначально я пытался вывести utm_source, оно делается аналогично.

                          Еще раз убедился на практике в большом потенциале дополнения msStatOrders. Благодарю автора!
                            Андрей Шевяков
                            19 марта 2024, 14:01
                            0
                            Единственное не работает Группировка и Сортировка по этому полю((((
                              Володя
                              19 марта 2024, 14:03
                              0
                              Естественно сортировка и группировка по мнимым полям не работает)
                              Володя
                              19 марта 2024, 14:07
                              +1
                              Разобрался, благодаря вам!
                              Отлично!
                              Эти данные надо вынимать из msOrderAddress, а не из msOrder.
                              ну значит пакет пишет не пропертис заказа, а в пропертис адреса заказа.
                              Еще раз убедился на практике в большом потенциале дополнения msStatOrders. Благодарю автора!
                              Пожалуйста, обращайтесь!
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      40