nopCommerce 1.70 is coming in 10 days. Beta testers needed.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
13 years ago
Good news! nopCommerce 1.70 is coming in 10 days. Now we're testing the beta version. The latest beta version of nopCommerce is available on CodePlex site. Take it for a test drive and let us know what you think!

1. Download the latest version here.
2. Clear NopCommerceStore\ConnectionStrings.config file (leave <connectionStrings> and </connectionStrings>).
3. Install the package.
4. Execute SQL scripts located into "\NopCommerceStore\Documents" directory.
5. Start testing.
6. Leave your comments and suggestions into this topic.

No major features have been introduced with this release as our development efforts were focused on moving to ASP.NET 4.0, further enhancements and fixing bugs, but it does include the following changes:

Here is a list of changes:
> Moving to ASP.NET 4.0 (Visual Studio 2010 is required to edit source code)
> Simplified data access. Using ORM now (Entity framework 4.0)
> QuickBooks integration
> Performance optimization
> USA ePay (integrated) payment module (Thanks, Chris Curtis)
> Google AdSense integration
> Skip/hide "Payment info" page if order total is 0 (configurable for each payment method)
> Gift card activation/deactivation by order status (similar to reward points)
> More user friendly specification attribute details page
> More user friendly message template & topic localization
> Allow store owner to disable PDF-related options for the entire store (useful in medium trust)
> "Check all" for "Payment/Shipping restrictions by country" option
> Added tooltip resources for RSS
> Zoom-in capability for main product image
> Minor admin UI changes
> Queued email bulk delete option
> Extended polls with "Show on home page" and "start/end date" properties
> The option to display the breadcrumb or not
> HTMLEditor caused JS errors on some servers
> Minor language flag images issue fixed
> Australia Post issues fixed (minimum dimension validation and multiple packages)
> UPS issue fixed (when shipped from outside US)
> Tier price and product attributes with price adjustment issue fixed
> "Assigned to product variant" discount minor issue fixed (when discount amount is more than product price)
> "Assigned to shipping" discount issue fixed
> Product bulk edit issue fixed
> Textboxes didn't feet column width on "Bulk Edit Products" page
> SEOHelper.RenderMetaTag() function didn't create a new tag
13 years ago
Great News Andrei !!!

I am downloading 1.70 .....

I will be back on this thread with comments after testing 1.70 version

A BIG THANKS to NopCommerce Team
13 years ago
many thanks.
13 years ago
count on me!
13 years ago
HI,  just tried it locally.   created a new database,   set correct connection strings and ran the scripts in this order

1) nopCommerce_createDatabase.sql
2) nopCommerce_createData.sql
3) nopCommerce_createSampleData.sql

That all went well,  now when I access the site I get this error

Exception Details: System.Data.SqlClient.SqlException: Invalid column name 'StartDate'.
Invalid column name 'StartDate'.
Invalid column name 'EndDate'.
Invalid column name 'EndDate'.
Invalid column name 'ShowOnHomePage'.
Invalid column name 'ShowOnHomePage'.
Invalid column name 'StartDate'.
Invalid column name 'EndDate'.

Line 144:            var polls = query.ToList();


Source File: F:\Visual Studio 2010\Projects\nopCommerce_170b\Libraries\Nop.BusinessLogic\Content\Polls\PollManager.cs    Line: 144


Then when I log into admin (it lets me)  I get this error
The 'SumOrders' property on 'OrderAverageReportLine' could not be set to a 'null' value. You must set this property to a non-null value of type 'Decimal'.

Any thoughts.  I did a clean build then rebuild and that went fine

Thanks
-Keith
13 years ago
Oh and the build I grabbed was from the download link, nopCommerce-54648.zip

Thanks
-Keith
13 years ago
SonicImaging wrote:
now when I access the site I get this errors


Execute SQL scripts located into "\NopCommerceStore\Documents" directory.
13 years ago
All working well so far.

Got a few suggestions, mainly use of repository pattern (would be so easy now to implement as just expose an IQueryable<T>) and a bit of refactoring using lambdas and using pipes and filters pattern for some common query expressions.

For example:


            var query = from p in context.Products
                        where p.ProductId == productId
                        select p;
            var product = query.SingleOrDefault();


can be rewritten as


var product = context.Products.FirstOrDefault(p => p.ProductId == productId);


Also noticed that we are still using stored procedures for products paging. How about using Skip() and Take() functions for this. I tend to use the following object for most paging exercise now. Once you have built your IQueryable<T> object, just pass it to the PagedList constructor along with page size and page index and it will do the rest:


    public interface IPagedList
    {
        int PageIndex { get; }
        int PageSize { get; }
        int TotalCount { get; }
        int TotalPages { get; }
        bool HasPreviousPage { get; }
        bool HasNextPage { get; }
    }

    public class PagedList<T> : List<T>, IPagedList
    {
        public PagedList(IQueryable<T> source, int pageIndex, int pageSize) {
            int total = source.Count();
            this.TotalCount = total;
            this.TotalPages = total / pageSize;

            if (total % pageSize > 0)
                TotalPages++;

            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
        }

        public PagedList(List<T> source, int pageIndex, int pageSize)
        {
            TotalCount = source.Count();
            TotalPages = TotalCount / PageSize;

            if (TotalCount % pageSize > 0)
                TotalPages++;

            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
        }

        public int PageIndex { get; private set; }
        public int PageSize { get; private set; }
        public int TotalCount { get; private set; }
        public int TotalPages { get; private set; }

        public bool HasPreviousPage
        {
            get { return (PageIndex > 0); }
        }
        public bool HasNextPage
        {
            get { return (PageIndex + 1 < TotalPages); }
        }
    }



Overall a great move forward for the project.

P.S. Andrei, i've sent you a wave :)
13 years ago
nopCommerce team | a.m. wrote:


Execute SQL scripts located into "\NopCommerceStore\Documents" directory.


Opps,  like you specifically mentioned above.... :)

right out of the gate,  seems a lot more responsive = Nice!!

Ill update my 1.6 import scripts to 1.7 and load all my customers / orders from my old site and start messing with it its about 50,000 customers with multiple orders each

so far I just noticed the resource strings for the quick books integration are showing like admin.thirdpartyintegration.title

Thanks
-Keith
13 years ago
retroviz - just as simple to also do:
var product = (from p in context.Products
                        where p.ProductId == productId
                        select p).SingleOrDefault();

btw- your example shows FirstOrDefault - i believe this is not supported in EF (maybe it is now in 4?)
-------------------------------


[quote=nopCommerce team | retroviz]All working well so far.

Got a few suggestions, mainly use of repository pattern (would be so easy now to implement as just expose an IQueryable<T>) and a bit of refactoring using lambdas and using pipes and filters pattern for some common query expressions.

For example:


            var query = from p in context.Products
                        where p.ProductId == productId
                        select p;
            var product = query.SingleOrDefault();


can be rewritten as


var product = context.Products.FirstOrDefault(p => p.ProductId == productId);
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.