Free shipping for orders with total amount larger then N doesn't work. This happens because all shipping discounting is processed in place, which result is cached for 1 hour and when order amount is changed cache is not reset. Actually cache should not be reset, because in case when Intershipper or USPS is used such type of cache prevents repeated queries to shipping engines. Also free shipping doesn't work, when shipping type is "handling".
I propose to move all shipping discounting to separate method and call it from 2 places:
- order total amount calculation
- shipping price display