/// <summary> /// Retrieves Mail grid rows /// </summary> /// <param name="request"></param> /// <param name="orderId"></param> /// <returns></returns> public virtual ActionResult GetOrderById([DataSourceRequest] DataSourceRequest request, string orderId) { LogI("GetOrderById, orderId=" + orderId); if (String.IsNullOrWhiteSpace(orderId)) { return new JsonResult { Data = new List <OrderViewModel>(), JsonRequestBehavior = JsonRequestBehavior.AllowGet } } ; orderId = orderId.RemoveWhitespaces(); try { var model = new OrderSearchFilterViewModel { EqualOrderNumber = orderId }; var items = OrderViewModel.GetFilteredForDisplay(Db, LogService, WeightService, model, AccessManager.IsFulfilment); var dataSource = items.Items.ToDataSourceResult(request); return(new JsonResult { Data = dataSource, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (Exception ex) { LogE("GetOrderById", ex); return(new JsonResult { Data = new List <OrderViewModel>(), JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } }
public virtual ActionResult GetPickListWithLocation([DataSourceRequest] DataSourceRequest request, long?batchId, bool?useOnlyAllPending) { LogI("GetPickListWithLocation, batchId=" + batchId + ", useOnlyAllPending=" + useOnlyAllPending); try { bool excludeOnHold = false; string[] orderStatus = null; if (batchId != null) { excludeOnHold = false; orderStatus = OrderStatusEnumEx.AllUnshippedWithShipped; } else { excludeOnHold = false; if (useOnlyAllPending == true) { orderStatus = new[] { OrderStatusEnumEx.Pending } } ; else { orderStatus = OrderStatusEnumEx.AllUnshipped; } } var model = new OrderSearchFilterViewModel { ShippingStatus = "Select...", BatchId = batchId, DropShipperId = DSHelper.DefaultPAId, //Pick list should never have pajamas for which labels were already generated (more accurate restriction in VM) OrderStatus = orderStatus, ExcludeOnHold = excludeOnHold, DateFrom = null, DateTo = null, BuyerName = null, OrderNumber = null, }; //Pick list should never have pajamas for which labels were already generated (if not in batch) if (!batchId.HasValue) { model.ExcludeWithLabels = true; } var items = PickListItemViewModel.GetPickListItems(Db, LogService, WeightService, model); var dataSource = items.ToDataSourceResult(request); return(JsonGet(dataSource)); } catch (Exception ex) { LogE("GetPickListWithLocation", ex); return(new JsonResult { Data = new List <PickListItemViewModel>(), JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } }
public virtual ActionResult GetPendingOrders([DataSourceRequest] DataSourceRequest request, int?market, string marketplaceId) { LogI("GetOrders, market=" + market + ", marketplaceId=" + marketplaceId); var orderStatusList = new string[] { OrderStatusEnumEx.Pending }; var model = new OrderSearchFilterViewModel { Market = (MarketType)(market ?? (int)MarketHelper.DefaultUIMarket), MarketplaceId = marketplaceId ?? MarketHelper.DefaultUIMarketplaceId, OrderStatus = orderStatusList, }; var items = OrderViewModel.GetFilteredForDisplay(ReadDb, LogService, WeightService, model, AccessManager.IsFulfilment, SortMode.ByShippingMethodThenLocation); var dataSource = items.Items.ToDataSourceResult(request); return(Json(dataSource, JsonRequestBehavior.AllowGet)); }
public static IEnumerable <SecondDayViewModel> GetAll(IUnitOfWork db, OrderSearchFilterViewModel search) { var orders = db.Orders.GetSecondDayOrders(search.DateFrom, search.DateTo).OrderByDescending(o => o.OrderDate).ToList(); return(orders.Select(o => new SecondDayViewModel { OrderNumber = o.OrderNumber, Market = o.Market, MarketplaceId = o.MarketplaceId, TrackingNumber = o.TrackingNumber, EstDeliveryDate = o.EstDeliveryDate, OrderDate = o.OrderDate, ActualDeliveryDate = o.ActualDeliveryDate, PersonName = o.PersonName, BuyerName = o.BuyerName, })); }
public virtual ActionResult GetSecondDay([DataSourceRequest] DataSourceRequest request, string dateFrom, string dateTo) { LogI("GetSecondDay"); var model = new OrderSearchFilterViewModel { DateFrom = dateFrom.HasValue() ? (DateTime?) DateTime.ParseExact(dateFrom, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) : null, DateTo = dateTo.HasValue() ? (DateTime?) DateTime.ParseExact(dateTo, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) : null }; var items = SecondDayViewModel.GetAll(Db, model); var dataSource = items.ToDataSourceResult(request); return(Json(dataSource, JsonRequestBehavior.AllowGet)); }
public virtual ActionResult GetWFSOrders([DataSourceRequest] DataSourceRequest request, string dateFrom, string dateTo) { LogI("GetFBAOrders, DateFrom=" + dateFrom + ", DateTo=" + dateTo); //1. Let user to select timeframe and page should show orders between selected dates. //By default it should show orders from 10am. So at 9pm it will sow orders from 10am-9pm, at 9am from 10 am previous day till 9am today. var model = new OrderSearchFilterViewModel { FulfillmentChannel = FulfillmentChannelTypeEx.AFN, OrderStatus = OrderStatusEnumEx.AllUnshippedWithShipped, //Set time to 10AM DateFrom = dateFrom.HasValue() ? (DateTime?) DateTime.ParseExact(dateFrom, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) .AddHours(10) : null, //Set time to 10AM DateTo = dateTo.HasValue() ? (DateTime?) DateTime.ParseExact(dateTo, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) .AddHours(10) : null, Market = MarketType.Walmart }; var items = OrderViewModel.GetFilteredForDisplay(Db, LogService, WeightService, model, AccessManager.IsFulfilment, resetTime: false); var dataSource = items.Items.ToDataSourceResult(request); return(Json(dataSource, JsonRequestBehavior.AllowGet)); }
private static IEnumerable <DTOOrder> GetOrdersWithItemsForPickList(IUnitOfWork db, IWeightService weightService, OrderSearchFilterViewModel search) { var filter = search.GetModel(); filter.UnmaskReferenceStyles = true; //if (filter.BatchId.HasValue) //{ // var batchOrderList = db.OrderToBatches.GetViewAllAsDto().Where(o => o.BatchId == filter.BatchId.Value).ToList(); // if (batchOrderList.Any()) //Batch created using OrderToBatch // { // filter.EqualOrderIds = batchOrderList.Select(o => o.OrderId).Distinct().ToArray(); // filter.BatchId = null; // } //} var orders = db.ItemOrderMappings.GetFilteredOrdersWithItems(weightService, filter) .ToList(); return(orders); }
public virtual ActionResult GetOrders(GridRequest request, int?market, string marketplaceId, string orderStatus, string shippingStatus, string dateFrom, string dateTo, string buyerName, string orderNumber, long?batchId, long?dropShipperId, string styleId, long?styleItemId) { LogI("Begin GetOrders, market=" + market + ", marketplaceId=" + marketplaceId + ", orderStatus=" + orderStatus + ", shipppingStatus=" + shippingStatus + ", DateFrom=" + dateFrom + ", DateTo=" + dateTo + ", BuyerName=" + buyerName + ", OrderNumber=" + orderNumber + ", BatchId=" + batchId + ", dropShipperId=" + dropShipperId + ", StyleId=" + styleId + ", StyleItemId=" + styleItemId); bool excludeWithLabels = false; bool includeForceVisible = false; string[] orderStatusList = null; if (!String.IsNullOrEmpty(orderStatus)) { orderStatusList = new[] { orderStatus } } ; //Exclude canceled from batch on UI if (batchId == 0) { batchId = null; } if (orderStatus == null) { if (batchId != null) { orderStatusList = OrderStatusEnumEx.AllUnshippedWithShipped; } else { orderStatusList = OrderStatusEnumEx.AllUnshipped; excludeWithLabels = true; includeForceVisible = true; } } buyerName = StringHelper.TrimWhitespace(buyerName); orderNumber = StringHelper.TrimWhitespace(orderNumber); styleId = StringHelper.TrimWhitespace(styleId); var pageSize = request.ItemsPerPage; var model = new OrderSearchFilterViewModel { //FulfillmentChannel = FulfillmentChannelTypeEx.MFN, Market = (MarketType)(market ?? (int)MarketHelper.DefaultUIMarket), MarketplaceId = marketplaceId ?? MarketHelper.DefaultUIMarketplaceId, DropShipperId = dropShipperId, OrderStatus = orderStatusList, ShippingStatus = shippingStatus, ExcludeWithLabels = excludeWithLabels, IncludeForceVisible = includeForceVisible, DateFrom = dateFrom.HasValue() ? (DateTime?) DateTime.ParseExact(dateFrom, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) : null, DateTo = dateTo.HasValue() ? (DateTime?) DateTime.ParseExact(dateTo, "MM/dd/yyyy", new CultureInfo("en-US"), DateTimeStyles.None) : null, BuyerName = string.IsNullOrEmpty(buyerName) ? null : buyerName.Trim(), BatchId = batchId, StyleId = string.IsNullOrEmpty(styleId) ? null : styleId.Trim(), StyleItemId = styleItemId, StartIndex = (request.Page - 1) * pageSize, LimitCount = pageSize, SortField = request.SortField, SortMode = request.SortMode == "asc" ? 0 : 1, }; if (!string.IsNullOrEmpty(orderNumber)) { //model.EqualOrderNumber = orderNumber; if (orderNumber.Contains("-")) { model.OrderNumber = orderNumber.Trim(); } else { model.OrderNumber = OrderHelper.FormatDisplayOrderNumber(orderNumber, MarketType.None); } } var searchResult = OrderViewModel.GetFilteredForDisplay(ReadDb, LogService, WeightService, model, AccessManager.IsFulfilment, SortMode.ByShippingMethodThenLocation); for (int i = 0; i < searchResult.Items.Count(); i++) { searchResult.Items[i].NumberByLocation = i; } if (!String.IsNullOrEmpty(model.OrderNumber)) { OrderPageViewModel.AddSearchHistory(Db, model.OrderNumber, Time.GetUtcTime(), AccessManager.UserId); } LogI("End GetOrders"); var data = new GridResponse <OrderViewModel>(searchResult.Items, searchResult.Items.Count); data.RequestTimeStamp = request.TimeStamp; return(JsonGet(data)); } }
public static IList <PickListItemViewModel> GetPickListItems(IUnitOfWork db, ILogService log, IWeightService weightService, OrderSearchFilterViewModel search) { var orders = GetOrdersWithItemsForPickList(db, weightService, search); var styleIdList = orders.SelectMany(o => o.Items.Where(i => i.StyleId.HasValue).Select(i => i.StyleId.Value).ToList()).ToList(); var styleItems = db.StyleItems.GetAllAsDto() .Where(s => styleIdList.Contains(s.StyleId)) .ToList(); var remainingQties = db.StyleItemCaches.GetAllCacheItems() .Where(s => styleIdList.Contains(s.StyleId)) .Select(ch => new SoldSizeInfo() { StyleItemId = ch.Id, StyleId = ch.StyleId, TotalQuantity = ch.RemainingQuantity }).ToList(); var pendingAndNoBatchSoldQtyes = db.ItemOrderMappings.GetPendingAndOtherUnshippedOrderItemQtyes(search.BatchId); var styles = db.Styles.GetAllActive().Where(s => styleIdList.Contains(s.Id)).ToList(); var stylesValues = db.StyleFeatureValues.GetFeatureValueByStyleIdByFeatureId( styleIdList, new int[] { StyleFeatureHelper.MAIN_LICENSE, StyleFeatureHelper.SUB_LICENSE1, StyleFeatureHelper.GENDER }); var styleLocations = db.StyleLocations.GetAllAsDTO().Where(l => styleIdList.Contains(l.StyleId)).ToList(); //Step #1. Detect which styles have color variations //Note: we set variate true only if items into one parent item has color variation //NOTE: Using only for color variation calculation var items = db.Items.GetAllViewAsDto(MarketType.Amazon, String.Empty).Where(l => l.StyleId.HasValue && styleIdList.Contains(l.StyleId.Value)).ToList(); //TODO: for all marketplaces var isItemVariate = GetSKUColorVariationStatus(items); var summaryItems = new List <PickListItemViewModel>(); //Filling summary items list with variation detections //If one item has color variation all item of his style is color variating foreach (var order in orders) { foreach (var item in order.Items) { try { //Correct price for WM second day if (order.Market == (int)MarketType.Walmart && item.IsPrime) { if (item.IsPrime) { item.ItemPrice = item.ItemPrice - 5; } } var style = styles.FirstOrDefault(s => s.StyleID == item.StyleID); var styleId = style != null ? style.Id : (long?)null; //Has color variation (Parent Item have more then 1 item with same size) var itemStatus = isItemVariate.FirstOrDefault(v => v.SKU == item.SKU); var hasColorVariation = itemStatus != null ? itemStatus.HasColorVariation : false; //If has color variation check with color var existGroup = summaryItems.FirstOrDefault(i => i.StyleId == styleId); //Update exist group if (existGroup != null) { UpdateExistGroup(existGroup, hasColorVariation, item, order); } else { var newGroup = ComposeNewGroup(item, hasColorVariation, style, styleItems, order); summaryItems.Add(newGroup); } } catch (Exception ex) { log.Fatal("Print Pick List. PickListItemViewModel.", ex); } } } foreach (var item in summaryItems) { ItemPostProcessing(item, styleLocations, remainingQties, pendingAndNoBatchSoldQtyes, stylesValues); } var sortedItems = summaryItems .OrderBy(m => m.SortIsle) .ThenBy(m => m.SortSection) .ThenBy(m => m.SortShelf) .ThenBy(m => m.StyleString) .ToList(); for (int i = 0; i < sortedItems.Count; i++) { sortedItems[i].Number = i + 1; } return(sortedItems); }