Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


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'] . "', ..........");

}

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

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


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

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

 

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

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();

 

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

 

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

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


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

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

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

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

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

Войти

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

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

×
×
  • Создать...

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

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