/// <summary>
        /// 修改主表退货状态(及其明细表)
        /// </summary>
        /// <param name="Ids">一组Id</param>
        /// <param name="state">状态</param>
        /// <returns>修改后的列表</returns>
        public static OpResult SetStates(string Ids, short state)
        {
            var re   = OpResult.Fail("操作失败");
            var ids  = Ids.Split(',').Select(o => int.Parse(o)).ToList();
            var list = CommodityReturnsBLL.FindList(o => ids.Contains(o.Id));

            list.ForEach(o => { o.State = state; });

            var returnId = CommodityReturnsBLL.FindList(o => ids.Contains(o.Id)).Select(o => o.ReturnId);
            var detail   = BaseService <CommodityReturnsDetail> .FindList(o => returnId.Contains(o.ReturnId));

            var invents = new List <InventoryRecord>();

            if (state == 2)
            {//转为已完成状态
                #region 从商品库中扣除相应库存
                var query = from a in list
                            join b in detail on a.ReturnId equals b.ReturnId
                            from c in ProductService.CurrentRepository.QueryEntity
                            where b.Barcode == c.Barcode || ("," + c.Barcodes + ",").Contains("," + b.Barcode + ",")
                            group new { a, b, c } by new { a.StoreId, c.Barcode } into g
                    select new
                {
                    g.Key.StoreId,
                    g.Key.Barcode,
                    ReturnNum = g.Sum(o => o.b.ReturnNum)
                };
                var datas = query.ToList();
                datas.Each(o => {
                    invents.Add(new InventoryRecord()
                    {
                        Barcode = o.Barcode, StoreId = o.StoreId, Number = o.ReturnNum, Source = 14
                    });
                });
                list.Each(o => o.VerifyTime = DateTime.Now);
            }
            detail.ForEach(o => { o.State = state; });
            CommodityReturnsBLL.Update(list, false);
            re = BaseService <CommodityReturnsDetail> .Update(detail, true);

            if (re.Successed)
            {
                InventoryRecordService.SaveLog(invents);
            }

            #endregion
            return(re);
        }
        /// <summary>
        /// 操作栏_修改明细表退货状态(及其主表)
        /// </summary>
        /// <param name="id">当前行id</param>
        /// <param name="state">要修改成这个状态</param>
        /// <returns>修改后的列表</returns>
        public static OpResult setState_Editor(int id, short state)
        {
            var re  = OpResult.Fail("操作失败");
            var obj = BaseService <CommodityReturnsDetail> .Find(o => o.Id == id);

            obj.State = state;
            var returnId  = obj.ReturnId;
            var comReturn = CommodityReturnsBLL.Find(o => o.ReturnId == returnId);
            var invents   = new List <InventoryRecord>();

            if (state == 2)
            {//转为已完成
                #region 从商品库中扣除相应库存
                var datas = new Dictionary <string, decimal>();
                datas.Add(obj.Barcode, obj.ReturnNum);
                //判断出库的商品是否有库存记录
                //var stockNums = CommodityService.GetStockNumsByStoreId(comReturn.StoreId);
                //foreach (var d in datas)
                //{
                //    var stockNum = stockNums.FirstOrDefault(o => o.Key == d.Key);
                //    if (stockNum.Value == 0 && string.IsNullOrEmpty(stockNum.Key))
                //    {
                //        re.Message = string.Format("条码:{0} 不存在库存记录,无法退货", d.Key);
                //        return re;
                //    }
                //}
                //扣除库存
                //var updateReusult = CommodityService.OutBoundReduceStock(datas, comReturn.StoreId);
                var pro = ProductService.Find(o => o.Barcode == obj.Barcode || ("," + o.Barcodes + ",").Contains("," + obj.Barcode + ","));
                if (pro != null)
                {
                    invents.Add(new InventoryRecord()
                    {
                        Barcode = pro.Barcode, StoreId = comReturn.StoreId, Number = obj.ReturnNum, Source = 14
                    });
                }
                //var updateReusult = BaseService<CommodityReturnsDetail>.Update(obj);

                ////更新状态
                //if (updateReusult.Successed)
                //{

                //}
                //else
                //{
                //    re.Message = updateReusult.Message;
                //    return re;
                //}
                #endregion
            }

            re = BaseService <CommodityReturnsDetail> .Update(obj);

            var minstate = BaseService <CommodityReturnsDetail> .CurrentRepository.QueryEntity.Where(o => o.ReturnId == returnId).Min(o => o.State);

            //int detailCount = detail.Count();
            //int countState = 0;
            //foreach (var d in detail)
            //{
            //    if (d.State == state)
            //    {
            //        countState = countState + 1;
            //    }
            //}
            //if (countState == detailCount)
            //{
            //    comReturn.State = state;
            //    re = CommodityReturnsBLL.Update(comReturn);
            //}
            comReturn.State = minstate;
            re = CommodityReturnsBLL.Update(comReturn);
            if (re.Successed)
            {
                InventoryRecordService.SaveLog(invents);
            }
            return(re);
        }