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;
	}

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.