How To: Использование собственного шаблона номера заказа
Шаблон номера заказа указывается при редактировании магазина и по умолчанию равен {this.id}, вы можете использовать различные подстановки, чтобы сгенерировать собственный формат номера.
Изменение формата номера на PHP
Номер заказа хранится в свойстве invoice модели Shop_Order и по умолчанию равен идентификатору заказа. В коде обработчика платежной системы, унаследованном от Shop_Payment_System_Handler, необходимо переопределить метод _processOrder() и добавить в него собственную логику генерации номера заказа.
Пример добавления префикса в виде даты в формате ДДММ-ID
protected function _processOrder()
{
parent::_processOrder();
// --- Рассчитываем номер заказа ---
$oShop_Order = $this->getShopOrder();
$oShop_Order->invoice = date('dm-') . $oShop_Order->id;
$oShop_Order->save();
// --- END / Рассчитываем номер заказа ---
// Установка XSL-шаблонов в соответствии с настройками в узле структуры
$this->setXSLs();
// Отправка писем клиенту и пользователю
$this->send();
return $this;
}
Пример добавления префикса PRF, дня+месяца и порядкового номера заказа
protected function _processOrder()
{
parent::_processOrder();
// --- Рассчитываем номер заказа ---
$oShop_Order = $this->getShopOrder();
$date = date('Y-m-d');
$oShop_Orders = $oShop_Order->Shop->Shop_Orders;
$oShop_Orders->queryBuilder()
->where('datetime', '>', "{$date} 00:00:00")
->where('datetime', '<', "{$date} 23:59:59");
$iCountOrders = $oShop_Orders->getCount(FALSE);
$oShop_Order->invoice = 'PRF-' . date('dm') . '-' . $iCountOrders;
$oShop_Order->save();
// --- END / Рассчитываем номер заказа ---
// Установка XSL-шаблонов в соответствии с настройками в узле структуры
$this->setXSLs();
// Отправка писем клиенту и пользователю
$this->send();
return $this;
}
Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.