Автор Тема: Удаляются товары из корзины при изминении цен.  (Прочитано 65 раз)

25 Сентябрь 2018, 13:51:43
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. Заметил серъезную проблему. В магазине есть брошенные корзины, и у нас клиенты часто любят набрать корзину, а заказ сделать через пару недель. При изминении цены на товар он удаляется из корзины на сайте и из брошеных корзин в админке.

Можно ли сделать так чтобы при изминении цены они не удалялись, а просто менялась цена у товара и сохранялись прошеные корзины?
25 Сентябрь 2018, 17:54:15
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 15144
  • Репутация: +14589/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Есть модуль Сохранить корзину.
Установите его и клиенты смогут сохранять свои корзины.
26 Сентябрь 2018, 15:17:49
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 3336
  • Репутация: +77/-6
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере AdminOrdersController.php там где обновление зазаказа Update order $order->update() добавь создание новой корзины с обновленными ценами $cart->add() и обнови историю заказов с заменой id cart.
27 Сентябрь 2018, 11:25:41
Ответ #3
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере AdminOrdersController.php там где обновление зазаказа Update order $order->update() добавь создание новой корзины с обновленными ценами $cart->add() и обнови историю заказов с заменой id cart.

Помоги, объясни как это сделать, не хватает опыта. Я так понимаю где-то здесь это все нужно сделать. Но как выполнить обновление с новыми ценами и обновить историю заказов. Метод $cart->add() я смотрю в классе, что он параметров не принимает.



foreach ($result as $cart_rule)
{
$refresh = true;
// Create OrderCartRule
$rule = new CartRule($cart_rule['id_cart_rule']);
$values = array(
'tax_incl' => $rule->getContextualValue(true),
'tax_excl' => $rule->getContextualValue(false)
);
$order_cart_rule = new OrderCartRule();
$order_cart_rule->id_order = $order->id;
$order_cart_rule->id_cart_rule = $cart_rule['id_cart_rule'];
$order_cart_rule->id_order_invoice = $order_invoice->id;
$order_cart_rule->name = $cart_rule['name'];
$order_cart_rule->value = $values['tax_incl'];
$order_cart_rule->value_tax_excl = $values['tax_excl'];
$res &= $order_cart_rule->add();

$order->total_discounts += $order_cart_rule->value;
$order->total_discounts_tax_incl += $order_cart_rule->value;
$order->total_discounts_tax_excl += $order_cart_rule->value_tax_excl;
$order->total_paid -= $order_cart_rule->value;
$order->total_paid_tax_incl -= $order_cart_rule->value;
$order->total_paid_tax_excl -= $order_cart_rule->value_tax_excl;
}

// Update Order
$res &= $order->update();
$cart->add();

if (Tools::isSubmit('submitpaymentvalidated')) {
    $ids= Tools::getValue('paymentvalidated');

    foreach ($ids as $updateids) {

        $objOrder = new Order($updateids);
        $history = new OrderHistory();
        $history->id_order = (int)$objOrder->id;
        $history->changeIdOrderState(3, (int)($objOrder->id));
    }
}


die(Tools::jsonEncode(array(
'result' => true,
'view' => $this->createTemplate('_product_line.tpl')->fetch(),
'can_edit' => $this->tabAccess['add'],
'order' => $order,
'invoices' => $invoice_array,
'documents_html' => $this->createTemplate('_documents.tpl')->fetch(),
'shipping_html' => $this->createTemplate('_shipping.tpl')->fetch(),
'discount_form_html' => $this->createTemplate('_discount_form.tpl')->fetch(),
'refresh' => $refresh
)));

27 Сентябрь 2018, 11:53:02
Ответ #4
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Так обновление же в Контроллере AdminOrdersControllerCore - производит при изменении заказа который уже был размещен. А меня интересует событие когда человек накидал товаров в корзину, не заказал их, и через неделю заходит чтобы купить, то что он отложил, но если менялась цена, то товары пропадают из корзины.
27 Сентябрь 2018, 13:25:22
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22573
  • Репутация: +17130/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В контроллере AdminOrdersController.php там где обновление зазаказа Update order $order->update() добавь создание новой корзины с обновленными ценами $cart->add() и обнови историю заказов с заменой id cart.
При чем тут заказ? Вопрос в том, что при измении цены товара он удаляется из корзины.
При изменении цены вызывается методы deleteCartProducts и deleteFromCartRules класса Product.
Заказ вообще трогать не нужно.
Измений в prestashop  много придеться делать, выгружать корзину, пересчитывать сумму, менять в данные ... Обновить нельзя будет. Лучше модуль создать с уставновкой в hookUpdateProduct. При измении обновлять корзину по своим правилам.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.