Цены товаров зависят от региона, выбранного на сайте! Однако, при добавлении товара в корзину и при дальнейшем изменении региона цены в корзине не пересчитываются. Написан метод, вызываю его при смене региона, вроде работает. Суть в том, что беру корзину, перебираю в ней товары, удаляю их и добавляю заново... может можно как-то и иначе?
public function basketRefresh() {
$order = $this->getBasketOrder();
$orderItems = $order->getItems();
if (count($orderItems) == 0) return false;
foreach($orderItems as $orderItem) {
$options = $orderItem->getOptions();
$amount = $orderItem->getAmount();
$element = $orderItem->getItemElement();
$orderItem->remove();
$orderItemNew = orderItem::create($element->id);
if ($orderItemNew instanceof optionedOrderItem) {
foreach($options as $optionName => $optionId) {
if ($optionId) {
$orderItemNew->appendOption($optionName, $optionId);
}
}
}
$orderItemNew->setAmount($amount ? $amount : 1);
$orderItemNew->refresh();
$order->appendItem($orderItemNew);
}
$order->refresh();
}