четверг, 11 сентября 2014 г.

Как и где формируется номер заказа в MiniShop2

MiniShop 2.1.1 pl2 Однажды мне нужно было изменить принцип формирования номеров заказа в MiniShop2
core/components/minishop2/model/minishop2/msorderhandler.class.php:459
/**
* Return current number of order
*
* @return string
*/
public function getnum() {
$table = $this->modx->getTableName('msOrder'); // получаем имя таблицы
$cur = date('ym'); // получаем текущий год и месяц в формате yymm

$sql = $this->modx->query("SELECT `num` FROM {$table} WHERE `num` LIKE '{$cur}%' ORDER BY `id` DESC LIMIT 1"); 
// делаем запрос в БД и получаем последнюю запись, схожую по формату с тем, что содержится в $cur

$num = $sql->fetch(PDO::FETCH_COLUMN);

if (empty($num)) 
{$num = date('ym').'/0';} // если запрос не дал результатов, то запись в текущем месяце, текущего года будет первая
$num = explode('/', $num);
$num = $cur.'/'.($num[1] + 1);

return $num;
}