discount return values are promised to be decimal, item discount calculation also gets item count