1. Use $already_reduced_stock instead of also considering $refunded_item_quantity while deleting orders. This will bring back part of #27504 again, but for now this seems to be the best solution for countering #28605. It needs discussion whether deleting a line item completely should also undo any refund related changes on it or not.
2. Also mark `stock_reduced` flag on order if any of the line item has any `_reduced_stock` flag. This will allow for stock restoring logic to work properly when order is cancelled.
3. Only adjust line item stock when order is in `processing`, `completed` or `on-hold` status state, because we need to reduce stocks on these status only. Stock adjustments in refunds or when changing statuses is already taken care of by their specific hooks.
In #26642 we removed adding reduced_stock meta when adding new order item to prevent ghost entries, but in inadvertently exposed an underlying bug where _reduced_stock meta was getting set to 0 if its emtpy.
We were then checking the presence of this meta, but also not reducing the stock in case it was not set.
Earlier we were also update `_reduced_stock` meta everytime, but we don't need to when diff is 0 because this means that everything is already consistent.
When updating an order, we call `wc_maybe_adjust_line_item_product_stock` to see if any item stock needs adjusting. We were not considering if an item has been refunded, which was causing incorrect stock adjustments.
This fix also takes in to account that an order has been refunded partially or fully.
Fixes#24489
Allow other plugins to be able to change $item object, for example to adjust line subtotal/total before its saved.
My need for this change is because I have custom booking product item, and attached custom inputs for the item ( checkin / checkout dates etc ). So whenever those inputs are changed in order edit page and ajax save is triggered, I need to auto adjust booking item's line subtotal/total ( because of booking dates changed ) before item is saved.