The ProductStore is set up to reserve inventory from more than one facility, so the flag oneInventoryFacility is set to N.
The we have 8 different facilities configured (each with a specific sequence num from 1 to 8) in the entity ProductStoreFacility.
Due to customer requests I had to disable 6 out of 8 facilities associated with the store, so basically only facilities with (sequence) numbers 1 and 2 are left. To achieve this I set the thruDate on the other six records.
After that, an order came in with a variant product that had only 1 quantity left available in one of the disabled facilities and 0 in both the two facilities left enabled, but despite this the system reserved inventory from the disabled facility: I wouldn't expect that.
The service responsible for the reservation is reserveStoreInventory that in our ofbiz version (13.07.03) is minilang and is implemented in ProductStoreServices.xml: I checked that service and I noticed that when the ProductStore is set to multi facility (oneInventoryFacility to N) and the list of productStoreFacility records are retrieved, they are not filtered by date, and this lead to a "bad" reservation.
I took a look also at the current revision of ofbiz and the code (groovy script) is basically the same, so the issue is present there also.
The the reservation should not be done for this product, but this part is only the last step of the ecommerce sales order flow.
I think that with a scenario like the one above, the specific product variant should not even be added to the cart, so in the item page (productdetail) this particular variant should not have been visible/selected by the user.
But I have to take a better look at this part.