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