-
-
Notifications
You must be signed in to change notification settings - Fork 129
Open
Labels
Description
Проблема:
Если в ms2 4.3.0 переключиться на хранение корзины в бд, то в обработчике корзины core/components/minishop2/handlers/storage/db/cartdbhandler.class.php в методе add() вот эта строка
$this->products = $this->msOrder->getMany('Products');
всегда возвращает 1 последний добавленный товар, ну и как следствие если добавить два товара, ничего не менять в корзине итоговая сумма заказа будет как за один товар, хотя их по факту в заказе два.
Кроме того, в методе restrictOrder() при расчёте суммы заказа и веса не учитывается количество каждой отдельной позиции товаров.
Решение:
Изменить метод restrictOrder()
protected function restrictOrder()
{
$this->msOrder = $this->getStorageOrder();
$this->products = $this->msOrder->getMany('Products');
$cartCost = 0;
$weight = 0;
foreach ($this->products as $product) {
$count = $product->get('count');
$cartCost += $product->get('cost');
$weight += $product->get('weight') * $count;
}
$delivery_cost = $this->msOrder->get('delivery_cost');
$cost = $cartCost + $delivery_cost;
$this->msOrder->set('cost', $cost);
$this->msOrder->set('cart_cost', $cartCost);
$this->msOrder->set('weight', $weight);
$this->msOrder->set('updatedon', time());
$this->msOrder->save();
}