public CVT出厂检验记录(string strbillid, AuthorityFlag authorFlag)
        {
            InitializeComponent();

            txtBill_ID.Text = strbillid;

            m_authFlag = authorFlag;

            P_DeliveryInspection lnqTemp = m_serverDeliveryInSpection.GetBill(strbillid);

            if (lnqTemp != null)
            {
                m_lnqDelivery = lnqTemp;
                ShowMessage();
            }
            else
            {
                //if (lnqTemp.Date <= Convert.ToDateTime("2013-10-29"))
                //{
                //    //原有的格式
                //    dataGridView1.DataSource = m_serverDeliveryInSpection.GetEmptyTable();
                //}
                //else
                //{
                //    //修改后的格式
                //    dataGridView1.DataSource = m_serverDeliveryInSpection.GetEmptyTable(lnqTemp.ProductType);
                //}

                dataGridView1.DataSource = m_serverDeliveryInSpection.GetEmptyTable(lnqTemp.ProductType);
                lbPersonnel.Text         = BasicInfo.LoginName;
            }
        }
        /// <summary>
        /// 获取数据集
        /// </summary>
        void GetMessage()
        {
            m_lnqDelivery = new P_DeliveryInspection();

            m_lnqDelivery.AssociatedBillNo = txtAssociatedBillNo.Text;
            m_lnqDelivery.DJH                  = txtBill_ID.Text;
            m_lnqDelivery.DJZT                 = lbDJZT.Text;
            m_lnqDelivery.ProductCode          = txtProductCode.Text;
            m_lnqDelivery.ProductType          = txtProductType.Text;
            m_lnqDelivery.DisqualificationCase = txtDisqualificationCase.Text;
            m_lnqDelivery.DisqualificationItem = Convert.ToInt32(cmbTechnicalRequirementsName.Tag);
            m_lnqDelivery.Remark               = txtRemark.Text;

            if (rbYes.Checked)
            {
                m_lnqDelivery.Verdict = rbYes.Text;
            }

            if (rbNo.Checked)
            {
                m_lnqDelivery.Verdict = rbNo.Text;
            }

            if (rbFinalNo.Checked)
            {
                m_lnqDelivery.FinalVerdict = rbFinalNo.Text;
            }

            if (rbFinalYes.Checked)
            {
                m_lnqDelivery.FinalVerdict = rbFinalYes.Text;
            }
        }
        private void btnBatch_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow item in dataGridView1.SelectedRows)
            {
                if (item.Cells["单据状态"].Value.ToString() != "已完成")
                {
                    m_lnqDelivery         = new P_DeliveryInspection();
                    m_lnqDelivery.DJH     = item.Cells["单据号"].Value.ToString();
                    m_lnqDelivery.Verdict = "合格";
                    m_lnqDelivery.Remark  = txtRemark.Text;

                    if (!m_serverDeliveryInSpection.UpdateDeliveryInspection(m_lnqDelivery, out m_err))
                    {
                        MessageDialog.ShowPromptMessage(m_err);
                    }
                    else
                    {
                        string strStorage = "";

                        if (m_serverDeliveryInSpection.IsExamine(m_lnqDelivery.DJH, out strStorage))
                        {
                            m_billMessageServer.PassFlowMessage(m_lnqDelivery.DJH,
                                                                string.Format("{0} 号营销入库单,请仓管员确认", m_lnqDelivery.DJH),
                                                                m_billMessageServer.GetRoleStringForStorage(strStorage).ToString(), true);
                        }
                    }
                }
            }

            MessageDialog.ShowPromptMessage("执行成功");

            RefreshDataGirdView(m_serverDeliveryInSpection.GetDeliveryInspection(checkBillDateAndStatus1.dtpStartTime.Value,
                                                                                 checkBillDateAndStatus1.dtpEndTime.Value, checkBillDateAndStatus1.cmbBillStatus.Text));
        }
        /// <summary>
        /// 添加CVT出厂检验记录
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="djh">营销入库单据号</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>添加成功返回True,添加失败返回False</returns>
        private bool AddDeliveryInspection(DepotManagementDataContext dataContext, string djh, out string error)
        {
            error = null;

            try
            {
                var varData = from a in dataContext.ProductsCodes
                              where a.DJH == djh
                              select a;

                foreach (var item in varData)
                {
                    object goodsAttirbute = UniversalFunction.GetGoodsAttributeInfo(dataContext, item.GoodsID, CE_GoodsAttributeName.CVT);

                    if (goodsAttirbute == null || !Convert.ToBoolean(goodsAttirbute))
                    {
                        continue;
                    }

                    string strDJH = m_assignBill.AssignNewNo(dataContext, this, CE_BillTypeEnum.CVT出厂检验记录表.ToString());

                    P_DeliveryInspection lnqDelivery = new P_DeliveryInspection();

                    lnqDelivery.AssociatedBillNo = djh;
                    lnqDelivery.DJH         = strDJH;
                    lnqDelivery.DJZT        = "等待检验";
                    lnqDelivery.Date        = ServerTime.Time;
                    lnqDelivery.ProductCode = item.ProductCode;
                    lnqDelivery.ProductType = item.GoodsCode;

                    dataContext.P_DeliveryInspection.InsertOnSubmit(lnqDelivery);

                    DataTable dtNullList = GetEmptyTable(item.GoodsCode);

                    for (int i = 0; i < dtNullList.Rows.Count; i++)
                    {
                        P_DeliveryInspectionItems lnqItem = new P_DeliveryInspectionItems();

                        lnqItem.DJH          = strDJH;
                        lnqItem.TechnicalID  = Convert.ToInt32(dtNullList.Rows[i]["技术要求ID"]);
                        lnqItem.TestItemName = dtNullList.Rows[i]["检测项目"].ToString();
                        lnqItem.TechnicalRequirementsName = dtNullList.Rows[i]["技术要求"].ToString();

                        dataContext.P_DeliveryInspectionItems.InsertOnSubmit(lnqItem);
                    }
                }

                dataContext.SubmitChanges();

                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 更新出厂检验记录
        /// </summary>
        /// <param name="delivery">出厂检验记录表信息</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>更新成功返回True,更新失败返回False</returns>
        public bool UpdateDeliveryInspection(P_DeliveryInspection delivery, out string error)
        {
            error = null;

            DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

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

            try
            {
                var varData = from a in dataContext.P_DeliveryInspection
                              where a.DJH == delivery.DJH
                              select a;

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

                    lnqDeliveryInspection.Verdict  = delivery.Verdict;
                    lnqDeliveryInspection.Date     = ServerTime.Time;
                    lnqDeliveryInspection.Surveyor = BasicInfo.LoginName;
                    lnqDeliveryInspection.Remark   = delivery.Remark;

                    if (delivery.Verdict == "不合格")
                    {
                        lnqDeliveryInspection.DisqualificationCase = delivery.DisqualificationCase;
                        lnqDeliveryInspection.DisqualificationItem = delivery.DisqualificationItem;
                        lnqDeliveryInspection.DJZT = "等待最终判定";

                        var varList = from a in dataContext.P_DeliveryInspectionItems
                                      where a.DJH == lnqDeliveryInspection.DJH
                                      select a;

                        foreach (var item in varList)
                        {
                            P_DeliveryInspectionItems lnqList = item;

                            if (lnqList.TechnicalID == Convert.ToInt32(lnqDeliveryInspection.DisqualificationItem))
                            {
                                lnqList.Judge           = "不合格";
                                lnqList.DetectionResult = delivery.DisqualificationCase;
                            }
                            else
                            {
                                lnqList.Judge = "合格";
                            }
                        }
                    }
                    else
                    {
                        lnqDeliveryInspection.DJZT = "已完成";

                        var varList = from a in dataContext.P_DeliveryInspectionItems
                                      where a.DJH == lnqDeliveryInspection.DJH
                                      select a;

                        foreach (var item in varList)
                        {
                            P_DeliveryInspectionItems lnqList = item;

                            lnqList.Judge = "合格";
                        }
                    }

                    dataContext.SubmitChanges();

                    //修改营销业务单据状态

                    if (!UpdateMarketingBill(dataContext, lnqDeliveryInspection.AssociatedBillNo, out error))
                    {
                        return(false);
                    }
                }

                dataContext.Transaction.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                dataContext.Transaction.Rollback();
                error = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 最终判定
        /// </summary>
        /// <param name="delivery">CVT检验报告信息</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>操作成功返回True ,操作失败返回False</returns>
        public bool FinalJudgeBill(P_DeliveryInspection delivery, out string error)
        {
            error = null;

            DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

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

            try
            {
                ProductListServer serverProductList = new ProductListServer();

                var varData = from a in dataContext.P_DeliveryInspection
                              where a.DJH == delivery.DJH
                              select a;

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

                    lnqUpdate.FinalVerdict   = delivery.FinalVerdict;
                    lnqUpdate.FinalDate      = ServerTime.Time;
                    lnqUpdate.FinalPersonnel = BasicInfo.LoginName;
                    lnqUpdate.DJZT           = "已完成";
                    lnqUpdate.Remark         = delivery.Remark;

                    //不合格处理情况

                    if (lnqUpdate.FinalVerdict == "不合格")
                    {
                        //删除产品业务表中的记录

                        var varMarketingDate = from a in dataContext.ProductsCodes
                                               where a.DJH == lnqUpdate.AssociatedBillNo &&
                                               a.ProductCode == lnqUpdate.ProductCode
                                               select a;

                        dataContext.ProductsCodes.DeleteAllOnSubmit(varMarketingDate);

                        //获得单据ID和产品ID
                        int intProductID = serverProductList.GetProductGoodsID(lnqUpdate.ProductType, 0, false);

                        int intDJID     = 0;
                        var varBillDate = from a in dataContext.S_MarketingBill
                                          where a.DJH == lnqUpdate.AssociatedBillNo
                                          select a;

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

                        //修改营销业务明细表中的记录的数量数据
                        var varListDate = from a in dataContext.S_MarketingList
                                          where a.DJ_ID == intDJID &&
                                          a.CPID == intProductID.ToString()
                                          select a;

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

                            lnqList.Count = lnqList.Count - 1;
                        }
                    }

                    dataContext.SubmitChanges();

                    //修改营销业务单据状态

                    if (!UpdateMarketingBill(dataContext, delivery.AssociatedBillNo, out error))
                    {
                        return(false);
                    }
                }

                dataContext.Transaction.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                dataContext.Transaction.Rollback();
                error = ex.Message;
                return(false);
            }
        }