コード例 #1
0
        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();
        }
コード例 #2
0
        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();
                    }
                }
            }
        }
コード例 #3
0
        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);
                    }
                }
            }
        }