/// <summary> /// 使用反射将表单的值设置到数据库对象中,根据字段名 /// </summary> /// <param name="col">表单</param> /// <param name="obj">数据库对象</param> public static void SetFieldValueToModel(System.Web.Mvc.FormCollection col, object obj) { foreach (var p in obj.GetType().GetProperties()) { string val = col.Get(p.Name); //字段值 string pType = p.PropertyType.FullName; //数据类型 if (string.IsNullOrEmpty(val) || val.Equals("null")) { continue; } if (pType.Contains("DateTime")) { DateTime dt; if (DateTime.TryParse(val, out dt)) { p.SetValue(obj, dt, null); } } else if (pType.Contains("Int32")) { int i; if (int.TryParse(val, out i)) { p.SetValue(obj, i, null); } } else if (pType.Contains("Decimal")) { decimal dm; if (decimal.TryParse(val, out dm)) { p.SetValue(obj, dm, null); } } else if (pType.Contains("String")) { p.SetValue(obj, val.Trim(), null); } else if (pType.Contains("Bool")) { bool bl; if (bool.TryParse(val, out bl)) { p.SetValue(obj, bl, null); } } } }
/// <summary> /// (无参构造)保存单据 /// </summary> /// <param name="fc">表单form</param> /// <param name="userId">用户id</param> /// <returns></returns> public override string SaveBill(System.Web.Mvc.FormCollection fc, UserInfo user) { order = new Order(); SomeUtils.SetFieldValueToModel(fc, order); order.OrderDetail.AddRange(JsonConvert.DeserializeObject <List <OrderDetail> >(fc.Get("Sale_order_details"))); string validateResult = ValidateSO(order); if (!string.IsNullOrEmpty(validateResult)) { return(validateResult); } if (string.IsNullOrEmpty(order.oversea_customer_name) || string.IsNullOrEmpty(order.oversea_customer_no)) { order.oversea_customer_no = ""; order.oversea_customer_name = ""; } if (string.IsNullOrEmpty(order.clerk2_name) || string.IsNullOrEmpty(order.clerk2_no)) { order.clerk2_no = ""; order.clerk2_name = ""; } if (string.IsNullOrEmpty(order.clerk3_name) || string.IsNullOrEmpty(order.clerk3_no)) { order.clerk3_no = ""; order.clerk3_name = ""; } try { var existed = db.Order.Where(o => o.sys_no == order.sys_no); order.update_user_id = user.userId; if (existed.Count() > 0) { order.original_id = existed.First().original_id; //备份旧订单 BackupData bd = new BackupData(); bd.main_data = SomeUtils.ModelToString <Order>(existed.First()); bd.secondary_data = SomeUtils.ModelsToString <OrderDetail>(existed.First().OrderDetail.ToList()); bd.op_date = DateTime.Now; bd.sys_no = order.sys_no; bd.user_id = user.userId; db.BackupData.InsertOnSubmit(bd); //删除旧订单 db.OrderDetail.DeleteAllOnSubmit(existed.First().OrderDetail); db.Order.DeleteAllOnSubmit(existed); } else { order.original_id = user.userId; } //在后台再计算一次佣金、MU等 CommissionSv csv = new CommissionSv(); foreach (var d in order.OrderDetail) { d.unit_price = Math.Round((decimal)(d.tax_price / (1 + d.tax_rate / 100.0m)), 6); d.MU = csv.GetMU((decimal)d.deal_price, (decimal)d.cost, (int)d.tax_rate, (int)d.fee_rate, (decimal)order.exchange_rate); d.commission_rate = csv.GetCommissionRate((decimal)d.MU, order.product_type_no); d.commission = csv.GetCommissionMoney((decimal)d.unit_price, (decimal)d.qty, (decimal)d.commission_rate); } db.Order.InsertOnSubmit(order); db.OrderDetail.InsertAllOnSubmit(order.OrderDetail); db.SubmitChanges(); } catch (Exception ex) { return(ex.Message); } return(""); }
public override string SaveBill(System.Web.Mvc.FormCollection fc, UserInfo user) { bill = new Sale_eo_bill(); SomeUtils.SetFieldValueToModel(fc, bill); bill.Sale_eo_bill_detail.AddRange(JsonConvert.DeserializeObject <List <Sale_eo_bill_detail> >(fc.Get("details"))); if (string.IsNullOrEmpty(bill.clerk_no)) { return("营业员请输入厂牌或姓名然后按回车键搜索后,在列表中选择"); } try { var existedBill = db.Sale_eo_bill.Where(s => s.sys_no == bill.sys_no).FirstOrDefault(); if (existedBill != null) { bill.applier_id = existedBill.applier_id; bill.applier_name = existedBill.applier_name; bill.apply_time = existedBill.apply_time; //备份 JsonSerializerSettings js = new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; BackupData bd = new BackupData(); bd.op_date = DateTime.Now; bd.sys_no = existedBill.sys_no; bd.user_id = user.userId; bd.main_data = JsonConvert.SerializeObject(existedBill, js); bd.secondary_data = JsonConvert.SerializeObject(existedBill.Sale_eo_bill_detail, js); db.BackupData.InsertOnSubmit(bd); //删除 db.Sale_eo_bill_detail.DeleteAllOnSubmit(existedBill.Sale_eo_bill_detail); db.Sale_eo_bill.DeleteOnSubmit(existedBill); } else { bill.applier_id = user.userId; bill.applier_name = user.realName; bill.apply_time = DateTime.Now; } db.Sale_eo_bill.InsertOnSubmit(bill); db.Sale_eo_bill_detail.InsertAllOnSubmit(bill.Sale_eo_bill_detail); db.SubmitChanges(); } catch (Exception ex) { return(ex.Message); } return(""); }
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 void SaveDeliveryBill(System.Web.Mvc.FormCollection fc, UserInfo user) { Sale_eqm_ch_bill bill = new Sale_eqm_ch_bill(); SomeUtils.SetFieldValueToModel(fc, bill); List <Sale_eqm_ch_bill_detail> details = JsonConvert.DeserializeObject <List <Sale_eqm_ch_bill_detail> >(fc.Get("ch_bill_details")); bill.FUserName = user.realName; bill.FSaveDate = DateTime.Now; bill.Sale_eqm_ch_bill_detail.AddRange(details); if (string.IsNullOrEmpty(bill.FSysNo)) { bill.FSysNo = GetNextSysNo(); } else { var existedBill = db.Sale_eqm_ch_bill.Where(s => s.FSysNo == bill.FSysNo && (s.FDeleted == null || s.FDeleted == false)).FirstOrDefault(); if (existedBill != null) { existedBill.FDeleted = true; } } db.Sale_eqm_ch_bill.InsertOnSubmit(bill); db.SubmitChanges(); }
public override string SaveBill(System.Web.Mvc.FormCollection fc, UserInfo user) { bill = new ChBill(); SomeUtils.SetFieldValueToModel(fc, bill); List <ChBillDetail> details = JsonConvert.DeserializeObject <List <ChBillDetail> >(fc.Get("ch_bill_details")); bill.ChBillDetail.AddRange(details); try { //保存送货地址信息 var dInfos = new OtherSv().GetDeliveryInfo(bill.customer_no) .Where(d => d.deliveryUnit == bill.delivery_unit && d.attn == bill.delivery_attn && d.addr == bill.delivery_addr && d.phone == bill.delivery_phone).Count(); if (dInfos == 0) { var info = new CustomerDeliveryInfo() { customer_name = bill.customer_name, customer_number = bill.customer_no, delivery_unit = bill.delivery_unit, addr = bill.delivery_addr, attn = bill.delivery_attn, phone = bill.delivery_phone, op_date = DateTime.Now, op_name = user.realName }; db.CustomerDeliveryInfo.InsertOnSubmit(info); } var existsed = db.ChBill.Where(c => c.sys_no == bill.sys_no).ToList(); if (existsed.Count() > 0) { //备份旧单 BackupData bd = new BackupData(); bd.sys_no = bill.sys_no; bd.op_date = DateTime.Now; bd.user_id = user.userId; bd.main_data = SomeUtils.ModelToString <ChBill>(existsed.First()); bd.secondary_data = SomeUtils.ModelsToString <ChBillDetail>(existsed.First().ChBillDetail.ToList()); db.BackupData.InsertOnSubmit(bd); //删掉旧单 db.ChBillDetail.DeleteAllOnSubmit(existsed.First().ChBillDetail); db.ChBill.DeleteAllOnSubmit(existsed); } bill.bill_date = DateTime.Now; bill.user_id = user.userId; db.ChBill.InsertOnSubmit(bill); db.ChBillDetail.InsertAllOnSubmit(bill.ChBillDetail); db.SubmitChanges(); } catch (Exception ex) { return(ex.Message); } return(""); }