public ActionResult DeleteConfirmed(int id)
        {
            ProductOrderStatus productorderstatus = db.ProductOrderStatuses.Find(id);

            db.ProductOrderStatuses.Remove(productorderstatus);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        /// <summary>
        /// 更改订单状态
        /// </summary>
        /// <param name="order"></param>
        /// <param name="status"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        public static bool UpdateOrderStatus <TMain>(TMain order, ProductOrderStatus status, string remark)
            where TMain : IProductOrder, new()
        {
            DBExtend helper = dbHelper;

            OrderAction <TType> .UpdateOrderStatus <TMain>(order, (int)status, remark);

            order.Status = (int)status;
            return(true);
        }
        public ActionResult Edit([Bind(Include = "Id,StatusValue,Description,ActiveStatus,CreatedBy,CreatedAt,UpdatedAt")] ProductOrderStatus productorderstatus)
        {
            if (ModelState.IsValid)
            {
                db.Entry(productorderstatus).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
//            ViewBag.CreatedBy = new SelectList(db.IdentityUsers, "Id", "UserName", productorderstatus.CreatedBy);
            return(View(productorderstatus));
        }
        public async Task <Result <ProductQueue> > UpdateToStatus(ProductOrderStatus productOrderStatus, OrderStatusEnum orderStatus, ProductQueue productQueue)
        {
            try{
                using (var scope = _serviceScopefactory.CreateScope())
                {
                    var _orderservice        = scope.ServiceProvider.GetService <IOrderService>();
                    var _productOrderService = scope.ServiceProvider.GetService <IProductOrderService>();


                    var result = await _productOrderService.GetByOrderAndProductId(productQueue.Id, productQueue.OrderId, productQueue.ProductId);

                    if (result)
                    {
                        var updatedDate = DateTime.Now;
                        result.Value.ProductQueueStatus = productOrderStatus;
                        result.Value.UpdatedAt          = updatedDate;

                        var updateProductOrder = await _productOrderService.Update(result.Value);

                        if (updateProductOrder.IsSuccess)
                        {
                            var order = await _orderservice.GetById(productQueue.OrderId);

                            if (order && order.Value.OrderStatus != OrderStatusEnum.Preparing)
                            {
                                order.Value.OrderStatus = orderStatus;
                                order.Value.UpdatedAt   = updatedDate;

                                var updateOrder = await _orderservice.Update(order.Value);

                                if (updateOrder.IsSuccess)
                                {
                                    return(Result.Ok(productQueue));
                                }

                                return(Result.Fail <ProductQueue>("Error while updating order entity", ResultCode.BadRequest));
                            }

                            return(Result.Fail <ProductQueue>("No order was found with given ID", ResultCode.BadRequest));
                        }

                        return(Result.Fail <ProductQueue>("Error while updating ProductOrder entity", ResultCode.BadRequest));
                    }

                    return(Result.Fail <ProductQueue>("No ProductOrder entity was found with given ID", ResultCode.BadRequest));
                }
            }
            catch (Exception ex)
            {
                return(Result.Fail <ProductQueue>(ex.Message, ResultCode.InternalServerError));
            }
        }
        // GET: /ProductOrderStatus/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductOrderStatus productorderstatus = db.ProductOrderStatuses.Find(id);

            if (productorderstatus == null)
            {
                return(HttpNotFound());
            }
            return(View(productorderstatus));
        }
        // GET: /ProductOrderStatus/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductOrderStatus productorderstatus = db.ProductOrderStatuses.Find(id);

            if (productorderstatus == null)
            {
                return(HttpNotFound());
            }
//            ViewBag.CreatedBy = new SelectList(db.IdentityUsers, "Id", "UserName", productorderstatus.CreatedBy);
            return(View(productorderstatus));
        }
        /// <summary>
        /// 影响库存,在更改状态后使用
        /// </summary>
        /// <typeparam name="TProduct"></typeparam>
        /// <typeparam name="TStock"></typeparam>
        /// <typeparam name="TRecord"></typeparam>
        /// <param name="orderId"></param>
        /// <param name="status"></param>
        public void AffectStock <TProduct, TStock, TRecord>(string orderId, ProductOrderStatus status)
            where TProduct : Product.IProduct, new()
            where TStock : CRL.Stock.Style, new()
            where TRecord : CRL.Stock.IStockRecord, new()
        {
            #region 库存操作
            var  op  = Stock.StockOperateType.出;
            bool exc = false;
            if (status == ProductOrderStatus.已付款)
            {
                exc = true;
            }
            if (status == ProductOrderStatus.已取消)
            {
                op  = Stock.StockOperateType.入;
                exc = true;
            }
            if (exc)
            {
                List <IOrderDetail> list         = QueryOrderDetail(orderId);
                List <TRecord>      stockChanges = new List <TRecord>();
                string batchNo = System.DateTime.Now.ToString("yyMMddhhmmssff");
                foreach (var item in list)
                {
                    TRecord s = new TRecord()
                    {
                        Num = item.Num, StyleId = item.StyleId
                    };
                    stockChanges.Add(s);
                    if (op == Stock.StockOperateType.出)
                    {
                        Product.ProductBusiness <TType, TProduct> .Instance.SoldAdd(item.ProductId, item.Num);
                    }
                }
                if (EnableStock)
                {
                    Stock.StockRecordBusiness <TType, TRecord> .Instance.SubmitRecord(stockChanges, batchNo, Stock.FromType.订单);

                    Stock.StockRecordBusiness <TType, TRecord> .Instance.ConfirmSubmit <TStock>(batchNo, op);
                }
            }
            #endregion
        }
 /// <summary>
 /// 更改订单状态
 /// </summary>
 /// <param name="order"></param>
 /// <param name="status"></param>
 /// <param name="remark"></param>
 /// <returns></returns>
 public bool UpdateOrderStatus(TModel order, ProductOrderStatus status, string remark)
 {
     UpdateOrderStatus(order, (int)status, remark);
     order.Status = (int)status;
     return(true);
 }