/// <summary>
        /// 删除单据
        /// </summary>
        /// <param name="djh">单据号</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        public bool DeleteBill(string djh, out string error)
        {
            error = null;

            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();
            try
            {
                var varData = from a in ctx.S_FrockProvingReport
                              where a.DJH == djh
                              select a;

                if (varData.Count() != 1)
                {
                    throw new Exception("数据不唯一");
                }

                S_FrockProvingReport tempLnq = varData.Single();

                ctx.S_FrockProvingReport.DeleteAllOnSubmit(varData);

                var varAttached = from a in ctx.S_FrockProvingReportAttached
                                  where a.DJH == djh
                                  select a;

                ctx.S_FrockProvingReportAttached.DeleteAllOnSubmit(varAttached);
                ctx.SubmitChanges();



                if (tempLnq.BillType == "入库检验" &&
                    !tempLnq.ConnectBillNumber.Contains("ZGB") &&
                    !UpdateOrdinaryInDepotBillStatus(ctx, tempLnq, out error))
                {
                    throw new Exception(error);
                }

                if (tempLnq.ConnectBillNumber.Contains("ZGB") &&
                    !UpdateFrockInDepotBillStatus(ctx, tempLnq, out error))
                {
                    throw new Exception(error);
                }
                ctx.SubmitChanges();

                ctx.Transaction.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                error = ex.Message;
                return(false);
            }
        }
示例#2
0
        public 工装验证报告(string djh)
        {
            InitializeComponent();

            m_billNoControl = new BillNumberControl(CE_BillTypeEnum.工装验证报告单, m_serverFrock);

            if (djh == "")
            {
                lblBillNo.Text       = m_billNoControl.GetNewBillNo();
                lblBillStatus.Text   = "新建单据";
                chbIsInStock.Visible = false;
            }
            else
            {
                lblBillNo.Text      = djh;
                cmbBillType.Enabled = false;
            }

            m_lnqFrock = m_serverFrock.GetBill(lblBillNo.Text);
            dataGridView1.DataSource = m_serverFrock.GetAttachedTable(lblBillNo.Text, "检验");
            dataGridView2.DataSource = m_serverFrock.GetAttachedTable(lblBillNo.Text, "验证");

            ShowMessage();
            ControlWidget(lblBillStatus.Text);

            if (cmbBillType.Text != "入库检验")
            {
                chbIsInStock.Visible = false;
            }

            if (m_lnqFrock != null)
            {
                DataRow drInfo = m_serverFrockStandingBook.GetInDepotBillInfo(m_lnqFrock.FrockNumber);

                if (drInfo != null)
                {
                    txtProposer.Text      = drInfo["申请人"].ToString();
                    txtProposer.Tag       = drInfo["申请人工号"].ToString();
                    txtProviderCode.Text  = drInfo["供应商编码"].ToString();
                    txtProviderName.Text  = drInfo["供应商简称"].ToString();
                    txtDesigner.Text      = drInfo["设计人"].ToString();
                    txtDesigner.Tag       = drInfo["设计人工号"].ToString();
                    txtConnectNumber.Text = drInfo["关联单号"].ToString();
                }
            }

            if (lblBillStatus.Text == "单据已完成")
            {
                toolStrip1.Visible = false;
            }
        }
示例#3
0
        /// <summary>
        /// 获得所有信息
        /// </summary>
        void GetMessage()
        {
            m_lnqFrock = new S_FrockProvingReport();

            m_dtAttached = ((DataTable)dataGridView1.DataSource).Clone();

            foreach (DataGridViewRow dgvr in dataGridView1.Rows)
            {
                DataRow dr = m_dtAttached.NewRow();

                dr["AttachedType"]  = dgvr.Cells["AttachedType"].Value.ToString();
                dr["AskContent"]    = dgvr.Cells["检验要求"].Value.ToString();
                dr["AnswerContent"] = dgvr.Cells["检验内容"].Value.ToString();

                m_dtAttached.Rows.Add(dr);
            }

            //m_dtAttached = (DataTable)dataGridView1.DataSource;

            //DataTable dtTemp = (DataTable)dataGridView2.DataSource;

            //for (int i = 0; i < dtTemp.Rows.Count; i++)
            //{
            //    DataRow dr = m_dtAttached.NewRow();

            //    dr["AttachedType"] = dtTemp.Rows[i]["AttachedType"].ToString();
            //    dr["AskContent"] = dtTemp.Rows[i]["AskContent"].ToString();
            //    dr["AnswerContent"] = dtTemp.Rows[i]["AnswerContent"].ToString();

            //    m_dtAttached.Rows.Add(dr);
            //}

            m_lnqFrock.DJH  = lblBillNo.Text;
            m_lnqFrock.DJZT = lblBillStatus.Text;
            //m_lnqFrock.ExamineVerdict = txtExamineVerdict.Text;
            m_lnqFrock.FinalVerdict = txtFinalVerdict.Text;
            m_lnqFrock.FrockNumber  = txtFrockNumber.Text;
            m_lnqFrock.GoodsID      = Convert.ToInt32(txtCode.Tag);
            //m_lnqFrock.IsExamineQualified = chbIsExamineQualified.Checked;
            //m_lnqFrock.IsProvingQualified = chbIsProvingQualified.Checked;
            m_lnqFrock.IsInStock = rbRK.Checked;
            //chbIsInStock.Checked;
            //m_lnqFrock.ProvingVerdict = txtProvingVerdict.Text;
            m_lnqFrock.ConnectBillNumber = txtConnectNumber.Text;
            m_lnqFrock.BillType          = cmbBillType.Text;
        }
        /// <summary>
        /// 获得子窗体的所有信息
        /// </summary>
        /// <param name="djh">单据号</param>
        bool GetMessage(string djh)
        {
            工装验证报告 form = new 工装验证报告(djh);

            form.ShowDialog();

            m_dtAttached = form.DtAttached;
            m_lnqFrock   = form.LnqFrock;

            if (m_lnqFrock == null)
            {
                return(false);
            }

            PositioningRecord(m_lnqFrock.DJH);
            return(true);
        }
        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            bool visible = UniversalFunction.IsOperator(dataGridView1.CurrentRow.Cells["单据号"].Value.ToString());

            if (dataGridView1.CurrentRow.Cells["单据状态"].Value.ToString() == "等待验证" && visible)
            {
                验证员操作ToolStripMenuItem.Visible  = true;
                提交验证结果ToolStripMenuItem.Visible = true;
            }
            else
            {
                验证员操作ToolStripMenuItem.Visible  = false;
                提交验证结果ToolStripMenuItem.Visible = false;
            }

            if (dataGridView1.CurrentRow != null)
            {
                m_lnqFrock = m_serverFrock.GetBill(dataGridView1.CurrentRow.Cells["单据号"].Value.ToString());
            }
        }
        /// <summary>
        /// 插入工装所有信息
        /// </summary>
        /// <param name="ordinarybill">普通入库单信息</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        bool CreateNewFrockMessage(S_OrdinaryInDepotBill ordinarybill, out string error)
        {
            error = null;

            FrockProvingReport serverFrockProvingReport = new FrockProvingReport();

            try
            {
                DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

                var varData = from a in ctx.S_OrdinaryInDepotGoodsBill
                              where a.Bill_ID == ordinarybill.Bill_ID
                              select a;

                foreach (var item in varData)
                {
                    for (int i = 0; i < item.Amount; i++)
                    {
                        string strFrockNumber = m_serverFrockStandingBook.GetNewFrockNumber();

                        S_FrockProvingReport lnqReport = new S_FrockProvingReport();

                        lnqReport.DJH               = m_assignBill.AssignNewNo(serverFrockProvingReport, "工装验证报告单");
                        lnqReport.DJZT              = "等待检验要求";
                        lnqReport.BillType          = "入库检验";
                        lnqReport.BZRQ              = ServerTime.Time;
                        lnqReport.ConnectBillNumber = ordinarybill.Bill_ID;
                        lnqReport.FrockNumber       = strFrockNumber;
                        lnqReport.GoodsID           = item.GoodsID;

                        if (!serverFrockProvingReport.AddBill(lnqReport, null, out error))
                        {
                            return(false);
                        }

                        S_FrockStandingBook lnqBook = new S_FrockStandingBook();

                        lnqBook.GoodsID     = item.GoodsID;
                        lnqBook.FrockNumber = strFrockNumber;
                        lnqBook.Designer    = UniversalFunction.GetPersonnelName(ordinarybill.Designer);

                        if (!m_serverFrockStandingBook.UpdateFrockStandingBook(lnqBook, null, out error))
                        {
                            return(false);
                        }

                        View_F_GoodsPlanCost goodsInfo = UniversalFunction.GetGoodsInfo(lnqBook.GoodsID);

                        m_billMessageServer.DestroyMessage(lnqReport.DJH);
                        m_billMessageServer.SendNewFlowMessage(lnqReport.DJH,
                                                               string.Format("【工装编号】:{0} 【图号型号】:{1} 【物品名称】:{2},※※※ 等待【工艺人员】处理",
                                                                             lnqReport.FrockNumber, goodsInfo.图号型号, goodsInfo.物品名称),
                                                               CE_RoleEnum.工艺人员);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 插入工装所有信息
        /// </summary>
        /// <param name="frockBill">自制件工装信息</param>
        /// <param name="flag">是否进入工装台帐</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        bool CreateNewFrockMessage(S_FrockInDepotBill frockBill, bool flag, out string error)
        {
            error = null;

            FrockProvingReport serverFrockProvingReport = new FrockProvingReport();

            try
            {
                DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

                var varData = from a in ctx.S_FrockInDepotGoodsBill
                              where a.Bill_ID == frockBill.Bill_ID
                              select a;

                foreach (var item in varData)
                {
                    for (int i = 0; i < item.Amount; i++)
                    {
                        string strFrockNumber = GetNewFrockNumber();

                        S_FrockProvingReport lnqReport = new S_FrockProvingReport();

                        lnqReport.DJH               = m_assignBill.AssignNewNo(serverFrockProvingReport, "工装验证报告单");
                        lnqReport.DJZT              = "等待检验要求";
                        lnqReport.BillType          = "入库检验";
                        lnqReport.BZRQ              = ServerTime.Time;
                        lnqReport.ConnectBillNumber = frockBill.Bill_ID;
                        lnqReport.FrockNumber       = strFrockNumber;
                        lnqReport.GoodsID           = item.GoodsID;

                        if (!serverFrockProvingReport.AddBill(lnqReport, null, out error))
                        {
                            return(false);
                        }

                        m_billMessageServer.SendNewFlowMessage(lnqReport.DJH,
                                                               string.Format("{0}  ※※※ 请【{1}】处理",
                                                                             UniversalFunction.GetGoodsMessage(lnqReport.GoodsID), CE_RoleEnum.工艺人员.ToString()),
                                                               CE_RoleEnum.工艺人员);

                        if (flag)
                        {
                            S_FrockStandingBook lnqBook = new S_FrockStandingBook();

                            lnqBook.GoodsID     = item.GoodsID;
                            lnqBook.FrockNumber = strFrockNumber;
                            lnqBook.Designer    = UniversalFunction.GetPersonnelName(frockBill.DesignerID);

                            if (!m_serverFrockStandingBook.UpdateFrockStandingBook(lnqBook, null, out error))
                            {
                                return(false);
                            }
                        }
                    }
                }

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

            try
            {
                DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

                var varData = from a in dataContext.S_FrockProvingReport
                              where a.DJH == djh
                              select a;

                string strMsg = "";

                if (varData.Count() == 1)
                {
                    S_FrockProvingReport lnqFrock = varData.Single();

                    Nullable <DateTime> nulldt = null;

                    lnqFrock.DJZT = billStatus;

                    switch (billStatus)
                    {
                    case "等待结论":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg, CE_RoleEnum.工艺人员.ToString(), true);

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsInStock = false;

                        break;

                    case "等待验证":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg,
                                                            UniversalFunction.GetPersonnelCode(lnqFrock.YZRY), false);

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsInStock = false;

                        lnqFrock.YZRY = null;
                        lnqFrock.YZRQ = nulldt;
                        //lnqFrock.IsProvingQualified = false;
                        //lnqFrock.ProvingVerdict = "";

                        //if (!ReturnAttached(dataContext, djh, "验证", false, out error))
                        //{
                        //    return false;
                        //}

                        break;

                    case "等待验证要求":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg, CE_RoleEnum.工艺人员.ToString(), true);

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsInStock = false;

                        lnqFrock.YZRY = null;
                        lnqFrock.YZRQ = nulldt;
                        //lnqFrock.IsProvingQualified = false;
                        //lnqFrock.ProvingVerdict = "";

                        //if (!ReturnAttached(dataContext, djh, "验证", true, out error))
                        //{
                        //    return false;
                        //}

                        break;

                    case "等待检验":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg,
                                                            UniversalFunction.GetPersonnelCode(lnqFrock.JYRY), false);

                        lnqFrock.JYRY = null;
                        lnqFrock.JYRQ = nulldt;
                        //lnqFrock.ExamineVerdict = "";

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsExamineQualified = false;
                        //lnqFrock.IsInStock = false;

                        lnqFrock.YZRY = null;
                        lnqFrock.YZRQ = nulldt;
                        //lnqFrock.IsProvingQualified = false;
                        //lnqFrock.ProvingVerdict = "";

                        //if (!ReturnAttached(dataContext, djh, "验证", true, out error))
                        //{
                        //    return false;
                        //}

                        //if (!ReturnAttached(dataContext, djh, "检验", false, out error))
                        //{
                        //    return false;
                        //}

                        break;

                    case "等待检验要求":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg, CE_RoleEnum.工艺人员.ToString(), true);

                        lnqFrock.JYRY = null;
                        lnqFrock.JYRQ = nulldt;
                        //lnqFrock.ExamineVerdict = "";

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsExamineQualified = false;
                        //lnqFrock.IsInStock = false;

                        lnqFrock.YZRY = null;
                        lnqFrock.YZRQ = nulldt;
                        //lnqFrock.IsProvingQualified = false;
                        //lnqFrock.ProvingVerdict = "";

                        //if (!ReturnAttached(dataContext, djh, "验证", true, out error))
                        //{
                        //    return false;
                        //}

                        //if (!ReturnAttached(dataContext, djh, "检验", true, out error))
                        //{
                        //    return false;
                        //}

                        break;

                    case "新建单据":
                        strMsg = string.Format("{0}号工装验证报告单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg,
                                                            UniversalFunction.GetPersonnelCode(lnqFrock.BZRY), false);

                        lnqFrock.JYRY = null;
                        lnqFrock.JYRQ = nulldt;
                        //lnqFrock.ExamineVerdict = "";

                        lnqFrock.GYRY = null;
                        lnqFrock.GYRQ = nulldt;
                        //lnqFrock.FinalVerdict = "";
                        //lnqFrock.IsExamineQualified = false;
                        //lnqFrock.IsInStock = false;

                        lnqFrock.YZRY = null;
                        lnqFrock.YZRQ = nulldt;
                        //lnqFrock.IsProvingQualified = false;
                        //lnqFrock.ProvingVerdict = "";

                        //if (!ReturnAttached(dataContext, djh, "验证", true, out error))
                        //{
                        //    return false;
                        //}

                        //if (!ReturnAttached(dataContext, djh, "检验", true, out error))
                        //{
                        //    return false;
                        //}

                        break;

                    default:
                        throw new Exception("单据状态不正确,请确认单据状态后,再操作");
                    }

                    dataContext.SubmitChanges();
                }
                else
                {
                    error = "数据不唯一或者为空";
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 单据流程
        /// </summary>
        /// <param name="billNo">单据号</param>
        /// <param name="status">操作状态</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        public bool UpdateBill(string billNo, string status, out string error)
        {
            error = null;

            try
            {
                DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

                var varData = from a in dataContext.S_FrockProvingReport
                              where a.DJH == billNo
                              select a;

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

                    if (status != "等待结论" && lnqFrock.DJZT != status)
                    {
                        error = "单据状态错误,请重新刷新单据确认单据状态";
                        return(false);
                    }

                    switch (status)
                    {
                    case "等待检验要求":
                        lnqFrock.DJZT = "等待检验";
                        break;

                    case "等待检验":
                        lnqFrock.DJZT = "等待结论";
                        lnqFrock.JYRY = BasicInfo.LoginName;
                        lnqFrock.JYRQ = ServerTime.Time;
                        break;

                    case "等待验证要求":
                        lnqFrock.DJZT = "等待验证";
                        break;

                    case "等待验证":
                        lnqFrock.DJZT = "等待结论";
                        lnqFrock.YZRQ = ServerTime.Time;
                        lnqFrock.YZRY = BasicInfo.LoginName;
                        break;

                    case "等待结论":
                        lnqFrock.DJZT = "等待最终审核";
                        lnqFrock.GYRQ = ServerTime.Time;
                        lnqFrock.GYRY = BasicInfo.LoginName;
                        break;

                    case "等待最终审核":
                        lnqFrock.DJZT     = "单据已完成";
                        lnqFrock.GYZGDate = ServerTime.Time;
                        lnqFrock.GYZG     = BasicInfo.LoginName;

                        if (lnqFrock.BillType == "入库检验" && !varData.Single().ConnectBillNumber.Contains("ZGB") &&
                            !UpdateOrdinaryInDepotBillStatus(dataContext, lnqFrock, out error))
                        {
                            return(false);
                        }

                        if (varData.Single().ConnectBillNumber.Contains("ZGB") &&
                            !UpdateFrockInDepotBillStatus(dataContext, lnqFrock, out error))
                        {
                            return(false);
                        }
                        break;

                    default:
                        break;
                    }

                    dataContext.SubmitChanges();
                }

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 保存信息
        /// </summary>
        /// <param name="frockProvingReport">LINQ 数据集</param>
        /// <param name="attachedTable">检测信息</param>
        /// <param name="error">错误信息</param>
        /// <returns>成功返回True,失败返回False</returns>
        public bool SaveInfo(S_FrockProvingReport frockProvingReport, DataTable attachedTable, out string error)
        {
            error = null;

            try
            {
                DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

                var varData = from a in dataContext.S_FrockProvingReport
                              where a.DJH == frockProvingReport.DJH
                              select a;

                if (varData.Count() != 1)
                {
                    if (frockProvingReport.DJZT == "新建单据")
                    {
                        return(true);
                    }
                    else
                    {
                        error = "数据为空或者不唯一";
                        return(false);
                    }
                }
                else
                {
                    S_FrockProvingReport lnqFrock = varData.Single();

                    if (frockProvingReport.DJZT != "等待结论" && lnqFrock.DJZT != frockProvingReport.DJZT)
                    {
                        error = "单据状态错误,请重新刷新单据确认单据状态";
                        return(false);
                    }
                    switch (frockProvingReport.DJZT)
                    {
                    case "等待检验要求":

                        if (!m_serverFrockStandingBook.IsIntactSatelliteInformation(lnqFrock.FrockNumber, lnqFrock.GoodsID))
                        {
                            error = "工装信息未填写完整或者数据不唯一";
                            return(false);
                        }

                        if (attachedTable.Select("AttachedType = '检验'").Length == 0)
                        {
                            error = "请填写检验要求";
                            return(false);
                        }

                        if (!UpdateAttached(dataContext, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }

                        break;

                    case "等待检验":

                        lnqFrock.ExamineVerdict = frockProvingReport.ExamineVerdict;
                        lnqFrock.JYRY           = BasicInfo.LoginName;
                        lnqFrock.JYRQ           = ServerTime.Time;

                        if (frockProvingReport.IsExamineQualified != null)
                        {
                            lnqFrock.IsExamineQualified = (bool)frockProvingReport.IsExamineQualified;
                        }

                        DataRow[] drList = attachedTable.Select("AttachedType = '检验'");

                        foreach (DataRow dr in drList)
                        {
                            if (dr["AnswerContent"] == null || dr["AnswerContent"].ToString().Trim().Length == 0)
                            {
                                error = "请填写检验内容";
                                return(false);
                            }
                        }

                        if (!UpdateAttached(dataContext, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }

                        break;

                    case "等待验证要求":

                        if (attachedTable.Select("AttachedType = '验证'").Length == 0)
                        {
                            error = "请填写验证要求";
                            return(false);
                        }

                        if (!UpdateAttached(dataContext, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }

                        break;

                    case "等待验证":

                        lnqFrock.YZRQ           = ServerTime.Time;
                        lnqFrock.YZRY           = BasicInfo.LoginName;
                        lnqFrock.ProvingVerdict = frockProvingReport.ProvingVerdict;

                        drList = attachedTable.Select("AttachedType = '验证'");

                        foreach (DataRow dr in drList)
                        {
                            if (dr["AnswerContent"] == null || dr["AnswerContent"].ToString().Trim().Length == 0)
                            {
                                error = "请填写验证内容";
                                return(false);
                            }
                        }

                        if (!UpdateAttached(dataContext, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }

                        break;

                    case "等待结论":

                        //lnqFrock.IsProvingQualified = (bool)frockProvingReport.IsProvingQualified;
                        lnqFrock.FinalVerdict = frockProvingReport.FinalVerdict;
                        lnqFrock.GYRQ         = ServerTime.Time;
                        lnqFrock.GYRY         = BasicInfo.LoginName;
                        lnqFrock.IsInStock    = frockProvingReport.IsInStock;

                        break;

                    case "等待最终审核":

                        lnqFrock.GYZGDate = ServerTime.Time;
                        lnqFrock.GYZG     = BasicInfo.LoginName;

                        break;

                    default:
                        break;
                    }


                    dataContext.SubmitChanges();
                }

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 更新自制件工装报检的单据状态
        /// </summary>
        /// <param name="ctx">LINQ数据上下文</param>
        /// <param name="frockProving">工装验证报告单的数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        bool UpdateFrockInDepotBillStatus(DepotManagementDataContext ctx, S_FrockProvingReport frockProving, out string error)
        {
            error = null;

            try
            {
                var varData = from a in ctx.S_FrockProvingReport
                              where a.ConnectBillNumber == frockProving.ConnectBillNumber
                              select a;

                foreach (var item in varData)
                {
                    if (item.DJZT != "单据已完成")
                    {
                        return(true);
                    }
                }

                var varFrock = from a in ctx.S_FrockInDepotBill
                               where a.Bill_ID == frockProving.ConnectBillNumber
                               select a;

                if (varFrock.Count() != 1)
                {
                    error = "数据以空或者不唯一";
                    return(false);
                }
                else
                {
                    bool blflag = false;

                    var varFrockGoods = from a in ctx.S_FrockInDepotGoodsBill
                                        where a.Bill_ID == frockProving.ConnectBillNumber
                                        select a;

                    foreach (var itemGoods in varFrockGoods)
                    {
                        var varFrockReport = from a in ctx.S_FrockProvingReport
                                             where a.ConnectBillNumber == frockProving.ConnectBillNumber &&
                                             a.GoodsID == itemGoods.GoodsID
                                             select a;

                        int intAmount = 0;

                        foreach (var itemReport in varFrockReport)
                        {
                            if ((bool)itemReport.IsInStock)
                            {
                                intAmount++;
                            }
                            else
                            {
                                var varFrockStandingBook = from a in ctx.S_FrockStandingBook
                                                           where a.FrockNumber == itemReport.FrockNumber &&
                                                           a.GoodsID == itemReport.GoodsID
                                                           select a;

                                ctx.S_FrockStandingBook.DeleteAllOnSubmit(varFrockStandingBook);
                            }
                        }

                        itemGoods.Amount = intAmount;

                        if (Convert.ToDecimal(itemGoods.Amount) > 0)
                        {
                            blflag = true;
                        }
                    }

                    if (blflag)
                    {
                        varFrock.Single().Bill_Status = "等待入库";

                        m_billMessageServer.PassFlowMessage(varFrock.Single().Bill_ID,
                                                            string.Format("{0}号自制件工装报检已提交,请仓管入库", varFrock.Single().Bill_ID),
                                                            m_billMessageServer.GetRoleStringForStorage(varFrock.Single().StorageID).ToString(), true);
                    }
                    else
                    {
                        varFrock.Single().Bill_Status = "已报废";
                        m_billMessageServer.DestroyMessage(varFrock.Single().Bill_ID);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 更新普通入库单的单据状态
        /// </summary>
        /// <param name="ctx">LINQ数据上下文</param>
        /// <param name="frockProving">工装验证报告单的数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        bool UpdateOrdinaryInDepotBillStatus(DepotManagementDataContext ctx, S_FrockProvingReport frockProving, out string error)
        {
            error = null;
            try
            {
                var varData = from a in ctx.S_FrockProvingReport
                              where a.ConnectBillNumber == frockProving.ConnectBillNumber
                              select a;

                foreach (var item in varData)
                {
                    if (item.DJZT != "单据已完成")
                    {
                        return(true);
                    }
                }

                var varOrdinary = from a in ctx.S_OrdinaryInDepotBill
                                  where a.Bill_ID == frockProving.ConnectBillNumber
                                  select a;

                if (varOrdinary.Count() != 1)
                {
                    error = "数据以空或者不唯一";
                    return(false);
                }
                else
                {
                    bool blflag = false;

                    var varOrdinaryGoods = from a in ctx.S_OrdinaryInDepotGoodsBill
                                           where a.Bill_ID == frockProving.ConnectBillNumber
                                           select a;

                    foreach (var itemGoods in varOrdinaryGoods)
                    {
                        var varFrockReport = from a in ctx.S_FrockProvingReport
                                             where a.ConnectBillNumber == frockProving.ConnectBillNumber &&
                                             a.GoodsID == itemGoods.GoodsID
                                             select a;

                        int intAmount = 0;

                        foreach (var itemReport in varFrockReport)
                        {
                            if ((bool)itemReport.IsInStock)
                            {
                                intAmount++;
                            }
                            else
                            {
                                var varFrockStandingBook = from a in ctx.S_FrockStandingBook
                                                           where a.FrockNumber == itemReport.FrockNumber &&
                                                           a.GoodsID == itemReport.GoodsID
                                                           select a;

                                ctx.S_FrockStandingBook.DeleteAllOnSubmit(varFrockStandingBook);
                            }
                        }

                        itemGoods.Amount = intAmount;
                        itemGoods.Price  = Convert.ToDecimal(intAmount) * Convert.ToDecimal(itemGoods.UnitPrice);

                        if (Convert.ToDecimal(itemGoods.Amount) > 0)
                        {
                            blflag = true;
                        }
                    }

                    if (blflag)
                    {
                        varOrdinary.Single().BillStatus = "等待入库";

                        m_billMessageServer.PassFlowMessage(varOrdinary.Single().Bill_ID,
                                                            string.Format("【订单号】:{0} 【物品申请人】:{1}   ※※※ 等待【工艺人员】处理",
                                                                          varOrdinary.Single().OrderBill_ID, UniversalFunction.GetPersonnelName(varOrdinary.Single().Proposer)),
                                                            m_billMessageServer.GetRoleStringForStorage(varOrdinary.Single().StorageID).ToString(), true);
                    }
                    else
                    {
                        varOrdinary.Single().BillStatus = "已报废";
                        m_billMessageServer.DestroyMessage(varOrdinary.Single().Bill_ID);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 插入新的数据
        /// </summary>
        /// <param name="frockProvingReport">数据集</param>
        /// <param name="attachedTable">检验验证内容表</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        public bool AddBill(S_FrockProvingReport frockProvingReport, DataTable attachedTable, out string error)
        {
            error = null;

            try
            {
                DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

                var varData = from a in ctx.S_FrockProvingReport
                              where a.DJH == frockProvingReport.DJH
                              select a;

                S_FrockProvingReport lnqFrock = new S_FrockProvingReport();

                if (varData.Count() != 0)
                {
                    lnqFrock = varData.First();

                    lnqFrock.DJH               = frockProvingReport.DJH;
                    lnqFrock.BZRQ              = ServerTime.Time;
                    lnqFrock.BZRY              = BasicInfo.LoginName;
                    lnqFrock.BillType          = frockProvingReport.BillType;
                    lnqFrock.ConnectBillNumber = frockProvingReport.ConnectBillNumber;
                    lnqFrock.DJZT              = "等待检验要求";
                    lnqFrock.FrockNumber       = frockProvingReport.FrockNumber;
                    lnqFrock.GoodsID           = frockProvingReport.GoodsID;

                    if (attachedTable != null)
                    {
                        if (!UpdateAttached(ctx, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }
                    }

                    ctx.S_FrockProvingReport.InsertOnSubmit(lnqFrock);
                }
                else
                {
                    lnqFrock = new S_FrockProvingReport();

                    lnqFrock.DJH               = frockProvingReport.DJH;
                    lnqFrock.BZRQ              = ServerTime.Time;
                    lnqFrock.BZRY              = BasicInfo.LoginName;
                    lnqFrock.BillType          = frockProvingReport.BillType;
                    lnqFrock.ConnectBillNumber = frockProvingReport.ConnectBillNumber;
                    lnqFrock.DJZT              = "等待检验要求";
                    lnqFrock.FrockNumber       = frockProvingReport.FrockNumber;
                    lnqFrock.GoodsID           = frockProvingReport.GoodsID;

                    if (attachedTable != null)
                    {
                        if (!UpdateAttached(ctx, lnqFrock.DJH, attachedTable, out error))
                        {
                            return(false);
                        }
                    }

                    ctx.S_FrockProvingReport.InsertOnSubmit(lnqFrock);
                }

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