[ https://issues.apache.org/jira/browse/OFBIZ-12264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17374306#comment-17374306 ]
Giulio Speri commented on OFBIZ-12264: -------------------------------------- HI, I've created a patch for the reserveStoreInventory service, both for version 13 and 17. I post here some considerations on the patch: * the service mainly checks for the existence of input the parameter "facilityId"; *CASE 1)* if it does not exists (front-end/ecommerce application scenario) and the flag "oneInventoryFacility" is set to "N" on the ProductStore, it retrieves the list of all the ProductStoreFacility records and try to find a valid facility for reservation. In this step I added a filter-by-date entity filter to exclude disabled facilities; * in the above scenario, if a valid facility for reservation is not found I explicitly rise and return an error in the service, otherwise sales order is created anyway; thinking about an ecommerce context, I think that this is necessary to avoid that a customer pays for a product that is not available; * *CASE 2)* the input parameter facilityId exists (backoffice order entry scenario where inventory facility is selected in the process) and "oneInventoryFacility" flag is "N" ; The system retrieves the ProductStoreFacility records for the store and facility given as parameters: I added a filter-by-date filter to this find. In this scenario I do not rise an error for the service and I simply log an updated message in case there is quantityNotAvailable for a product. Basically it does the same thing as always and I kept it as is, because backoffice order entry flow is performed for manual handle of orders so I I think is ok having some more flexibility. I really appreciate if you could give me your opinion on this; in the meanwhile I will investigate the front-end part of this: I think that a variant that has quantity in a disabled facility should not appear in a product detail page and a user should not be able to add it to the cart. Thanks, Giulio [^OFBIZ-12264_v17.patch] > Multiple Facility Inventory reservation does not consider store facility thru > date > ---------------------------------------------------------------------------------- > > Key: OFBIZ-12264 > URL: https://issues.apache.org/jira/browse/OFBIZ-12264 > Project: OFBiz > Issue Type: Bug > Components: ecommerce, product > Affects Versions: 17.12.03, 17.12.04, 17.12.05, 17.12.06, 17.12.07 > Environment: Linux/Ubuntu 18.04 LTS, Java jdk 8, OFBiz v13.07.03 > > Reporter: Giulio Speri > Assignee: Giulio Speri > Priority: Major > Attachments: OFBIZ-12264_v130703.patch, OFBIZ-12264_v17.patch, > image-2021-06-24-00-35-10-392.png, image-2021-06-24-00-37-21-890.png, > image-2021-06-24-00-40-41-737.png, image-2021-06-24-00-41-56-344.png, > image-2021-06-24-00-43-33-640.png, image-2021-06-24-00-46-17-924.png, > image-2021-06-24-00-49-23-904.png > > > 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. > > ADDITIONAL NOTE: > 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. -- This message was sent by Atlassian Jira (v8.3.4#803005)