//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()); } }