Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Автогенерация счета


susl16c
 Поделиться

Рекомендованные сообщения

  • 1 год спустя...

Заинтересовался темой, готовых ответов под свою сборку не нашёл. В итоге на основе старого решения под Opencart 2.3 сделал сам - работает.

Моя сборка - OcStore 3.0.2.0, Simple 4.11.4.

В модели (catalog/model/checkout/order.php) создаём функцию (например, сразу после функции создания нового заказа addOrder и перед editOrder) для генерации номера (UPDATE) созданного заказа:

public function createInvoiceNo($order_id) {
	$order_info = $this->getOrder($order_id);

	if ($order_info && !$order_info['invoice_no']) {
		$query = $this->db->query("SELECT MAX(invoice_no) AS invoice_no FROM `" . DB_PREFIX . "order` WHERE invoice_prefix = '" . $this->db->escape($order_info['invoice_prefix']) . "'");

		if ($query->row['invoice_no']) {
			$invoice_no = $query->row['invoice_no'] + 1;
		} else {
			$invoice_no = 1;
		}
			
		// у заказа обновляется invoice_prefix на тот же - зачем? пока оставляю так
		$this->db->query("UPDATE `" . DB_PREFIX . "order` SET invoice_no = '" . (int)$invoice_no . "', invoice_prefix = '" . $this->db->escape($order_info['invoice_prefix']) . "' WHERE order_id = '" . (int)$order_id . "'");

	}
}

 

Теперь в контроллере симпла (catalog/controller/checkout/simplecheckout.php) прописываем вызывать то, что выше, в самом конце функции order() перед return $order_id:

$this->model_checkout_order->createInvoiceNo($order_id);

Готово. При необходимости отключить автогенерацию - закомментить строчку выше.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Update сообщения выше.

Код для контроллера выше заставляет генерировать номер заказа для всех типов (методов) оплаты. Мне, например, нужен был автогенератор только при методе оплаты, чей payment_code = 'artbeznal' (информацию смотреть в БД, таблица oc_order). Таким образом, для отсечения остальных методов код будет следующий:

if($data['payment_code'] == 'artbeznal'){
     $this->model_checkout_order->createInvoiceNo($order_id);
}

 

Изменено пользователем pelmeny3751
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.