Beispiel #1
0
        private static void CreateGroupedProductVariants(NopImportContext nopImportContext, HashSet <ProductOptionValueData> productOptionValueDatas,
                                                         ProductVariantData variantData, Product product)
        {
            IEnumerable <IGrouping <int, ProductOptionValueData> > groups =
                productOptionValueDatas.GroupBy(data => data.OptionId);

            var cartesianProductList =
                CartesianProduct(groups).ToList();

            for (int index = 0; index < cartesianProductList.Count; index++)
            {
                var cartesianProduct = cartesianProductList[index];
                CreateCartesianProductVariant(nopImportContext, variantData, product, cartesianProduct, index);
            }
        }
Beispiel #2
0
        public List<ProductVariantData> Process_GetVariants()
        {
            List<ProductVariantData> aVariants = new List<ProductVariantData>();

            if (this.ucItem.ItemData != null)
            {
                List<Object> newItems = new List<Object>();
                newItems = (List<Object>)this.ucItem.ItemData;

                for (int i = 0; i <= (newItems.Count - 1); i++)
                {
                    Ektron.Cms.Commerce.Workarea.CatalogEntry.Tabs.ClientData.ItemData newProduct = (Ektron.Cms.Commerce.Workarea.CatalogEntry.Tabs.ClientData.ItemData)newItems[i];
                    if (newProduct != null && newProduct.MarkedForDelete == false)
                    {
                        ProductVariantData ProductVariant = new ProductVariantData();
                        ProductVariant.Id = newProduct.Id;
                        ProductVariant.LanguageId = this.ContentLanguage;
                        aVariants.Add(ProductVariant);
                    }
                }
            }

            return aVariants;
        }
Beispiel #3
0
        private static void CreateCartesianProductVariant(NopImportContext nopImportContext, ProductVariantData variantData, Product product, IEnumerable <ProductOptionValueData> cartesianProduct, int index)
        {
            var variant = new ProductVariant
            {
                Name             = variantData.Name,
                SKU              = variantData.SKU + "-" + (index + 1),
                Weight           = variantData.Weight,
                TrackingPolicy   = variantData.TrackingPolicy,
                StockRemaining   = variantData.StockRemaining,
                RequiresShipping = variantData.RequiresShipping,
                AllowedNumberOfDaysForDownload = variantData.DownloadDays,
                AllowedNumberOfDownloads       = variantData.MaxDownloads,
                IsDownloadable         = variantData.Download,
                BasePrice              = variantData.BasePrice,
                DownloadFileUrl        = variantData.DownloadUrl,
                GiftCardType           = variantData.GiftCardType,
                IsGiftCard             = variantData.GiftCard,
                Product                = product,
                PreviousPrice          = variantData.PreviousPrice,
                ManufacturerPartNumber = variantData.PartNumber,
                TaxRate                = nopImportContext.FindNew <TaxRate>(variantData.TaxRate)
            };

            foreach (ProductOptionValueData valueData in cartesianProduct)
            {
                variant.Weight    += valueData.WeightAdjustment;
                variant.BasePrice += valueData.PriceAdjustment;

                var productOptionValue = new ProductOptionValue
                {
                    ProductVariant = variant,
                    Value          = valueData.Value,
                    ProductOption  = nopImportContext.FindNew <ProductOption>(valueData.OptionId)
                };
                variant.OptionValues.Add(productOptionValue);
                if (!product.Options.Contains(productOptionValue.ProductOption))
                {
                    product.Options.Add(productOptionValue.ProductOption);
                }
                nopImportContext.AddEntry(valueData.Id, productOptionValue);
            }

            product.Variants.Add(variant);
            nopImportContext.AddEntry(variantData.Id, variant);
        }
Beispiel #4
0
        private static void CreateStandardProductVariant(NopImportContext nopImportContext, ProductVariantData variantData,
                                                         Product product)
        {
            var variant = new ProductVariant
            {
                Name             = variantData.Name,
                SKU              = variantData.SKU,
                Weight           = variantData.Weight,
                TrackingPolicy   = variantData.TrackingPolicy,
                StockRemaining   = variantData.StockRemaining,
                RequiresShipping = variantData.RequiresShipping,
                AllowedNumberOfDaysForDownload = variantData.DownloadDays,
                AllowedNumberOfDownloads       = variantData.MaxDownloads,
                IsDownloadable         = variantData.Download,
                BasePrice              = variantData.BasePrice,
                DownloadFileUrl        = variantData.DownloadUrl,
                GiftCardType           = variantData.GiftCardType,
                IsGiftCard             = variantData.GiftCard,
                Product                = product,
                PreviousPrice          = variantData.PreviousPrice,
                ManufacturerPartNumber = variantData.PartNumber,
                TaxRate                = nopImportContext.FindNew <TaxRate>(variantData.TaxRate)
            };

            product.Variants.Add(variant);
            nopImportContext.AddEntry(variantData.Id, variant);
        }
        public override HashSet <ProductData> GetProducts()
        {
            using (Nop280DataContext context = GetContext())
            {
                HashSet <Nop280_Product>           products   = context.Nop280_Products.Where(x => !x.Deleted).ToHashSet();
                Dictionary <int, Nop280_UrlRecord> urlRecords =
                    context.Nop280_UrlRecords.Where(x => x.EntityName == "Product")
                    .ToHashSet().GroupBy(x => x.EntityId)
                    .ToDictionary(x => x.Key, x => x.First());
                HashSet <Nop280_ProductVariant> productVariants =
                    context.Nop280_ProductVariants.Where(x => !x.Deleted).ToHashSet();

                return(products.Select(product =>
                {
                    int?brandId =
                        product.Nop280_Product_Manufacturer_Mappings.Select(mapping => (int?)mapping.ManufacturerId)
                        .FirstOrDefault();
                    var productData = new ProductData
                    {
                        Name = product.Name,
                        Id = product.Id,
                        Abstract = product.ShortDescription,
                        Description = product.FullDescription,
                        BrandId = brandId,
                        Tags =
                            product.Nop280_Product_ProductTag_Mappings.Select(mapping => mapping.ProductTag_Id)
                            .ToHashSet(),
                        Categories =
                            product.Nop280_Product_Category_Mappings.Select(mapping => mapping.CategoryId).ToHashSet(),
                        Pictures =
                            product.Nop280_Product_Picture_Mappings.Select(mapping => mapping.PictureId).ToHashSet(),
                        Published = product.Published,
                        Url = urlRecords.ContainsKey(product.Id) ? urlRecords[product.Id].Slug : null
                    };
                    productData.ProductVariants =
                        productVariants
                        .Where(variant => variant.ProductId == product.Id)
                        .Select(variant =>
                    {
                        var productVariantData = new ProductVariantData
                        {
                            Name = variant.Name,
                            Id = variant.Id,
                            BasePrice = variant.Price,
                            PreviousPrice = variant.OldPrice,
                            SKU = string.IsNullOrWhiteSpace(variant.Sku) ? variant.Id.ToString() : variant.Sku,
                            StockRemaining = variant.StockQuantity,
                            TrackingPolicy =
                                variant.ManageInventoryMethodId == 0
                                            ? TrackingPolicy.DontTrack
                                            : TrackingPolicy.Track,
                            TaxRate = variant.TaxCategoryId,
                            Weight = variant.Weight,
                            PartNumber = variant.ManufacturerPartNumber,
                            Gtin = variant.Gtin,
                            Download = variant.IsDownload,
                            GiftCard = variant.IsGiftCard,
                            GiftCardType =
                                variant.GiftCardTypeId == 0 ? GiftCardType.Virtual : GiftCardType.Physicial,
                            RequiresShipping = variant.IsShipEnabled,
                            MaxDownloads = variant.MaxNumberOfDownloads,
                            DownloadDays = variant.DownloadExpirationDays,
                            DownloadUrl =
                                variant.Nop280_Download == null ? null : variant.Nop280_Download.DownloadUrl,
                            PriceBreaks = variant.Nop280_TierPrices.Select(price => new PriceBreakInfo
                            {
                                Price = price.Price,
                                Quantity = price.Quantity
                            }).ToHashSet()
                        };

                        return productVariantData;
                    }).ToHashSet();
                    return productData;
                }).ToHashSet());
            }
        }
Beispiel #6
0
        public override HashSet <ProductData> GetProducts()
        {
            using (Nop190DataContext context = GetContext())
            {
                HashSet <Nop190_Product> products = context.Nop190_Products.Where(x => !x.Deleted).ToHashSet();

                // GM: UrlRecord is new table
                //Dictionary<int, Nop190_UrlRecord> urlRecords =
                //    context.Nop190_UrlRecords.Where(x => x.EntityName == "Product")
                //        .ToHashSet().GroupBy(x => x.EntityId)
                //        .ToDictionary(x => x.Key, x => x.First());

                Dictionary <int, HashSet <Nop190_ProductVariant> > productVariants =
                    context.Nop190_ProductVariants.Where(x => !x.Deleted).ToHashSet()
                    .GroupBy(x => x.ProductID)
                    .ToDictionary(x => x.Key, x => x.ToHashSet());

                var brandIds =
                    context.Nop190_Product_Manufacturer_Mappings.GroupBy(x => x.ProductID)
                    .ToDictionary(x => x.Key, x => x.First().ProductManufacturerID);

                var productTags = context.Nop190_ProductTag_Product_Mappings.GroupBy(x => x.ProductID)
                                  .ToDictionary(x => x.Key, x => x.Select(y => y.ProductTagID).ToHashSet());
                var productCategories = context.Nop190_Product_Category_Mappings.GroupBy(x => x.ProductID)
                                        .ToDictionary(x => x.Key, x => x.Select(y => y.ProductCategoryID).ToHashSet());

                var productPictures = context.Nop190_ProductPictures.GroupBy(x => x.ProductID)
                                      .ToDictionary(x => x.Key, x => x.Select(y => y.PictureID).ToHashSet());

                var tierPriceDictionary = context.Nop190_TierPrices.ToHashSet().GroupBy(x => x.ProductVariantID)
                                          .ToDictionary(x => x.Key, x => x.ToHashSet());

                return(products.Select(product =>
                {
                    var id = product.ProductId;
                    int?brandId = brandIds.ContainsKey(id) ? brandIds[id] : (int?)null;
                    var productData = new ProductData
                    {
                        Name = product.Name,
                        Id = id,
                        Abstract = product.ShortDescription,
                        Description = product.FullDescription,
                        BrandId = brandId,
                        Tags = productTags.ContainsKey(id) ? productTags[id] : new HashSet <int>(),
                        Categories = productCategories.ContainsKey(id) ? productCategories[id] : new HashSet <int>(),
                        Pictures = productPictures.ContainsKey(id) ? productPictures[id] : new HashSet <int>(),
                        Published = product.Published,
                        Url = Ecommerce.Helpers.NopImport.SeoHelper.GetSeoUrl("Product", id, product.SEName, product.Name),
                    };
                    var variants = productVariants.ContainsKey(id) ? productVariants[id] : new HashSet <Nop190_ProductVariant>();
                    productData.ProductVariants =
                        variants
                        .Select(variant =>
                    {
                        Nop190_Download download = context.Nop190_Downloads.FirstOrDefault(x => x.DownloadID == variant.DownloadID);
                        var tierPrices = tierPriceDictionary.ContainsKey(variant.ProductVariantId)
                                    ? tierPriceDictionary[variant.ProductVariantId]
                                    : new HashSet <Nop190_TierPrice>();
                        var productVariantData = new ProductVariantData
                        {
                            Name = variant.Name,
                            Id = variant.ProductVariantId,
                            BasePrice = variant.Price,
                            PreviousPrice = variant.OldPrice,
                            SKU = string.IsNullOrWhiteSpace(variant.SKU) ? variant.ProductVariantId.ToString() : variant.SKU,
                            StockRemaining = variant.StockQuantity,
                            TrackingPolicy =
                                variant.ManageInventory == 0
                                            ? TrackingPolicy.DontTrack
                                            : TrackingPolicy.Track,
                            TaxRate = variant.TaxCategoryID,
                            Weight = variant.Weight,
                            PartNumber = variant.ManufacturerPartNumber,
                            //Gtin = variant.Gtin, // GM: Gtin is new field
                            Download = variant.IsDownload,
                            GiftCard = variant.IsGiftCard,
                            GiftCardType =
                                variant.GiftCardType == 0 ? GiftCardType.Virtual : GiftCardType.Physicial,
                            RequiresShipping = variant.IsShipEnabled,
                            MaxDownloads = variant.MaxNumberOfDownloads,
                            DownloadDays = variant.DownloadExpirationDays,
                            DownloadUrl =
                                download == null ? null : download.DownloadURL,
                            PriceBreaks = tierPrices.Select(price => new PriceBreakInfo
                            {
                                Price = price.Price,
                                Quantity = price.Quantity
                            }).ToHashSet()
                        };

                        return productVariantData;
                    }).ToHashSet();
                    return productData;
                }).ToHashSet());
            }
        }
Beispiel #7
0
        private static ProductVariant CreateStandardProductVariant(NopImportContext nopImportContext, ProductVariantData variantData,
                                                                   Product product)
        {
            var variant = new ProductVariant
            {
                Name             = variantData.Name,
                SKU              = variantData.SKU,
                Weight           = variantData.Weight,
                TrackingPolicy   = variantData.TrackingPolicy,
                StockRemaining   = variantData.StockRemaining,
                RequiresShipping = variantData.RequiresShipping,
                AllowedNumberOfDaysForDownload = variantData.DownloadDays,
                AllowedNumberOfDownloads       = variantData.MaxDownloads,
                IsDownloadable         = variantData.Download,
                BasePrice              = variantData.BasePrice,
                DownloadFileUrl        = variantData.DownloadUrl,
                GiftCardType           = variantData.GiftCardType,
                IsGiftCard             = variantData.GiftCard,
                Product                = product,
                PreviousPrice          = variantData.PreviousPrice,
                ManufacturerPartNumber = variantData.PartNumber,
                TaxRate                = nopImportContext.FindNew <TaxRate>(variantData.TaxRate),
                PriceBreaks            = variantData.PriceBreaks.Select(price => new PriceBreak
                {
                    Price    = price.Price,
                    Quantity = price.Quantity
                }).ToList()
            };

            if (variantData.PriceBreaks.Count > 0)
            {
                product.Variants.Add(variant);
            }
            else
            {
                product.Variants.Add(variant);
            }
            nopImportContext.AddEntry(variantData.Id, variant);
            return(variant);
        }