public override string SaveBill(System.Web.Mvc.FormCollection fc, UserInfo user) { bill = new Sale_MX(); SomeUtils.SetFieldValueToModel(fc, bill); List <Sale_MX_detail> beforeList = JsonConvert.DeserializeObject <List <Sale_MX_detail> >(fc.Get("before_details")); List <Sale_MX_detail> afterList = JsonConvert.DeserializeObject <List <Sale_MX_detail> >(fc.Get("after_details")); if (beforeList.Count() > 0) { if (fc.Get("before_details").Equals(fc.Get("after_details"))) { return("原单明细表格内容和变更后表格内容不能完全一致"); } } if ("取消".Equals(bill.tran_type) && "生产单".Equals(bill.bill_type)) { if (afterList.Where(a => decimal.Parse(a.relate_qty) > 0).Count() > 0) { return("此单据存在K3关联数量(出货数量)不为0的记录,不能整单取消;如需修改数量,业务类型请选择【修改】"); } } string[] p1 = new string[] { "型号", "数量", "含税单价", "成交价", "成本价" }; string[] p2 = new string[] { "交货日期", "包装信息", "客户名称", "贸易类型", "其它" }; if (string.IsNullOrEmpty(bill.change_project)) { return("变更项目至少需选择一项才能保存"); } //变更项目包含一项以上的P1项时,表格必须要有数据 if (p1.Any(p => bill.change_project.Contains(p))) { if (beforeList.Count() < 1 || afterList.Count() < 1) { return("你选择的变更项目要求在表格中处理,当前表格没有数据"); } } if (p2.Any(p => bill.change_project.Contains(p))) { if (string.IsNullOrEmpty(bill.comment)) { return("你选择的变更项目要求在附注中说明,当前附注没有内容"); } } bill.applier_name = user.realName; bill.applier_id = user.userId; bill.apply_time = DateTime.Now; beforeList.ForEach(b => { b.detail_type = "before"; b.sys_no = bill.sys_no; }); afterList.ForEach(a => { a.detail_type = "after"; a.sys_no = bill.sys_no; }); var details = new List <Sale_MX_detail>(); details.AddRange(beforeList); details.AddRange(afterList); try { var existBill = db.Sale_MX.Where(s => s.sys_no == bill.sys_no).FirstOrDefault(); if (existBill != null) { var existDetails = db.Sale_MX_detail.Where(s => s.sys_no == bill.sys_no).ToList(); //备份旧订单 BackupData bd = new BackupData(); bd.main_data = JsonConvert.SerializeObject(existBill); bd.secondary_data = JsonConvert.SerializeObject(existDetails); bd.op_date = DateTime.Now; bd.sys_no = bill.sys_no; bd.user_id = user.userId; db.BackupData.InsertOnSubmit(bd); //删除旧单 db.Sale_MX.DeleteOnSubmit(existBill); db.Sale_MX_detail.DeleteAllOnSubmit(existDetails); } db.Sale_MX.InsertOnSubmit(bill); db.Sale_MX_detail.InsertAllOnSubmit(details); db.SubmitChanges(); } catch (Exception ex) { return("保存失败:" + ex.Message); } return(""); }
public MXSv(string sysNo) { bill = db.Sale_MX.Single(m => m.sys_no == sysNo); }