Пример #1
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("");
        }
Пример #2
0
 public MXSv(string sysNo)
 {
     bill = db.Sale_MX.Single(m => m.sys_no == sysNo);
 }