Prevent renewal of out of stock products
When a renewal is processed containing a product that is out of stock, the customer is still billed for the unavailable product.
If the product is unavailable, why would you charge the customer for something that I can't deliver?
I can understand why some store admins, who deal in virtual products like memberships or downloads, would appreciate having subscriptions renew independently of stock constraints or other unavailability states, but in those cases, store admins can simply declare the product as being in stock, and disable stock management, opting into bypassing stock at the product level.
Why you would have the subscription itself also bypass stock, if that is something you can already do in the product?
My expectation would be that the renewal process would check for the availability of each product in the subscription order, then would only instance line items in the renewal order for the products that are indeed available.
To give you some context, in my shop I sell boxes of fresh fruit and vegetables, and my customers can subscribe to have these boxes delivered weekly at their doorstep.
Now fruit and vegetables come and go in seasons, so by overriding stock constraints, you are basically creating a manual work overhead for the store admin, who then has to refund out of season products every time they're renewed. Multiply this by 500 weekly subscribers, each with several different products, some coming into season and others going out of season, and you get a monumental unmanageable mess, all because stock isn't taken into consideration in the renewal process.
I ran into this issue for a client and put together a plug-in that attempts to address some of these issues: https://wordpress.org/plugins/subscription-stock-manager/
I’m still working on it, so if folks find it useful or have ideas/features they want to see, please let me know!
It's this sort of thing that is preventing me from implementing Subscriptions. Also, I'd need the facility to switch off new subscriptions and one-off sales (ie. using All Products for WooCommerce Subscriptions) to preserve stock needed for renewals. I've made a separate idea: "Inventory hold to stop new subscriptions and preserve stock for renewals"
Why doesn't the WooCommerce ideas section have a type of bounty pledge tool so that a core developer or other person can write a solution when there is a enough demand to fix a bug and a stated reward is available for a fix?
I am guessing every person on this thread would be willing to pledge at least $100 to get this fixed. This obvious bug is costing us a lot of time and money.
This seems like a really crappy way to manage an ecosystem and prevent it from improving.
We are willing to pay hundreds of dollars to anyone who can provide a fix to this. Thanks.
Just found out today this feature isn't available through subscriptions, disappointing.
On top of this, if there's more than one item in a particular subscription, and you only want to delete the out of stock item (which is a manual process), there is another plugin which we need to use. It also comes with a cost of $99 a year.
rowie meers commented
I also need this asap! built our whole system and now its apparent that woocommerce doesnt take into account of stock levels for subscriptions!!
Ike Borup commented
This. I have a client that has intermittent outages of certain items and lots of subscriptions. This is turning into a bigger and bigger mess every time something goes out of stock. Customers get upset and site admins/customer service reps have an increased workload. Just don't ship if the item is out of stock! Trigger an email to the customer to let them know and the problem is greatly alleviated! This seems like a bug, not something that is "by design".
Adding a Temp Hold and Partial Temp Hold status to Subscriptions (one for when all items in a subscription are out of stock, other status for when there is a mixed subscription of in stock and out of stock items) combined with a simple notification email to the customer would alleviate this headache.