Hello,
We have used NopCommerce several times, versions 1.90, 2.20 and 2.40. Most of the sites we build are for physical shops that have the Products in-stock and therefore the stock management functionality is very important to them. Most aspects of Nop both we and the client really like, but the Stock Management Functionality truly lets the solution down - there is also a huge difference between the functionality when managing stock by Variant versus by Product Attributes. I would like to suggest the following improvements:
1) There should be a field for "Back in stock timescale". This would allow the Administrator to enter a value in day/weeks/months that would indicate how long it would take to be back in stock. From an Customer's point of view, if an Item was out of stock the message could say something like "Out of Stock, available in 10-14 days". This should be available when managing stock by Variant or by Product Attributes.
2) The "Minimum Stock Quantity" field should be available when managing stock by either Variant or by Product Attributes. I would suggest that this is still set at the Variant level, so therefore each of the product attribute combinations uses the same "Minimum stock quantity" value.
3) The "Low Stock Activity" field/functionality should be available when managing stock by either Variant or by Product Attributes. Again, I would suggest that this field is still set at the Variant level. Only when Nop detects that every Product Attribute Combination within a variant has a stock level of Zero would it either Disable the Buy button or Disable the Wishlist button.
4) The "Notify Admin for Quantity below", "Back Orders" and "Allow back in stock subscriptions" field/functionality should be available when managing stock by either Variant or by Product Attributes. Again, I would suggest that this field is still set at the Variant level.
5) If the Option is selected to Manage Stock by Product Attributes it should not be possible to Save the variant without every possibly combination of Product Attributes having been added to the system. For example, Sizes (8, 10, 12) with Colours (Red and Blue) would require 6 entries (8, 10, 12 for Blue and 8, 10, 12 for Red). This ensures two things - if the administrator accidentally forgot to add a particular combination it still ensures that a Customer cannot buy it. Otherwise it is a half hearted effort at managing stock. I would suggest a Button within the Product Attribute Combinations screen labelled Pre-Populate. This would create an entry for every possible combination leaving the Administrator only to have to update the Stock Levels.
6) Currently there is an option to Disable the Buy Button/Unpublish the product if an item goes out of stock. If you add stock back for a particular product Nop does not automatically Republish/Re-enable the buy button. I can understand the logic why (we may have unpublished the product or disabled the buy button for another reason), however there is a place that this creates a problem. e.g:
A Customer places an order for a Product that only has 1 left in-stock. The customer reaches the Confirm page and clicks "Go to payment" (i.e. via WorldPay/Paypal etc). At this point Nop creates an order for that Customer, minuses 1 from the stock count - this would mean that the stock count is now zero. If the Variant was set to "Disable the buy button" or "Unpublish the product", Nop will now do this. For whatever reason, the Customer does not complete the purchase and therefore in reality we should still have a Qty of 1 left in stock. Later that day the Administrator cancels the order - Nop re-adds the Qty of 1 to the stock level for the product the Customer purchased, but it does not Re-enable the buy button or Re-publish the page. That's a massive problem, because currently we are saying if an Administrator Cancels an order they must go back into the product variant and check if its unpublished/disabled.
My suggestion would be that when an order is cancelled a dialog window should appear with the following options (for each product in the order)
- Do you want to want to re-allocate stock for Product N? Yes/No
- [Product N appears to be un-published, would you like to re-publish? Yes/No]
- [The "Buy Now" button for Product N appears to be disabled. Would you like to re-enable? Yes/No]
The reason I have added the question "Do you want to re-allocate stock for Product N" is because that the system shouldn't automatically re-allocate the stock just because the order is being cancelled. If the Customer purchased the goods and they were faulty and wanted a refund the Store owner may well decide not to recover their goods, so it can't be assumed they will always come back into stock.
7) Back in stock subscriptions should not require the Customer to register. I would suggest that we remove the requirement to register and simply store an email address and possibly name. For users that are already registered and logged-in, we can pre-populate the form fields for email/name. Yes, ok we are duplicating data her by storing an additional entry for the customers name and email, but we are doing so to make the process far more user friendly, and frankly we are only storing a few bytes per customer.
8) The Low stock report should contain both variants where the Stock is managed at the variant level, or by product variant attributes.
9) All triggers/events i.e. back in stock subscriptions, admin notification when stock below "Minimum stock level" etc should be triggered in both scenarios.
The list above does no-doubt represent a considerable amount of work, however I believe it will:
- Increase it's suitability for larger clients
- Increase it's suitability for client's with slightly more complicated stock management requirements i.e. by product attributes (this is very common offline in high street shops that manage stock by colour, by size etc)
- Make it far easier to integrate with external stock management applications
- Make it a far more comprehensive eCommerce platform
I have seen so many comments on the forums about the stock management. If anyone else has any suggestions it would be a good idea to roll them into the same ticket. I am going to open a work request on CodePlex, if I can get enough support from the community. IF YOU FEEL THIS IS BENEFICIAL TO NOPCOMMERCE PLEASE VOTE.
Nop team - appreciate you taking the time to read this and hopefully providing back your thoughts/reactions.
Thanks in advance
Al