[ 
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)

Reply via email to