This is not good I think, this setter must be in the if. Imagine there are item already shipped (unit `sold`), then this would set it back to on hold... 
Behavior is: we set to on hold every units that was checkout before.