public ActionResult MEXWarehouseSave(string list, string record, string pri, string check, T_GM_EXWarehouse am)
        {
            DecResualt dr = new DecResualt();

            dr = cw.Judge(list, pri, record);
            switch (dr.JresualtName)
            {
            case JudgeResualt.IsNumNegative:
                return(this.Direct(false, "数量不能为负数"));

            case JudgeResualt.IsPriceNegative:
                return(this.Direct(false, "价格不能为负数"));

            case JudgeResualt.IsIllegal:
                return(this.Direct());

            case JudgeResualt.IsLegal:
                break;

            default:
                return(this.Direct(false, "非法操作"));
            }
            T_CH_Operation_list auditprocess = new T_CH_Operation_list();
            //var cf = DB.V_CH_Checkfuncflow.Where(w => w.ID == check).ToList().FirstOrDefault();
            var de    = DB.T_GM_ApplyMaterial.Find(am.RefrenceNo);
            var te    = DB.T_GM_TempDetailMaterial.Where(m => m.Remark == am.RefrenceNo);
            var stock = DB.T_GM_MaterialStock.Where(m => m.WarehouseID == am.EXWarehouse);

            am.IMWarehouse     = DB.V_GM_DetailProject.First(l => l.ProjectNo == de.ProjectNo).WarehouseID;
            am.OperationListID = Guid.NewGuid().ToString();
            am.Operator        = user.EmployeeId;
            am.OperationTime   = DateTime.Now;
            //am.EXTypeID=2;
            DB.T_GM_EXWarehouse.Add(am);

            auditprocess.ID           = am.OperationListID;
            auditprocess.Check_funcID = "-1";            //cf.CheckfuncID;
            auditprocess.Check_flowID = "-1";            //cf.ID;
            auditprocess.CreateTime   = DateTime.Now;
            auditprocess.State        = (int)CheckState.Approved;
            auditprocess.Url          = Url.Action("MEXWarehouseAudit", "Share", new { gid = am.OperationListID });
            auditprocess.Creator      = user.EmployeeId;
            DB.T_CH_Operation_list.Add(auditprocess);

            int i = 0;

            foreach (var item in dr.Material)
            {
                var detail = new T_GM_DM();
                detail.Remark = am.OperationListID;
                detail.MFlID  = item;

                var test = te.Where(m => m.MFlID == item).ToList().First();
                test.Num -= dr.Num[i];
                if (test.Num < 0)
                {
                    return(this.Direct(false, "调库的数量超过申请单里剩余物料的数量!!!"));
                }
                DB.T_GM_TempDetailMaterial.Attach(test);
                DB.Entry(test).State = EntityState.Modified;

                var stocknum = stock.FirstOrDefault(m => m.MaterialID == item);
                if (stocknum == null)
                {
                    return(this.Direct(false, "物料" + item + "的数量超过仓库里剩余物料的数量!!!"));
                }
                stocknum.PurchaseAmount -= dr.Num[i];
                if (stocknum.PurchaseAmount < 0)
                {
                    return(this.Direct(false, "物料" + item + "的数量超过仓库里剩余物料的数量!!!"));
                }

                DB.T_GM_MaterialStock.Attach(stocknum);
                DB.Entry(stocknum).State = EntityState.Modified;

                detail.Type  = "CGM";
                detail.Num   = dr.Num[i];
                detail.Price = dr.Price[i];
                detail.NO    = am.EXID;
                DB.T_GM_DM.Add(detail);
                i++;
            }
            DB.SaveChanges();
            if (cw.check(am.RefrenceNo))
            {
                de.ApplyMState = "deploying";
                DB.T_GM_ApplyMaterial.Attach(de);
                DB.Entry(de).State = EntityState.Modified;
                DB.SaveChanges();
                X.Msg.Alert("提示", "订单已配置完成,请等待审核", "parent.App.win.close();").Show();
                return(this.Direct());
            }
            else
            {
                X.Msg.Alert("提示", "调拨单已配置成功!", "parent.App.win.close();").Show();
            }
            return(this.Direct());
        }
        //don't worry about modify the Apply_No,though modify opreation would use the trigger and modify the num,
        //they can't use modify without audit,audit Apply_No isn't pass,they can't use Purchase_No
        //只有通过审核的申请单才可以进行配置,尽管申请单号有多个,但通过审核的申请单号只有一个
        public ActionResult MPurchaseSave(string list, string record, string pri, T_GM_PurchaseMaterial am)
        {
            DecResualt dr = new DecResualt();

            dr = cw.Judge(list, pri, record);
            switch (dr.JresualtName)
            {
            case JudgeResualt.IsNumNegative:
                return(this.Direct(false, "数量不能为负数"));

            case JudgeResualt.IsPriceNegative:
                return(this.Direct(false, "价格不能为负数"));

            case JudgeResualt.IsIllegal:
                return(this.Direct());

            case JudgeResualt.IsLegal:
                break;

            default:
                return(this.Direct(false, "非法操作"));
            }

            T_CH_Operation_list auditprocess = new T_CH_Operation_list();
            var cf = DB.V_CH_Checkfuncflow.Where(w => w.ID == am.CheckProcess).ToList().FirstOrDefault();
            var de = DB.T_GM_ApplyMaterial.Find(am.AMGID);
            var te = DB.T_GM_TempDetailMaterial.Where(m => m.Remark == am.AMGID);

            am.GID          = Guid.NewGuid().ToString();
            am.Operator     = user.EmployeeId;
            am.OperateTime  = DateTime.Now;
            am.CheckProcess = cf.Name;
            DB.T_GM_PurchaseMaterial.Add(am);

            auditprocess.ID           = am.GID;
            auditprocess.Check_funcID = cf.CheckfuncID;
            auditprocess.Check_flowID = cf.ID;
            auditprocess.CreateTime   = DateTime.Now;
            auditprocess.State        = 1;
            auditprocess.Url          = Url.Action("MPurchaseAudit", "Share", new { gid = am.GID });
            auditprocess.Creator      = user.EmployeeId;
            DB.T_CH_Operation_list.Add(auditprocess);

            int i = 0;

            foreach (var item in dr.Material)
            {
                var detail = new T_GM_DM();
                detail.Remark = am.GID;
                detail.MFlID  = item;
                var test = te.Where(m => m.MFlID == item).ToList().First();
                test.Num -= dr.Num[i];
                if (test.Num < 0)
                {
                    //X.Msg.Alert("警告", "采购的数量超过申请单里剩余物料的数量!!!").Show();
                    return(this.Direct(false, "采购的数量超过申请单里剩余物料的数量!!!"));
                }
                DB.T_GM_TempDetailMaterial.Attach(test);
                DB.Entry(test).State = EntityState.Modified;
                detail.Type          = "CGM";
                detail.Num           = dr.Num[i];
                detail.Price         = dr.Price[i];
                detail.NO            = am.PurchaseMNo;
                DB.T_GM_DM.Add(detail);
                i++;
            }
            DB.SaveChanges();

            if (cw.check(am.AMGID))
            {
                de.ApplyMState = "deploying";
                DB.T_GM_ApplyMaterial.Attach(de);
                DB.Entry(de).State = EntityState.Modified;
                DB.SaveChanges();
                X.Msg.Alert("提示", "订单已配置完成,请等待审核", "parent.App.win.close();").Show();
                return(this.Direct());
            }
            return(this.Direct());
        }