public AmazonListing UpdateAmazonListing(AmazonListing amazonListing)
        {
            var productVariant = _productVariantService.GetProductVariantBySKU(amazonListing.ProductVariant.SKU);

            amazonListing.ProductVariant = productVariant;
            amazonListing.Brand          = productVariant.Product.Brand != null ? productVariant.Product.Brand.Name : String.Empty;
            amazonListing.Condition      = ConditionType.New;
            var currency = _ecommerceSettings.Currency();

            amazonListing.Currency      = (currency != null && !String.IsNullOrWhiteSpace(currency.Code))?currency.Code:CurrencyCode.GBP.GetDescription();
            amazonListing.Manafacturer  = productVariant.Product.Brand != null ? productVariant.Product.Brand.Name : String.Empty;
            amazonListing.MfrPartNumber = productVariant.ManufacturerPartNumber;
            amazonListing.Quantity      = productVariant.TrackingPolicy == TrackingPolicy.Track
                                          ? _getStockRemainingQuantity.Get(productVariant)
                                          : 1000;
            amazonListing.Price                 = _productPricingMethod.GetUnitPrice(productVariant, 0m, 0m);
            amazonListing.SellerSKU             = productVariant.SKU;
            amazonListing.Title                 = productVariant.DisplayName;
            amazonListing.StandardProductIDType = _amazonSellerSettings.BarcodeIsOfType;
            amazonListing.StandardProductId     = productVariant.Barcode.Trim();

            amazonListing.FulfillmentChannel = amazonListing.AmazonListingGroup.FulfillmentChannel ?? AmazonFulfillmentChannel.MFN;

            _amazonListingService.Save(amazonListing);

            return(amazonListing);
        }
예제 #2
0
        public virtual string GetSelectOptionName(ProductVariant variant, bool showName = true, bool showOptionValues = true)
        {
            string title = string.Empty;

            if (!string.IsNullOrWhiteSpace(variant.Name) && showName)
            {
                title = variant.Name + " - ";
            }

            if (variant.OptionValues.Any() && showOptionValues)
            {
                title += string.Join(", ", variant.AttributeValuesOrdered.Select(value => value.Value)) + " - ";
            }

            title += _productPricingMethod.GetUnitPrice(variant, 0m, 0m).ToCurrencyFormat();

            return(title);
        }
예제 #3
0
 public IEnumerable <decimal> GetPrices(Product entity)
 {
     return(entity.Variants.Select(pv => _productPricingMethod.GetUnitPrice(pv, 0m, 0m)));
 }
예제 #4
0
        public List <ProductCardModel> Get(List <Product> products)
        {
            var galleryIds = products.Select(product => product.Gallery.Id).ToList();
            var productIds = products.Select(product => product.Id).ToList();
            List <MediaFile> mediaFiles = _session.QueryOver <MediaFile>()
                                          .Where(file => file.MediaCategory.Id.IsIn(galleryIds))
                                          .OrderBy(file => file.DisplayOrder)
                                          .Asc.Cacheable()
                                          .List().ToList();
            List <ProductVariant> variants = _session.QueryOver <ProductVariant>()
                                             .Where(productVariant => productVariant.Product.Id.IsIn(productIds))
                                             .Cacheable()
                                             .List().ToList();

            var productCardModels = new List <ProductCardModel>();

            foreach (var product in products)
            {
                MediaFile image =
                    mediaFiles.FirstOrDefault(file => file.IsImage() && file.MediaCategory.Id == product.Gallery.Id);
                var productVariants = variants.FindAll(productVariant => productVariant.Product.Id == product.Id);
                if (!productVariants.Any())
                {
                    continue;
                }

                var productCardModel = new ProductCardModel
                {
                    Name                  = product.Name,
                    Url                   = product.LiveUrlSegment,
                    Abstract              = product.ProductAbstract,
                    SearchResultAbstract  = product.SearchResultAbstract,
                    Image                 = image?.FileUrl,
                    BrandImage            = product.BrandPage?.FeatureImage,
                    PreviousPriceText     = _ecommerceSettings.PreviousPriceText,
                    ProductReviewsEnabled = _productReviewSettings.EnableProductReviews,
                    IsMultiVariant        = productVariants.Count > 1
                };


                if (productVariants.Count == 1)
                {
                    var variant = productVariants.FirstOrDefault();
                    productCardModel.PreviousPrice = _productPricingMethod.GetDisplayPreviousPrice(variant);
                    productCardModel.Price         = _productPricingMethod.GetUnitPrice(variant);
                    productCardModel.PricePreTax   = _productPricingMethod.GetUnitPricePreTax(variant);
                    productCardModel.Tax           = _productPricingMethod.GetUnitTax(variant);
                    productCardModel.VariantId     = variant.Id;
                    CanBuyStatus canBuyStatus = _productVariantAvailabilityService.CanBuy(variant, 1);
                    productCardModel.CanBuyStatus = canBuyStatus;
                    productCardModel.StockMessage = canBuyStatus.OK
                        ? (!string.IsNullOrEmpty(variant.CustomStockInStockMessage)
                            ? variant.CustomStockInStockMessage
                            : _stringResourceProvider.GetValue("In Stock"))
                        : (!string.IsNullOrEmpty(variant.CustomStockOutOfStockMessage)
                            ? variant.CustomStockOutOfStockMessage
                            : _stringResourceProvider.GetValue("Out of Stock"));
                    productCardModel.Rating          = variant.Rating;
                    productCardModel.NumberOfReviews = variant.NumberOfReviews;

                    if (variant.ETag != null)
                    {
                        productCardModel.ETag = variant.ETag;
                    }
                }
                else
                {
                    ProductVariant variant =
                        productVariants.OrderBy(x => _productPricingMethod.GetUnitPrice(x, 0m, 0m)).FirstOrDefault();
                    productCardModel.Price = variant != null
                        ? _productPricingMethod.GetUnitPrice(variant, 0m, 0m)
                        : (decimal?)null;

                    productCardModel.Rating          = variant.Rating;
                    productCardModel.NumberOfReviews = variant.NumberOfReviews;
                    if (variant.ETag != null)
                    {
                        productCardModel.ETag = variant.ETag;
                    }
                }
                productCardModels.Add(productCardModel);
            }
            return(productCardModels);
        }