예제 #1
0
        /// <summary>
        /// 保存拆单失败的订单
        /// </summary>
        /// <param name="orderNo"></param>
        /// <param name="ErrorReason"></param>
        /// <returns></returns>
        public bool SaveSplitOrderLog(string orderNo, string reason, int status)
        {
            using (var db = new YintaiHZhouContext())
            {
                var log =
                    db.OPC_OrderSplitLog.FirstOrDefault(
                        x => x.OrderNo == orderNo && reason == x.Reason && x.Status == status);
                if (log == null)
                {
                    var opc_OrderSplitLog = new OPC_OrderSplitLog
                    {
                        OrderNo    = orderNo,
                        Reason     = reason,
                        Status     = status,
                        CreateDate = DateTime.Now
                    };
                    db.OPC_OrderSplitLog.Add(opc_OrderSplitLog);
                }

                else
                {
                    log.CreateDate = DateTime.Now;
                }

                db.SaveChanges();
            }
            return(true);
        }
예제 #2
0
 private void Split(Domain.Models.Order order)
 {
     using (var db = new YintaiHZhouContext())
     {
         using (var ts = new TransactionScope())
         {
             var items =
                 db.OrderItems.Where(i => i.OrderNo == order.OrderNo)
                 .Join(db.Products, i => i.ProductId, p => p.Id, (i, p) => new { product = p, item = i })
                 .Join(db.IMS_Associate.Where(a => a.Status == 1), x => x.product.CreatedUser, a => a.UserId,
                       (x, a) => new { x.item, sectionid = a.SectionId }).GroupBy(x => x.sectionid);
             int idx = 1;
             foreach (var item in items)
             {
                 var saleOrderNo = string.Format("{0}-{1}", idx.ToString("D").PadLeft(3, '0'), order.OrderNo);
                 var sectionId   = item.Key;
                 var section     = db.Sections.FirstOrDefault(s => s.Id == sectionId);
                 //var sectionCode =
                 //    db.OPC_ChannelMap.FirstOrDefault(
                 //        x => x.MapType == (int)ChannelMapType.SectionId && x.InnerValue == sectionId);
                 decimal saleAmount = 0;
                 int     salesCount = 0;
                 foreach (var p in item)
                 {
                     saleAmount += p.item.ItemPrice * p.item.Quantity;
                     salesCount += p.item.Quantity;
                     db.OPC_SaleDetail.Add(new OPC_SaleDetail()
                     {
                         SaleOrderNo  = saleOrderNo,
                         CreatedDate  = DateTime.Now,
                         CreatedUser  = -10000,
                         OrderItemID  = p.item.Id,
                         Price        = p.item.ItemPrice,
                         ProdSaleCode = p.item.StoreSalesCode,
                         Remark       = "自拍商品订单",
                         SaleCount    = p.item.Quantity,
                         RemarkDate   = DateTime.Now,
                         SectionCode  = section == null ? string.Empty : section.SectionCode,
                         Status       = 0,
                         StockId      = -1,
                         UpdatedDate  = DateTime.Now,
                         UpdatedUser  = -10000,
                     });
                 }
                 db.OPC_Sale.Add(new OPC_Sale()
                 {
                     OrderNo     = order.OrderNo,
                     SaleOrderNo = saleOrderNo,
                     SalesType   = 0,
                     Status      = 0,
                     SellDate    = order.CreateDate,
                     SalesAmount = saleAmount,
                     SalesCount  = salesCount,
                     SectionId   = item.Key,
                     Remark      = "自拍商品订单",
                     RemarkDate  = DateTime.Now,
                     CreatedUser = -10000,
                     CreatedDate = DateTime.Now,
                     UpdatedUser = -10000,
                     UpdatedDate = DateTime.Now,
                 });
                 var splitLog = new OPC_OrderSplitLog
                 {
                     OrderNo    = order.OrderNo,
                     Reason     = "拆单成功",
                     Status     = 1,
                     CreateDate = DateTime.Now
                 };
                 db.OPC_OrderSplitLog.Add(splitLog);
                 db.SaveChanges();
                 idx += 1;
             }
             ts.Complete();
             Log.ErrorFormat("自拍商品拆单成功 OrderNo = {0}", order.OrderNo);
         }
     }
 }