[ 
https://issues.apache.org/jira/browse/OFBIZ-12359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Giulio Speri closed OFBIZ-12359.
--------------------------------
    Resolution: Fixed

> ProductFacility on ecommerce listing product issue
> --------------------------------------------------
>
>                 Key: OFBIZ-12359
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-12359
>             Project: OFBiz
>          Issue Type: Bug
>          Components: ecommerce, product/catalog
>    Affects Versions: Trunk, 17.12.08, 18.12.01, 22.01.01, Upcoming Branch
>         Environment: OS: Linux/Ubuntu 18.04 LTS
> Java 8
> Apache OFBiz r17.12.06
> Also affects older versions like r.13.07.03
>            Reporter: Giulio Speri
>            Assignee: Giulio Speri
>            Priority: Major
>              Labels: backport-needed, inventory, stock
>             Fix For: 18.12.06, 22.01.01
>
>
> Possible issue in the ecommerce listing of products related to the 
> ProductFacility entity and the filtering of out of stock products.
>  
> Here's the context:
>  - an ecommerce site where products are configured as a virtual-variant 
> relationship.
>  - a virtual product (parent) has color and size features associated as 
> selectable, and its variants are all the combinations of colors and sizes.
>  - in such a configuration InventoryItem records are registered for variant 
> products (the actual sold products) and not for virtual products.
>  - the product store is configured to not show out of stock products.
>  - a record of ProductFacility is created for each product variant where its 
> lastInventoryCount is automatically updated as soon as availability are 
> imported/created (through PHYSICAL INVENTORY);
>  - virtual products are associated to some ProductCategories;
>  
> {+}Issue{+}:
> Products are not shown in listing also if they have stock availability.
>  
> +Issue details:+
> Listing of products is done through the screen 
> "{_}CatalogScreens.xml#categorydetail{_}" and the _CategoryDetail.groovy_ 
> script is used to retrieve the list of products to show.
>  
> In the groovy script the service responsible to get the product category 
> members to show is _getProductCategoryAndLimitedMembers,_ which checks and 
> filters out of stock products (if ProductStore is configured to do so).
>  
> Filtering out of stock products is done using 
> _ProductWorker.java#filterOutOfStockProducts_ method, that sums up all the 
> lastInventoryCount (in all the facilities) of each category member and if sum 
> is GT 0 the (virtual) product is kept and shown in listing.
>  
> The lastInventoryCount field in the table ProductFacility is updated through 
> the eeca service _setLastInventoryCount_ on create/update on entity 
> InventoryItemDetail.
> This service works only on the product on which a stock move is committed (in 
> my case a specific product variant): it's (virtual) parent is never 
> considered.
>  
> That behaviour, in addition to the fact that filterOutOfStock method works on 
> the category members that are the virtual parents, leads to products to not 
> be shown in listing also if they have stock availability.
>  
> +Possible solutions:+
> From my point of view there are two ways to fix this.
>  
> 1) add the handling of lastInventoryCount on virtual parents to the service 
> setLastInventoryCount; the lastInventoryCount of the parent should be the sum 
> of all its variant in the same facility, and each time a variant is modified, 
> the related parent should be modified too.
>  
> 2) add the handling of virtual products in the 
> ProductWorker.java#{_}filterOutOfStockProducts{_}: here when a vritual 
> product category member is processed, all its variant should be retrieved and 
> their lastInventoryCount added up through all (store enabled) facilities.
> Only if the sum of all the variants in all the facilities is GT 0, then we 
> can keep and show the virtual product.
>  
> +Considerations:+
> After a bit of research within whole OFBiz project (R17.12.06) the 
> lastInventoryCount field has a quite limited direct usage (basically only for 
> ecommerce scopes).
> I think solution 2) is better, because I think that the ProductFacility 
> entity should not contain record for "virtual" products (products that 
> physically won't be sold, since you will sell a variant of it; for the same 
> reason virtual products should not have InventoryItem records associated).
>  
> I think that solution 1) instead is not so clean and force to adopt inventory 
> item concepts also for virtual products, that in my opinion it does not make 
> too much sense.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to