public void AddNewOrder(ScanOrderDTO orderDto, List <ScanItemDTO> items) { var order = new Order { IsFBA = orderDto.IsFBA, OrderDate = orderDto.OrderDate, Description = orderDto.Description, FileName = orderDto.FileName, }; unitOfWork.GetSet <Order>().Add(order); unitOfWork.Commit(); foreach (var dto in items) { var item = unitOfWork.GetSet <Item>().FirstOrDefault(i => i.Barcode == dto.Barcode); if (item == null) { item = new Item { Barcode = dto.Barcode }; unitOfWork.GetSet <Item>().Add(item); unitOfWork.Commit(); } Add(new ItemOrderMapping { ItemId = item.Id, OrderId = order.Id, Quantity = dto.Quantity }); dto.Id = item.Id; } unitOfWork.Commit(); }
public static void SetFinishStatus(IDbFactory dbFactory, ISystemActionService actionService, long pickListId, bool isFinished, DateTime when, long?by) { if (isFinished) { List <ScanItemDTO> pickListEntries; FBAPickList dbPickList; using (var db = dbFactory.GetRWDb()) { pickListEntries = (from pi in db.FBAPickListEntries.GetAll() join l in db.Listings.GetAll() on pi.ListingId equals l.Id join i in db.Items.GetAll() on l.ItemId equals i.Id where pi.FBAPickListId == pickListId select new ScanItemDTO() { Quantity = pi.Quantity, Barcode = i.Barcode, StyleId = i.StyleId, }).ToList(); dbPickList = db.FBAPickLists.GetAll().FirstOrDefault(pi => pi.Id == pickListId); dbPickList.Status = ShipmentStatuses.Finished; db.Commit(); } using (var invDb = dbFactory.GetInventoryRWDb()) { var scanOrder = new ScanOrderDTO() { Description = dbPickList.FBAPickListType + "-" + DateHelper.ToDateTimeString(dbPickList.CreateDate), FileName = dbPickList.Id.ToString(), OrderDate = when, IsFBA = true }; invDb.ItemOrderMappings.AddNewOrder(scanOrder, pickListEntries); } var styleIds = pickListEntries.Where(i => i.StyleId.HasValue).Select(i => i.StyleId.Value).ToArray(); using (var db = dbFactory.GetRWDb()) { SystemActionHelper.RequestQuantityDistribution(db, actionService, styleIds, by); } } else { FBAPickList dbPickList; using (var db = dbFactory.GetRWDb()) { dbPickList = db.FBAPickLists.GetAll().FirstOrDefault(pi => pi.Id == pickListId); dbPickList.Status = ShipmentStatuses.Default; db.Commit(); } var name = dbPickList.FBAPickListType + "-" + DateHelper.ToDateTimeString(dbPickList.CreateDate); using (var invDb = dbFactory.GetInventoryRWDb()) { var dbInvOrder = invDb.Orders.GetAll().FirstOrDefault(o => o.Description == name); if (dbInvOrder != null) { invDb.Orders.Remove(dbInvOrder); invDb.Commit(); } } } }
public void StoreOrderInfo(OrderInfo order) { var dbFactory = new DbFactory(); var log = LogFactory.Default; var time = new TimeService(dbFactory); var quantityManager = new QuantityManager(log, time); using (var invDb = new Amazon.DAL.Inventory.InventoryUnitOfWork()) { if (order.Type == InventoryOrderType.InventoryOrder) { var orderDto = new InventoryDTO() { Description = order.Name, FileName = order.FileName, InventoryDate = DateHelper.ConvertUtcToApp(order.OrderDate) }; var itemsDto = order.Barcodes.Select(b => new ScanItemDTO() { Barcode = b.Barcode, Quantity = b.Quantity }).ToList(); invDb.ItemInventoryMappings.AddNewInventory(orderDto, itemsDto); } if (order.Type == InventoryOrderType.ShopOrder || order.Type == InventoryOrderType.FBAOrder) { var orderDto = new ScanOrderDTO() { Description = order.Name, FileName = order.FileName, OrderDate = DateHelper.ConvertUtcToApp(order.OrderDate), IsFBA = order.Type == InventoryOrderType.FBAOrder }; var itemsDto = order.Barcodes.Select(b => new ScanItemDTO() { Barcode = b.Barcode, Quantity = b.Quantity }).ToList(); invDb.ItemOrderMappings.AddNewOrder(orderDto, itemsDto); try { using (var db = dbFactory.GetRWDb()) { foreach (var item in itemsDto) { var barcodeDto = db.StyleItemBarcodes.GetAllAsDto().FirstOrDefault(b => b.Barcode == item.Barcode); if (barcodeDto != null) { quantityManager.LogStyleItemQuantity(db, barcodeDto.StyleItemId, item.Quantity, null, order.Type == InventoryOrderType.ShopOrder ? QuantityChangeSourceType.SentToStore : QuantityChangeSourceType.SentToFBA, orderDto.Id.ToString(), item.Id, StringHelper.Substring(orderDto.Description, 50), time.GetAppNowTime(), null); } } } } catch (Exception ex) { log.Error("When write style item log", ex); } } } }