The error check occurs when the service is added.
Regarding display of packages that have no remaining quantity, we discussed this previously and the decision was that packages should appear when no quantity is available. I think if we're going to prevent users from adding an item to the cart that has no quantity available at that time, it should still be shown but instead say "OUT OF STOCK". If someone doesn't want a particular package shown they can remove it from the order form.
Anything outside the scope of fixing the issue related to adding services to the system when quantity is unavailable should be added as a separate task as it is not bug related.
Steps to duplicate?
There's already an error check in Services (Services::decrementQuantity()) which handles decrementing quantity if, and only if, there is quantity to be decremented. If quantity can not be consumed an error is returned.