public void LogStyleItemQuantity(IUnitOfWork db, long styleItemId, int?newQuantity, int?oldQuantity, QuantityChangeSourceType type, string tag, long?sourceEntityTag, string sourceEntityName, DateTime when, long?by) { var styleItemCache = db.StyleItemCaches.GetAllAsDto().FirstOrDefault(si => si.Id == styleItemId); db.StyleItemQuantityHistories.Add(new StyleItemQuantityHistory() { StyleItemId = styleItemId, Quantity = newQuantity, FromQuantity = oldQuantity, BeforeRemainingQuantity = styleItemCache != null ? styleItemCache.RemainingQuantity : (int?)null, Type = (int)type, Tag = tag, SourceEntityTag = sourceEntityTag, SourceEntityName = sourceEntityName, CreateDate = when, CreatedBy = by }); db.Commit(); }
public static string GetName(QuantityChangeSourceType type) { switch (type) { case QuantityChangeSourceType.AddNewBox: return("Add Box"); case QuantityChangeSourceType.RemoveBox: return("Remove Box"); case QuantityChangeSourceType.ChangeBox: return("Change Box Qty"); case QuantityChangeSourceType.UseBoxQuantity: return("Switch to Box Qty"); case QuantityChangeSourceType.UseManuallyQuantity: return("Switch to Manually"); case QuantityChangeSourceType.AddSpecialCase: return("Special Case"); case QuantityChangeSourceType.RemoveSpecialCase: return("Special Case"); case QuantityChangeSourceType.SentToFBA: return("Sent to FBA"); case QuantityChangeSourceType.SentToStore: return("Sent to Store"); case QuantityChangeSourceType.Initial: return("Manually"); case QuantityChangeSourceType.EnterNewQuantity: return("Manually"); case QuantityChangeSourceType.OnHold: return("On Hold"); case QuantityChangeSourceType.NewOrder: return("New Order"); case QuantityChangeSourceType.OrderCancelled: return("Order Canceled"); case QuantityChangeSourceType.RemainingChanged: return("Snapshot"); case QuantityChangeSourceType.SaleEventOnHold: return("Sale Event (OnHold)"); case QuantityChangeSourceType.SaleEventPurchased: return("Sale Event (Purchased)"); default: return(type.ToString()); } return("-"); }
public void UpdateListingQuantity(IUnitOfWork db, QuantityChangeSourceType type, Listing listing, int?newQuantity, string size, string styleString, long?styleId, long?styleItemId, DateTime when, long?by) { var wasChanged = false; var note = String.Empty; if (listing.RealQuantity != (newQuantity ?? 0)) { note = listing.RealQuantity.ToString(); listing.QuantityUpdateRequested = true; listing.QuantityUpdateRequestedDate = when; listing.RealQuantity = newQuantity ?? 0; listing.RealQuantityUpdateDate = when; if (type == QuantityChangeSourceType.SetByAutoQuantity) { listing.AutoQuantityUpdateDate = when; } wasChanged = true; } if (wasChanged) { db.QuantityHistories.Add(new QuantityHistory() { ListingId = listing.Id, Type = (int)type, QuantityChanged = newQuantity ?? 0, SKU = StringHelper.Substring(listing.SKU, 50), StyleId = styleId, StyleString = StringHelper.Substring(styleString, 50), StyleItemId = styleItemId, Size = StringHelper.Substring(size, 50), OrderId = StringHelper.Substring(note, 50), CreateDate = when, CreatedBy = by }); db.Commit(); } }
public void Process(IUnitOfWork db, long listingId, int quantity, QuantityChangeSourceType changeType, string orderId, long?styleId, string styleString, long?styleItemId, string sku, string size) { var historyUpdated = UpdateQuantityHistory(db, _log, quantity, changeType, listingId, orderId, styleId, styleString, styleItemId, sku, size, _time.GetAppNowTime()); }
private bool UpdateQuantityHistory(IUnitOfWork db, ILogService log, int quantity, QuantityChangeSourceType changeType, long listingId, string orderId, long?styleId, string styleString, long?styleItemId, string sku, string size, DateTime when) { var qtyHistories = db.QuantityHistories.GetByOrderId(orderId); var dbQtyHistory = qtyHistories.FirstOrDefault(q => q.ListingId == listingId && q.StyleItemId == styleItemId); if (changeType == QuantityChangeSourceType.NewOrder) { if (dbQtyHistory != null) { //Already substracted if (dbQtyHistory.QuantityChanged != quantity) { log.Fatal(String.Format("Quantity not equal for order item in quantity history record, orderId={0}, listing={1}, qty history={2}, new quantity={3}", orderId, listingId, dbQtyHistory.QuantityChanged, quantity)); } else { log.Warn(String.Format("History record already exist, orderId={0}, listingId={1}, quantity={2}", orderId, listingId, quantity)); } return(false); } else { db.QuantityHistories.Add(new QuantityHistory() { ListingId = listingId, Type = (int)QuantityChangeSourceType.NewOrder, QuantityChanged = quantity, SKU = sku, StyleId = styleId, StyleString = styleString, StyleItemId = styleItemId, OrderId = orderId, Size = size, CreateDate = when, }); if (styleItemId.HasValue) { LogStyleItemQuantity(db, styleItemId.Value, quantity, null, QuantityChangeSourceType.NewOrder, orderId, null, null, when, null); } return(true); } } if (changeType == QuantityChangeSourceType.OrderCancelled) { if (qtyHistories.Count == 1 && qtyHistories.First().Type == (int)QuantityChangeSourceType.NewOrder) { db.QuantityHistories.Add(new QuantityHistory() { ListingId = listingId, Type = (int)QuantityChangeSourceType.OrderCancelled, QuantityChanged = -quantity, SKU = sku, StyleId = styleId, StyleString = styleString, StyleItemId = styleItemId, OrderId = orderId, Size = size, CreateDate = when, }); if (styleItemId.HasValue) { LogStyleItemQuantity(db, styleItemId.Value, -quantity, null, QuantityChangeSourceType.OrderCancelled, orderId, null, null, when, null); } return(true); } else { //Do nothing //-Canceled info already exist //-Or no new order info } } db.Commit(); return(false); }