Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


susl16c

Recommended Posts

  • 1 year later...

Заинтересовался темой, готовых ответов под свою сборку не нашёл. В итоге на основе старого решения под 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.