//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());
        }
        public ActionResult ModifySubmit(string list, string record, string price, string gid)
        {
            List <string>       a            = cw.JsontoList(list);
            List <string>       b            = cw.JsontoList(price);
            List <string>       c            = cw.JsontoList(record);
            T_CH_Operation_list auditprocess = new T_CH_Operation_list();
            var am_old = DB.T_GM_PurchaseMaterial.Find(gid);
            var de     = DB.T_GM_ApplyMaterial.Find(am_old.AMGID);
            var te     = DB.T_GM_TempDetailMaterial.Where(m => m.Remark == am_old.AMGID);
            var am     = new T_GM_PurchaseMaterial();
            var cf     = DB.V_CH_Checkfuncflow.Where(w => w.Name == am_old.CheckProcess).ToList().FirstOrDefault();

            if (a.Count > 0 && a[0] != "")
            {
                am_old.OrderStatu = "modified once";
                DB.T_GM_PurchaseMaterial.Attach(am_old);
                DB.Entry(am_old).State = EntityState.Modified;

                am.GID           = Guid.NewGuid().ToString();
                am.PurchaseMNo   = am_old.PurchaseMNo;
                am.SupplierID    = am_old.SupplierID;
                am.OrderType     = am_old.OrderType;
                am.OperateTime   = DateTime.Now;
                am.Operator      = am_old.Operator;
                am.AMGID         = am_old.AMGID;
                am.ProjectNo     = am_old.ProjectNo;
                am.CheckProcess  = am_old.CheckProcess;
                am.Remark        = am_old.Remark;
                am.ReceiptMethod = am_old.ReceiptMethod;
                DB.T_GM_PurchaseMaterial.Add(am);
                int     i = 0;
                decimal t, f;

                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);

                foreach (var item in a)
                {
                    if (c[i] != "" && b[i] != "" && c[i] != "null" && b[i] != "null")
                    {
                        var detail = new T_GM_DM();
                        detail.Remark = am.GID;
                        detail.MFlID  = item;
                        decimal.TryParse(c[i], out t);
                        decimal.TryParse(b[i], out f);
                        var test = te.Where(m => m.MFlID == item).ToList().First();
                        test.Num -= t;
                        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.Num   = t;
                        detail.Price = f;
                        detail.NO    = am.PurchaseMNo;
                        detail.Type  = "CGM";
                        i++;
                        DB.T_GM_DM.Add(detail);
                    }
                    else
                    {
                        X.Msg.Alert("警告", "您输入数量或价格为空!!!").Show();
                        return(this.Direct());
                    }
                }
                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.window3.close();").Show();
                    return(this.Direct());
                }
                return(this.Direct());
            }
            else
            {
                X.Msg.Alert("警告", "您尚未添加任何物料!!!").Show();
                return(this.Direct());
            }
        }