Compute unit price for line when product is changed even with valid unit
The backport of #12633 (closed) was wrong because f86d35e09e87 changed the structure of method. Such that the indentation of the call compute_unit_price is not if there is a product set but if the unit is not valid.
Closes #12702 (closed)