Нормер заказа minishop2

Подскажите как можно поменять формат номеров заказа в minishop2, сейчас ониимеют вид «xxxx/xx» где последние две цифры номер заказа, нужно оставить просто номер заказа
soch
19 августа 2014, 05:34
modx.pro
4
4 146
0

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

Алексей Ерохин
19 августа 2014, 14:15
0
За генерацию номера отвечает функция getnum в классе msOrderHandler.
bezumkin.ru/modx/minishop2/classes/804/
Пишите свой обработчик.
Вообще, было бы круто вынести это в настройки.
    soch
    19 августа 2014, 23:36
    0
    спасибо, поменял на:
    $sql = $this->modx->query("SELECT `num` FROM {$table} WHERE `id` > '1' ORDER BY `id` DESC LIMIT 1");
    $num = $sql->fetch(PDO::FETCH_COLUMN);
    if (empty($num)) {$num = '1';}
    $num = ''.($num + 1);
      Василий Наумкин
      20 августа 2014, 05:42
      0
      Не проще ли тогда уж id заказа вместо номера везде выводить?

      Нынешние номера понятнее, потому что отображают «год-месяц/порядковый номер».
        Александр
        15 февраля 2019, 12:14
        0
        Василий, как реализовать вывод id заказа вместо номера?
          Дима
          07 мая 2019, 13:54
          0
          Василий, добрый день!
          Я пытался сделать через переопределение метода, но возникает такая проблема modx.pro/help/15156#comment-110022

          Хотел просто убрать слеш в номере заказа.
          В php файле сделал так:
          <?php
          class myOrderHandler extends msOrderHandler {
              public function getNum()
              {
                  $cur = date('ym');
                  $num = 0;
          
                  $c = $this->modx->newQuery('msOrder');
                  $c->where(array('num:LIKE' => "{$cur}%"));
                  $c->select('num');
                  $c->sortby('id', 'DESC');
                  $c->limit(1);
                  if ($c->prepare() && $c->stmt->execute()) {
                      $num = $c->stmt->fetchColumn();
                  }
                  if (empty($num)) {
                      $num = date('ym') . '/0';
                  }
                  $num = explode('/', $num);
                  $num = $cur . '' . ($num[1] + 1);
          
                  return $num;
              }
          }
          В системной настройке ms2_order_handler_class указал myOrderHandler.

          Через консоль выполнил
          if ($miniShop2 = $modx->getService('miniShop2')) {
              $miniShop2->addService('order', 'Numorder',
                  'тут путь до php фала'
              );
          }
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5