spree/spree — pull request #5843 by IrvinFan (2014-12-30 22:05:53+00:00)
Title: Do not trigger full order update when fulfilling a backordered order

This PR fixes the following issue:

1. Place an order with two products and both are in backordered. Make sure there was shipping cost. As shown below.
![screen shot 2014-12-30 at 1 40 46 pm](https://cloud.githubusercontent.com/assets/5523239/5583320/55d01b86-902b-11e4-8605-1dc2c7e76383.png)

2. Update the shipping method with higher cost ($5 -> $8 in this test).
3. Increase product1 inventory to fill the backorder. Now the shipping cost for the order is changed to $8 (shown belown).
![screen shot 2014-12-30 at 1 41 43 pm](https://cloud.githubusercontent.com/assets/5523239/5583341/a41ec116-902b-11e4-88f1-e3bad7101073.png)

4. Increase product2 inventory to fulfill the whole order. Now a paid order becomes balance due because shipping cost is changed.
![screen shot 2014-12-30 at 1 42 09 pm](https://cloud.githubusercontent.com/assets/5523239/5583351/d4bce60e-902b-11e4-9d75-51b05fdf8966.png)

This is really a bad user experience. The root cause is that when we fulfill an order we do order.update! and it refreshes the shipping rates and updated the shipping cost. It was introduced by: https://github.com/IrvinFan/spree/commit/2e220b2f5eb20c9534ee6c17906ec09ca72fcb85 When an order is changed (quntity is increased, slitted, etc.) we do need to recalculate shipping cost. But when an order is fulfilled simply by increasing the inventory we shouldn't do full order update. This PR is trying to address that.