Set currency first, if we have a currency

This fixes a bug where the order of attributes passed to a constructor
would end up with different amounts.

Change-Id: I9fa0c6ec9137ee5acd2b6d3bafced609d4bfca61