[
https://issues.apache.org/jira/browse/OFBIZ-12264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17442529#comment-17442529
]
Giulio Speri commented on OFBIZ-12264:
--------------------------------------
Hello Pierre, Jacques,
I rewrote the patch as suggested by you and how reported in the wiki for the
trunk branch.
I slightly modified it:
* in _reserveStoreInventory_ when ProductStore flag oneInventoryFacility is N
and the ProductStoreFacilities are looped to find where inventory available
could be, if no facility is found I directly return from the service with a
specific error, instead of picking the first facility in the list above.
* I added a filterByDate filter also to service
{_}isStoreInventoryAvailable{_}: that service returns Y or N whether a product
is available in some facilities. This filtering also avoid products in this
scenario to be added to the cart with the following error:
!Screenshot from 2021-11-12 01-58-45.png|width=674,height=288!
This prevents an item to be added to the cart if no stock is available in one
of the "enabled" ProductStore facilities.
I tested different situations (facility enabled/disabled, service
isStoreInventoryAvailable filtered/non-filtered) and I think that these two
combined fixes solve the original issue.
Here is the updated patch for trunk.
[^OFBIZ-12264_trunk.patch]
Thanks and good night,
Giulio
> 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_trunk.patch, OFBIZ-12264_v130703.patch,
> OFBIZ-12264_v17.patch, Screenshot from 2021-11-12 01-58-45.png,
> 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.20.1#820001)