private void FindActiveKits(List <SerialNumberItem> items, OrderDeliveryModel deliveryModel)
        {
            var kits      = items.Where(x => x.KitId > 0 && x.KitCounter > 0 && !string.IsNullOrEmpty(x.ScannedBy)).GroupBy(x => x.ScannedBy);
            var kitGroups = new Dictionary <string, List <DeliveryOrderItemModel> >();

            kits.ToList().ForEach(group =>
            {
                var matched  = group.FirstOrDefault();
                var kitItems = items.Where(i => i.KitCounter.Equals(matched.KitCounter) && i.KitId.Equals(matched.KitId));
                if (!kitGroups.ContainsKey(group.Key))
                {
                    kitGroups.Add(group.Key, kitItems.Map <IEnumerable <SerialNumberItem>, List <DeliveryOrderItemModel> >());
                }
                else
                {
                    kitGroups[group.Key].AddRange(kitItems.Map <IEnumerable <SerialNumberItem>, List <DeliveryOrderItemModel> >());
                }
                if (kitGroups[group.Key].All(i => !string.IsNullOrEmpty(i.SerialCode)))
                {
                    kitGroups.Remove(group.Key);
                }
                else
                {
                    kitItems.ToList().ForEach(ki => items.Remove(ki));
                }
            });
            deliveryModel.ActiveKits = kitGroups;
        }
        /// <summary>
        /// 门店发货
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public object PostShopSendGood(OrderDeliveryModel model)
        {
            CheckUserLogin();
            string shopkeeperName = "";

            shopkeeperName = CurrentShopBranch.UserName;
            var returnurl = String.Format("http://{0}/Common/ExpressData/SaveExpressData", Request.RequestUri.Authority);

            OrderApplication.ShopSendGood(model.orderId, model.deliveryType, shopkeeperName, model.companyName, model.shipOrderNumber, returnurl);
            return(SuccessResult("发货成功"));
        }
        public void IsVerified_NotScanned_HasNoVerified_Scanned_HasNone()
        {
            var actual = new OrderDeliveryModel();

            actual.ScannedItems = new List <DeliveryOrderItemModel> {
                new DeliveryOrderItemModel {
                }
            };
            actual.NotScannedItems = new List <DeliveryOrderItemModel> {
                new DeliveryOrderItemModel {
                }
            };
            Assert.IsFalse(actual.IsVerified);
        }
        /// <summary>
        /// 门店发货
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public object PostShopSendGood(OrderDeliveryModel model)
        {
            CheckUserLogin();
            string shopkeeperName = "";
            long   shopid         = CurrentShopBranch.ShopId;
            long   sbid           = CurrentUser.ShopBranchId;

            shopkeeperName = CurrentShopBranch.UserName;
            var returnurl = String.Format("{0}/Common/ExpressData/SaveExpressData", CurrentUrlHelper.CurrentUrlNoPort());

            if (model.deliveryType == DeliveryType.CityExpress.GetHashCode())  //同城物流
            {
                var dadaconfig = CityExpressConfigApplication.GetDaDaCityExpressConfig(shopid);
                if (!dadaconfig.IsEnable)
                {
                    throw new HimallApiException("未开启同城合作物流");
                }
                var order = OrderApplication.GetOrder(model.orderId);
                if (order == null || order.ShopId != shopid || !(order.ShopBranchId > 0) || order.OrderStatus != Entities.OrderInfo.OrderOperateStatus.WaitDelivery)
                {
                    throw new HimallApiException("错误的订单编号");
                }
                //Log.Error("达达发货ShopBranchOrder-开始01:orderId:" + model.orderId);

                var sbdata = ShopBranchApplication.GetShopBranchById(sbid);

                string json      = ExpressDaDaHelper.addAfterQuery(shopid, sbdata.DaDaShopId, model.shipOrderNumber);
                var    resultObj = JsonConvert.DeserializeObject(json) as JObject;
                string status    = resultObj["status"].ToString();

                //Log.Error("达达发货ShopBranchOrder-开始02:status:" + status);
                if (status != "success")
                {
                    //订单码过期,重发单
                    json = SendDaDaExpress(model.orderId, shopid, sbid, false);
                    var    rObj2   = JsonConvert.DeserializeObject(json) as JObject;
                    string status2 = rObj2["status"].ToString();
                    if (status2 != "success")
                    {
                        string msg = rObj2["msg"].ToString();
                        return(ErrorResult(msg));
                    }
                }
            }
            OrderApplication.ShopSendGood(model.orderId, model.deliveryType, shopkeeperName, model.companyName, model.shipOrderNumber, returnurl);
            return(SuccessResult("发货成功"));
        }
Exemplo n.º 5
0
 //启动分发
 public void OrderDelivery()
 {
     while (true)
     {
         Thread.Sleep(1000);
         try
         {
             //var orderAreaList = _operDal.GetDeliveryAreas();
             var orderNotSend = _operDal.GeTbOrdersNotSend();
             //根据area定义的名字,发送到对一个的socket
             //发送后,将数据库IsSend状态修改为1
             foreach (var item in orderNotSend.GroupBy(x => x.OrderId))
             {
                 var orderId = item.Key;
                 var list    = new OrderDelivery {
                     Content = new List <OrderContent>()
                 };
                 var last = new OrderDeliveryModel();
                 foreach (var p in orderNotSend.Where(x => x.OrderId.Equals(orderId)))
                 {
                     last             = p;
                     list.Address     = p.Address;
                     list.CreateTime  = p.CreateTime;
                     list.OrderId     = orderId;
                     list.PhoneNumber = p.PhoneNumber;
                     list.Content.Add(new OrderContent {
                         BuyCnt = p.BuyCnt, CurPrice = p.CurPrice, StockCode = p.StockCode, Name = p.Name
                     });
                 }
                 list.Address     = last.Address;
                 list.CreateTime  = last.CreateTime;
                 list.PhoneNumber = last.PhoneNumber;
                 list.OrderId     = orderId;
                 list.AreaId      = last.AreaId;
                 _dispatcherCore.SendMessage(last.AreaId, list);
                 _operDal.UpdateTbOrdersSend(orderId);
             }
         }
         catch (Exception ex)
         {
             AppLogger.Error($"{ex.Message} {ex.StackTrace}", ex);
         }
     }
 }
        public OrderDeliveryModel OrderLookUp(MacDeliveryModel lookup)
        {
            var delivery = _repo.GetDelivery(new DeliveryOrderQuery {
                DocNum = lookup.DeliveryNumber, ServerLocation = _settings.GetServerLocation, IsInternal = lookup.IsInternal
            });
            OrderDeliveryModel deliveryModel = null;

            if (delivery != null)
            {
                delivery.IsIrDelivery = lookup.IsInternal;
                var items =
                    _repo.GetDeliveryItems(new DeliveryOrderItemsQuery
                {
                    DocNum         = lookup.DeliveryNumber,
                    ServerLocation = _settings.GetServerLocation,
                    Username       = _identity.Name,
                    IsInternal     = delivery.IsIrDelivery
                }).ToList();
                deliveryModel = delivery.Map <Delivery, OrderDeliveryModel>();
                deliveryModel.DeliveryNumber = lookup.DeliveryNumber;
                deliveryModel.IsInternal     = lookup.IsInternal;

                FindActiveKits(items, deliveryModel);

                items.ForEach(i =>
                {
                    var model = i.Map <SerialNumberItem, DeliveryOrderItemModel>();
                    if (string.IsNullOrEmpty(i.MacId))
                    {
                        deliveryModel.NotScannedItems.Add(model);
                    }
                    else
                    {
                        deliveryModel.ScannedItems.Add(model);
                    }
                });
                var dictionary = new Dictionary <string, int>();
                var grouped    = items.Where(i => i.RealItemCode != null).GroupBy(i => i.RealItemCode).ToList();
                grouped.OrderBy(g => g.Count()).ToList().ForEach(g => dictionary.Add(g.Key, g.Count()));
                deliveryModel.ChartData = dictionary;
            }
            return(deliveryModel);
        }
        public OrderDeliveryModel ConvertOrderItemsAndCustomerInfoToOrderDeliveryModel(List <OrderItem> orderItems, CustomerDetailDto customerDetail)
        {
            if (customerDetail == null)
            {
                throw new ArgumentNullException(nameof(CustomerDetailDto));
            }

            var orderDeliveryModel = new OrderDeliveryModel();

            // Build Delivery Address
            var deliveryAddressArr = new [] { $"{customerDetail.HouseNumber.ToUpper()} {customerDetail.Street}", customerDetail.Town, customerDetail.Postcode };
            var deliveryAddress    = string.Join(", ", deliveryAddressArr.Where(s => !string.IsNullOrEmpty(s)));

            // Build Order Model
            var orderModel = new OrderModel();

            if (orderItems != null && orderItems.Count > 0)
            {
                orderModel.OrderNumber      = orderItems.First().Order.OrderId;
                orderModel.OrderDate        = orderItems.First().Order.OrderDate.ToString("dd-MMM-yyyy");
                orderModel.DeliveryAddress  = deliveryAddress;
                orderModel.DeliveryExpected = orderItems.First().Order.DeliveryExpected.ToString("dd-MMM-yyyy");
                orderModel.OrderItems       = orderItems.Select(orderItem => new OrderItemModel
                {
                    Product   = orderItem.Order.ContainsGift ? "Gift" : orderItem.Product.ProductName,
                    Quantity  = orderItem.Quantity,
                    PriceEach = orderItem.Price
                })
                                              .ToList();

                orderDeliveryModel.Order = orderModel;
            }

            // Add CustomerModel to OrderDeliveryModel and Return
            orderDeliveryModel.Customer = new CustomerModel
            {
                FirstName = customerDetail.FirstName,
                LastName  = customerDetail.LastName
            };

            return(orderDeliveryModel);
        }
Exemplo n.º 8
0
        public OrderDeliveryModel DeliveryAddress(int orderid)
        {
            var query = from order in _context.Set <Order>()
                        where order.OrderId == orderid
                        select new
            {
                OrderDelivery = order.OrderDeliveries.FirstOrDefault()
            };
            var record = query.FirstOrDefault();
            var data   = new OrderDeliveryModel
            {
                CreatedDate     = record.OrderDelivery.CreatedDate,
                DeliveryAddress = record.OrderDelivery.DeliveryAddress,
                OrderDeliveryId = record.OrderDelivery.OrderDeliveryId,
                FullName        = record.OrderDelivery.FullName,
                PhoneNumber     = record.OrderDelivery.PhoneNumber
            };

            return(data);
        }
Exemplo n.º 9
0
        public ActionResult Delivery(OrderDeliveryModel model)
        {
            try
            {
                //Getting The OrderId
                var orderId = Convert.ToInt32(TempData["OrderId"]);

                //Storing the model to the database
                _order.CreateDeliveryInfo(model, orderId);

                //redirecting to order controller
                return(RedirectToAction("Place", "Order", TempData["Order"] as OrderModel));
            }
            catch (Exception ex)
            {
                TempData["Message"] = ex.Message;
                ModelState.AddModelError("Error", ex);

                return(Redirect(Request.UrlReferrer.ToString()));
            }
        }
Exemplo n.º 10
0
        public OrderDeliveryModel StoreDeliveryDetails(OrderDeliveryModel model, int orderId)
        {
            if (orderId <= 0)
            {
                throw new Exception("Invalid Order");
            }

            var delivery = new OrderDelivery()
            {
                CreatedDate     = DateTime.Now,
                DeliveryAddress = model.DeliveryAddress,
                FullName        = model.FullName,
                PhoneNumber     = model.PhoneNumber,
                OrderId         = orderId
            };

            _context.Set <OrderDelivery>().Add(delivery);
            _context.SaveChanges();

            model.OrderDeliveryId = delivery.OrderDeliveryId;

            return(model);
        }
Exemplo n.º 11
0
 public OrderDeliveryModel CreateDeliveryInfo(OrderDeliveryModel model, int orderId)
 {
     // Create delivery details
     return(_repo.StoreDeliveryDetails(model, orderId));
 }