Ejemplo n.º 1
0
        /// <summary>
        /// 对BOM表中数据进行变更
        /// </summary>
        /// <param name="datatContxt">数据上下文</param>
        /// <param name="technology">单据信息数据集</param>
        /// <param name="listInfo">变更单信息</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>变更成功返回True,变更失败返回False</returns>
        public bool UpdateBOMDate(DepotManagementDataContext datatContxt,
                                  S_TechnologyAlterationBill technology, DataTable listInfo, out string error)
        {
            error = null;
            DateTime time = ServerTime.Time;

            try
            {
                for (int i = 0; i < listInfo.Rows.Count; i++)
                {
                    F_GoodsPlanCost      lnqGoodsPlan = new F_GoodsPlanCost();
                    BASE_BomStruct       lnqBomStruct = new BASE_BomStruct();
                    BASE_BomPartsLibrary lnqLibrary   = new BASE_BomPartsLibrary();
                    DataRow row = listInfo.Rows[i];

                    if (row["变更模式"].ToString() == "新增")
                    {
                        if (row["NewGoodsID"] != null)
                        {
                            var resultGoods = from a in datatContxt.F_GoodsPlanCost
                                              where a.GoodsCode == row["新零件编码"].ToString() &&
                                              a.GoodsName == row["新零件名称"].ToString() && a.Spec == row["新零件规格"].ToString()
                                              select a;

                            if (resultGoods.Count() == 0)
                            {
                                lnqGoodsPlan.UserCode       = technology.Applicant;
                                lnqGoodsPlan.Date           = time;
                                lnqGoodsPlan.GoodsCode      = row["新零件编码"].ToString();
                                lnqGoodsPlan.GoodsName      = row["新零件名称"].ToString();
                                lnqGoodsPlan.Spec           = row["新零件规格"].ToString();
                                lnqGoodsPlan.GoodsType      = "030101";
                                lnqGoodsPlan.GoodsUnitPrice = 0;
                                lnqGoodsPlan.IsDisable      = false;
                                lnqGoodsPlan.PY             = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "PY");
                                lnqGoodsPlan.WB             = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "WB");
                                lnqGoodsPlan.Remark         = "由技术变更单【" + technology.BillNo + "】新增";
                                lnqGoodsPlan.UnitID         = 1;

                                datatContxt.F_GoodsPlanCost.InsertOnSubmit(lnqGoodsPlan);
                            }

                            var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                                                     where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                                                     select a;

                            if (varBomPartsLibrary.Count() == 0)
                            {
                                lnqLibrary.CreateDate      = time;
                                lnqLibrary.CreatePersonnel = technology.Applicant;
                                lnqLibrary.GoodsID         = Convert.ToInt32(row["NewGoodsID"]);
                                lnqLibrary.Material        = "未知";
                                lnqLibrary.PartType        = "产品";
                                lnqLibrary.PivotalPart     = "A";
                                lnqLibrary.Remark          = "由技术变更单【" + technology.BillNo + "】生成";
                                lnqLibrary.Version         = row["新零件版次号"].ToString();

                                datatContxt.BASE_BomPartsLibrary.InsertOnSubmit(lnqLibrary);
                            }
                            else if (varBomPartsLibrary.Count() == 1)
                            {
                                lnqLibrary = varBomPartsLibrary.Single();

                                lnqLibrary.Version         = row["新零件版次号"].ToString() == "" ? varBomPartsLibrary.Single().Version : row["新零件版次号"].ToString();
                                lnqLibrary.CreateDate      = time;
                                lnqLibrary.CreatePersonnel = technology.Applicant;
                            }
                        }

                        if (row["NewParentID"] != null && row["NewGoodsID"] != null)
                        {
                            lnqBomStruct.CreateDate      = time;
                            lnqBomStruct.CreatePersonnel = technology.Applicant;
                            lnqBomStruct.GoodsID         = Convert.ToInt32(row["NewGoodsID"]);
                            lnqBomStruct.ParentID        = Convert.ToInt32(row["NewParentID"]);
                            lnqBomStruct.SysVersion      = 1;
                            lnqBomStruct.Usage           = Convert.ToDecimal(row["新零件基数"]);

                            datatContxt.BASE_BomStruct.InsertOnSubmit(lnqBomStruct);
                        }
                    }
                    else if (row["变更模式"].ToString() == "修改" && row["是否修改零件本身"].ToString() == "否")
                    {
                        if (row["NewGoodsID"] != null)
                        {
                            var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                                                     where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                                                     select a;

                            if (varBomPartsLibrary.Count() == 0)
                            {
                                lnqLibrary.CreateDate      = time;
                                lnqLibrary.CreatePersonnel = technology.Applicant;
                                lnqLibrary.GoodsID         = Convert.ToInt32(row["NewGoodsID"]);
                                lnqLibrary.Material        = "未知";
                                lnqLibrary.PartType        = "产品";
                                lnqLibrary.PivotalPart     = "A";
                                lnqLibrary.Remark          = "由技术变更单【" + technology.BillNo + "】生成";
                                lnqLibrary.Version         = row["新零件版次号"].ToString();

                                datatContxt.BASE_BomPartsLibrary.InsertOnSubmit(lnqLibrary);
                            }
                            else
                            {
                                lnqLibrary = varBomPartsLibrary.Single();

                                lnqLibrary.Version = row["新零件版次号"].ToString();
                            }
                        }

                        if (row["OldParentID"] != null && row["NewParentID"] != null &&
                            row["OldGoodsID"] != null && row["NewGoodsID"] != null &&
                            (int)row["OldParentID"] != 0 && (int)row["NewParentID"] != 0)
                        {
                            var varBomStruct = from a in datatContxt.BASE_BomStruct
                                               where a.ParentID == Convert.ToInt32(row["OldParentID"]) &&
                                               a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                                               select a;

                            if (varBomStruct.Count() < 1)
                            {
                                error = "BOM结构表中不存在此记录";
                                return(false);
                            }
                            else
                            {
                                lnqBomStruct = varBomStruct.Single();

                                lnqBomStruct.CreateDate      = time;
                                lnqBomStruct.CreatePersonnel = technology.Applicant;
                                lnqBomStruct.GoodsID         = Convert.ToInt32(row["NewGoodsID"]);
                                lnqBomStruct.ParentID        = Convert.ToInt32(row["NewParentID"]);
                                lnqBomStruct.SysVersion      = lnqBomStruct.SysVersion + Convert.ToDecimal(0.01);
                                lnqBomStruct.Usage           = Convert.ToDecimal(row["新零件基数"]);

                                var result = from a in datatContxt.BASE_BomStruct
                                             where a.ParentID == Convert.ToInt32(row["OldGoodsID"])
                                             select a;

                                foreach (BASE_BomStruct item in result)
                                {
                                    if (item.ParentID != Convert.ToInt32(row["NewGoodsID"]))
                                    {
                                        BASE_BomStruct baseBom = new BASE_BomStruct();

                                        baseBom.ParentID        = Convert.ToInt32(row["NewGoodsID"]);
                                        baseBom.CreateDate      = time;
                                        baseBom.CreatePersonnel = technology.Applicant;
                                        baseBom.GoodsID         = item.GoodsID;
                                        baseBom.SysVersion      = item.SysVersion;
                                        baseBom.Usage           = item.Usage;

                                        datatContxt.BASE_BomStruct.InsertOnSubmit(baseBom);
                                    }
                                }
                            }
                        }
                        else
                        {
                            var varBomStruct = from a in datatContxt.BASE_BomStruct
                                               where a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                                               select a;

                            foreach (BASE_BomStruct item in varBomStruct)
                            {
                                item.CreateDate      = ServerTime.Time;
                                item.CreatePersonnel = technology.Applicant;
                                item.GoodsID         = Convert.ToInt32(row["NewGoodsID"]);
                                item.ParentID        = item.ParentID;
                                item.SysVersion      = lnqBomStruct.SysVersion + Convert.ToDecimal(0.01);
                                item.Usage           = Convert.ToDecimal(row["新零件基数"]);
                            }
                        }
                    }
                    else if (row["变更模式"].ToString() == "修改" && row["是否修改零件本身"].ToString() == "是")
                    {
                        if (row["NewGoodsID"] != null && row["OldGoodsID"] != null)
                        {
                            var resultGoods = from a in datatContxt.F_GoodsPlanCost
                                              where a.ID == Convert.ToInt32(row["OldGoodsID"])
                                              select a;

                            if (resultGoods.Count() == 1)
                            {
                                lnqGoodsPlan = resultGoods.Single();

                                lnqGoodsPlan.UserCode  = technology.Applicant;
                                lnqGoodsPlan.Date      = ServerTime.Time;
                                lnqGoodsPlan.GoodsCode = row["新零件编码"].ToString();
                                lnqGoodsPlan.GoodsName = row["新零件名称"].ToString();
                                lnqGoodsPlan.Spec      = row["新零件规格"].ToString();
                                lnqGoodsPlan.PY        = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "PY");
                                lnqGoodsPlan.WB        = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "WB");
                                lnqGoodsPlan.Remark    = "由技术变更单【" + technology.BillNo + "】修改零件";
                            }
                            else
                            {
                                error = row["新零件名称"].ToString() + "修改失败";
                                return(false);
                            }

                            var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                                                     where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                                                     select a;

                            if (varBomPartsLibrary.Count() != 1)
                            {
                                error = "新零件在零件库中不存在";
                                return(false);
                            }
                            else
                            {
                                lnqLibrary = varBomPartsLibrary.Single();

                                lnqLibrary.Version = row["新零件版次号"].ToString();
                            }
                        }
                    }
                    else if (row["变更模式"].ToString() == "删除")
                    {
                        if (row["OldParentID"] == null)
                        {
                            var varStruct = from a in datatContxt.BASE_BomStruct
                                            where a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                                            select a;

                            datatContxt.BASE_BomStruct.DeleteAllOnSubmit(varStruct);

                            var varLibrary = from a in datatContxt.BASE_BomPartsLibrary
                                             where a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                                             select a;

                            datatContxt.BASE_BomPartsLibrary.DeleteAllOnSubmit(varLibrary);
                        }
                        else
                        {
                            var varStruct = from a in datatContxt.BASE_BomStruct
                                            where a.ParentID == Convert.ToInt32(row["OldParentID"]) &&
                                            a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                                            select a;

                            if (varStruct.Count() != 1)
                            {
                                error = "BOM结构表中不存在此记录";
                                return(false);
                            }
                            else
                            {
                                lnqBomStruct = varStruct.Single();
                                datatContxt.BASE_BomStruct.DeleteOnSubmit(lnqBomStruct);
                            }
                        }
                    }

                    datatContxt.SubmitChanges();
                }

                #region
                //switch (technology.ChangeMode)
                //{
                //    case "新增":

                //        #region 新增

                //        for (int i = 0; i < listInfo.Rows.Count; i++)
                //        {
                //            DataRow row = listInfo.Rows[i];

                //            if (row["NewGoodsID"] != null)
                //            {
                //                var resultGoods = from a in datatContxt.F_GoodsPlanCost
                //                                  where a.GoodsCode == row["新零件编码"].ToString()
                //                                  && a.GoodsName == row["新零件名称"].ToString() && a.Spec == row["新零件规格"].ToString()
                //                                  select a;

                //                if (resultGoods.Count() == 0)
                //                {
                //                    lnqGoodsPlan.UserCode = technology.Applicant;
                //                    lnqGoodsPlan.Date = ServerTime.Time;
                //                    lnqGoodsPlan.GoodsCode = row["新零件编码"].ToString();
                //                    lnqGoodsPlan.GoodsName = row["新零件名称"].ToString();
                //                    lnqGoodsPlan.Spec = row["新零件规格"].ToString();
                //                    lnqGoodsPlan.GoodsType = "ZZLJJXLFBZ";
                //                    lnqGoodsPlan.GoodsUnitPrice = 0;
                //                    lnqGoodsPlan.IsDisable = false;
                //                    lnqGoodsPlan.IsShelfLife = false;
                //                    lnqGoodsPlan.PY = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "PY");
                //                    lnqGoodsPlan.WB = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "WB");
                //                    lnqGoodsPlan.Remark = "由技术变更单【" + technology.BillNo + "】新增";
                //                    lnqGoodsPlan.UnitID = 1;

                //                    datatContxt.F_GoodsPlanCost.InsertOnSubmit(lnqGoodsPlan);
                //                }

                //                var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                //                                         where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                //                                         select a;

                //                if (varBomPartsLibrary.Count() == 0)
                //                {
                //                    lnqLibrary.CreateDate = ServerTime.Time;
                //                    lnqLibrary.CreatePersonnel = technology.Applicant;
                //                    lnqLibrary.GoodsID = Convert.ToInt32(row["NewGoodsID"]);
                //                    lnqLibrary.Material = "未知";
                //                    lnqLibrary.PartType = "产品";
                //                    lnqLibrary.PivotalPart = "A";
                //                    lnqLibrary.Remark = "由技术变更单【" + technology.BillNo + "】生成";
                //                    lnqLibrary.Version = row["新零件版次号"].ToString();

                //                    datatContxt.BASE_BomPartsLibrary.InsertOnSubmit(lnqLibrary);
                //                }
                //                else if (varBomPartsLibrary.Count() == 1)
                //                {
                //                    lnqLibrary = varBomPartsLibrary.Single();

                //                    lnqLibrary.Version = row["新零件版次号"].ToString();
                //                    lnqLibrary.CreateDate = ServerTime.Time;
                //                    lnqLibrary.CreatePersonnel = technology.Applicant;
                //                }
                //            }

                //            if (row["NewParentID"] != null && row["NewGoodsID"] != null)
                //            {
                //                lnqBomStruct.CreateDate = ServerTime.Time;
                //                lnqBomStruct.CreatePersonnel = technology.Applicant;
                //                lnqBomStruct.GoodsID = Convert.ToInt32(row["NewGoodsID"]);
                //                lnqBomStruct.ParentID = Convert.ToInt32(row["NewParentID"]);
                //                lnqBomStruct.SysVersion = 1;
                //                lnqBomStruct.Usage = Convert.ToDecimal(row["新零件基数"]);

                //                datatContxt.BASE_BomStruct.InsertOnSubmit(lnqBomStruct);
                //            }
                //        }
                //        #endregion

                //        break;
                //    case "修改":

                //        #region

                //        for (int i = 0; i < listInfo.Rows.Count; i++)
                //        {
                //            DataRow row = listInfo.Rows[i];

                //            if (row["NewGoodsID"] != null)
                //            {
                //                var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                //                                         where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                //                                         select a;

                //                if (varBomPartsLibrary.Count() != 1)
                //                {
                //                    error = "新零件在零件库中不存在";
                //                    return false;
                //                }
                //                else
                //                {
                //                    lnqLibrary = varBomPartsLibrary.Single();

                //                    lnqLibrary.Version = row["新零件版次号"].ToString();
                //                }
                //            }

                //            if (row["OldParentID"] != null && row["NewParentID"] != null
                //                && row["OldGoodsID"] != null && row["NewGoodsID"] != null)
                //            {
                //                var varBomStruct = from a in datatContxt.BASE_BomStruct
                //                                   where a.ParentID == Convert.ToInt32(row["OldParentID"])
                //                                   && a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                //                                   select a;

                //                if (varBomStruct.Count() != 1)
                //                {
                //                    error = "BOM结构表中不存在此记录";
                //                    return false;
                //                }
                //                else
                //                {
                //                    lnqBomStruct = varBomStruct.Single();

                //                    lnqBomStruct.CreateDate = ServerTime.Time;
                //                    lnqBomStruct.CreatePersonnel = technology.Applicant;
                //                    lnqBomStruct.GoodsID = Convert.ToInt32(row["NewGoodsID"]);
                //                    lnqBomStruct.ParentID = Convert.ToInt32(row["NewParentID"]);
                //                    lnqBomStruct.SysVersion = lnqBomStruct.SysVersion + Convert.ToDecimal(0.01);
                //                    lnqBomStruct.Usage = Convert.ToDecimal(row["新零件基数"]);
                //                }
                //            }
                //        }
                //        #endregion

                //        break;
                //    case "删除":

                //        #region 删除
                //        for (int i = 0; i < listInfo.Rows.Count; i++)
                //        {
                //            DataRow row = listInfo.Rows[i];

                //            if (row["OldParentID"] == null)
                //            {

                //                var varStruct = from a in datatContxt.BASE_BomStruct
                //                                where a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                //                                select a;

                //                datatContxt.BASE_BomStruct.DeleteAllOnSubmit(varStruct);

                //                var varLibrary = from a in datatContxt.BASE_BomPartsLibrary
                //                                 where a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                //                                 select a;

                //                datatContxt.BASE_BomPartsLibrary.DeleteAllOnSubmit(varLibrary);
                //            }
                //            else
                //            {
                //                var varStruct = from a in datatContxt.BASE_BomStruct
                //                                where a.ParentID == Convert.ToInt32(row["OldParentID"])
                //                                && a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                //                                select a;

                //                if (varStruct.Count() != 1)
                //                {
                //                    error = "BOM结构表中不存在此记录";
                //                    return false;
                //                }
                //                else
                //                {
                //                    lnqBomStruct = varStruct.Single();
                //                    datatContxt.BASE_BomStruct.DeleteOnSubmit(lnqBomStruct);
                //                }
                //            }
                //        }
                //        #endregion
                //        break;
                //    case "修改零件本身":

                //        for (int i = 0; i < listInfo.Rows.Count; i++)
                //        {
                //            DataRow row = listInfo.Rows[i];

                //            if (row["NewGoodsID"] != null && row["OldGoodsID"] != null)
                //            {
                //                var resultGoods = from a in datatContxt.F_GoodsPlanCost
                //                                  where a.ID == Convert.ToInt32(row["OldGoodsID"])
                //                                  select a;

                //                if (resultGoods.Count() == 1)
                //                {
                //                    lnqGoodsPlan = resultGoods.Single();

                //                    lnqGoodsPlan.UserCode = technology.Applicant;
                //                    lnqGoodsPlan.Date = ServerTime.Time;
                //                    lnqGoodsPlan.GoodsCode = row["新零件编码"].ToString();
                //                    lnqGoodsPlan.GoodsName = row["新零件名称"].ToString();
                //                    lnqGoodsPlan.Spec = row["新零件规格"].ToString();
                //                    lnqGoodsPlan.PY = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "PY");
                //                    lnqGoodsPlan.WB = UniversalFunction.GetPYWBCode(row["新零件名称"].ToString(), "WB");
                //                    lnqGoodsPlan.Remark = "由技术变更单【" + technology.BillNo + "】修改零件";
                //                }
                //                else
                //                {
                //                    error = row["新零件名称"].ToString() + "修改失败";
                //                    return false;
                //                }

                //                //var varBomPartsLibrary = from a in datatContxt.BASE_BomPartsLibrary
                //                //                         where a.GoodsID == Convert.ToInt32(row["NewGoodsID"])
                //                //                         select a;

                //                //if (varBomPartsLibrary.Count() == 0)
                //                //{
                //                //    lnqLibrary.CreateDate = ServerTime.Time;
                //                //    lnqLibrary.CreatePersonnel = technology.Applicant;
                //                //    lnqLibrary.GoodsID = Convert.ToInt32(row["NewGoodsID"]);
                //                //    lnqLibrary.Material = "未知";
                //                //    lnqLibrary.PartType = "产品";
                //                //    lnqLibrary.PivotalPart = "A";
                //                //    lnqLibrary.Remark = "由技术变更单【" + technology.BillNo + "】生成";
                //                //    lnqLibrary.Version = row["新零件版次号"].ToString();

                //                //    datatContxt.BASE_BomPartsLibrary.InsertOnSubmit(lnqLibrary);
                //                //}
                //                //else if (varBomPartsLibrary.Count() == 1)
                //                //{
                //                //    lnqLibrary = varBomPartsLibrary.Single();

                //                //    lnqLibrary.Version = row["新零件版次号"].ToString();
                //                //    lnqLibrary.CreateDate = ServerTime.Time;
                //                //    lnqLibrary.CreatePersonnel = technology.Applicant;
                //                //}
                //            }

                //            //if (row["OldParentID"] != null && row["NewParentID"] != null
                //            //    && row["OldGoodsID"] != null && row["NewGoodsID"] != null)
                //            //{
                //            //    var varBomStruct = from a in datatContxt.BASE_BomStruct
                //            //                       where a.ParentID == Convert.ToInt32(row["OldParentID"])
                //            //                       && a.GoodsID == Convert.ToInt32(row["OldGoodsID"])
                //            //                       select a;

                //            //    if (varBomStruct.Count() != 1)
                //            //    {
                //            //        error = "BOM结构表中不存在此记录";
                //            //        return false;
                //            //    }
                //            //    else
                //            //    {
                //            //        lnqBomStruct = varBomStruct.Single();

                //            //        lnqBomStruct.CreateDate = ServerTime.Time;
                //            //        lnqBomStruct.CreatePersonnel = technology.Applicant;
                //            //        lnqBomStruct.GoodsID = Convert.ToInt32(row["NewGoodsID"]);
                //            //        lnqBomStruct.ParentID = Convert.ToInt32(row["NewParentID"]);
                //            //        lnqBomStruct.SysVersion = lnqBomStruct.SysVersion + Convert.ToDecimal(0.01);
                //            //        lnqBomStruct.Usage = Convert.ToDecimal(row["新零件基数"]);
                //            //    }
                //            //}
                //        }
                //        break;
                //    default:
                //        break;
                //}
                #endregion

                datatContxt.SubmitChanges();
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 提交申请
        /// </summary>
        /// <param name="technology">单据信息数据集</param>
        /// <param name="listInfo">明细信息</param>
        /// <param name="error">错误信息</param>
        /// <returns>成功返回True,失败返回False</returns>
        public bool SubmitBill(S_TechnologyAlterationBill technology, DataTable listInfo, out string error)
        {
            error = null;

            DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

            try
            {
                dataContext.Connection.Open();
                dataContext.Transaction = dataContext.Connection.BeginTransaction();

                var varData = from a in dataContext.S_TechnologyAlterationBill
                              where a.BillNo == technology.BillNo
                              select a;

                if (varData.Count() == 0)
                {
                    technology.BillStatus = "等待批准";

                    if (!InsertList(dataContext, technology.BillNo, listInfo, out error))
                    {
                        throw new Exception(error);
                    }

                    dataContext.S_TechnologyAlterationBill.InsertOnSubmit(technology);
                }
                else if (varData.Count() == 1)
                {
                    S_TechnologyAlterationBill lnqBill = varData.Single();

                    lnqBill.BillStatus   = "等待批准";
                    lnqBill.ChangeReason = technology.ChangeReason;
                    lnqBill.ChangeBillNo = technology.ChangeBillNo;
                    lnqBill.FileMessage  = technology.FileMessage;

                    if (!DeleteList(dataContext, technology.BillNo, out error))
                    {
                        throw new Exception(error);
                    }

                    if (!InsertList(dataContext, technology.BillNo, listInfo, out error))
                    {
                        throw new Exception(error);
                    }
                }
                else
                {
                    error = "数据重复";
                    throw new Exception(error);
                }

                dataContext.SubmitChanges();

                dataContext.Transaction.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                dataContext.Transaction.Rollback();
                error = ex.Message;
                return(false);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 更改单据状态
        /// </summary>
        /// <param name="technology">变更单信息</param>
        /// <param name="listInfo">零件信息</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>更改成功返回True,更改失败返回False</returns>
        public bool UpdateBill(S_TechnologyAlterationBill technology, DataTable listInfo, out string error)
        {
            error = null;

            try
            {
                bool flag = false;

                for (int i = 0; i < listInfo.Rows.Count; i++)
                {
                    if (listInfo.Rows[i]["是否修改零件本身"].ToString() == "是")
                    {
                        flag = true;
                        break;
                    }
                }

                DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

                var varData = from a in dataContext.S_TechnologyAlterationBill
                              where a.BillNo == technology.BillNo
                              select a;

                if (varData.Count() != 1)
                {
                    error = "单据不唯一或者为空";
                    return(false);
                }
                else
                {
                    S_TechnologyAlterationBill lnqBill = varData.Single();

                    if (technology.BillStatus == "等待批准")
                    {
                        lnqBill.RatifyDate = ServerTime.Time;
                        lnqBill.Ratifier   = BasicInfo.LoginID;

                        if (!flag)
                        {
                            lnqBill.BillStatus = "已完成";
                        }
                        else
                        {
                            lnqBill.BillStatus = "等待财务审核";

                            dataContext.SubmitChanges();
                            return(true);
                        }
                    }
                    else if (technology.BillStatus == "等待财务审核")
                    {
                        lnqBill.BillStatus = "已完成";
                    }
                    else
                    {
                        lnqBill.BillStatus = technology.BillStatus;

                        dataContext.SubmitChanges();
                        return(true);
                    }

                    if (!UpdateBOMDate(dataContext, lnqBill, listInfo, out error))
                    {
                        return(false);
                    }
                }

                dataContext.SubmitChanges();
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 回退单据
        /// </summary>
        /// <param name="strDJH">单据号</param>
        /// <param name="strBillStatus">单据状态</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <param name="strRebackReason">回退原因</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        public bool ReturnBill(string strDJH, string strBillStatus, out string error, string strRebackReason)
        {
            error = null;

            try
            {
                m_msgPromulgator.BillType = "技术变更处置单";
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from a in dataContxt.S_TechnologyAlterationBill
                             where a.BillNo == strDJH
                             select a;

                string strMsg = "";

                if (result.Count() == 1)
                {
                    S_TechnologyAlterationBill service = result.Single();

                    switch (strBillStatus)
                    {
                    case "等待批准":
                        strMsg = string.Format("{0}号技术变更处置单已回退,请您重新处理单据; 回退原因为" + strRebackReason, strDJH);
                        m_msgPromulgator.PassFlowMessage(strDJH, strMsg,
                                                         BillFlowMessage_ReceivedUserType.角色, CE_RoleEnum.零件工程师.ToString());

                        service.BillStatus = "等待批准";
                        service.Ratifier   = "";
                        service.RatifyDate = ServerTime.Time;

                        break;

                    case "新建单据":
                        strMsg = string.Format("{0}号技术变更处置单已回退,请您重新处理单据; 回退原因为" + strRebackReason, strDJH);

                        m_msgPromulgator.PassFlowMessage(strDJH, strMsg,
                                                         BillFlowMessage_ReceivedUserType.用户, service.Applicant.ToString());

                        service.BillStatus = "新建单据";
                        service.Ratifier   = "";
                        service.RatifyDate = ServerTime.Time;
                        break;

                    default:
                        break;
                    }

                    dataContxt.SubmitChanges();

                    return(true);
                }
                else
                {
                    error = "数据不唯一或者为空";

                    return(false);
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;

                return(false);
            }
        }