Esempio n. 1
0
 /// <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);
             }
         }
     }
 }
Esempio n. 2
0
        /// <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("");
        }
Esempio n. 3
0
        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("");
        }
Esempio n. 4
0
        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("");
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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("");
        }