Sorry but reopening and voiding is not the correct route.
Also void and refund are two completly different things!!
In you picture above your 23 product 1 should have already been paid for.
So they then change to product 2 for 50 right? Leaving 27 to pay since 23 already paid.
So forget the origional ticket for 23.
If you setup refund corectly you would then add product one for 23, select refund making ticket -23 then add product 2 for 50 leaving a balance of the 27 difference.
Here is emres tutorial for refund button;
My preference is to use invers qty rather than price since i would generally reat refund as a not sold/returned stock item. We have seperate system for wastage etc so would be counted there.