I've been struggling with this issue for the past few weeks now.
My goal is to set a custom price for an item after I edit them on Cart.
Basically, I'm using an observer on the event
checkout_cart_update_item_complete, and on that observer I eventually do the following:
$item->setCustomPrice($price); $item->setOriginalCustomPrice($price); $item->getProduct()->setIsSuperMode(true); $item->save();
$item is the new quote item after the update (check Magento\Checkout\Controller\Cart\UpdateItemOptions.php) and
$price is my custom price.
After this, the quote item price gets the value of 0, even though the
custom_price field on database is actually the value that I wanted.
Any help is appreciated :)