I'm using Commerce 8.16.1 and CMS 8.11. I'm trying to set up a variant so that preorders are allowed. I've set the fields on the Warehouse Inventory tab -- In Stock set to 1000, Allow Preorder set to Yes, Preorder Avail. set to a date in the past. I've also set Available From on the Overview tab to be a date in the future.
First question: Is this the necessary setup to make a variant that supports preorders?
Now, because of the Available From date being in the future, my site no longer shows the product. I'm using IContentLoader and FilterPublished.ShouldFilter() to show the content. If I remove the call to ShouldFilter(), then the variant shows on the site again.
Second question: Is the recommended approach to simply remove the call to ShouldFilter(), or should I be calling into the inventory service to see if preorders are allowed... calling ShouldFilter() only if preorders are not allowed?
Third Question: Is there anything else I'm maybe not thinking of?
When it comes to preorders you will have to implement your own logic for handling it. There's no real logic in EPiServer that handles preorders (AFAIK). So you can use (or not use) those fields however you like to implement preorders in a way that makes sense to your business.
The property "Available from" is for when the product should be visible on the site (in listings and search results for example). So if it were me I wouldn't be using that property to set if a variant can be added to the cart or not because of low inventory.
Pre Orders should work out of the box. You will need to set the InStock quantity to 0 or set the number you reserved quantity to the number your want to keep for when the product is available. Then set the pre order quntaity to the number you want to sell. Once the item is available to sell with immediate shipping you will need to update the instock quantity and make sure pre order available is et to false or 0. You will need to handle the template work to let your customers know that is pre order, but the logic for handling is built in