Git Product home page Git Product logo

nopsolutions / nopcommerce Goto Github PK

View Code? Open in Web Editor NEW
8.9K 622.0 5.1K 1.07 GB

ASP.NET Core eCommerce software. nopCommerce is a free and open-source shopping cart.

Home Page: https://www.nopcommerce.com

License: Other

C# 66.89% CSS 2.07% JavaScript 0.84% HTML 18.27% Dockerfile 0.01% TSQL 11.91% Batchfile 0.01% Shell 0.01%
ecommerce shopping-cart asp-net asp-net-core aspnetcore shop dotnet dotnet-core sqlserver e-commerce

nopcommerce's Introduction

nopCommerce: free and open-source eCommerce solution

nopCommerce is the best open-source eCommerce platform. nopCommerce is free, and it is the most popular ASP.NET Core shopping cart.

nopCommerce demo

Key features

  • The product is being developed and supported by the professional team since 2008.
  • nopCommerce has been downloaded more than 3,000,000 times.
  • The active developer community has more than 250,000 members.
  • nopCommerce runs on .NET 7 with an MS SQL 2012 (or higher) backend database.
  • nopCommerce is cross-platform, and you can run it on Windows, Linux, or Mac.
  • nopCommerce supports Docker out of the box, so you can easily run nopCommerce on a Linux machine.
  • nopCommerce supports PostgreSQL and MySQL databases.
  • nopCommerce fully supports web farms. You can read more about it here.
  • All methods in nopCommerce are async.
  • nopCommerce supports multi-factor authentication out of the box.
  • Start our online course for developers and get the practical and technical skills you need to run and customize nopCommerce websites.

Logo

nopCommerce architecture follows well-known software patterns and the best security practices. The source code is fully customizable. Pluggable and clear architecture makes it easy to develop custom functionality and follow any business requirements.

Using the latest Microsoft technologies, nopCommerce provides high performance, stability, and security. nopCommerce is also fully compatible with Azure and web farms.

Our clear and detailed documentation and online course for developers will help you start with nopCommerce easily.

The advantages of working with nopCommerce

nopCommerce offers powerful out-of-the-box features for creating an online store of any size and type.

nopCommerce is integrated with all the popular third-party services. You can find thousands of integrations on nopCommerce Marketplace.

The Web API plugin by the nopCommerce team lets you build integrations with third-party services or mobile applications using REST. The Web API plugin is available with source code and covers all methods of nopCommerce: backend and frontend. You can read more about it here.

Friendly members of the nopCommerce community will always help with advice and share their experiences. nopCommerce core development team provides professional support within 24 hours.

Store demo

Evaluate the functionality and convenience of nopCommerce as a customer and store owner.

Front End Admin area
ScreenShot ScreenShot

nopCommerce resources

nopCommerce official site: https://www.nopcommerce.com

nopCommerce YouTube: The Architecture behind the nopCommerce eCommerce Platform

Earn with nopCommerce

60,000 stores worldwide are powered by nopCommerce, and 10,000 new stores open every year. nopCommerce solution partners’ directory gets 80,000+ page views per year from store owners who are looking for a partner to build a store from scratch, migrate from another platform, or improve and customize an existing store.

Become a solution partner of nopCommerce and get new clients – learn more.

Create a new graphical theme or develop a new plugin or integration and sell it on the nopCommerce Marketplace.

Contribute

As a free and open-source project, we are very grateful to everyone who helps us to develop nopCommerce. Please find more details about the options and bonuses for contributors at contribute page.

nopcommerce's People

Contributors

alessandromontividiu03 avatar andreimaz avatar andreymaz avatar curllog avatar davidandrewpowell avatar dianbi avatar dmitriykulagin avatar ehalzombi avatar exiledev avatar fuadhasan28 avatar hfz-r avatar holydk avatar jafin avatar justindongqiang avatar kirilchik avatar lubovkhokhlova avatar manojkulkarni30 avatar maxmommersteeg avatar mhsjaber avatar odises avatar parshan2 avatar purehatime avatar rickardvh avatar romanovm avatar samplusplus avatar schulz3000 avatar skoshelev avatar toddca avatar veronicaishere avatar zalhera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nopcommerce's Issues

Localize main website keyword, meta title and meta description

We should allow a store owner to localize main website keyword, meta title and meta description by store and by language on the "general and misc" page > seo settings tab (http://admin-demo.nopcommerce.com/Admin/Setting/GeneralCommon). Like it's already done for some entities when have multiple languages enabled. It's also already supported for some payment methods (description).

The problem is that these settings can be also configured per store. Both of these additions (multi-store and localizations) make implementation a bit complex. And how should displayed it in UI? Configure per store and localization at the same time? Any ideas?

Also note that it requires some performance optimization if used for this work item - "Setting" entity should not be loaded (by ID) when loading a localized value - see "GetLocalizedSetting" method of \Nop.Services\Localization\LocalizationExtensions.cs

There's no really good solution in terms of UI/UX

Add other new ways for reward points to be auto added (can be done as plugins using events)

  1. when a customer leaves a product review (once approved). Also display a text something like "You will earn 5 points for writing a review and 4 points for rating this product". also see contribution at http://www.nopcommerce.com/boards/t/33963/feature-request-give-reward-points-for-writing-a-product-review.aspx#138422. we also have appropriate events added in version 3.60
  2. when a customer subscribes to a newsletter (ensure it's not done twice when unsubcribe/subscribe)
  3. when a customer leaves a blog comment (ensure it's not done twice when activated/deactived)
  4. when a customer leaves a news comment (ensure it's not done twice when activated/deactived)

Make it configurable on "reward points" settings page

Maybe, just add appropriate events and use them in plugins (IMiscPlugins)

before starting let's discuss a list of events to use (add reward points)

Admin area > category and manufacturer lists. Allow a store owner to filter by a store

Maybe, simply display in the grid (new column) in which stores they are available. Because for hierarchical entities (such as categories) is could cause some minor issues

Forum source: http://www.nopcommerce.com/boards/t/23451/feature-request-show-multi-stores-on-manage-categories-page.aspx

We should think how to better move this logic outside of these service methods (we'll have to manually pass "storeId" to each of these updated methods)

Admin area (KendoUI) localization and globalization

UPDATE: postponed after #75

It causes some issues. So let's make it configurable (allow a store owner to disable it).Also note that we're going to move away from KendoUI. So should we do it?

Please see http://docs.telerik.com/kendo-ui/getting-started/framework/globalization/overview and http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/globalization

also see http://www.nopcommerce.com/boards/t/19235/latest-telerik-version-incorrectly-shows-decimals-in-different-locales.aspx and http://www.nopcommerce.com/boards/t/2653/how-to-change-date-format-for-admin-interface.aspx and http://www.nopcommerce.com/boards/t/24688/languagedecimal-formatting-bug.aspx

How it can be done:

  1. Set server-side culture in Global.asax.cs. Always invoke the following code (not just "not in admin area"):
    CommonHelper.SetTelerikCulture();
  2. Update CommonHelper.
    Add:
public static bool ForceEnUsCulture()
    {
        var forceEnUsCulture = !String.IsNullOrEmpty(ConfigurationManager.AppSettings["ForceEnUsCulture"]) &&
              Convert.ToBoolean(ConfigurationManager.AppSettings["ForceEnUsCulture"]);

        return forceEnUsCulture;
    }

and replace "SetTelerikCulture" with

/// <summary>
    /// Set Telerik (Kendo UI) culture
    /// </summary>
    public static void SetTelerikCulture()
    {
        if (ForceEnUsCulture())
        {
            //little hack here
            //always set culture to 'en-US' (Kendo UI has a bug related to editing decimal values in other cultures). Like currently it's done for admin area in Global.asax.cs

            var culture = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }
}
  1. Update /Nop.Web/Administration/Views/Shared/_AdminLayout.cshtml

Add:

var kendoVersion = "2014.1.318"; 
var forceEnUsCulture = CommonHelper.ForceEnUsCulture(); 
var currentKendoCulture = EngineContext.Current.Resolve<IWorkContext>().WorkingLanguage.LanguageCulture;

then add (before registration of kendo.web.min.js:

//javascript resources
if (!forceEnUsCulture)
{
    Html.AppendScriptParts(string.Format("~/Scripts/kendo/{0}/cultures/kendo.culture.{1}.min.js", kendoVersion, currentKendoCulture));
}

then add (in HTML)

@if (!forceEnUsCulture)
{
            <script type="text/javascript">
                //set kendo UI culture
                kendo.culture("@(currentKendoCulture)");
            </script>
            }
  1. Update import/export so it works in en-US only

But it still does not work properly when other cultures are used (e.g. ru-RU):

  1. Grids always send edited values in en-US culture (AJAX)
  2. Getting "The field XXX must be a number" validation errors on standard pages

[AM] Also see comments below

Display "Edit" link on the product details page (public store) if a user has such permission

When browsing products in public store, show link 'Edit Product', when user is administrator (or have sufficient rights). Great time-saver for minor changes in products

  1. Add public bool CurrentUserHasEditPermission { get; set; } to \Models\Catalog\ProductDetailsModel.cs

  2. To ProductController, PrepareProductDetailsModel add
    //does the current user have edit permission?
    model.CurrentUserHasEditPermission = _permissionService.Authorize(StandardPermissionProvider.AccessAdminPanel) &&
    _permissionService.Authorize(StandardPermissionProvider.ManageProducts);

  3. To \Views\Product\ProductTemplate.Simple.cshtml and \Views\Product\ProductTemplate.Griouped.cshtml add something like the code below

                    @if (Model.CurrentUserHasEditPermission)
                    {
                        <div class="edit-product">
                            <a href="@Url.Action("Edit", "Product", new {id = Model.Id, area = "Admin"})">@T("Common.Edit")</a>
                        </div>
                    }
    

We just need to create better UI. Good idea - http://codepen.io/MeredithU/pen/jcsvx (but should we attach "font-awesome" just for one icon?

Please see http://www.nopcommerce.com/boards/t/41611/feature-request-front-end-edit-option-for-admins.aspx (put it to the top -"Administration" link)
P.S. Right now ignore for vendors

Better "in-store pickup" support. Allow a store owner to configure (and a customer to choose) a pickup location (contribution)

Allow a store owner to configure (and a customer to choose) a pickup location (contribution)

A store owner should be able to configure a lot of pickup locations. Once done we can think about ability to limit them per city or country (e.g. there's no need to displayed pickup location in France if a customer if located in the USA)

Source: http://www.nopcommerce.com/boards/t/33202/shipping-via-collection-point-pickup-location.aspx

Contribution - https://nopcommerce.codeplex.com/SourceControl/network/forks/tommy7m/PickUpPoints

let's discuss how it's better to implement (UI)

Back in stock timescale (e.g. "available in N days")

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 field should be localizable. I think it's better to implement it the same way as "Delivery dates" (new entity). Or just a new localizable field for products? Let's discuss first

Magnifying product pictures

Magnifying capability when hovering over a product picture. Right now we have a setting to show a popup window. Let's extend the existing setting to support three behaviours - "do nothing", "display popup", "zoom/magnify" (the new one)

Forum source: http://www.nopcommerce.com/boards/t/14518/enhancement-hovering-over-additional-photos-needs-to-change-the-main-product-picture.aspx

Zoom and magnifying (below):
Here is a contribution - http://nopcommerce.codeplex.com/SourceControl/network/forks/breakskater/zoomlens

Here is one more contribution http://www.nopcommerce.com/boards/t/9904/zoom-professor-cloud-integration-working-fine.aspx

http://www.nopcommerce.com/boards/t/19134/a-zoom-of-a-project.aspx

See related work item #2186

Buy 2 get 1 free discounts. Notify about free products. Option to add them automatically to the cart

Notifications about discounted products and automatical way to add "free" products. One more issue is that you have to manually add "free" product to the cart. So we need to find a way to notify a customer about this free product. We should show a message on the product page i.e. "Buy one more and get a free gift" or "Buy product Y for a discount" etc. We only way to implement it is the following. Load ALL products on the shopping cart page. Calculate price for EACH of them considering discounts and all possible discount requirements. If price is 0 and some discount is applied, then add this product to the cart. But it'll simply kill the performance. Of course, we can implement kind of rules (e.g. "if product 1 with qty 2 is in the cart, then add qty 3") but this way we'll lose all advantages of "Discount" entity (e.g. start/end dates. discount requirements, etc). Of course, we can also use tier prices to apply such discounts. It's the easiest way to go if you're talking about the same products.

Forums source: http://www.nopcommerce.com/boards/t/14298/buy-2-get-the-3rd-one-free.aspx

Let's see whether it's available as a plugin (http://www.nopcommerce.com/p/2589/bundled-discounts-buy-together-plugin.aspx). If yes, we can postpone it

Allow affiliates to sign-up in public store (configurable) + interface for the affiliate for monitoring his account, customers etc

Allow affiliates to sign-up in public store (configurable) similar to vednor registration (disabled by default). Have a look at open cart affiliate support (http://demo.opencart.com/index.php?route=affiliate/login).

Logged-in affiliates can see order reports (order id, order date, order total)

Also see another suggestion - http://www.nopcommerce.com/boards/t/28309/feature-request-every-customer-should-have-an-affiliate-url.aspx

also see http://www.nopcommerce.com/boards/t/43311/suggestion-affiliate-program-improvment.aspx#171774

also see the comment below

Issue with dates in KendoUI (Telerik) grid

Details: http://www.nopcommerce.com/boards/t/14024/issue-with-dates-in-teleriks-grid-admin.aspx

nopCommerce store owners can have custom timezones. There two solution:

1 Using 'string' instead of 'DateTime' in admin area models (not a way to go!)
2. Convert dates in JsonResults on server (configurable - disabled by default). Let's make it configurable (can be disabled).

Useful link - http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format

Ability to limit payment plugins by customer role (available as a plugin)

Would be a great feature to be able to restrict Payment Method to one or many Customer Roles.
Eg. Only your "trusted" customers can order with Purchase Order, others have to pay with Credit Card.

Forum source: http://www.nopcommerce.com/boards/t/28362/suggestion-payment-method-restrictions-on-customer-roles.aspx
Please note that in version 3.50 you can easily put this logic into new "HidePaymentMethod" method in payment plugins

Currently can be done in ShippingDirector and PaymentDirector third-party plugins

PO (purchase order) and vendor enhancements

NC has a great start for Vendor support, but I was wondering if we could enhance it even more. Volusion has a great implementation for Vendors. It allows the admin to setup vendors with lots of information about the Vendor to be used when drop shipping and creating POs that are automatically sent to the Vendor when an order is made. You can see details (along with some screenshots) of what it all entails here http://support.volusion.com/article/vendors. The Purchase Order features would be a huge addition to NC for those of us that use Vendors with Drop Shipping. Thanks for your consideration.

Forum source: http://www.nopcommerce.com/boards/t/27963/enhancement-add-more-features-for-vendor-support.aspx and http://www.nopcommerce.com/boards/t/29853/additional-vendor-features.aspx

SilhouetteBS is going to implement it as a plugin (said on 2016/02/02). So let's leave it for customization

Product attribute price adjustments as percentages

Currently it is possible only to adjust product price using fixed amounts (eg. if color = blue -> price is +5). It would be very benficial if it would be possible to do such adjustment using percentage basis. Eg. if size id XL then price is 10% more; if size is XS than price is 25% less etc.

Forum source: http://www.nopcommerce.com/boards/t/19239/percentage-adjustment-for-product-variant-attributes.aspx

We should add percent to the base product price only (in case if there several product attributes with price adjustments)

Display "From" prices for products with attributes or combinations with price adjustments (configurable)

We have product boxes on catalog pages (category, manufacturer, etc). In some cases, we have product attributes with price adjustments. In some cases, we have attribute combinations with price adjustments.

So actually we should display the minimum possible price of a product. So if a product could have different prices (based on selected attributes), then we should display "From ..." price instead of the fixed base price (such as it's done now at https://demo.nopcommerce.com/desktops - just an example).

Also, let's make it configurable whether to display the base price or display the minimum possible price. Otherwise, it can affect the performance in some cases. Add this new setting to admin area > configuration > catalog pages > "Catalog pages" block > "Display "From" prices" setting (disabled by default)

Flyout (mini) login box (available as a plugin)

Just like the mini shopping cart, many websites have a mini login button also. I myself leave many website once I get redirected to a login page and then return to the home page and not the previous page before the login.

As we hover on the Shopping cart link, in the same way the register link should also have a small flyout for login and should remain on the same page after authentication.

Think how it would be better ti display external authentication methods such as Facebook, twitter, etc. Maybe, just add a "Login using other providers, etc" hyperlink to the login page if we have at least one external authentication methods

Usage of several discounts simultaneously (with the same discount type)

Usage of several discounts simultaneously (with the same discount type). Store owner will be able to manage this option for each discount ("Cumulative with other vouchers").

We also should introduce some kind of discount priority for discounts. Because final price could be distinct if two discounts are applied to the same product or order total depending on priorit. For example, if one of them have "fixed value" and the other one has "percent" discount specified. For example, (price-$10) x 50% is not the same as (price x 50%)-$10

Automatically update order totals when editing an order (configurable)

Automatically update order totals when editing an order in admin area (editing, deleting products, etc).

But as we may have quite complex discount rules and tax rules which could be changed since an order was placed, then we should allow a store owner to choose whether order totals should be also updated (make this option configurable)

It is really VERY complex to tackle it since it has to consider the products and their atributes and their inventory, weight, attributes and thier price/weight adjustments; regular, old and tiered prices, special prices and discount and tax rules (all which change from time to time); shipping expenses etc. etc.
In my experience it is very uncommon. If you have inventory control (which is very important for certain kinds of products which have limited availavility, such as clothes, shoes, etc.) then changes are rare. The number of votes and requests for that are indicative that there is not much demand for it.

we should also update shipping info - http://www.nopcommerce.com/boards/t/43139/adding-products-to-existing-order-without-all-product-information.aspx

Don't forget about multi-store properties.

Also see #1920 and #2090 (similar task related to order item editing)

Multiple invoices per order (e.g. payments per installments)

Add support for payments by installments and multiple payments. In this case we should add a new entity - "Invoice" (not the same as "Order"). Like it's already done in magento. Make separate invoices for refunds, void, etc

also see https://www.nopcommerce.com/en/boards/topic/43264/suggestion-store-order-paymentrefund-transaction-information-in-a-separate-table


Add support for payments by installments and multiple payments.

Take into account the following:

  1. It might be a minimum purchased amount to accept this payment method
  2. There should be a formula to calculate the installments. Example Pn=T/n * Kn where Pn is the monthly amount to pay when the Total (T) will be payed in n installments; and Pn is a factor to reflect the financial cost for thelaying payment in those n installments.
  3. It is very common that the factor Kn will vary from bank (issuer bank of the card) to bank; so it might have to be enhaced to Knb and the customer must select the bank.

In this case we should add a new entity - "Invoice" (not the same as "Order")

also see https://www.nopcommerce.com/en/boards/topic/34207/suggestion-expand-the-paymentstatus-enum

Allow a store owner to decide which address fields are for billing or shipping address (separately)

For example, disable email for shipping address (http://www.nopcommerce.com/boards/t/33325/disable-email-field-in-shipping-address.aspx). Or email, zip, country, etc. The same is about custom address atributes. Other carts simply don't have "Email" in "Address" entity

Currently nopCommerce do not distinguish billing and shipping address when editing in public store > my account > addresses. We should think how to handle it. Most probably we'll have to separate addresses to billing and shipping (like it was done in versions 1.X). But it's a bit wrong

Maybe, we should simply allow a store owner disable "shipping email" now? Won't it be enough?

Display ribbon on the product boxes over the picture when some discount is applied, "old price" is specified, marked as new (available as a plugin)

This is how I did it for old price:

  1. CSS:
.product-grid .product-item .picture, .product-list .product-item .picture{position: relative;} 
.old-price-ribbon {-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);border:25px solid transparent;border-bottom: 25px solid #757575;position:absolute;top:0;left:-42px;padding:0 10px;width:65px;color:white;} 
.old-price-ribbon .txt{position:absolute;top:5px;left:25px;}
  1. ProductBox.cshtml
@if (!String.IsNullOrEmpty(Model.ProductPrice.OldPrice))
{
    <div class="old-price-ribbon">
        <div class="txt">
            @T("Promo.Sale")
        </div>
    </div>
}

right after closing tag inside picture

Some other points:

  1. Make this option configurable (move to UI)
  2. Test it in IE8 (hide if not supported b display:none)
  3. DO not forget about RTL theme
  4. We can do the same for discounts. Contribution here - https://nopcommerce.codeplex.com/SourceControl/network/forks/nicolasmuniere/contibutions/contribution/3900
  5. Also see existing plugins http://www.nopcommerce.com/extensions-and-themes.aspx?searchterm=ribbon
    6.Implement for products marked as "NEW"

Let's discuss what exactly we should display (ribbons)

Remove render blocking scripts (contribution)

is there a way to implement something which will pass google's remove render blocking scripts and css rules? This will make our websites get a lot better pagespeed and will rank higher. When we were discussing abt it on forum we saw some ppl moved from Nopcommerce just bc of that which is sad. Look at here: https://developers.google.com/speed/docs/insights/BlockingJS and https://www.feedthebot.com/pagespeed/defer-loading-javascript.html

Source:http://www.nopcommerce.com/boards/t/31024/remove-render-blocking-javascripts.aspx and http://www.nopcommerce.com/boards/t/31024/remove-render-blocking-javascripts.aspx?p=8#154950 (solution)

Also see the attached archive. It contains implementation of the solution for rendering blocking script. please find attached the files for the actionFilter which avoid the rendering blocking scripts. I used also Microsoft.Ajax.Utilities for minify css and js (AjaxMinSetup.msi). It's the first try, but I think it should give an idea how this issue should fix. Please give me an feedback. Also if you see any improvements let's talk about it. I think in the standard it should be possible to configure whether minize html, move js and inline css is enable.

JavaFilterAttribute.zip

Products. Add support for video

It would be nice to be able to associate a video with a product like today we have images for products. Allow adding links to youtube, vimeo,... instead of uploading whole video.

Create a plugin architecture for video, each plugin would be able to convert a link to an embed html code for an appropriate site. Hence, we would have one plugin for Vimeo, another for Youtube and people would be able to create other plugins for other sites. The plugins should create the embed code based on width of page which would be an input parameter of the method

There's no need upload video. Just enter YouTube URL

Example of good implementation with YouTube integration - https://www.detmir.ru/product/index/id/3193108/

Add an option to display only attribute combinations that exist and have stock greater than zero

We already have a similar product option implemented ("Allow only existing attribute combinations"). It does not allow to add non-existing combinations to the cart. And this work item is just to display/hide such combination in the public store BEFORE a customer click "add to cart" (client-side validation).

Also note that it can cause some issues when you have several attributes. Once choosing one of attributes, it can hide other attributes which actually have some stock with some other value of the first attribute

please note that we already support display of stock levels for attribute combinations (dynamic)

Also see #2909 (example of UI implementation)

Product level shipping configuration (new plugin - shipping rate computation method)

Most of my competitors offer FREE UPS Ground for select products and has put my store at a disadvantage. I am willing to pay for this feature, and I'm sure others are willing to contribute. However, I believe the nopCommerce core framework will need to be updated in order to implement this feature. What would be ideal is on the product page to have shipping prices for each option be set to either a fixed price (including FREE/Zero) or the option will work as normal (getting the rate from the shipping carrier's API). Right now, this is the #1 priority for my store and I have seen many others need this level of configuration for their stores. It would solve many requests in these forums such as "FREE Ground and $5 2nd Day Air for specific products" or "FREE Ground shipping for select products", "setting FREE Shipping on a product currently makes all options free", etc. Shipping Director is a third party plug-in and cannot do this, plus it is complicated to configure, or I would have purchased it. A simple solution would be to have a scrollable Product Shipping area on the Product Details or Variant Details screen.

Forum source: http://www.nopcommerce.com/boards/t/16465/feature-request-product-level-shipping-configuration.aspx

This work item can be implemented as a new plugin (shipping rate computation method). Hence it won't be available out of the box.

Rental products. Better inventory management

Currently inventory management is not fully supported by rental products yet. It's recommended to set 'Manage inventory method' to 'Track inventory' now.

We have use current number of already reserved (purchased) products for selected dates. For example, hotel renting or only 10 cars renting at the moment.

also see http://www.nopcommerce.com/boards/t/34105/about-rental-product.aspx

also see https://www.nopcommerce.com/boards/t/48944/rentals-allow-for-multiple-bookings-of-a-product-if-the-product-is-not-already-rented-or-in-transit-between-dates-x-and-y.aspx

Rental products. Support "hours" for rental period

Currently we support days, weeks, months, years. Let's support hours. In this case we should also allow a customer to enter exact time

Do not forget to update "comapre with the current date" login to the "GetRentalProductWarnings" method

Dynamically update order totals when updating checkout attributes (shopping cart page)

Currently it doesn't update cart total when customer select checkout attribute. If we display cart total dynamically then customer get total amount on the cart page without needing to go to the next step. This is how most serious e-commerce site owners wants to display.

The only good (and the easiest) way to do it to store new values (after each client-side change) using AJAX. And then immediately update "totals" block

if we decide to re-load the totals block, then ensure that forms and other java-script functions will still work (e.g. delete discount or gift cart code buttons)

ensure that it'll work fine with pre-selected attribute values, etc

Source: http://www.nopcommerce.com/boards/t/31814/suggestions-dynamic-cart-total-update-when-checkout-attribute.aspx

Web API support

Most serious e-commerce businesses doesn't use ecommerce solution alone. They also use a decent accounting, crm, inventory, order management, support and operations management solutions which needs to work very closely with the ecommerce solution. However, adding all those features to the nopCommerce is out of the scope definitely... but giving a decent set of API for integration will be very helpful for all service providers and retailers using nopCommerce.

This will greatly enhance adoption of nopCommerce for the serious retailers as most of them will use it. Moreover, providing it also enables solution providers to come up with generic plugins for example, integration for salesforce or vtiger crm, integration for quickoffice or openerp or any other solution!

See http://www.nopcommerce.com/boards/t/31212/nopcommerce-350-roadmap-and-estimated-release-date-lets-discuss.aspx#127120

UPDATE: nop-templates.com are going to contribute some great implementation soon
https://github.com/SevenSpikes/nopCommerce/tree/Web-Api-3.70
and
https://github.com/SevenSpikes/nopCommerce-Api-SampleApplication

RESULT IS AVAILABLE AT http://www.nopcommerce.com/p/2464/api-plugin.aspx

Force entering email twice during registration (configurable)

Next to customer forgetting their house number in the address, we have a lot of users not entering their email address right. This leads to email delivery failures. Is it possible to add an email confirmation option? (Not by email, but by entering the email twice?)

Make it configurable (disabled by default). Put "Force entering email twice" setting into "customer settings". Hint: Force entering email twice during registration

Source: http://www.nopcommerce.com/boards/t/32286/force-entering-email-address-twice.aspx

Configurable shipping options and rates per vendor

It would be good if each vendor can configure own shipping methods (options) and buyers whose orders contains items from several vendors could select vendor-specific shipping options at checkout. It also was done as part of one of the customization projects.

By the way, warehouse support is already added. We can add a new warehouse for each vendor and simply configure rates for each origin (warehouse)

also see #1928

Separate delivery addresses support

A store owner already can create several shipments per order. The next task is to allow customers to specify several shipping addresses during checkout. For example, product1 (qty 2) goes to address1 and product2 and product3 (qty 1 and qty3) goes to address2

Important notes:

  1. But we'll create a new separate order for each specified address (like it's done in magento) because payment methods do not allow specifying several shipping addresses. It should also compute separate shipping totals or allow specifying distinct shipping methods for each delivery address! This option should be configurable (disabled by default).
  2. We also should not store payment information in [Order] table/entity because in this case a payment could be "shared" between orders. For example, we could have 1 payment for several orders (as per point 1). First we should create a new [Payment] table/entity and move all information from [Order] table/entity there. Think about better way of managing it in admin area
  3. Tax should be calculated separately for each address

Product prices per currency, store, country (market)

At the moment prices in currencies that are different to the base currency are displayed as a direct conversion of the base price using the downloaded exchange rates.

  • Some stores don't really work in that way as they need to be able to place themselves correctly in a foreign currency market depending on the country. For example, for customers in Chile the price should be less than the price for customers in the UK, where standard of living is higher. This of course will need to have proper controls on the checkout to only allow purchases for customers in certain countries with certain currencies.
  • Furthermore, sometimes merchants want to specify prices in "more selling" way. For emample, now the base $100 price could be converted to 90.57€. So merchant doesn't have an opportunity to specify a custom price in Euro. For example, a merchant could want to have 89.99€ price to be displayed (but currently it's not possible)

UI/UX:

  • There will be a radiobutton on the product details page (admin area) with two options (values): "Auto convert to other currencies during order processing" and "Set price manually per currency".
  • When the second option is selected, then a store owner will be able to enter prices for all available currencies
  • We also should support it for tier prices, attribute (product/checkout) price adjustments, special prices, discounts that could be quite quite complex. Perhaps, we could skip it in the first edition of this task and postpone for further Enterprie versions

Logic

  • We have to change price calculation logic all over the entire solution
  • The same should be done for all plugins. For example, each payment plugin also should be rewritten to support distinct currencies. It causes more issue when we have some product prices specified (passed to a payment gateway) in one currency, and other product prices are in other currency (no custom price specified for certain currency abd default one is used).

Limitations, issues

  • It'll require a way too much changes all over the entire solution making most of third-party plugins stop working
  • How are we going to generate reports? For example, bestsellers.
  • We already store prices/totals/etc for already placed orders only in the primary store currency. This way we'll have to store these values in both used currencies (now have "ExchangeRate" property) - to display proper value to customers on order details pages. It also can cause some issues when calculating discounts/totals/etc.

Considering these issues and huge number of changes we should find some other way to go. Here are some ideas and useful links for investigation:

  • Specify base currency per store (not per currency) and limit each store to some one currency. For example, store1 has USD only, store2 has EUR only. And a store owner can specify prices per store
  • Workaround with tier prices per store - perhaps, we can even extend this functionality to support prices per currency
  • a lot of links (examples) in our private "Enterprise" repository

Admin area dashboard. Display stock reports (how many items in stock, how many out of stock, etc)

It would be great if it was possible to get a repport on how many items were in stock at a given time. It is used by accountents .

It could be fixed so you deffine EG: 4 times a year where the stock is written into a repport. You will then deffine the dates on wich the repports should be written.

That will call for an extra feature. which will be to define if a product is a physical one or just a download or a service. :-)

Forum source: http://www.nopcommerce.com/boards/t/17699/stock-repport.aspx

Enhance Product Attributes for selling by dimensions

Sometimes products are sold by dimensions (lenght, surface, volume, weight, etc.) for that and other cases it will be convenient to:

  1. Have 1 or 2 types of new product variant attributes (Number (decimals accepted) and/or Integer).
    In this case Total Price (TP) and Total Weight (TW) for the product would have to be adjusted by a Price/Weight Factor (FPi/FWi) for the corresponding attribute multiplied by the attribute value (Vi) entered and by the original Price/Weight of the product variant (OP/OW); that is TP=OP * V1 * FP1 * V2 * FP2 ...; and likewise for weight.

Example (a more general than your case) of playwood sold by surface defined by (1)length and (2)height. The price (OP) per sq.mt. would be 25 and the weight (OW) 2 per sq.mt. In this case FP1 and FP2 would be both equal to 1.
Then applying the formula if customer buys an item of lenght 3 and height 5:
TP=OP * V1 * FP1 * V2 * FP2 ...
TP=25 * 3 * 1 * 5 + 1 = 375

If there are other product variant attributes there price/weight adjustments would have to be added at the end to TP/TW.

  1. Include price/weight adjustments by factor for attributes with Drop-down, Radio and Check-boxes control.
    This would be for the same reasons as described above, since some products are sold with some fiexed dimensions (example: height: 1.0 mt, 1.5 mts, 2.0 mts., 3.0 mts, etc.); thus in these cases (for discreete dimensions) some of those attribute controls must be used.
    This could be use in other situations. For example when the price adjustment is related to variant price. Examle pizza ingredients related to size/price; insurance/guranty extensions for appliances, etc. In these cases price adjustments are easier to configure.

  2. Let the storeowner configure the text used for the price adjustment.
    Now the options for the different attribute values with Drop-down, Radio and Check-boxes controls are shown as: "Value (+ PriceAdjustment)". It would be nice to have an additional option to define the price adjustment text . Examples
    "Value (+$50.00)"
    "Value ($150.00)"
    "Value (+10%)"
    "Value , $2.50 per sq.mt"

Forum source: http://www.nopcommerce.com/boards/t/16762/suggestion-enhance-product-attributes-for-selling-by-dimensions.aspx

Return item request should generate RMA#

Currently as soon as an order it completed - a "Return Item" button is visible again every order.

When any customer requests for any kind of return - It gives numbers RMA#1 or RMA#2 like this: http://img337.imageshack.us/img337/777/returnrma.jpg

Majority of store owners who have a return policy for their products provides the customer and RMA# that needs to be mentioned on the return package.

I think current pattern of return in nopCommerce project is good but still make 1 step manual which is providing RMA# to the customer.

It would be great if unique RMA# is generated for each return request like this: http://img130.imageshack.us/img130/2205/returnrmanew.jpg - Hence store owner just have to reply or update the status of the return request and customer will already have his/her unique RMA#.

Few Important Points:

The RMA# needs to be unique for each return request.
This feature should be configurable in admin section
It would be great if - In the admin section the store owner is able to configure the RMA# settings like:
RMA# Gereneration: Dropdown menu (Values: Alphabet or Numbers or Both)
Define Length of RMA# : TEXTBOX (Store owner can define the length of RMA# that will be automatically generated)

Source: http://www.nopcommerce.com/boards/t/8386/return-item-request-should-generate-rma.aspx#34280

Allow developers to REPLACE certain blocks of a page with their own widgets

For example, the product details page has a block with pictures (slimbox gallery). With this new feature it would be quite easy to replace this block with any custom implementation. For example, CloudZoom block.

But wouldn't it make source code (cshtml) too complex? Maybe, still use themes to override required cshtml files

Have a look at the HTML helper method below:
    /// <summary>
    /// "Replacement" widget
    /// </summary>
    /// <typeparam name="T">Model</typeparam>
    /// <param name="helper">Helper</param>
    /// <param name="widgetZone">Widget zone name</param>
    /// <param name="standardTemplate">Standard template to render if no widget with specified widget is not found</param>
    /// <returns>Rendered widget</returns>
    public static HelperResult ReplacementWidget<T>(this HtmlHelper<T> helper, string widgetZone,
         Func<T, HelperResult> standardTemplate)
    {
        return new HelperResult(writer =>
        {
            var widgetService = EngineContext.Current.Resolve<IWidgetService>();
            var widgets = widgetService.LoadActiveWidgetsByWidgetZone(widgetZone);
            var widget = widgets.FirstOrDefault();
            if (widget != null)
            {
                writer.Write(Widget(helper, widgetZone).ToHtmlString());
            }
            else
            {
                standardTemplate(helper.ViewData.Model).WriteTo(writer);
            }
        });
    }

Add "Color square" specification attribute type (allow filtering by this type)

We already have distinct attribute types supported. Let's add "Color square" specification attribute type

Forum source: http://www.nopcommerce.com/boards/t/29080/suggestion-type-property-for-specification-attributes.aspx

The issue (filtering). When we add this new attribute type, then a store owner will create a specification attribute record and its options in admin area > catalog > attributes > specification attributes > details page. Right now an attribute type (option, text, etc) is stored in a mapping between specification option and a product ([Product_SpecificationAttribute_Mapping] table) on a product details page. But we should ask a store owner to enter a certain color on the "specification attribute option" popup window. Hence we need it to move "attribute type" to [SpecificationAttribute] table/entity in order to support this new functionality - first, a store owner creates an attribute and set its attribute type to "color squares", then he/she adds options with colors

It's possible. But what should we do with the existing functionality when an attribute type is specified while mapping an attribute option to a product (on a product details page > specification attributes tab). How should we migrate specified types to "SpecificationAttribute" entity (when upgrading existing stores)? It could be quite complex

The issue is that if we move "attribute type" to "specification attribute" entity from a mapping between specification option and a product ([Product_SpecificationAttribute_Mapping] table), then we don't be able to map specification attributes with attributes type that don't support options (e.g. "custom text", etc). It's caused by wrong design we've chosen many years ago - "ProductSpecificationAttribute" entity ([Product_SpecificationAttribute_Mapping] table) has "SpecificationAttributeOptionId" property which references appropriate specification attribute option but in some cases it should reference specification attribute (not an option)


Add sample data

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.