product objects know whether they are currently on sale
sale affects final price