If we were to have a custom quote object which we were adding items to, we can re-calculate the totals in the cart using the following method.
$shippingAddress = $preorderQuote->getShippingAddress(); $shippingAddress->unsetData('cached_items_all'); $quote->setTotalsCollectedFlag(false)->collectTotals(); $this->quoteRepository->save($quote);
We unset the cached item on the quote address object to force Magento to re-load the items for the address. This is necessary as Magento will sometimes not update this automatically, leading to an incorrect zero value quote and quote items.