Fix a bug where if item price is no longer discounted, Order#amount could return inconsistent result
Only save item if needed
Validate uniqueness of uuid