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

Как создать несколько заказов от одного покупателя?


Recommended Posts

Всем привет!

В корзине есть товар 1 с продавцом id = 9 и товар 2 с продавцом id = 15, я хочу чтобы после нажатии кнопки оформить заказ создавался не один заказ, а два.  Один принадлежит продавцу id = 9, другой id = 15. 

В модуле simplecheckout в контроллере simplecheckout.php нашла вызов метода order() который создает заказ.

Вместо этого

$order_id = $this->order();

Написала это

$this->load->model('catalog/product');
$products_sellers = $this->model_catalog_product->getProductStoreSessionCart($this->session->getId());
foreach ($products_sellers as $product_seller) {
	$order_id = $this->order($product_seller['seller_id']);
}

Ну и сам метод подправила.

 private function order($seller_id) {
...
$data['seller_id'] = $seller_id;
...
}

По идее в моделе seller_id успешно добавляется в колонку бд, но заказ все равно создается один заказ, а не два.

class ModelCheckoutOrder extends Model {
	public function addOrder($data) {
        $this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', seller_id = '" . (int)$data['seller_id'] . "', ..........");

}

 У кого есть какие-нибудь идеи? В тупике уже какой день =(

Надіслати
Поділитися на інших сайтах


Для вас заказ один. Вы отвечаете за заказ. И оплату вы получаете, и наверное доставку оргинизовываете вы
А для продавцов он разный
Вам нужно сообщение продавцам?  там и разбивайте товар по продавцам

А для покупателя номер заказа будет один

 

Надіслати
Поділитися на інших сайтах

4 минуты назад, chukcha сказал:

Для вас заказ один. Вы отвечаете за заказ. И оплату вы получаете, и наверное доставку оргинизовываете вы
А для продавцов он разный
Вам нужно сообщение продавцам?  там и разбивайте товар по продавцам

А для покупателя номер заказа будет один

 

@chukcha, доставку организовывает сам продавец, поэтому покупатель будет отслеживать трек-номера этих заказов в личном кабинете, поэтому такая потребность возникла.

 

Надіслати
Поділитися на інших сайтах


9 минут назад, AnnaBez сказал:

@chukcha, доставку организовывает сам продавец, поэтому покупатель будет отслеживать трек-номера этих заказов в личном кабинете, поэтому такая потребность возникла.

 

Для вас будет несколько заказов, ок. а для покупателя тоже? 

Надіслати
Поділитися на інших сайтах


как вариант, это
при смене статуса заказа на "новый" при статусе  = 0
разбивать заказ на два (со всеми вытекающими данными)

Надіслати
Поділитися на інших сайтах

5 минут назад, IIOIOIOII сказал:

Для вас будет несколько заказов, ок. а для покупателя тоже? 

Да, ведь доставка будет идти с разных складов и посылки приедут по отдельности.

Надіслати
Поділитися на інших сайтах


Доставка и заказ  это суть разные вещи

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

Т.е. вам нужно тщательно пересмотреть логистику  заказа от оформления до "выполнен"

 

  • +1 1
Надіслати
Поділитися на інших сайтах

48 минут назад, AnnaBez сказал:

Всем привет!

В корзине есть товар 1 с продавцом id = 9 и товар 2 с продавцом id = 15, я хочу чтобы после нажатии кнопки оформить заказ создавался не один заказ, а два.  Один принадлежит продавцу id = 9, другой id = 15. 

В модуле simplecheckout в контроллере simplecheckout.php нашла вызов метода order() который создает заказ.

Вместо этого


$order_id = $this->order();

Написала это


$this->load->model('catalog/product');
$products_sellers = $this->model_catalog_product->getProductStoreSessionCart($this->session->getId());
foreach ($products_sellers as $product_seller) {
	$order_id = $this->order($product_seller['seller_id']);
}

Ну и сам метод подправила.


 private function order($seller_id) {
...
$data['seller_id'] = $seller_id;
...
}

По идее в моделе seller_id успешно добавляется в колонку бд, но заказ все равно создается один заказ, а не два.


class ModelCheckoutOrder extends Model {
	public function addOrder($data) {
        $this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', seller_id = '" . (int)$data['seller_id'] . "', ..........");

}

 У кого есть какие-нибудь идеи? В тупике уже какой день =(

просто такое не реализовать. когда-то делал такое, только разбивал по производителям (manufacturer_id). собирал массив товаров из корзины с ключем по производителю, и в цикле уже в контроллере оплаты создавал заказ по каждому, при этом каждый созданный заказ добавлял в массив новых заказов в сессию, потом, по каждому из созданных заказов добавлял его в историю и очищал массив заказов в сессии в конце. модификаций было много, сейчас всех не вспомню. но такую логику нужно делать для всех методов оплаты. и еще хорошо выводить в список будущих заказов на этапе подтверждения в чекауте

  • +1 2
Надіслати
Поділитися на інших сайтах


 

1 годину назад, AnnaBez сказав:

 У кого есть какие-нибудь идеи? В тупике уже какой день =(

У вас в методе order первой строкой было:

$this->simplecheckout->clearOrder();

 

Этот вызов удаляет первый созданный заказ. Если точнее, он удаляет предыдущий созданный заказ.

 

Но не спешите его удалять. Предполагаю, что без него могут возникать дубли заказов.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

Important Information

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