コード例 #1
0
        public OrderItemEditViewModel(ListingOrderDTO item)
        {
            ItemOrderId       = item.ItemOrderId;
            SourceItemOrderId = item.SourceItemOrderIdentifier;

            Quantity = item.QuantityOrdered;

            ListingId         = item.Id;
            ASIN              = item.ASIN;
            Market            = item.Market;
            MarketplaceId     = item.MarketplaceId;
            StyleColor        = item.StyleColor;
            StyleSize         = item.StyleSize;
            AvailableQuantity = item.AvailableQuantity ?? 0;
            StyleString       = item.StyleID;
            StyleId           = item.StyleId;
            StyleItemId       = item.StyleItemId;

            SourceStyleString = item.SourceStyleString;
            SourceStyleItemId = item.SourceStyleItemId;
            SourceStyleSize   = item.SourceStyleSize;
            SourceStyleColor  = item.SourceStyleColor;

            NewListingId = item.Id;
        }
コード例 #2
0
        private static IEnumerable <ListingOrderDTO> GetOrdersWithItemsForPickList(IUnitOfWork db, long fbaShipmentId)
        {
            var shipmentListings = db.FBAPickListEntries.GetAllAsDto().Where(i => i.FBAPickListId == fbaShipmentId).ToList();
            var listingIds       = shipmentListings.Select(l => l.ListingId).ToList();
            var listingInfoes    = db.Listings.GetViewListingsAsDto(false).Where(l => listingIds.Contains(l.Id)).ToList();

            var results = new List <ListingOrderDTO>();

            foreach (var shipmentListing in shipmentListings)
            {
                var listingInfo = listingInfoes.FirstOrDefault(l => l.Id == shipmentListing.ListingId);

                var listing = new ListingOrderDTO()
                {
                    Id = shipmentListing.Id,
                    QuantityOrdered = shipmentListing.Quantity,

                    ASIN       = listingInfo.ASIN,
                    ParentASIN = listingInfo.ParentASIN,
                    SKU        = listingInfo.SKU,
                    ListingId  = listingInfo.ListingId,
                    Picture    = listingInfo.ParentASIN,
                    Size       = listingInfo.Size,
                    Color      = listingInfo.Color,

                    StyleID     = listingInfo.StyleString,
                    StyleImage  = listingInfo.StyleImage,
                    StyleSize   = listingInfo.StyleSize,
                    StyleId     = listingInfo.StyleId,
                    StyleItemId = listingInfo.StyleItemId,
                };
                results.Add(listing);
            }
            return(results);
        }
コード例 #3
0
        public static decimal GetItemPrice(ListingOrderDTO listing)
        {
            var price = listing.ItemPrice;

            if (listing.QuantityOrdered != 0)
            {
                price += listing.ShippingPrice / listing.QuantityOrdered;
            }
            return(price);
        }
コード例 #4
0
        public QuantityItemViewModel(ListingOrderDTO item)
        {
            ItemOrderId   = item.ItemOrderId;
            PictureUrl    = ImageHelper.GetFirstOrDefaultPicture(item.ItemPicture); //NOTE: only Listing image, w/o style image
            Market        = (MarketType)item.Market;
            MarketplaceId = item.MarketplaceId;

            ASIN        = item.ASIN;
            SKU         = item.SKU;
            ParentASIN  = item.ParentASIN;
            StyleString = item.StyleID;
            Quantity    = item.QuantityOrdered;
            Size        = item.Size;
        }
コード例 #5
0
        private decimal?GetUSListingPrice(IUnitOfWork db, ListingOrderDTO item)
        {
            var styleItemId       = item.SourceStyleItemId ?? item.StyleItemId;
            var cheapestUSListing = db.Items.GetAllViewAsDto()
                                    .Where(l => l.StyleItemId == styleItemId && l.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId)
                                    .OrderBy(l => l.SalePrice ?? l.CurrentPrice)
                                    .FirstOrDefault();

            if (cheapestUSListing != null)
            {
                var salePrice = cheapestUSListing.SalePrice ?? cheapestUSListing.CurrentPrice;
                if (cheapestUSListing.IsPrime)
                {
                    salePrice -= AmazonPrimeHelper.GetShippingAmount(item.Weight);
                }
                return(salePrice * item.QuantityOrdered);
            }
            return(null);
        }
コード例 #6
0
        private decimal?GetUSListingPrice(IUnitOfWork db, ListingOrderDTO item)
        {
            var styleItemId       = item.SourceStyleItemId ?? item.StyleItemId;
            var cheapestUSListing = db.Items.GetAllViewAsDto()
                                    .Where(l => l.StyleItemId == styleItemId && l.MarketplaceId == MarketplaceKeeper.AmazonComMarketplaceId)
                                    .OrderBy(l => l.CurrentPrice)
                                    .FirstOrDefault();

            if (cheapestUSListing != null)
            {
                var usPrice = cheapestUSListing.SalePrice ?? cheapestUSListing.CurrentPrice;
                if (cheapestUSListing.IsPrime)
                {
                    usPrice -= _priceService.GetPrimePart((decimal?)cheapestUSListing.Weight);
                }

                return(usPrice);
            }
            return(null);
        }
コード例 #7
0
        public ReturnQuantityItemViewModel(ListingOrderDTO item)
        {
            ItemOrderId = item.ItemOrderId;
            var image = item.ItemPicture;

            if (String.IsNullOrEmpty(image))
            {
                image = item.StyleImage;
            }
            PictureUrl = ImageHelper.GetFirstOrDefaultPicture(image);

            Market        = (MarketType)item.Market;
            MarketplaceId = item.MarketplaceId;

            ASIN        = item.ASIN;
            SKU         = item.SKU;
            ParentASIN  = item.ParentASIN;
            StyleString = item.StyleID;
            ItemTitle   = item.Title;

            Quantity        = item.QuantityOrdered;
            Size            = item.Size;
            DefaultLocation = item.Locations != null && item.Locations.Any() ? item.Locations.OrderByDescending(l => l.IsDefault).First() : null;

            PriceCurrency    = PriceHelper.FormatCurrency(item.ItemPriceCurrency);
            ItemPrice        = item.ItemPrice;
            ItemTax          = item.ItemTax ?? 0;
            ItemPriceInUSD   = PriceHelper.RougeConvertToUSD(PriceCurrency, item.ItemPrice);
            ShippingPrice    = item.ShippingPrice;
            ShippingDiscount = item.ShippingDiscount ?? 0;
            ShippingTax      = item.ShippingTax ?? 0;

            Weight = item.Weight ?? 0;

            StyleId     = item.StyleId;
            StyleItemId = item.StyleItemId;

            InputQuantity        = Quantity;
            InputDamagedQuantity = 0;
        }
コード例 #8
0
        private static IEnumerable <ListingOrderDTO> GetOrdersWithItemsForPickList(IUnitOfWork db, long photoshootShipmentId)
        {
            var photoshootEntries = db.PhotoshootPickListEntries.GetAllAsDto().Where(i => i.PhotoshootPickListId == photoshootShipmentId).ToList();
            var styleItemIds      = photoshootEntries.Select(p => p.StyleItemId).ToList();
            var styleItems        = db.StyleItems.GetAll().Where(si => styleItemIds.Contains(si.Id)).ToList();
            var styleIds          = styleItems.Select(p => p.StyleId).ToList();
            var styles            = db.Styles.GetAll().Where(st => styleIds.Contains(st.Id)).ToList();

            var results = new List <ListingOrderDTO>();

            foreach (var entry in photoshootEntries)
            {
                var styleItem = styleItems.FirstOrDefault(si => si.Id == entry.StyleItemId);
                var style     = styles.FirstOrDefault(st => st.Id == styleItem.StyleId);


                var listing = new ListingOrderDTO()
                {
                    Id = entry.Id,
                    QuantityOrdered = entry.TakenQuantity,

                    ASIN       = "",
                    ParentASIN = "",
                    SKU        = "",
                    ListingId  = "",
                    Picture    = style.Image,
                    Size       = styleItem.Size,
                    Color      = styleItem.Color,

                    StyleID     = style.StyleID,
                    StyleImage  = style.Image,
                    StyleSize   = styleItem.Size,
                    StyleId     = style.Id,
                    StyleItemId = styleItem.Id,
                };
                results.Add(listing);
            }
            return(results);
        }
コード例 #9
0
        private decimal?GetListingCost(IUnitOfWork db, ListingOrderDTO item)
        {
            var styleItemId = item.SourceStyleItemId ?? item.StyleItemId;

            return(db.StyleItemCaches.GetAll().FirstOrDefault(sic => sic.Id == styleItemId)?.Cost);
        }
コード例 #10
0
        /// <summary>
        /// For Named List
        /// </summary>
        /// <param name="item"></param>
        /// <param name="market"></param>
        /// <param name="isOrderOnHold"></param>
        /// <param name="isOrderPartial"></param>
        public OrderItemViewModel(ListingOrderDTO item, bool isOrderOnHold, bool isOrderPartial)
        {
            Market        = item.Market;
            MarketplaceId = item.MarketplaceId;

            ListingEntityId = item.Id;

            ItemOrderId  = item.ItemOrderId;
            RecordNumber = item.RecordNumber;
            ParentASIN   = item.ParentASIN;
            ASIN         = item.ASIN;

            ListingCreateDate = item.ListingCreateDate;

            SourceMarketId = item.SourceMarketId;

            OnHold = isOrderOnHold;

            StyleID     = item.StyleID;
            StyleSize   = item.StyleSize;
            Size        = item.Size;
            Color       = item.Color;
            StyleItemId = item.StyleItemId;


            SourceStyleString = item.SourceStyleString;
            SourceStyleSize   = item.SourceStyleSize;
            SourceStyleColor  = item.SourceStyleColor;

            Title    = item.Title;
            Quantity = isOrderPartial
                ? item.QuantityShipped.ToString("G") + "/" + item.QuantityOrdered.ToString("G")
                : item.QuantityOrdered.ToString("G");
            QuantityOrdered = item.QuantityOrdered;
            QuantityShipped = item.QuantityShipped;

            if (item.ItemPaid.HasValue && item.ItemPaid > 0)
            {
                ItemPrice = item.ItemPaid.Value - (item.ItemTax ?? 0);
            }
            else if (Market == (int)MarketType.eBay)
            {
                ItemPrice = item.ItemPrice * item.QuantityOrdered;
            }
            else
            {
                ItemPrice = item.ItemPrice;
            }
            RefundItemPrice     = item.RefundItemPrice;
            ItemDiscount        = item.PromotionDiscount;
            ItemTax             = item.ItemTax;
            ShippingPrice       = item.ShippingPrice;
            RefundShippingPrice = item.RefundShippingPrice;
            ShippingDiscount    = item.ShippingDiscount;
            ItemPriceInUSD      = item.ItemPriceInUSD;

            ExcessiveShipmentThreshold = StringHelper.TryGetDecimal(item.ExcessiveShipmentThreshold);

            FBAFee = item.FBAPerOrderFulfillmentFee + item.FBAPerUnitFulfillmentFee + item.FBAWeightBasedFee;
            FBAAvailableQuantity = item.AvailableQuantity;
            SimilarNonFBASKU     = item.SimilarNonFBASKU;
            SimilarNonFBAPrice   = item.SimilarNonFBAPrice;

            var image = item.ItemPicture;

            if (String.IsNullOrEmpty(image))
            {
                image = item.StyleImage;
            }
            if (item.ReplaceType == (int)ItemReplaceTypes.Combined)
            {
                image = item.StyleImage;
            }
            if (item.UseStyleImage)
            {
                image = item.StyleImage;
            }

            PictureUrl = ImageHelper.GetFirstOrDefaultPicture(image);

            Weight = item.Weight;

            BayNumber     = StringHelper.Substring(item.SortIsle.ToString(), 1);
            LocationIndex = LocationHelper.GetLocationIndex(item.SortIsle, item.SortSection, item.SortShelf);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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;
            }
        }