Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


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

}

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

Link to comment
Share on other sites


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

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

 

Link to comment
Share on other sites

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

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

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

 

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

 

Link to comment
Share on other sites


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

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

 

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

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites


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

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

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

 

  • +1 1
Link to comment
Share on other sites

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
Link to comment
Share on other sites


 

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

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

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

$this->simplecheckout->clearOrder();

 

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

 

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.