public MarketPriceViewViewModel(StyleItemSaleToMarketDTO saleToMarket) { SaleId = saleToMarket.SaleId; Market = (MarketType)saleToMarket.Market; MarketplaceId = saleToMarket.MarketplaceId; MarketName = MarketHelper.GetShortName(saleToMarket.Market, saleToMarket.MarketplaceId); MarketCurrency = PriceHelper.GetCurrencySymbol(Market, MarketplaceId); SalePrice = saleToMarket.SalePrice; SFPSalePrice = saleToMarket.SFPSalePrice; SalePercent = saleToMarket.SalePercent; ApplyToNewListings = saleToMarket.ApplyToNewListings; }
public ItemViewModel(ItemDTO item) { ItemId = item.Id; Market = item.Market; MarketplaceId = item.MarketplaceId; IsPrime = item.IsPrime; if (item.PublishedStatus != item.PublishedStatusFromMarket && item.PublishedStatusFromMarket.HasValue && !PublishedStatusesHelper.InProgressStatus((PublishedStatuses)item.PublishedStatus)) { PublishedStatus = item.PublishedStatusFromMarket.Value; } else { PublishedStatus = item.PublishedStatus; } //NOTE: need to review (in fact need to hide errors listings in out-of-stock) if (PublishedStatus == (int)PublishedStatuses.PublishingErrors && item.RealQuantity == 0) { PublishedStatus = (int)PublishedStatuses.PublishedInactive; } PublishedStatusReason = item.PublishedStatusReason; ListingEntityId = item.ListingEntityId; ParentASIN = item.ParentASIN; SKU = item.SKU; SourceMarketId = item.SourceMarketId; PictureUrl = item.ImageUrl; LargePictureUrl = item.LargeImageUrl; ListingType = AmazonTemplateHelper.GetListingType(item); IsFBA = item.IsFBA; EstimatedOrderHandlingFeePerOrder = item.EstimatedOrderHandlingFeePerOrder; EstimatedPickPackFeePerUnit = item.EstimatedPickPackFeePerUnit; EstimatedWeightHandlingFeePerUnit = item.EstimatedWeightHandlingFeePerUnit; StyleId = item.StyleId; StyleItemId = item.StyleItemId; StyleString = item.StyleString; StyleOnHold = item.StyleOnHold ?? false; ASIN = item.ASIN; Size = item.Size; ColorVariation = item.ColorVariation; StyleSize = item.StyleSize; StyleColor = item.StyleColor; StyleItemOnHold = item.StyleItemOnHold ?? false; Color = item.Color; DisplayQuantity = item.DisplayQuantity; RealQuantity = item.RealQuantity; AutoQuantityUpdateDate = item.AutoQuantityUpdateDate; OnHold = item.OnHold; UseStyleImage = item.UseStyleImage; RestockDate = item.RestockDate; ItemCurrentPrice = item.CurrentPrice; ItemCurrentPriceCurrency = PriceHelper.GetCurrencySymbol((MarketType)item.Market, item.MarketplaceId); BusinessPrice = item.BusinessPrice; //Sale SalePrice = item.SalePrice; SaleStartDate = item.SaleStartDate; SaleEndDate = item.SaleEndDate; MaxPiecesOnSale = item.MaxPiecesOnSale; PiecesSoldOnSale = item.PiecesSoldOnSale; SaleId = item.SaleId; Weight = item.Weight != null?item.Weight.ToString() : ""; Barcode = item.Barcode; LowestPrice = item.LowestPrice; BuyBoxStatus = item.BuyBoxStatus ?? BuyBoxStatusCode.None; TotalQuantity = item.TotalQuantity; SoldByAmazon = item.SoldByAmazon ?? 0; SoldByInventory = item.SoldByInventory ?? 0; SoldByFBA = item.SoldByFBA ?? 0; SoldBySpecialCase = item.SoldBySpecialCase ?? 0; TotalSoldByAmazon = item.TotalSoldByAmazon ?? 0; TotalSoldByInventory = item.TotalSoldByInventory ?? 0; TotalSoldByFBA = item.TotalSoldByFBA ?? 0; TotalSoldBySpecialCase = item.TotalSoldBySpecialCase ?? 0; RemainingQuantity = item.RemainingQuantity.HasValue ? Math.Max(item.RemainingQuantity.Value, 0) : (int?)null; IsAmazonParentASIN = item.IsAmazonParentASIN; IsExistOnAmazon = item.IsExistOnAmazon; OpenDate = item.OpenDate ?? item.CreateDate; AmazonRealQuantity = item.AmazonRealQuantity; AmazonCurrentPrice = item.AmazonCurrentPrice; }
private static FBAPickListItemViewModel ComposeNewGroup(ListingOrderDTO item, bool hasColorVariation, Style style, IList <StyleItemDTO> styleItems) { //Add new group IList <PickListSizeInfo> allSizes = new List <PickListSizeInfo>(); //Prepare image var image = item.ItemPicture; if (String.IsNullOrEmpty(image)) { image = item.StyleImage; } var title = item.Title; if (item.SourceStyleString != item.StyleID) //NOTE: happens when item has linked style OR item style was changed { if (!String.IsNullOrEmpty(item.StyleImage)) { image = item.StyleImage; } if (style != null && !String.IsNullOrEmpty(style.Name)) { title = style.Name; } } title = SizeHelper.ExcludeSizeInfo(title); if (style != null) { allSizes = styleItems.Where(i => i.StyleId == style.Id) .Select(i => new PickListSizeInfo() { StyleSize = i.Size, StyleItemId = i.StyleItemId, Weight = i.Weight }).ToList(); } var itemPrice = item.ItemPrice; if (item.Market == (int)MarketType.Amazon || item.Market == (int)MarketType.AmazonEU || item.Market == (int)MarketType.AmazonAU) { itemPrice = item.QuantityOrdered != 0 ? item.ItemPrice / item.QuantityOrdered : 0; } var newGroup = new FBAPickListItemViewModel { StyleName = style != null ? style.Name : null, StyleId = style != null ? (long?)style.Id : null, Color = item.Color, StyleString = style != null ? style.StyleID : null, ProductName = title, Picture = image, HasColorVariation = hasColorVariation, ListingInfoes = new List <ListingInfo>() { new ListingInfo() { ASIN = item.ASIN, ParentASIN = item.ParentASIN, SourceMarketId = item.SourceMarketId, MarketplaceId = item.MarketplaceId, Market = item.Market, Quantity = item.QuantityOrdered, Rank = item.Rank, } }, SoldSizes = new List <PickListSizeInfo> { new PickListSizeInfo { Quantity = item.QuantityOrdered, Sizes = new List <string>() { item.Size }, StyleSize = item.StyleSize, StyleItemId = item.StyleItemId, Color = item.Color, Weight = item.Weight, Prices = new List <PriceInfo>() { new PriceInfo() { Price = itemPrice, Currency = PriceHelper.GetCurrencySymbol((MarketType)item.Market, item.MarketplaceId) } } } }, AllSizes = allSizes, }; return(newGroup); }
private static void UpdateExistGroup(FBAPickListItemViewModel existGroup, bool hasColorVariation, ListingOrderDTO item) { //This group always has appropriate color, only check size PickListSizeInfo existSize = null; if (hasColorVariation) { existSize = existGroup.SoldSizes.FirstOrDefault(s => s.StyleSize == item.StyleSize && s.Color == item.Color); } else { existSize = existGroup.SoldSizes.FirstOrDefault(s => s.StyleSize == item.StyleSize); } var currency = PriceHelper.GetCurrencySymbol((MarketType)item.Market, item.MarketplaceId); var itemPrice = item.ItemPrice; if (item.Market == (int)MarketType.Amazon || item.Market == (int)MarketType.AmazonEU || item.Market == (int)MarketType.AmazonAU) { itemPrice = item.QuantityOrdered != 0 ? item.ItemPrice / item.QuantityOrdered : 0; } if (existSize != null) { existSize.Quantity += item.QuantityOrdered; if (!existSize.Prices.Any(p => p.Currency == currency && Math.Abs(p.Price - itemPrice) <= 0.1M)) { existSize.Prices.Add(new PriceInfo() { Price = itemPrice, Currency = currency }); } if (existSize.Sizes.All(s => s != item.Size)) { existSize.Sizes.Add(item.Size); } } else { existGroup.SoldSizes.Add(new PickListSizeInfo { Quantity = item.QuantityOrdered, Sizes = new List <string>() { item.Size }, StyleSize = item.StyleSize, StyleItemId = item.StyleItemId, Color = item.Color, Weight = item.Weight, Prices = new List <PriceInfo>() { new PriceInfo() { Price = itemPrice, Currency = currency, } } }); } var existListing = existGroup.ListingInfoes.FirstOrDefault(l => l.ASIN == item.ASIN && l.Market == item.Market && l.MarketplaceId == item.MarketplaceId); if (existListing == null) { existGroup.ListingInfoes.Add(new ListingInfo() { ASIN = item.ASIN, ParentASIN = item.ParentASIN, SourceMarketId = item.SourceMarketId, MarketplaceId = item.MarketplaceId, Market = item.Market, Quantity = item.QuantityOrdered, Rank = item.Rank, }); } else { existListing.Quantity += item.QuantityOrdered; } }
//public static void UpdateSalePrices(IUnitOfWork db, // long styleItemId, // long saleId, // decimal newSalePrice, // decimal? newSFPSalePrice) //{ // var rateForMarketplace = RateHelper.GetRatesByStyleItemId(db, styleItemId); // var marketPrices = db.StyleItemSaleToMarkets.GetAll().Where(s => s.SaleId == saleId).ToList(); // foreach (var marketPrice in marketPrices) // { // if (marketPrice.SalePrice.HasValue) // { // var marketListings = db.StyleItemSaleToListings.GetAll().Where(l => l.SaleToMarketId == ) // marketPrice.SalePrice = RateHelper.CalculateForMarket((MarketType) marketPrice.Market, // marketPrice.MarketplaceId, // newSalePrice, // rateForMarketplace[MarketplaceKeeper.AmazonComMarketplaceId], // rateForMarketplace[MarketplaceKeeper.AmazonCaMarketplaceId], // rateForMarketplace[MarketplaceKeeper.AmazonUkMarketplaceId], // rateForMarketplace[MarketplaceKeeper.AmazonAuMarketplaceId], // RateService.GetMarketShippingAmount(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId), // RateService.GetMarketShippingAmount((MarketType)marketPrice.Market, marketPrice.MarketplaceId), // RateService.GetMarketExtraAmount((MarketType)marketPrice.Market, marketPrice.MarketplaceId)); // } // } // db.Commit(); //} public static IList <MarketPriceEditViewModel> GetForStyleItemId(IUnitOfWork db, IDbFactory dbFactory, long styleItemId, decimal?initSalePrice, decimal?initSFPSalePrice) { var priceService = new PriceService(dbFactory); var results = new List <MarketPriceEditViewModel>(); var allMarketplaces = UIMarketHelper.GetSalesMarketplaces(); var allListings = db.Listings.GetListingsAsListingDto() .Where(l => l.StyleItemId == styleItemId) .ToList() .Where(l => !l.IsFBA) .ToList(); var rateForMarketplace = RateHelper.GetRatesByStyleItemId(db, styleItemId); var sale = db.StyleItemSales.GetAllAsDto().FirstOrDefault(s => s.StyleItemId == styleItemId && !s.IsDeleted); var checkedListings = new List <StyleItemSaleToListingDTO>(); if (sale != null) { checkedListings = db.StyleItemSaleToListings.GetAllAsDto().Where(s => s.SaleId == sale.Id).ToList(); } var checkedMarkets = new List <StyleItemSaleToMarketDTO>(); if (sale != null) { checkedMarkets = db.StyleItemSaleToMarkets.GetAllAsDto().Where(s => s.SaleId == sale.Id).ToList(); } foreach (var market in allMarketplaces) { var checkedMarket = checkedMarkets.FirstOrDefault(l => l.Market == (int)market.Market && (l.MarketplaceId == market.MarketplaceId || String.IsNullOrEmpty(market.MarketplaceId))); var marketListings = allListings .Where(l => l.Market == (int)market.Market && (l.MarketplaceId == market.MarketplaceId || String.IsNullOrEmpty(market.MarketplaceId))) .Select(l => new ListingPriceEditViewModel(l)) .ToList(); foreach (var listing in marketListings) { listing.IsChecked = sale == null ? ((listing.IsPrime || SkuHelper.IsPrime(listing.SKU)) ? initSFPSalePrice.HasValue : initSalePrice.HasValue) : checkedListings.Any(l => l.ListingId == listing.ListingId); } var defaultPrice = //sale == null && initSalePrice.HasValue && marketListings.Any() ? priceService.GetMarketDefaultPrice(initSalePrice.Value, market.Market, market.MarketplaceId, rateForMarketplace) : (decimal?)null; foreach (var marketListing in marketListings) { var newDefaultPrice = priceService.ApplyMarketSpecified(defaultPrice, initSFPSalePrice, market.Market, market.MarketplaceId, marketListing.Weight, marketListing.IsPrime, marketListing.IsFBA); if (newDefaultPrice != defaultPrice) { marketListing.OverrideSalePrice = newDefaultPrice; } } var saleToMarket = new MarketPriceEditViewModel() { Id = checkedMarket != null ? checkedMarket.Id : 0, Market = (MarketType)market.Market, MarketplaceId = market.MarketplaceId, MarketName = MarketHelper.GetMarketName((int)market.Market, market.MarketplaceId), MarketCurrency = PriceHelper.GetCurrencySymbol(market.Market, market.MarketplaceId), SalePrice = checkedMarket != null ? checkedMarket.SalePrice : defaultPrice, SFPSalePrice = market.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId ? initSFPSalePrice : null, SalePercent = checkedMarket != null ? checkedMarket.SalePercent : null, ApplyToNewListings = checkedMarket != null ? checkedMarket.ApplyToNewListings : false, Listings = marketListings }; results.Add(saleToMarket); } return(results); }
public ItemPriceViewModel(ItemExDTO item) { ItemId = item.Id; Market = item.Market; MarketplaceId = item.MarketplaceId; ListingEntityId = item.ListingEntityId; ParentASIN = item.ParentASIN; SKU = item.SKU; SourceMarketId = item.SourceMarketId; PictureUrl = item.ImageUrl; LargePictureUrl = item.LargeImageUrl; IsFBA = item.IsFBA; EstimatedOrderHandlingFeePerOrder = item.EstimatedOrderHandlingFeePerOrder; EstimatedPickPackFeePerUnit = item.EstimatedPickPackFeePerUnit; EstimatedWeightHandlingFeePerUnit = item.EstimatedWeightHandlingFeePerUnit; StyleId = item.StyleId; StyleItemId = item.StyleItemId; StyleString = item.StyleString; StyleOnHold = item.StyleOnHold ?? false; ASIN = item.ASIN; Size = item.Size; ColorVariation = item.ColorVariation; StyleSize = item.StyleSize; StyleColor = item.StyleColor; Color = item.Color; DisplayQuantity = item.DisplayQuantity; RealQuantity = item.RealQuantity; AutoQuantityUpdateDate = item.AutoQuantityUpdateDate; OnHold = item.OnHold; RestockDate = item.RestockDate; ItemCurrentPrice = item.CurrentPrice; ItemCurrentPriceCurrency = PriceHelper.GetCurrencySymbol((MarketType)item.Market, item.MarketplaceId); //Sale SalePrice = item.SalePrice; SaleStartDate = item.SaleStartDate; SaleEndDate = item.SaleEndDate; MaxPiecesOnSale = item.MaxPiecesOnSale; PiecesSoldOnSale = item.PiecesSoldOnSale; SaleId = item.SaleId; Weight = item.Weight != null?item.Weight.ToString() : ""; Barcode = item.Barcode; WinnerPrice = item.WinnerPrice; WinnerPriceLastChangeDate = item.WinnerPriceLastChangeDate; WinnerPriceLastChangeValue = item.WinnerPriceLastChangeValue; WinnerSalePrice = item.WinnerSalePrice; WinnerSalePriceLastChangeDate = item.WinnerSalePriceLastChangeDate; WinnerSalePriceLastChangeValue = item.WinnerSalePriceLastChangeValue; BuyBoxStatus = item.BuyBoxStatus ?? BuyBoxStatusCode.None; TotalQuantity = item.TotalQuantity; RemainingQuantity = item.RemainingQuantity; IsAmazonParentASIN = item.IsAmazonParentASIN; OpenDate = item.OpenDate ?? item.CreateDate; AmazonRealQuantity = item.AmazonRealQuantity; AmazonCurrentPrice = item.AmazonCurrentPrice; }