Fairly pleased with my initial implementation but ran out of time during the discount sorting.
The CalculateDiscounts method is extremely messy as it was a work in progress, I definitely would have tidied it up and broke into smaller units of logic if I had completed it.
I know I need to create a grid of possible discounts and parcels used within them to determine the best savings from all discount combinations. I'm sure if I had more time I could research the best method to perform this sort of task.
With more time I would also have added proper usage comments to each of the public methods and classes.
I may have also considered a better configuration method for setting the price constants for values rather than hard coding them.
I also understand that the stated output should be a 'collection of items', however, I have simply outputed using a string. I did not expect the last step to be as challenging as it was and could have easily changed the output to a collection of a new type like 'BillItem' but was already pushing it for time.