Меняем нумерацию заказов в minishop2

Необходимо переопределить функцию getNum(), которая отвечает за получение порядкового номера.
Изначально она формирует номер по формату «годмесяц/порядковый номер». Каждый месяц нумерация будет начинаться с 1.

Для переопределения создаем файл с названием, напрмиер, myorderhandler.php и размещает по адресу
/core/components/minishop2/custom/order/myorderhandler.php

Содержимое будет иметь вид
<?php
if (!class_exists('msOrderInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msorderhandler.class.php';
}

class myOrderHandler extends msOrderHandler {
	/**
     * Return current number of order
     *
     * @return string
     */
    public function getNum()
    {
        $num = 0;
        $c = $this->modx->newQuery('msOrder');
        $c->select('num');
        $c->sortby('id', 'DESC');
        $c->limit(1);
        if ($c->prepare() && $c->stmt->execute()) {
            $num = $c->stmt->fetchColumn();
        }
        $num++;

        return $num;
    }
}

Этот пример будет генерировать номера по порядку, без учета месяца и года, номер будет только возрастать.

Также потребуется зарегистрировать новый класс. Для этого необходимо запустить компонент Console и выполнить код:
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('order', 'myOrderHandler',
        '{core_path}components/minishop2/custom/order/myorderhandler.php'
    );
}

Нет комментариев