yangle
2024-04-26 ec5c28f717d481e06300ee1b94a760bf9a44df23
WarM/ÌõÂë´òÓ¡/Gy_BarCodeBill_automaticallyByPLC_New.cs
@@ -190,79 +190,1077 @@
        //
        //Socket通讯
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        long produceQty = 0;         //接收通讯,需要生成几个条码
        GridppReport Report;
        #region ä¸»è¦æ–¹æ³•
        #region é€‰æ‹©æºå•
        //选择源单控件点击方法
        private void cmdSourceBillNo_Click_1(object sender, EventArgs e)
        {
            cmdSourceBillNo_Click(sender, e);
        }
        //选原单
        private void cmdSourceBillNo_Click(object sender, EventArgs e)
        {
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
            }
            if (HOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return;
            }
            if (cmbSourceBillType.Text.Trim() == "生产订单")
            {
                string sWhere = "";
                //系统参数,生成条码数量可否超源单数量控制(N为不可超源单数量)
                if (SourceQtyCtl == "N")
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString() + " and ä»»åŠ¡æ•°é‡>0 and ç”Ÿäº§çº¿='" + comboBox_SourceNameParams.Text + "' ";
                }
                else
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString();
                }
                DAL.Cls_S_IFCLD_ICMOList oIFCLD_ICMOList = new DAL.Cls_S_IFCLD_ICMOList();
                if (oIFCLD_ICMOList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIFCLD_ICMOList.oBillSelectColl);
                }
            }
            else
            {
            }
            //选择源单后,加载该源单记录物料在当前日期的条码列表
            Display4();
        }
        //
        private void FillSelectData(List<DBUtility.BillSelect> oList)
        {
            if (oList.Count != 1)
            {
                MessageBox.Show("请选择一条数据!");
                return;
            }
            DataSet Ds;
            oSumGrid.Changelock = true;
            initGrid();
            int i = -1;
            foreach (DBUtility.BillSelect oSelectRow in oList)
            {
                i = i + 1;
                //生产订单
                if (oSelectRow.BillType == "3710")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_ICMOBillList " + oSelectRow.BillMainID.ToString() + "," + oSelectRow.BillSubID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_ICMOBillList");
                    //Ds = oCn.RunProcReturn("select * from h_v_IFCLD_ICMOList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IFCLD_ICMOList");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                }
            }
            //
            oSumGrid.Changelock = false;
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            if (grdMain.Rows.Count > 0)
            {
                //根据源单设置表头
                textBox_HMaterNumber.Text = grdMain.Rows[0].Cells[HMaterNumberCol].Value.ToString();
                textBox_HMaterName.Text = grdMain.Rows[0].Cells[HMaterNameCol].Value.ToString();
                textBox_HMaterModel.Text = grdMain.Rows[0].Cells[HMaterModelCol].Value.ToString();
                long HMaterID = ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value.ToString());
                Ds = oCn.RunProcReturn("select * from Gy_Material where HItemID = " + HMaterID + " and HUSEORGID =" + HOrgID, "Gy_Material");
                if (Ds != null && Ds.Tables[0].Rows.Count > 0)
                {
                    string HBatchManager = Ds.Tables[0].Rows[0]["HBatchManager"].ToString();
                    if (HBatchManager == "False")
                    {
                        radioButton_HIsUsingBatchNo.Checked = false;
                    }
                    else
                    {
                        radioButton_HIsUsingBatchNo.Checked = true;
                    }
                }
                //设置批号
                if (radioButton_HIsUsingBatchNo.Checked)
                {
                    grdMain.Rows[0].Cells[HBatchNoCol].Value = getBatchNo();
                }
            }
        }
        //根据TABLE写入界面(生产任务单)
        private void Sub_WriteInForm(DataTable oTable, int i)
        {
            ////加载表头
            //this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            //this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            grdMain.Rows[i].Cells[HinitQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            //
            grdMain.Rows[i].Cells[HMainIDCol].Value = oTable.Rows[0]["hmainid"].ToString();
            grdMain.Rows[i].Cells[HSubIDCol].Value = oTable.Rows[0]["hsubid"].ToString();
            grdMain.Rows[i].Cells[HBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HSourceBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HBillTypeCol].Value = oTable.Rows[0]["HBillType"].ToString();
            grdMain.Rows[i].Cells[HDateCol].Value = oTable.Rows[0]["日期"].ToString(); //博日 æ”¶æ–™å•据日期
            grdMain.Rows[i].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
            grdMain.Rows[i].Cells[HSupIDCol].Value = oTable.Rows[0]["hsupid"].ToString();
            grdMain.Rows[i].Cells[HSupNumberCol].Value = oTable.Rows[0]["供应商代码"].ToString();
            grdMain.Rows[i].Cells[HSupNameCol].Value = oTable.Rows[0]["供应商"].ToString();
            grdMain.Rows[i].Cells[HDeptIDCol].Value = oTable.Rows[0]["HDeptID"].ToString();
            grdMain.Rows[i].Cells[HDeptNumberCol].Value = oTable.Rows[0]["部门代码"].ToString();
            grdMain.Rows[i].Cells[HDeptNameCol].Value = oTable.Rows[0]["部门"].ToString();
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            //grdMain.Rows[i].Cells[HBatchManagerCol].Value = oTable.Rows[0]["是否启用批次"].ToString();
            grdMain.Rows[i].Cells[HBatchNoCol].Value = oTable.Rows[0]["批次"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = oTable.Rows[0]["备注"].ToString();
            grdMain.Rows[i].Cells[HMTONoCol].Value = oTable.Rows[0]["计划跟踪号"].ToString();
            grdMain.Rows[i].Cells[HCusIDCol].Value = oTable.Rows[0]["HCusID"].ToString();
            grdMain.Rows[i].Cells[HCusNumberCol].Value = oTable.Rows[0]["客户代码"].ToString();
            grdMain.Rows[i].Cells[HCusNameCol].Value = oTable.Rows[0]["客户"].ToString();
            grdMain.Rows[i].Cells[HCusTypeCol].Value = oTable.Rows[0]["客户型号"].ToString();
            grdMain.Rows[i].Cells[HPinfanBarCodeCol].Value = oTable.Rows[0]["HPinfanBarCode"].ToString();
            grdMain.Rows[i].Cells[HPinfanCol].Value = oTable.Rows[0]["HPinfan"].ToString();
            //grdMain.Rows[i].Cells[HSourceIDCol].Value = oTable.Rows[0]["HSourceID"].ToString();
            //grdMain.Rows[i].Cells[HSourceNumberCol].Value = oTable.Rows[0]["生产线代码"].ToString();
            grdMain.Rows[i].Cells[HSourceNameCol].Value = oTable.Rows[0]["生产线"].ToString();
            grdMain.Rows[i].Cells[HEndDateCol].Value = oTable.Rows[0]["计划完工日期"].ToString();//博日 ç”Ÿäº§è®¢å• å¤±æ•ˆæ—¥æœŸ
            grdMain.Rows[i].Cells[HAuxPropIDCol].Value = oTable.Rows[0]["HAuxPropID"].ToString();
            if (cmbHBarCodeType.Text == "仪器外购件条码容器规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            }
            else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则"
                || cmbHBarCodeType.Text == "仪器成品条码规则"
                || cmbHBarCodeType.Text == "试剂成品条码规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = "1";
            }
            else
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
            }
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["HProduceDate"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["HExpiryDate"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            //自动生成-设置数量、最小包装数、箱数为1
            grdMain.Rows[i].Cells[HQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HMinQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HBQtyCol].Value = 1;
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HBatchNoCol.ToString() +
                                "," + HPackQtyCol.ToString() +
                                "," + HRemarkCol.ToString();
            grdMain.Columns[HBillNoCol].ReadOnly = true;
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            tabControl1.SelectedIndex = 3;
            bc.Enabled = true;
            //
            RowCount(i, 0);
        }
        #endregion
        #region ç”ŸæˆæŒ‰é’®
        private void bc_Click(object sender, EventArgs e)
        {
            this.Sub_SaveBill();
            Display();
            Display4();
        }
        //保存单据
        private bool Sub_SaveBill()
        {
            //获取内码
            HInterID = DBUtility.ClsPub.CreateBillID_Prod(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
            ////若MAINDI重复则重新获取
            //if (BaseBill.IsExistMainID(ref DBUtility.ClsPub.sExeReturnInfo, HInterID, Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew))
            //{
            //    HInterID = DBUtility.ClsPub.CreateBillID(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
            //}
            //
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            HOrgNumber = "";
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
                HOrgNumber = DBUtility.ClsPub.isStrNull(oClsGy_ORGANIZATIONS_View.omodel.HNumber);
            }
            if (HOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return false;
            }
            lblCaption.Focus();
            if (!Sub_AllowSave())//单据完整性判断
            {
                return false;
            }
            SaveBarCode();
            return true;
        }
        //单据完整性判断          æœªå®Œæˆ
        private bool Sub_AllowSave()
        {
            //明细表是否为零行
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
            {
                if (!IsNullRow(i))
                {
                    b = true;
                    break;
                }
            }
            if (b == false)
            {
                MessageBox.Show("明细行不存在!", "提示");
                return false;
            }
            string sHRemark = "";
            for (int j = 0; j < grdMain.Rows.Count; j++)
            {
                long HSno = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HSnoCol].Value);                  // åºå·
                string HBarCodeType = cmbHBarCodeType.Text;                                                  // æ¡ç ç±»åž‹
                string HSourceBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBillNoCol].Value); // æºå•单号
                long HMaterID = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HMaterIDCol].Value);          // ç‰©æ–™å†…码
                string HBatchNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBatchNoCol].Value);     // æ‰¹å·
                long HAuxPropID = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HAuxPropIDCol].Value);      // è¾…助属性ID
                double HSourceQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HinitQtyCol].Value);     // æºå•数量
                double HQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);               // æ•°é‡
                double HMinQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);          // æœ€å°åŒ…装数
                if (HMaterID != 0)
                {
                    DataSet oDsCheck = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_AddCheck " + HSno.ToString() + ",'" + HBarCodeType + "','" + HSourceBillNo + "'," + HMaterID.ToString() + ",'" + HBatchNo + "'," + HAuxPropID.ToString() + "," + HSourceQty.ToString() + "," + HQty.ToString() + "," + HMinQty.ToString() + "," + HOrgID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_AddCheck");
                    //
                    if (oDsCheck == null && oDsCheck.Tables[0].Rows.Count == 0)
                    {
                        MessageBox.Show("条码生成完整性判断错误!");
                        return false;
                    }
                    else if (DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0][0]) == "1")
                    {
                        sHRemark = sHRemark + DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0]["HRemark"]);
                    }
                    else if (DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HExpiryDateCol].Value) == "")
                    {
                        if (DBUtility.ClsPub.isBool(oDsCheck.Tables[0].Rows[0]["HISKFPERIOD"]))
                        {
                            DateTime HProduceDate;  //生产日期
                            string HEXPUNIT;        //保质期单位
                            int HEXPPERIOD;         //保质期
                            HProduceDate = dtpHDate.Value;
                            HEXPUNIT = DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0]["HEXPUNIT"]);
                            HEXPPERIOD = DBUtility.ClsPub.isInt(oDsCheck.Tables[0].Rows[0]["HEXPPERIOD"]);
                            grdMain.Rows[j].Cells[HISKFPERIODCol].Value = 1;
                            grdMain.Rows[j].Cells[HEXPUNITCol].Value = HEXPUNIT;
                            grdMain.Rows[j].Cells[HEXPPERIODCol].Value = HEXPPERIOD.ToString();
                            grdMain.Rows[j].Cells[HProduceDateCol].Value = HProduceDate.ToShortDateString();
                            if (HEXPUNIT == "Y")
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddYears(HEXPPERIOD).ToShortDateString();
                            }
                            else if (HEXPUNIT == "M")
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddMonths(HEXPPERIOD).ToShortDateString();
                            }
                            else
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddDays(HEXPPERIOD).ToShortDateString();
                            }
                        }
                        else
                        {
                            grdMain.Rows[j].Cells[HISKFPERIODCol].Value = 0;
                            grdMain.Rows[j].Cells[HEXPUNITCol].Value = "";
                            grdMain.Rows[j].Cells[HEXPPERIODCol].Value = 0;
                            grdMain.Rows[j].Cells[HProduceDateCol].Value = "";
                            grdMain.Rows[j].Cells[HExpiryDateCol].Value = "";
                        }
                    }
                }
            }
            if (sHRemark != "")
            {
                MessageBox.Show(sHRemark);
                return false;
            }
            return true;
        }
        //生成条码
        private void SaveBarCode()
        {
            grdSub.Rows.Clear();
            int LSHlen = 6;             //流水号长度
            int SumLen = 10;            //总长度
            string TM = "";             //条码
            string HNumber = "";        //物料内码
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            Int64 HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            Int64 LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
            string sPeriod = "";        //月
            string sDay = "";           //日
            string HBatchNo = "";       //批次
            string HYasuoji = "";       //压缩机
            string HModelName = "";       //机型
            string HICMOBillNo = "";       //源单号
            string HBarCodeBatchNo = "";       //条码批次号
            string HBarCodeDate = "";         //条码日期
            int k = 0;
            Int64 n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
            string sSourceBillNo = "";       //源单号
            string sSourceEntryID = "";       //行号(源单子ID)
            DataSet Ds;
            //Ds = oCn.RunProcReturn("exec GetLSH '" + ClsPub.GetServerDate(0) + "'", "GetLSH");
            //LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
            for (int j = 0; j < grdMain.Rows.Count; j++)
            {
                if (ClsPub.isLong(grdMain.Rows[j].Cells[HMaterIDCol].Value) != 0)
                {
                    HNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterIDCol].Value);
                    HMaterNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterNumberCol].Value);
                    HBatchNo = ClsPub.isStrNull(grdMain.Rows[j].Cells[HBatchNoCol].Value);
                    //日期获取方式
                    sDate = dtpHDate.Value.ToShortDateString();
                    HYasuoji = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HPinfanCol].Value); //压缩机代码(夏宝电器)
                    HModelName = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HCusTypeCol].Value); //机型(夏宝电器)
                    HICMOBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSourceBillNoCol].Value); //生产订单号(夏宝电器)
                    HBarCodeBatchNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HPinfanBarCodeCol].Value); //条码批次号(夏宝电器)
                    HBarCodeDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSupNumberCol].Value); //条码日期(夏宝电器)
                    //
                    sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                    sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                    sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                    sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                    sDay = sDay.Substring(sDay.Length - 2, 2);
                    //==================================
                    if (cmbHBarCodeType.Text == "唯一条码")
                    {
                        //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                    }
                    else
                    {
                        MessageBox.Show("错误的条码类型,不能生成条码!");
                        return;
                    }
                    Int64 HBQty2 = 0;              //箱数
                    HBQty2 = ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HBQty = HBQty + ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HMinQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);
                    HSumQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);
                    n = 0;
                    int nn = 0;
                    for (int i = k; i < HBQty; i++)
                    {
                        if (HSumQty - HMinQty > 0)
                        {
                            WeiShu = "";
                            HSumQty = HSumQty - HMinQty;
                        }
                        else
                        {
                            if (HSumQty == HMinQty)
                            {
                                WeiShu = "";
                            }
                            else
                            {
                                WeiShu = "尾数";
                            }
                            HMinQty = HSumQty;
                        }
                        //
                        LSH = LSH + 1;
                        LSH2 = LSH.ToString();
                        while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                        {
                            LSH2 = "0" + LSH2;
                        }
                        if (cmbHBarCodeType.Text == "唯一条码")
                        {
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            TM = sTMNumber + LSH2;
                        }
                        //
                        if (i + 1 > grdSub.Rows.Count)
                        {
                            grdSub.RowCount = grdSub.RowCount + 1;
                        }
                        grdSub.Rows[i].Cells[HSno2Col].Value = ClsPub.isStrNull(i + 1);
                        if (TM.Trim() == "")
                        {
                            MessageBox.Show("条形码不能为空,不能生成条码!");
                            return;
                        }
                        grdSub.Rows[i].Cells[HTMCol].Value = TM;
                        grdSub.Rows[i].Cells[HEntryID2Col].Value = j + 1;
                        grdSub.Rows[i].Cells[HMaterID2Col].Value = grdMain.Rows[j].Cells[HMaterIDCol].Value;
                        grdSub.Rows[i].Cells[HMaterNumber2Col].Value = grdMain.Rows[j].Cells[HMaterNumberCol].Value;
                        grdSub.Rows[i].Cells[HMaterName2Col].Value = grdMain.Rows[j].Cells[HMaterNameCol].Value;
                        grdSub.Rows[i].Cells[HMaterModel2Col].Value = grdMain.Rows[j].Cells[HMaterModelCol].Value;
                        grdSub.Rows[i].Cells[HPinfan2Col].Value = grdMain.Rows[j].Cells[HPinfanCol].Value;
                        grdSub.Rows[i].Cells[HPinfanBarCode2Col].Value = grdMain.Rows[j].Cells[HPinfanBarCodeCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropID2Col].Value = grdMain.Rows[j].Cells[HAuxPropIDCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropNumber2Col].Value = grdMain.Rows[j].Cells[HAuxPropNumberCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropName2Col].Value = grdMain.Rows[j].Cells[HAuxPropNameCol].Value;
                        grdSub.Rows[i].Cells[HUnitID2Col].Value = grdMain.Rows[j].Cells[HUnitIDCol].Value;
                        grdSub.Rows[i].Cells[HUnitNumber2Col].Value = grdMain.Rows[j].Cells[HUnitNumberCol].Value;
                        grdSub.Rows[i].Cells[HUnitName2Col].Value = grdMain.Rows[j].Cells[HUnitNameCol].Value;
                        grdSub.Rows[i].Cells[HQty2Col].Value = HMinQty;
                        grdSub.Rows[i].Cells[HBatchNo2Col].Value = grdMain.Rows[j].Cells[HBatchNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceInterID2Col].Value = grdMain.Rows[j].Cells[HMainIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceEntryID2Col].Value = grdMain.Rows[j].Cells[HSubIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillNo2Col].Value = grdMain.Rows[j].Cells[HBillNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillType2Col].Value = grdMain.Rows[j].Cells[HBillTypeCol].Value;
                        grdSub.Rows[i].Cells[HPrintCol].Value = "0";
                        grdSub.Rows[i].Cells[HWeiCol].Value = WeiShu;
                        grdSub.Rows[i].Cells[HBarcodeNoCol].Value = n + 1;
                        grdSub.Rows[i].Cells[HBarcodeQtysCol].Value = grdMain.Rows[j].Cells[HBQtyCol].Value;
                        grdSub.Rows[i].Cells[HSupID2Col].Value = grdMain.Rows[j].Cells[HSupIDCol].Value;
                        grdSub.Rows[i].Cells[HSupNumber2Col].Value = grdMain.Rows[j].Cells[HSupNumberCol].Value;
                        grdSub.Rows[i].Cells[HSupName2Col].Value = grdMain.Rows[j].Cells[HSupNameCol].Value;
                        grdSub.Rows[i].Cells[HDeptID2Col].Value = grdMain.Rows[j].Cells[HDeptIDCol].Value;
                        grdSub.Rows[i].Cells[HDeptNumber2Col].Value = grdMain.Rows[j].Cells[HDeptNumberCol].Value;
                        grdSub.Rows[i].Cells[HDeptName2Col].Value = grdMain.Rows[j].Cells[HDeptNameCol].Value;
                        grdSub.Rows[i].Cells[HRemark2Col].Value = grdMain.Rows[j].Cells[HRemarkCol].Value;
                        grdSub.Rows[i].Cells[HDate2Col].Value = grdMain.Rows[j].Cells[HDateCol].Value;
                        grdSub.Rows[i].Cells[HShowDate2Col].Value = grdMain.Rows[j].Cells[HShowDateCol].Value;
                        grdSub.Rows[i].Cells[HWhID2Col].Value = grdMain.Rows[j].Cells[HWhIDCol].Value;
                        grdSub.Rows[i].Cells[HWhNumber2Col].Value = grdMain.Rows[j].Cells[HWhNumberCol].Value;
                        grdSub.Rows[i].Cells[HWhName2Col].Value = grdMain.Rows[j].Cells[HWhNameCol].Value;
                        grdSub.Rows[i].Cells[HSPID2Col].Value = grdMain.Rows[j].Cells[HSPIDCol].Value;
                        grdSub.Rows[i].Cells[HSPNumber2Col].Value = grdMain.Rows[j].Cells[HSPNumberCol].Value;
                        grdSub.Rows[i].Cells[HSPName2Col].Value = grdMain.Rows[j].Cells[HSPNameCol].Value;
                        grdSub.Rows[i].Cells[HMTONo2Col].Value = grdMain.Rows[j].Cells[HMTONoCol].Value;
                        grdSub.Rows[i].Cells[HCusID2Col].Value = grdMain.Rows[j].Cells[HCusIDCol].Value;
                        grdSub.Rows[i].Cells[HCusNumber2Col].Value = grdMain.Rows[j].Cells[HCusNumberCol].Value;
                        grdSub.Rows[i].Cells[HCusName2Col].Value = grdMain.Rows[j].Cells[HCusNameCol].Value;
                        grdSub.Rows[i].Cells[HCusType2Col].Value = grdMain.Rows[j].Cells[HCusTypeCol].Value;
                        grdSub.Rows[i].Cells[HSourceID2Col].Value = grdMain.Rows[j].Cells[HSourceIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceNumber2Col].Value = grdMain.Rows[j].Cells[HSourceNumberCol].Value;
                        grdSub.Rows[i].Cells[HSourceName2Col].Value = grdMain.Rows[j].Cells[HSourceNameCol].Value;
                        grdSub.Rows[i].Cells[HEndDate2Col].Value = grdMain.Rows[j].Cells[HEndDateCol].Value;
                        grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value = grdMain.Rows[j].Cells[HSeOrderBillNoCol].Value;
                        grdSub.Rows[i].Cells[HSeOrderSEQ2Col].Value = grdMain.Rows[j].Cells[HSeOrderSEQCol].Value;
                        grdSub.Rows[i].Cells[HInnerBillNo2Col].Value = grdMain.Rows[j].Cells[HInnerBillNoCol].Value;
                        grdSub.Rows[i].Cells[HMaker2Col].Value = grdMain.Rows[j].Cells[HMakerCol].Value;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value = grdMain.Rows[j].Cells[HGiveAwayFlagCol].Value;
                        grdSub.Rows[i].Cells[HProduceDate2Col].Value = grdMain.Rows[j].Cells[HProduceDateCol].Value;
                        grdSub.Rows[i].Cells[HExpiryDate2Col].Value = grdMain.Rows[j].Cells[HExpiryDateCol].Value;
                        grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value = grdMain.Rows[j].Cells[HISKFPERIODCol].Value;
                        grdSub.Rows[i].Cells[HEXPUNIT2Col].Value = grdMain.Rows[j].Cells[HEXPUNITCol].Value;
                        grdSub.Rows[i].Cells[HEXPPERIOD2Col].Value = grdMain.Rows[j].Cells[HEXPPERIODCol].Value;
                        //网格打勾
                        //是否赠品
                        DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                        oCell.ThreeState = false;
                        oCell.Value = grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value;
                        oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                        //是否启用保质期
                        DataGridViewCheckBoxCell oCell2 = new DataGridViewCheckBoxCell();
                        oCell2.ThreeState = false;
                        oCell2.Value = grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value;
                        oCell2.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        grdSub.Rows[i].Cells[HISKFPERIOD2Col] = oCell2;
                        k = k + 1;
                        n = n + 1;
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        nn = nn + 1;
                    }
                    //后台批量执行语句
                    oCn.RunProc("exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + nn.ToString() + " ");
                }
            }
            string HWei = "";      //尾数
            string HBarCode = "";
            string HBarCodeType = "";
            Int64 HMaterID = 0;
            Int64 HAuxPropID = 0;
            Int64 HUnitID = 0;
            double HQty2 = 0;
            string HBatchNo2 = "";
            Int64 HSupID = 0;
            Int64 HGroupID = 0;
            int HPrintQty = 0;
            Int64 HSourceInterID = 0;
            Int64 HSourceEntryID = 0;
            string HSourceBillNo = "";
            string HSourceBillType = "";
            Int64 HBarcodeNo = 0;       //托号
            Int64 HBarcodeQtys = 0;     //总托数
            Int64 HDeptID = 0;
            Int64 HWhID = 0;
            Int64 HSPID = 0;
            string HRemark = "";
            string HMaterName = "";
            string HMaterModel = "";
            string HPinfan = "";
            string HMTONo = "";
            Int64 HCusID = 0;
            string HCusType = "";
            DateTime HEndDate;
            string HWorkLineName = "";
            string HSeOrderBillNo = "";
            Int64 HSeOrderSEQ = 0;
            string HInnerBillNo = "";
            bool HGiveAwayFlag = false;
            Int64 HEntryID = 0;
            string HProduceDate;
            string HExpiryDate;
            bool HISKFPERIOD = false;
            string HEXPUNIT = "";
            double HEXPPERIOD = 0;
            try
            {
                oCn.BeginTran();
                for (int i = 0; i < grdSub.Rows.Count; i++)
                {
                    if (ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value) != 0)
                    {
                        HWei = ClsPub.isStrNull(grdSub.Rows[i].Cells[HWeiCol].Value);
                        HBarCode = ClsPub.isStrNull(grdSub.Rows[i].Cells[HTMCol].Value);
                        //
                        HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text);
                        HMaterID = ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        HEntryID = ClsPub.isLong(grdSub.Rows[i].Cells[HEntryID2Col].Value);
                        HAuxPropID = ClsPub.isLong(grdSub.Rows[i].Cells[HAuxPropID2Col].Value);
                        HUnitID = ClsPub.isLong(grdSub.Rows[i].Cells[HUnitID2Col].Value);
                        HQty2 = ClsPub.isDoule(grdSub.Rows[i].Cells[HQty2Col].Value);
                        HBatchNo2 = ClsPub.isStrNull(grdSub.Rows[i].Cells[HBatchNo2Col].Value);
                        HSourceInterID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceInterID2Col].Value);
                        HSourceEntryID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceEntryID2Col].Value);
                        HSourceBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillNo2Col].Value);
                        HSourceBillType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillType2Col].Value);
                        HBarcodeQtys = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeQtysCol].Value);
                        HBarcodeNo = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeNoCol].Value);
                        HSupID = ClsPub.isLong(grdSub.Rows[i].Cells[HSupID2Col].Value);
                        HDeptID = ClsPub.isLong(grdSub.Rows[i].Cells[HDeptID2Col].Value);
                        HWhID = ClsPub.isLong(grdSub.Rows[i].Cells[HWhID2Col].Value);
                        HSPID = ClsPub.isLong(grdSub.Rows[i].Cells[HSPID2Col].Value);
                        HRemark = ClsPub.isStrNull(grdSub.Rows[i].Cells[HRemark2Col].Value);
                        HMaterName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterName2Col].Value);
                        HMaterModel = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterModel2Col].Value);
                        HPinfan = ClsPub.isStrNull(grdSub.Rows[i].Cells[HPinfan2Col].Value);
                        HMTONo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMTONo2Col].Value);
                        HCusID = ClsPub.isLong(grdSub.Rows[i].Cells[HCusID2Col].Value);
                        HCusType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HCusType2Col].Value);
                        HEndDate = ClsPub.isDate(grdSub.Rows[i].Cells[HEndDate2Col].Value);
                        HWorkLineName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceName2Col].Value);
                        HSeOrderBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value);
                        HSeOrderSEQ = ClsPub.isLong(grdSub.Rows[i].Cells[HSeOrderSEQ2Col].Value);
                        HInnerBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HInnerBillNo2Col].Value);
                        HGiveAwayFlag = ClsPub.isBool(grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value);
                        if (ClsPub.isDate(grdSub.Rows[i].Cells[HProduceDate2Col].Value) < Convert.ToDateTime("1950-01-01"))
                        {
                            HProduceDate = "";
                        }
                        else
                        {
                            HProduceDate = ClsPub.isStrNull(grdSub.Rows[i].Cells[HProduceDate2Col].Value);
                        }
                        if (ClsPub.isDate(grdSub.Rows[i].Cells[HExpiryDate2Col].Value) < Convert.ToDateTime("1950-01-01"))
                        {
                            HExpiryDate = "";
                        }
                        else
                        {
                            HExpiryDate = ClsPub.isStrNull(grdSub.Rows[i].Cells[HExpiryDate2Col].Value);
                        }
                        HISKFPERIOD = ClsPub.isBool(grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value);
                        HEXPUNIT = ClsPub.isStrNull(grdSub.Rows[i].Cells[HEXPUNIT2Col].Value);
                        HEXPPERIOD = ClsPub.isDoule(grdSub.Rows[i].Cells[HEXPPERIOD2Col].Value);
                        if (radioButton_HIsUsingBatchNo.Checked)
                        {
                            HBatchNo2 = getBatchNo();
                        }
                        long HSourceID = 0;
                        string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "' ";
                        DataSet ds = oCn.RunProcReturn(sql, "Gy_Source");
                        if (ds != null && ds.Tables[0].Rows.Count > 0)
                        {
                            HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString());
                        }
                        oCn.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                    ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HEntryID " +
                                    ",HGiveAwayFlag,HSeOrderSEQ,HInitSourceEntryID " +
                                    ",HProduceDate,HExpiryDate " +
                                    ",HISKFPERIOD,HEXPUNIT,HEXPPERIOD " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo,HSourceID " +
                                    ") values ("
                                    + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString()
                                    + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + ClsPub.CurUserName + "',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString()
                                    + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HWei + "'"
                                    + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'"
                                    + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + sDate + "'"
                                    + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HSeOrderBillNo + "'," + HInterID.ToString() + "," + HEntryID.ToString()
                                    + ", " + DBUtility.ClsPub.BoolToString(HGiveAwayFlag) + "," + HSeOrderSEQ.ToString() + "," + HSourceEntryID.ToString()
                                    + ", " + (HProduceDate == "" ? "NULL" : "'" + HProduceDate + "'") + "," + (HExpiryDate == "" ? "NULL" : "'" + HExpiryDate + "'")
                                    + ", " + DBUtility.ClsPub.BoolToString(HISKFPERIOD) + ",'" + HEXPUNIT + "'," + HEXPPERIOD.ToString()
                                    + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "'," + HSourceID +
                                    ")");
                    }
                }
                //增加 æ¡ç è¶…过未生成功能控制
                //
                oCn.Commit();
                tabControl1.SelectedIndex = 3;
            }
            catch (Exception e)
            {
                oCn.RollBack();
                MessageBox.Show("条码生成失败!" + e.Message);
                grdSub.RowCount = 0;
            }
        }
        //生成当天物料的批号
        private string getBatchNo()
        {
            string HBatchNo = "";
            if (radioButton_HIsUsingBatchNo.Checked)
            {
                //日期获取方式
                string sDate = dtpHDate.Value.ToShortDateString();                                                                                   //
                string sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                string sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                string sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                sDay = sDay.Substring(sDay.Length - 2, 2);
                string HDate = "20" + sYear + "-" + sPeriod + "-" + sDay;
                //获取流水号:四位,该物料当天生成的条码数
                string LIU = "";
                int LEN = 4;
                DataSet ds;
                string sql = "select * from h_v_IF_BarCodeBillList Where æºå•单号 ='" + grdMain.Rows[0].Cells[HSourceBillNoCol].Value + "' and HMaterID = " + grdMain.Rows[0].Cells[HMaterIDCol].Value + " and HSTOCKORGID = " + HOrgID + " and CONVERT(varchar(100),条码日期, 23) = '" + HDate + "' order by æ‰¹å· desc";
                ds = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList");
                if (ds != null)
                {
                    long count = 0;
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        count = ClsPub.isLong(ds.Tables[0].Rows[0]["批号"].ToString().Replace(sYear + sPeriod + sDay, ""));
                    }
                    LIU += count + 1;
                    while (LIU.Length < LEN)  //如果流水号小于6位数前面补0
                    {
                        LIU = "0" + LIU;
                    }
                }
                else
                {
                    return "";
                }
                //拼接批号
                HBatchNo = sYear + sPeriod + sDay + LIU;
            }
            return HBatchNo;
        }
        #endregion
        #region ç›‘听通讯
        //开始监听按钮 ç‚¹å‡»äº‹ä»¶
        private void button_startListen_Click(object sender, EventArgs e)
        {
            try
            {
                if (grdMain.Rows.Count == 0 || grdMain.Rows[0].Cells[HMaterIDCol].Value == null || grdMain.Rows[0].Cells[HMaterIDCol].Value.ToString() == "" || grdMain.Rows[0].Cells[HMaterIDCol].Value.ToString() == "0")
                {
                    MessageBox.Show("请选择源单!");
                    return;
                }
                if (textBox_IPParams.Text == "")
                {
                    MessageBox.Show("请设置IP地址!");
                    return;
                }
                if (textBox_PortParams.Text == "")
                {
                    MessageBox.Show("请设置端口号!");
                    return;
                }
                if (comboBox_PrinterParams.Text == "")
                {
                    MessageBox.Show("请选择打印机!");
                    return;
                }
                if (textBox_PrintModelParams.Text == "")
                {
                    MessageBox.Show("请设置打印模板!");
                    return;
                }
                if (!judgePrinterIsConnected())
                {
                    MessageBox.Show("打印机处于离线状态,请检查!");
                    return;
                }
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPAddress iPAddress = IPAddress.Parse(textBox_IPParams.Text);
                IPEndPoint point = new IPEndPoint(iPAddress, Convert.ToInt32(textBox_PortParams.Text));
                socket.Connect(point);
                Thread thread = new Thread(ReceiveMess);
                thread.Start();
                MessageBox.Show("连接成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        //socket通讯:客户端接收信息
        private void ReceiveMess()
        {
            try
            {
                while (true)
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    int length = socket.Receive(buffer);
                    if (length == 0)
                    {
                        break;
                    }
                    else
                    {
                        string RMess = Encoding.UTF8.GetString(buffer, 0, length);
                        produceQty = ClsPub.isLong(RMess);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("接口异常,已关闭连接:" + ex.Message);
                socket.Close();
            }
        }
        //判断打印机是否可用
        private bool judgePrinterIsConnected()
        {
            //获取电脑连接的打印机列表
            ManagementObjectSearcher searcher = new
            ManagementObjectSearcher("SELECT * FROM Win32_Printer");
            //匹配设置的打印机,并判断是否可用
            string printerName = "";
            foreach (ManagementObject printer in searcher.Get())
            {
                printerName = printer["Name"].ToString().ToLower();
                if (printerName.Equals(comboBox_PrinterParams.Text.Replace("(默认)", "").ToLower()))
                {
                    string HPrinterName = printer.Properties["Name"].Value.ToString();                      //获取打印机名称
                    string HPrinterPort = printer.Properties["PortName"].Value.ToString();                  //获取打印机端口号
                    string HPrinterDefault = printer.Properties["Default"].Value.ToString();               //获取打印机是否是默认打印机
                    string HPrinterWorkStatus = printer.Properties["PrinterStatus"].Value.ToString();       //获取打印机工作状态(1:其他,2:未知,3:空闲,4:打印,5:预热,6:停止打印,7:脱机)
                    string HIsOffOnline = printer.Properties["WorkOffline"].Value.ToString();               //获取打印机是否离线
                    string isConnected = printer["WorkOffline"].ToString().ToLower();
                    if (isConnected.Equals("true"))
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        //根据通讯信息生成条码并打印
        private void timer2_Tick(object sender, EventArgs e)
        {
            for (int i = 0; i < produceQty; i++)
            {
                //生成条码
                this.Sub_SaveBill();
                //获取需要打印的数据
                Display();
                //设置打印模板,打印
                grdList.Rows[0].Cells[0].Value = "*";
                Report = new GridppReport();
                Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + textBox_PrintModelParams.Text + ".grf");  //here .
                Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
                Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
                Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd);
                if (comboBox_PrinterParams.Text != "")
                {
                    Report.Printer.PrinterName = comboBox_PrinterParams.Text.Replace("(默认)", "");
                }
                Report.Print(false);
                if (i == produceQty - 1)
                {
                    //重新加载该物料当天生成的条码
                    Display4();
                }
            }
            produceQty = 0;
        }
        //获取需要打印的数据并存放在子表grdList
        private void Display()
        {
            //设置档案列表选项卡表格数据
            DataSet DSet = oCn.RunProcReturn("select * from h_v_IF_BarCodeBillList Where HinterID=" + HInterID.ToString() + " order by HItemID", "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo);
            //生成首行标题
            if (DSet == null)
            {
                MessageBox.Show("没有返回任何结果,条码不存在!" + DBUtility.ClsPub.sExeReturnInfo);
                return;
            }
            //
            grdList.DataSource = DSet.Tables[0].DefaultView;
            //冻结
            int FrCol = 0;
            string s = "是";
            DBUtility.Xt_BaseBillFun.DisplayGrid(grdList, this.Name + "grdList", s, FrCol);
            //画线
            //GraphLine();
        }
        //获取工单当天物料生成的条码记录
        private void Display4()
        {
            if (grdMain.Rows.Count > 0)
            {
                //日期获取方式
                string sDate = dtpHDate.Value.ToShortDateString();                                                                                     //
                string sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                string sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                string sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                sDay = sDay.Substring(sDay.Length - 2, 2);
                sDate = "20" + sYear + "-" + sPeriod + "-" + sDay;
                //设置工单条码选项卡表格数据
                //string sql = "select * from h_v_IF_BarCodeBillList Where æºå•单号 = '" + grdMain.Rows[0].Cells[HBillNoCol].Value + "' and HMaterID = " + grdMain.Rows[0].Cells[HMaterIDCol].Value + " and HSTOCKORGID = " + HOrgID + " and CONVERT(varchar(100),条码日期, 23) = '" + sDate + "' order by æ¡ç ç¼–号";
                string sql = "select * from h_v_IF_BarCodeBillList Where æºå•单号 = '" + grdMain.Rows[0].Cells[HBillNoCol].Value + "' and HMaterID = " + grdMain.Rows[0].Cells[HMaterIDCol].Value + " and CONVERT(varchar(100),条码日期, 23) = '" + sDate + "' order by æ¡ç ç¼–号";
                DataSet DSet1 = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo);
                //生成首行标题
                if (DSet1 == null)
                {
                    return;
                }
                //
                grdBillBarCodeList.DataSource = DSet1.Tables[0].DefaultView;
                //冻结
                int FrCol = 0;
                string s = "是";
                DBUtility.Xt_BaseBillFun.DisplayGrid(grdBillBarCodeList, this.Name + "grdBillBarCodeList", s, FrCol);
                //画线
                //GraphLine();
                //
            }
        }
        #endregion
        #region åœæ­¢ç›‘听
        //停止监听按钮 ç‚¹å‡»äº‹ä»¶
        private void button_stopListen_Click(object sender, EventArgs e)
        {
            try
            {
                if (socket.Connected)
                {
                    socket.Close();
                }
                else
                {
                    MessageBox.Show("当前尚未连接");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
        #region ä¿å­˜é…ç½®ä¿¡æ¯æŒ‰é’®
        //配置信息保存按钮 ç‚¹å‡»äº‹ä»¶
        private void button_saveParams_Click(object sender, EventArgs e)
        {
            saveParams();
        }
        //写入配置参数
        private void saveParams()
        {
            //判断文件是否存在
            if (!File.Exists(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt"))
            {
                FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1);
                sw.WriteLine(textBox_IPParams.Text);//开始写入值
                sw.WriteLine(textBox_PortParams.Text);
                sw.WriteLine(comboBox_SourceNameParams.Text);
                sw.WriteLine(comboBox_PrinterParams.Text.Replace("(默认)", ""));
                sw.WriteLine(textBox_PrintModelParams.Text);
                sw.Close();
                fs1.Close();
            }
            else
            {
                FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1);
                sw.WriteLine(textBox_IPParams.Text);//开始写入值
                sw.WriteLine(textBox_PortParams.Text);
                sw.WriteLine(comboBox_SourceNameParams.Text);
                sw.WriteLine(comboBox_PrinterParams.Text);
                sw.WriteLine(textBox_PrintModelParams.Text);
                sw.Close();
                fs1.Close();
            }
            MessageBox.Show("保存成功!");
        }
        #endregion
        #region é…ç½®ä¿¡æ¯é‡ç½®
        //配置信息重置按钮点击 äº‹ä»¶
        private void button_resetParams_Click(object sender, EventArgs e)
        {
        }
        #endregion
        #region å›ºå®šä»£ç 
        //清空界面
        public void Sub_ClearBill()
        {
            ////表体清空
            //grdMain.Rows.Clear();
            //grdSub.Rows.Clear();
            //设置条码类型 ä¸‹æ‹‰åˆ—表
            cmbHBarCodeType.Items.Clear();
            cmbHBarCodeType.Items.Add("唯一条码");
            //设置源单类型 ä¸‹æ‹‰åˆ—表
            cmbSourceBillType.Items.Clear();
            cmbSourceBillType.Items.Add("生产订单");
            //根据系统参数获取对应的条码类型(夏宝电器、博日   ä»¥åŽä½¿ç”¨æ¡ç è§„则表)
            ClsXt_SystemParameter oClsXt_SystemParameter = new ClsXt_SystemParameter();
            string sCapName = oClsXt_SystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo);
            if (sCapName == "夏宝电器")
            {
                cmbHBarCodeType.Items.Add("内销机条码");
                cmbHBarCodeType.Items.Add("外销机条码");
                cmbHBarCodeType.Items.Add("半成品条码");
            }
            else if (sCapName == "博日科技")
            {
                cmbHBarCodeType.Items.Add("仪器外购件条码普通规则");
                cmbHBarCodeType.Items.Add("仪器外购件条码容器规则");
                cmbHBarCodeType.Items.Add("仪器成品条码规则");
                cmbHBarCodeType.Items.Add("试剂成品条码规则");
            }
            else if (sCapName == "中控")
            {
                cmbHBarCodeType.Items.Add("唯一条码");
            }
            else
            {
                //
                cmbHBarCodeType.Items.Add("唯一条码");
                cmbHBarCodeType.Items.Add("品种条码");
                cmbHBarCodeType.Items.Add("批次条码");
                //cmbHBarCodeType.Items.Add("托盘条码");
            }
            //源单类型
            if (sCapName == "中控")
            {
                cmbSourceBillType.Items.Add("生产汇报单");
                cmbSourceBillType.Items.Add("收料通知单");
            }
            else
            {
                cmbSourceBillType.Items.Add("生产订单");
                cmbSourceBillType.Items.Add("生产汇报单");
                cmbSourceBillType.Items.Add("采购订单");
                cmbSourceBillType.Items.Add("收料通知单");
                cmbSourceBillType.Items.Add("委外订单");
                cmbSourceBillType.Items.Add("工序汇报单");
                cmbSourceBillType.Items.Add("工序流转卡");
                cmbSourceBillType.Items.Add("退货通知单");
                cmbSourceBillType.Items.Add("其他入库单");
                cmbSourceBillType.Items.Add("直接调拨单");
                cmbSourceBillType.Items.Add("采购退料单");
                cmbSourceBillType.Items.Add("生产退料单");
                cmbSourceBillType.Items.Add("组装拆卸单");
            }
            //
            //初始化控件
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            //组织下拉列表
            //设置组织 ä¸‹æ‹‰åˆ—表 å¹¶è®¾ç½®å€¼
            DataSet Ds1 = oCn.RunProcReturn("select * from Xt_ORGANIZATIONS with(nolock) where HItemID=" + ClsPub.HOrgID, "Xt_ORGANIZATIONS", ref DBUtility.ClsPub.sExeReturnInfo);
            if (Ds1.Tables[0].Rows.Count != 0)
            {
                cmbHOrgID.Text = DBUtility.ClsPub.isStrNull(Ds1.Tables[0].Rows[0]["HName"]);
            }
            //打印机下拉列表
            //设置打印机 ä¸‹æ‹‰åˆ—表
            PrintDocument fPrintDocument = new PrintDocument();
            string defaultPrinter = fPrintDocument.PrinterSettings.PrinterName;
            comboBox_PrinterParams.Items.Clear();
@@ -271,17 +1269,19 @@
                string tmp = PrinterSettings.InstalledPrinters[i];
                if (tmp == defaultPrinter)
                {
                    tmp = tmp + "(默认)";
                    //tmp = tmp + "(默认)";
                }
                comboBox_PrinterParams.Items.Add(tmp);
            }
            //产线下拉列表
            DataSet DsSource = oCn.RunProcReturn("select * from Gy_Source where HUSEORGID =" + ClsPub.HOrgID, "Gy_Source");
            //设置产线 ä¸‹æ‹‰åˆ—表
            DataSet DsSource = oCn.RunProcReturn("select * from Gy_Source", "Gy_Source");
            comboBox_SourceNameParams.Items.Add("");
            if (DsSource != null)
            {
                comboBox_SourceNameParams.Items.Clear();
                comboBox_SourceNameParams.Items.Add("");
                for (int i = 0; i < DsSource.Tables[0].Rows.Count; i++)
                {
                    comboBox_SourceNameParams.Items.Add(DsSource.Tables[0].Rows[i]["HName"]);
@@ -293,7 +1293,7 @@
            readParams();
            //设置工单信息
            textBox_SourceName.Text = comboBox_SourceNameParams.Text;
            //设置制单信息
            txtHMaker.Text = ClsPub.CurUserName;
            txtHMakeDate.Text = "";
            txtHChecker.Text = "";
@@ -304,12 +1304,422 @@
            txtHDeleteDate.Text = "";
            txtHUpDater.Text = "";
            txtHUpDateDate.Text = "";
            //设置子表
            initGrid();
            grdList.DataSource = null;
            grdBillBarCodeList.DataSource = null;
            tabControl1.SelectedIndex = 3;
        }
        //读取配置文件
        private void readParams()
        {
            if (File.Exists(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt"))
            {
                //读取文件值并显示到窗体
                FileStream fs = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Open, FileAccess.ReadWrite);
                StreamReader sr = new StreamReader(fs);
                string line = sr.ReadLine();
                int curLine = 0;
                while (line != null)
                {
                    if (++curLine == 1)
                    {
                        textBox_IPParams.Text = line;
                    }
                    else if (curLine == 2)
                    {
                        textBox_PortParams.Text = line;
                    }
                    else if (curLine == 3)
                    {
                        for (int i = 0; i < comboBox_SourceNameParams.Items.Count; i++)
                        {
                            if (comboBox_SourceNameParams.Items[i].ToString() == line)
                            {
                                comboBox_SourceNameParams.Text = line;
                            }
                        }
                        if (comboBox_SourceNameParams.Text == "")
                        {
                            comboBox_SourceNameParams.Items.Add(line);
                            comboBox_SourceNameParams.Text = line;
                        }
                    }
                    else if (curLine == 4)
                    {
                        for (int i = 0; i < comboBox_PrinterParams.Items.Count; i++)
                        {
                            if (comboBox_PrinterParams.Items[i].ToString() == line)
                            {
                                comboBox_PrinterParams.Text = line;
                            }
                        }
                    }
                    else if (curLine == 5)
                    {
                        textBox_PrintModelParams.Text = line;
                    }
                    else
                    {
                    }
                    line = sr.ReadLine();
                }
                sr.Close();
                fs.Close();
            }
        }
        //初始化GRID
        private void initGrid()
        {
            //
            grdMain.RowCount = 0;
            grdSub.RowCount = 0;
            grdMain.ColumnCount = 68;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdMain, this.Name);
            grdMain.Columns[HSnoCol].HeaderText = "序号";
            grdMain.Columns[HMainIDCol].HeaderText = "源单主ID";
            grdMain.Columns[HSubIDCol].HeaderText = "源单子ID";
            grdMain.Columns[HBillNoCol].HeaderText = "源单单号";
            grdMain.Columns[HBillTypeCol].HeaderText = "单据类型";
            grdMain.Columns[HMaterIDCol].HeaderText = "物料ID";
            grdMain.Columns[HMaterNumberCol].HeaderText = "物料代码";
            grdMain.Columns[HMaterNameCol].HeaderText = "物料名称";
            grdMain.Columns[HMaterModelCol].HeaderText = "规格型号";
            grdMain.Columns[HModelCol].HeaderText = "自定义规格";
            grdMain.Columns[HPinfanCol].HeaderText = "品番";
            grdMain.Columns[HPinfanBarCodeCol].HeaderText = "HPinfanBarCode";
            grdMain.Columns[HAuxPropIDCol].HeaderText = "辅助属性ID";
            grdMain.Columns[HAuxPropNumberCol].HeaderText = "辅助属性代码";
            grdMain.Columns[HAuxPropNameCol].HeaderText = "辅助属性名称";
            grdMain.Columns[HUnitIDCol].HeaderText = "计量单位ID";
            grdMain.Columns[HUnitNumberCol].HeaderText = "计量单位代码";
            grdMain.Columns[HUnitNameCol].HeaderText = "计量单位名称";
            grdMain.Columns[HBarCodeTypeCol].HeaderText = "条码类型";
            grdMain.Columns[HBatchManagerCol].HeaderText = "是否启用批次";
            grdMain.Columns[HBatchNoCol].HeaderText = "批号";
            grdMain.Columns[HGiveAwayFlagCol].HeaderText = "是否赠品";
            grdMain.Columns[HQtyCol].HeaderText = "数量";
            grdMain.Columns[HMinQtyCol].HeaderText = "最小包装数";
            grdMain.Columns[HPackQtyCol].HeaderText = "外箱数";
            grdMain.Columns[HBQtyCol].HeaderText = "箱数";
            grdMain.Columns[HSupIDCol].HeaderText = "供应商ID";
            grdMain.Columns[HSupNumberCol].HeaderText = "供应商代码";
            grdMain.Columns[HSupNameCol].HeaderText = "供应商";
            grdMain.Columns[HDeptIDCol].HeaderText = "车间ID";
            grdMain.Columns[HDeptNumberCol].HeaderText = "车间代码";
            grdMain.Columns[HDeptNameCol].HeaderText = "车间";
            grdMain.Columns[HWhIDCol].HeaderText = "仓库ID";
            grdMain.Columns[HWhNumberCol].HeaderText = "仓库代码";
            grdMain.Columns[HWhNameCol].HeaderText = "仓库";
            grdMain.Columns[HSPIDCol].HeaderText = "仓位ID";
            grdMain.Columns[HSPNumberCol].HeaderText = "仓位代码";
            grdMain.Columns[HSPNameCol].HeaderText = "仓位";
            grdMain.Columns[HInstructNoCol].HeaderText = "指令单号";
            grdMain.Columns[HSeOrderBillNoCol].HeaderText = "销售订单号";
            grdMain.Columns[HSeOrderSEQCol].HeaderText = "销售订单行号";
            grdMain.Columns[HDateCol].HeaderText = "进料日期";
            grdMain.Columns[HRemarkCol].HeaderText = "备注";
            grdMain.Columns[HMTONoCol].HeaderText = "计划跟踪号";
            grdMain.Columns[HCusIDCol].HeaderText = "客户ID";
            grdMain.Columns[HCusNumberCol].HeaderText = "客户代码";
            grdMain.Columns[HCusNameCol].HeaderText = "客户";
            grdMain.Columns[HCusTypeCol].HeaderText = "客户型号";
            grdMain.Columns[HEndDateCol].HeaderText = "计划完工日期";
            grdMain.Columns[HSourceIDCol].HeaderText = "生产线ID";
            grdMain.Columns[HSourceNumberCol].HeaderText = "生产线代码";
            grdMain.Columns[HSourceNameCol].HeaderText = "生产线";
            grdMain.Columns[HShowDateCol].HeaderText = "日期";
            grdMain.Columns[HInnerBillNoCol].HeaderText = "内部采购订单号";
            grdMain.Columns[HMakerCol].HeaderText = "制单人";
            grdMain.Columns[HProduceDateCol].HeaderText = "生产日期";
            grdMain.Columns[HExpiryDateCol].HeaderText = "有效期至";
            grdMain.Columns[HISKFPERIODCol].HeaderText = "是否启用保质期";
            grdMain.Columns[HEXPUNITCol].HeaderText = "保质期单位";
            grdMain.Columns[HEXPPERIODCol].HeaderText = "保质期";
            ////
            //格式化
            grdMain.Columns[HTagCol].Visible = false;                           //隐藏列
            grdMain.Columns[HMainIDCol].Visible = false;
            grdMain.Columns[HSubIDCol].Visible = false;
            grdMain.Columns[HBillTypeCol].Visible = false;
            grdMain.Columns[HMaterIDCol].Visible = false;
            grdMain.Columns[HModelCol].Visible = false;
            //grdMain.Columns[HBatchNoCol].Visible = false;
            grdMain.Columns[HAuxPropIDCol].Visible = false;
            //grdMain.Columns[HAuxPropNumberCol].Visible = false;
            //grdMain.Columns[HAuxPropNameCol].Visible = false;
            grdMain.Columns[HUnitIDCol].Visible = false;
            grdMain.Columns[HinitQtyCol].Visible = false;
            grdMain.Columns[HSupIDCol].Visible = false;
            grdMain.Columns[HSupNumberCol].Visible = false;
            grdMain.Columns[HSupNameCol].Visible = false;
            grdMain.Columns[HDeptIDCol].Visible = false;
            grdMain.Columns[HDeptNumberCol].Visible = false;
            grdMain.Columns[HDeptNameCol].Visible = false;
            grdMain.Columns[HWhIDCol].Visible = false;
            grdMain.Columns[HWhNumberCol].Visible = false;
            grdMain.Columns[HWhNameCol].Visible = false;
            grdMain.Columns[HSPIDCol].Visible = false;
            grdMain.Columns[HSPNumberCol].Visible = false;
            grdMain.Columns[HSPNameCol].Visible = false;
            grdMain.Columns[HSourceInterIDCol].Visible = false;
            grdMain.Columns[HSourceEntryIDCol].Visible = false;
            grdMain.Columns[HSourceBillNoCol].Visible = false;
            grdMain.Columns[HSourceBillTypeCol].Visible = false;
            grdMain.Columns[HInstructIDCol].Visible = false;
            grdMain.Columns[HInstructNoCol].Visible = false;
            grdMain.Columns[HSeOrderBillIDCol].Visible = false;
            //grdMain.Columns[HSeOrderBillNoCol].Visible = false;
            grdMain.Columns[HBarCodeTypeCol].Visible = false;
            grdMain.Columns[HBatchManagerCol].Visible = false;
            //grdMain.Columns[HDateCol].Visible = false;
            grdMain.Columns[HPinfanCol].Visible = false;
            grdMain.Columns[HPinfanBarCodeCol].Visible = false;
            grdMain.Columns[HCusIDCol].Visible = false;
            //grdMain.Columns[HCusNumberCol].Visible = false;
            //grdMain.Columns[HCusNameCol].Visible = false;
            grdMain.Columns[HCusTypeCol].Visible = false;
            grdMain.Columns[HEndDateCol].Visible = false;
            grdMain.Columns[HSourceIDCol].Visible = false;
            grdMain.Columns[HSourceNumberCol].Visible = false;
            grdMain.Columns[HSourceNameCol].Visible = false;
            //grdMain.Columns[HProduceDateCol].Visible = false;
            //grdMain.Columns[HExpiryDateCol].Visible = false;
            grdMain.Columns[HISKFPERIODCol].Visible = false;
            grdMain.Columns[HEXPUNITCol].Visible = false;
            grdMain.Columns[HEXPPERIODCol].Visible = false;
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HMaterNumberCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HUnitNumberCol.ToString() +
                                "," + HSeOrderBillNoCol.ToString() +
                                "," + HBatchNoCol.ToString() +
                                "," + HCusNumberCol.ToString() +
                                "," + HPackQtyCol.ToString() +
                                "," + HRemarkCol.ToString();
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //设置特殊列
            for (int i = 0; i < grdMain.Rows.Count; i++)
            {
                //网格打勾
                DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                oCell.ThreeState = false;
                oCell.Value = 0;
                oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdMain.Rows[i].Cells[HGiveAwayFlagCol] = oCell;
            }
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            //----------------------------
            grdSub.ColumnCount = 65;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdSub, this.Name);
            grdSub.Columns[HSelectCol].HeaderText = "选择";
            grdSub.Columns[HTMCol].HeaderText = "条码编号";
            grdSub.Columns[HBarCodeType2Col].HeaderText = "条码类型";
            grdSub.Columns[HSno2Col].HeaderText = "序号";
            grdSub.Columns[HMaterID2Col].HeaderText = "物料ID";
            grdSub.Columns[HMaterNumber2Col].HeaderText = "物料代码";
            grdSub.Columns[HMaterName2Col].HeaderText = "物料名称";
            grdSub.Columns[HMaterModel2Col].HeaderText = "规格型号";
            grdSub.Columns[HModel2Col].HeaderText = "自定义规格";
            grdSub.Columns[HAuxPropID2Col].HeaderText = "辅助属性ID";
            grdSub.Columns[HAuxPropNumber2Col].HeaderText = "辅助属性代码";
            grdSub.Columns[HAuxPropName2Col].HeaderText = "辅助属性";
            grdSub.Columns[HPinfan2Col].HeaderText = "品番";
            grdSub.Columns[HPinfanBarCode2Col].HeaderText = "HPinfanBarCode";
            grdSub.Columns[HBatchNo2Col].HeaderText = "批号";
            grdSub.Columns[HGiveAwayFlag2Col].HeaderText = "是否赠品";
            grdSub.Columns[HUnitID2Col].HeaderText = "计量单位ID";
            grdSub.Columns[HUnitNumber2Col].HeaderText = "计量单位代码";
            grdSub.Columns[HUnitName2Col].HeaderText = "计量单位";
            grdSub.Columns[HQty2Col].HeaderText = "数量";
            grdSub.Columns[HWeiCol].HeaderText = "尾数";
            grdSub.Columns[HPrintCol].HeaderText = "打印次数";
            grdSub.Columns[HSourceInterID2Col].HeaderText = "源单主ID";
            grdSub.Columns[HSourceEntryID2Col].HeaderText = "源单子ID";
            grdSub.Columns[HSourceBillNo2Col].HeaderText = "源单单号";
            grdSub.Columns[HSourceBillType2Col].HeaderText = "源单类型";
            grdSub.Columns[HSeOrderBillNo2Col].HeaderText = "销售订单号";
            grdSub.Columns[HSeOrderSEQ2Col].HeaderText = "销售订单行号";
            grdSub.Columns[HBarcodeNoCol].HeaderText = "托号";
            grdSub.Columns[HBarcodeQtysCol].HeaderText = "总托数";
            grdSub.Columns[HSupID2Col].HeaderText = "供应商ID";
            grdSub.Columns[HSupNumber2Col].HeaderText = "供应商代码";
            grdSub.Columns[HSupName2Col].HeaderText = "供应商";
            grdSub.Columns[HDeptID2Col].HeaderText = "车间ID";
            grdSub.Columns[HDeptNumber2Col].HeaderText = "车间代码";
            grdSub.Columns[HDeptName2Col].HeaderText = "车间";
            grdSub.Columns[HWhID2Col].HeaderText = "仓库ID";
            grdSub.Columns[HWhNumber2Col].HeaderText = "仓库代码";
            grdSub.Columns[HWhName2Col].HeaderText = "仓库";
            grdSub.Columns[HSPID2Col].HeaderText = "仓位ID";
            grdSub.Columns[HSPNumber2Col].HeaderText = "仓位代码";
            grdSub.Columns[HSPName2Col].HeaderText = "仓位";
            grdSub.Columns[HInstructNo2Col].HeaderText = "指令单号";
            grdSub.Columns[HDate2Col].HeaderText = "进料日期";
            grdSub.Columns[HRemark2Col].HeaderText = "备注";
            grdSub.Columns[HMTONo2Col].HeaderText = "计划跟踪号";
            grdSub.Columns[HCusID2Col].HeaderText = "客户ID";
            grdSub.Columns[HCusNumber2Col].HeaderText = "客户代码";
            grdSub.Columns[HCusName2Col].HeaderText = "客户";
            grdSub.Columns[HCusType2Col].HeaderText = "客户型号";
            grdSub.Columns[HEndDate2Col].HeaderText = "计划完工日期";
            grdSub.Columns[HSourceID2Col].HeaderText = "生产线ID";
            grdSub.Columns[HSourceNumber2Col].HeaderText = "生产线代码";
            grdSub.Columns[HSourceName2Col].HeaderText = "生产线";
            grdSub.Columns[HShowDate2Col].HeaderText = "日期";
            grdSub.Columns[HInnerBillNo2Col].HeaderText = "内部采购订单号";
            grdSub.Columns[HMaker2Col].HeaderText = "制单人";
            grdSub.Columns[HEntryID2Col].HeaderText = "行号";
            grdSub.Columns[HProduceDate2Col].HeaderText = "生产日期";
            grdSub.Columns[HExpiryDate2Col].HeaderText = "有效期至";
            grdSub.Columns[HISKFPERIOD2Col].HeaderText = "是否启用保质期";
            grdSub.Columns[HEXPUNIT2Col].HeaderText = "保质期单位";
            grdSub.Columns[HEXPPERIOD2Col].HeaderText = "保质期";
            //格式化
            grdSub.Columns[HMaterID2Col].Visible = false;
            grdSub.Columns[HModel2Col].Visible = false;
            grdSub.Columns[HAuxPropID2Col].Visible = false;
            //grdSub.Columns[HAuxPropNumber2Col].Visible = false;
            //grdSub.Columns[HAuxPropName2Col].Visible = false;
            grdSub.Columns[HUnitID2Col].Visible = false;
            grdSub.Columns[HPrintCol].Visible = false;
            grdSub.Columns[HSourceInterID2Col].Visible = false;
            grdSub.Columns[HSourceEntryID2Col].Visible = false;
            grdSub.Columns[HSourceBillType2Col].Visible = false;
            grdSub.Columns[HDeptID2Col].Visible = false;
            grdSub.Columns[HDeptNumber2Col].Visible = false;
            grdSub.Columns[HDeptName2Col].Visible = false;
            //grdSub.Columns[HDate2Col].Visible = false;
            grdSub.Columns[HBarCodeType2Col].Visible = false;
            //grdSub.Columns[HBatchNo2Col].Visible = false;
            grdSub.Columns[HWeiCol].Visible = false;
            grdSub.Columns[HBarcodeNoCol].Visible = false;
            grdSub.Columns[HBarcodeQtysCol].Visible = false;
            grdSub.Columns[HSupID2Col].Visible = false;
            grdSub.Columns[HSupNumber2Col].Visible = false;
            grdSub.Columns[HSupName2Col].Visible = false;
            grdSub.Columns[HWhID2Col].Visible = false;
            grdSub.Columns[HWhNumber2Col].Visible = false;
            grdSub.Columns[HWhName2Col].Visible = false;
            grdSub.Columns[HSPID2Col].Visible = false;
            grdSub.Columns[HSPNumber2Col].Visible = false;
            grdSub.Columns[HSPName2Col].Visible = false;
            grdSub.Columns[HInstructID2Col].Visible = false;
            grdSub.Columns[HInstructNo2Col].Visible = false;
            grdSub.Columns[HSeOrderBillID2Col].Visible = false;
            //grdSub.Columns[HSeOrderBillNo2Col].Visible = false;
            grdSub.Columns[HPinfan2Col].Visible = false;
            grdSub.Columns[HPinfanBarCode2Col].Visible = false;
            grdSub.Columns[HCusID2Col].Visible = false;
            //grdSub.Columns[HCusNumber2Col].Visible = false;
            //grdSub.Columns[HCusName2Col].Visible = false;
            grdSub.Columns[HCusType2Col].Visible = false;
            grdSub.Columns[HEndDate2Col].Visible = false;
            grdSub.Columns[HSourceID2Col].Visible = false;
            grdSub.Columns[HSourceNumber2Col].Visible = false;
            grdSub.Columns[HSourceName2Col].Visible = false;
            //设置特殊列
            for (int i = 0; i < grdSub.Rows.Count; i++)
            {
                //网格打勾
                //是否赠品
                DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                oCell.ThreeState = false;
                oCell.Value = 0;
                oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                //是否启用保质期
                DataGridViewCheckBoxCell oCell2 = new DataGridViewCheckBoxCell();
                oCell2.ThreeState = false;
                oCell2.Value = 0;
                oCell2.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdSub.Rows[i].Cells[HISKFPERIOD2Col] = oCell2;
            }
            DBUtility.Xt_BaseBillFun.GetGrid(grdMain, this.Name);
            DBUtility.Xt_BaseBillFun.GetGrid(grdSub, this.Name + "grdSub");
            grdSub.SelectionMode = DataGridViewSelectionMode.FullRowSelect;                     //选行模式
            ////
            DBUtility.Xt_BaseBillFun.initGridList(grdList, this.Name + "grdList");
            DBUtility.Xt_BaseBillFun.initGridList(grdBillBarCodeList, this.Name + "grdBillBarCodeList");
            ////
        }
        #endregion
        #region æ‰“印相关
        //打印结束后回填条码打印次数
        private void ReportPrintEnd()
        {
            if (UpdatePrintQtyCtl == "Y")
            {
                oBar.Set_UpdatePrintQty_SD(HInterID);
            }
        }
        //填入单据表头信息
        private void ReportBeforePostRecord()//
        {
            try
            {
                //Report.FieldByName("物料代码").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterNumber2Col].Value);
                //Report.FieldByName("物料名称").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterName2Col].Value);
                //Report.FieldByName("规格型号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterModel2Col].Value);
                ////Report.FieldByName("自定义规格").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HModel2Col].Value);
                //Report.FieldByName("条码编号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HTMCol].Value);
                //Report.FieldByName("数量").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HQty2Col].Value);
                //Report.FieldByName("源单单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSourceBillNoCol].Value);
                //Report.FieldByName("销售订单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSeOrderBillNo2Col].Value);
                //Report.FieldByName("生产车间").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HDeptName2Col].Value);
                //Report.FieldByName("备注").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HRemark2Col].Value);
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表头:" + e.Message);
            }
        }
        //填入单据表体信息
        private void ReportFetchRecordByDataTable()
        {
            try
            {
                DataTable ds = new DataTable();
                BLL.Utility.FillRecordToReport_Sel(Report, grdList, ds, Fun_GetCol("选择"));
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表体:" + e.Message);
            }
        }
        private Int32 Fun_GetCol(string sCol)
        {
            return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdList);
        }
        #endregion
        #endregion
        #region å›ºå®šä»£ç 
        //保存列宽
        private void bclk_Click(object sender, EventArgs e)
@@ -339,14 +1749,7 @@
            DBUtility.Xt_BaseBillFun.DelRow(oSumGrid);
        }
        //保存按钮
        private void bc_Click(object sender, EventArgs e)
        {
            this.Sub_SaveBill();
            Display();
            Display4();
        }
        //重置按纽
        private void cz_Click(object sender, EventArgs e)
@@ -644,1367 +2047,13 @@
        #region  è¯»å†™ç±»
        //单据完整性判断          æœªå®Œæˆ
        private bool Sub_AllowSave()
        {
            //明细表是否为零行
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
            {
                if (!IsNullRow(i))
                {
                    b = true;
                    break;
                }
            }
            if (b == false)
            {
                MessageBox.Show("明细行不存在!", "提示");
                return false;
            }
            string sHRemark = "";
            for (int j = 0; j < grdMain.Rows.Count; j++)
            {
                long HSno = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HSnoCol].Value);                  // åºå·
                string HBarCodeType = cmbHBarCodeType.Text;                                                  // æ¡ç ç±»åž‹
                string HSourceBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBillNoCol].Value); // æºå•单号
                long HMaterID = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HMaterIDCol].Value);          // ç‰©æ–™å†…码
                string HBatchNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBatchNoCol].Value);     // æ‰¹å·
                long HAuxPropID = DBUtility.ClsPub.isLong(grdMain.Rows[j].Cells[HAuxPropIDCol].Value);      // è¾…助属性ID
                double HSourceQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HinitQtyCol].Value);     // æºå•数量
                double HQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);               // æ•°é‡
                double HMinQty = DBUtility.ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);          // æœ€å°åŒ…装数
                if (HMaterID != 0)
                {
                    DataSet oDsCheck = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_AddCheck " + HSno.ToString() + ",'" + HBarCodeType + "','" + HSourceBillNo + "'," + HMaterID.ToString() + ",'" + HBatchNo + "'," + HAuxPropID.ToString() + "," + HSourceQty.ToString() + "," + HQty.ToString() + "," + HMinQty.ToString() + "," + HOrgID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_AddCheck");
                    //
                    if (oDsCheck == null && oDsCheck.Tables[0].Rows.Count == 0)
                    {
                        MessageBox.Show("条码生成完整性判断错误!");
                        return false;
                    }
                    else if (DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0][0]) == "1")
                    {
                        sHRemark = sHRemark + DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0]["HRemark"]);
                    }
                    else if (DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HExpiryDateCol].Value) == "")
                    {
                        if (DBUtility.ClsPub.isBool(oDsCheck.Tables[0].Rows[0]["HISKFPERIOD"]))
                        {
                            DateTime HProduceDate;  //生产日期
                            string HEXPUNIT;        //保质期单位
                            int HEXPPERIOD;         //保质期
                            HProduceDate = dtpHDate.Value;
                            HEXPUNIT = DBUtility.ClsPub.isStrNull(oDsCheck.Tables[0].Rows[0]["HEXPUNIT"]);
                            HEXPPERIOD = DBUtility.ClsPub.isInt(oDsCheck.Tables[0].Rows[0]["HEXPPERIOD"]);
                            grdMain.Rows[j].Cells[HISKFPERIODCol].Value = 1;
                            grdMain.Rows[j].Cells[HEXPUNITCol].Value = HEXPUNIT;
                            grdMain.Rows[j].Cells[HEXPPERIODCol].Value = HEXPPERIOD.ToString();
                            grdMain.Rows[j].Cells[HProduceDateCol].Value = HProduceDate.ToShortDateString();
                            if (HEXPUNIT == "Y")
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddYears(HEXPPERIOD).ToShortDateString();
                            }
                            else if (HEXPUNIT == "M")
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddMonths(HEXPPERIOD).ToShortDateString();
                            }
                            else
                            {
                                grdMain.Rows[j].Cells[HExpiryDateCol].Value = HProduceDate.AddDays(HEXPPERIOD).ToShortDateString();
                            }
                        }
                        else
                        {
                            grdMain.Rows[j].Cells[HISKFPERIODCol].Value = 0;
                            grdMain.Rows[j].Cells[HEXPUNITCol].Value = "";
                            grdMain.Rows[j].Cells[HEXPPERIODCol].Value = 0;
                            grdMain.Rows[j].Cells[HProduceDateCol].Value = "";
                            grdMain.Rows[j].Cells[HExpiryDateCol].Value = "";
                        }
                    }
                }
            }
            if (sHRemark != "")
            {
                MessageBox.Show(sHRemark);
                return false;
            }
            return true;
        }
        //保存单据
        private bool Sub_SaveBill()
        {
            //获取内码
            HInterID = DBUtility.ClsPub.CreateBillID_Prod(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
            ////若MAINDI重复则重新获取
            //if (BaseBill.IsExistMainID(ref DBUtility.ClsPub.sExeReturnInfo, HInterID, Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew))
            //{
            //    HInterID = DBUtility.ClsPub.CreateBillID(ModName, ref DBUtility.ClsPub.sExeReturnInfo);
            //}
            //
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            HOrgNumber = "";
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
                HOrgNumber = DBUtility.ClsPub.isStrNull(oClsGy_ORGANIZATIONS_View.omodel.HNumber);
            }
            if (HOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return false;
            }
            lblCaption.Focus();
            if (!Sub_AllowSave())//单据完整性判断
            {
                return false;
            }
            //bc.Enabled = false;
            if (cmbHBarCodeType.Text == "仪器成品条码规则")
            {
                SaveBarCode_bori(); //物料编码+序列号+生产日期
            }
            else
            {
                SaveBarCode();
            }
            return true;
        }
        //生成条码
        private void SaveBarCode()
        {
            grdSub.Rows.Clear();
            int LSHlen = 6;             //流水号长度
            int SumLen = 10;            //总长度
            string TM = "";             //条码
            string HNumber = "";        //物料内码
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            Int64 HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            Int64 LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
            string sPeriod = "";        //月
            string sDay = "";           //日
            string HBatchNo = "";       //批次
            string HYasuoji = "";       //压缩机
            string HModelName = "";       //机型
            string HICMOBillNo = "";       //源单号
            string HBarCodeBatchNo = "";       //条码批次号
            string HBarCodeDate = "";         //条码日期
            int k = 0;
            Int64 n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
            string sSourceBillNo = "";       //源单号
            string sSourceEntryID = "";       //行号(源单子ID)
            DataSet Ds;
            //Ds = oCn.RunProcReturn("exec GetLSH '" + ClsPub.GetServerDate(0) + "'", "GetLSH");
            //LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
            for (int j = 0; j < grdMain.Rows.Count; j++)
            {
                if (ClsPub.isLong(grdMain.Rows[j].Cells[HMaterIDCol].Value) != 0)
                {
                    HNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterIDCol].Value);
                    HMaterNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterNumberCol].Value);
                    HBatchNo = ClsPub.isStrNull(grdMain.Rows[j].Cells[HBatchNoCol].Value);
                    //日期获取方式
                    sDate = dtpHDate.Value.ToShortDateString();
                    //
                    if (cmbHBarCodeType.Text == "仪器外购件条码普通规则" || cmbHBarCodeType.Text == "仪器外购件条码容器规则") //单据日期(收料通知单)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HDateCol].Value);
                    }
                    else if (cmbHBarCodeType.Text == "试剂成品条码规则")// å¤±æ•ˆæ—¥æœŸï¼ˆç”Ÿäº§è®¢å•)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HEndDateCol].Value);
                    }
                    else if (CampanyName == "夏宝电器")// æ—¥æœŸï¼šç”Ÿäº§è®¢å• æ¡ç æ—¥æœŸ
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HDateCol].Value);
                    }
                    HYasuoji = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HPinfanCol].Value); //压缩机代码(夏宝电器)
                    HModelName = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HCusTypeCol].Value); //机型(夏宝电器)
                    HICMOBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSourceBillNoCol].Value); //生产订单号(夏宝电器)
                    HBarCodeBatchNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HPinfanBarCodeCol].Value); //条码批次号(夏宝电器)
                    HBarCodeDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSupNumberCol].Value); //条码日期(夏宝电器)
                    //
                    sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                    sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                    sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                    sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                    sDay = sDay.Substring(sDay.Length - 2, 2);
                    //==================================
                    if (cmbHBarCodeType.Text == "唯一条码")
                    {
                        if (CampanyName == "卓力") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        {
                            //条码前缀 = ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                            sTMNumber = HNumber + sYear + sPeriod + sDay;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "飞龙")
                        {
                            string HWorksNumber = "";
                            HWorksNumber = cmbHWorksNumber.Text;
                            if (HWorksNumber == "")
                            {
                                MessageBox.Show("工厂代码不能为空!");
                                return;
                            }
                            //条码前缀 = å·¥åŽ‚ä»£ç  + ç‰©æ–™å†…码 + æ—¥æœŸ
                            sTMNumber = HWorksNumber + HNumber + sYear + sPeriod + sDay;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "中控")
                        {
                            sSourceBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBillNoCol].Value);
                            sSourceEntryID = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSubIDCol].Value);
                            if (sSourceBillNo == "")
                            {
                                //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                                sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                                Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                            }
                            else
                            {
                                //条码 = æºå•单号 + ç‰©æ–™ID + è¡Œå·
                                sTMNumber = sSourceBillNo + HNumber + sSourceEntryID;
                            }
                        }
                        else  //通用方法
                        {
                            //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                            sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                    }
                    else if (cmbHBarCodeType.Text == "品种条码")
                    {
                        if (CampanyName == "五云") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        {
                            TM = HNumber + ";" + DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMTONoCol].Value);
                        }
                        else
                        {
                            TM = HOrgNumber + HNumber;
                        }
                    }
                    else if (cmbHBarCodeType.Text == "批次条码")
                    {
                        TM = HOrgNumber + HNumber + HBatchNo;
                    }//博日特殊处理
                    else if (cmbHBarCodeType.Text == "序列码")
                    {
                        //条码规则: GX+物料内码+年年月月日日+5位流水号
                        LSHlen = 5;
                        //条码前缀 = GX+物料内码+年年月月日日
                        sTMNumber = "GX" + HNumber + sYear + sPeriod + sDay;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                    }
                    else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则" || cmbHBarCodeType.Text == "仪器外购件条码容器规则")
                    {
                        //物料编码+单据日期(YYMMDD)+流水4位
                        sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                    }
                    else if (cmbHBarCodeType.Text == "仪器成品条码规则") //另外处理了
                    {
                        //物料编码+序列号+生产日期
                        //sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
                        //Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        //                                                                                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        //LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                    }
                    else if (cmbHBarCodeType.Text == "试剂成品条码规则")
                    {
                        //物料编码+生产批号+流水号6位-
                        sTMNumber = HMaterNumber + HBatchNo;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 6;
                    }
                    else if (cmbHBarCodeType.Text == "内销机条码")
                    {
                        //制造本部1位(默认1)+机型代码5位()+å¹´2位+月1位(A、B、C代替10月份)
                        //+日2位+条码批次码2位+压缩机代码1位+00+流水号4位+校验码(默认0)
                        sTMNumber = "1" + HModelName + HBarCodeDate + HBarCodeBatchNo + HYasuoji + "00";
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                        if (sTMNumber.Length != 16 && sTMNumber.Length != 15)
                        {
                            MessageBox.Show("条码长度不够15或16位,是否数据不全!制造本部1位:[0] + æœºåž‹ä»£ç 5位:[" + HModelName + "] + å¹´æœˆæ—¥4或5位:[" + HBarCodeDate + "] + æ‰¹æ¬¡å·2位:[" + HBarCodeBatchNo + "]+ åŽ‹ç¼©æœº1位:[" + HYasuoji + "]+00 ; ");
                            return;
                        }
                    }
                    else if (cmbHBarCodeType.Text == "外销机条码")
                    {
                        //物料代码11位+å¹´2位+月1位(A、B、C代替10月份)+日2位+批次2位+流水号4位
                        //sTMNumber = HMaterNumber.Replace(Convert.ToChar("."),Convert.ToChar("")) + HBarCodeDate + HBarCodeBatchNo;
                        sTMNumber = HMaterNumber.Replace(".", "") + HBarCodeDate + HBarCodeBatchNo;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                        if (sTMNumber.Length != 18 && sTMNumber.Length != 17)
                        {
                            MessageBox.Show("条码长度不够17或18位,是否数据不全!物料代码11位:[" + HMaterNumber.Replace(".", "") + "]+年月日4或5位:[" + HBarCodeDate + "]+批次号2位:[" + HBarCodeBatchNo + "];");
                            return;
                        }
                    }
                    else if (cmbHBarCodeType.Text == "半成品条码")
                    {
                        //生产订单号+4位流水号
                        sTMNumber = HICMOBillNo;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                                                                                                    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                    }
                    //else if (cmbHBarCodeType.Text == "托盘条码")
                    //{
                    //    TM = HOrgNumber + HNumber + LSH2;
                    //}
                    else
                    {
                        MessageBox.Show("错误的条码类型,不能生成条码!");
                        return;
                    }
                    Int64 HBQty2 = 0;              //箱数
                    HBQty2 = ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HBQty = HBQty + ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HMinQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);
                    HSumQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);
                    n = 0;
                    int nn = 0;
                    for (int i = k; i < HBQty; i++)
                    {
                        if (HSumQty - HMinQty > 0)
                        {
                            WeiShu = "";
                            HSumQty = HSumQty - HMinQty;
                        }
                        else
                        {
                            if (HSumQty == HMinQty)
                            {
                                WeiShu = "";
                            }
                            else
                            {
                                WeiShu = "尾数";
                            }
                            HMinQty = HSumQty;
                        }
                        //
                        LSH = LSH + 1;
                        LSH2 = LSH.ToString();
                        while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                        {
                            LSH2 = "0" + LSH2;
                        }
                        if (cmbHBarCodeType.Text == "唯一条码")
                        {
                            if (CampanyName == "中控")
                            {
                                if (sSourceBillNo == "")
                                {
                                    //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                                    TM = sTMNumber + LSH2;
                                }
                                else
                                {
                                    if (HBQty2 > 1)
                                    {
                                        MessageBox.Show("生产汇报单、收料通知单生成条码时,箱数不能大于1!");
                                        bc.Enabled = true;
                                        return;
                                    }
                                    //条码编号 = æ¡ç å‰ç¼€
                                    TM = sTMNumber;
                                }
                            }
                            else
                            {
                                //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                                TM = sTMNumber + LSH2;
                            }
                        }
                        else if (cmbHBarCodeType.Text == "序列码")
                        {
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            TM = sTMNumber + LSH2;
                        }
                        else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则" || cmbHBarCodeType.Text == "仪器外购件条码容器规则" || cmbHBarCodeType.Text == "试剂成品条码规则"
                            || cmbHBarCodeType.Text == "半成品条码" || cmbHBarCodeType.Text == "外销机条码")
                        {
                            TM = sTMNumber + LSH2;
                        }
                        else if (cmbHBarCodeType.Text == "内销机条码")
                        {
                            TM = sTMNumber + LSH2 + "0";
                        }
                        //
                        if (i + 1 > grdSub.Rows.Count)
                        {
                            grdSub.RowCount = grdSub.RowCount + 1;
                        }
                        grdSub.Rows[i].Cells[HSno2Col].Value = ClsPub.isStrNull(i + 1);
                        if (TM.Trim() == "")
                        {
                            MessageBox.Show("条形码不能为空,不能生成条码!");
                            return;
                        }
                        grdSub.Rows[i].Cells[HTMCol].Value = TM;
                        grdSub.Rows[i].Cells[HEntryID2Col].Value = j + 1;
                        grdSub.Rows[i].Cells[HMaterID2Col].Value = grdMain.Rows[j].Cells[HMaterIDCol].Value;
                        grdSub.Rows[i].Cells[HMaterNumber2Col].Value = grdMain.Rows[j].Cells[HMaterNumberCol].Value;
                        grdSub.Rows[i].Cells[HMaterName2Col].Value = grdMain.Rows[j].Cells[HMaterNameCol].Value;
                        grdSub.Rows[i].Cells[HMaterModel2Col].Value = grdMain.Rows[j].Cells[HMaterModelCol].Value;
                        grdSub.Rows[i].Cells[HPinfan2Col].Value = grdMain.Rows[j].Cells[HPinfanCol].Value;
                        grdSub.Rows[i].Cells[HPinfanBarCode2Col].Value = grdMain.Rows[j].Cells[HPinfanBarCodeCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropID2Col].Value = grdMain.Rows[j].Cells[HAuxPropIDCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropNumber2Col].Value = grdMain.Rows[j].Cells[HAuxPropNumberCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropName2Col].Value = grdMain.Rows[j].Cells[HAuxPropNameCol].Value;
                        grdSub.Rows[i].Cells[HUnitID2Col].Value = grdMain.Rows[j].Cells[HUnitIDCol].Value;
                        grdSub.Rows[i].Cells[HUnitNumber2Col].Value = grdMain.Rows[j].Cells[HUnitNumberCol].Value;
                        grdSub.Rows[i].Cells[HUnitName2Col].Value = grdMain.Rows[j].Cells[HUnitNameCol].Value;
                        grdSub.Rows[i].Cells[HQty2Col].Value = HMinQty;
                        grdSub.Rows[i].Cells[HBatchNo2Col].Value = grdMain.Rows[j].Cells[HBatchNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceInterID2Col].Value = grdMain.Rows[j].Cells[HMainIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceEntryID2Col].Value = grdMain.Rows[j].Cells[HSubIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillNo2Col].Value = grdMain.Rows[j].Cells[HBillNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillType2Col].Value = grdMain.Rows[j].Cells[HBillTypeCol].Value;
                        grdSub.Rows[i].Cells[HPrintCol].Value = "0";
                        grdSub.Rows[i].Cells[HWeiCol].Value = WeiShu;
                        grdSub.Rows[i].Cells[HBarcodeNoCol].Value = n + 1;
                        grdSub.Rows[i].Cells[HBarcodeQtysCol].Value = grdMain.Rows[j].Cells[HBQtyCol].Value;
                        grdSub.Rows[i].Cells[HSupID2Col].Value = grdMain.Rows[j].Cells[HSupIDCol].Value;
                        grdSub.Rows[i].Cells[HSupNumber2Col].Value = grdMain.Rows[j].Cells[HSupNumberCol].Value;
                        grdSub.Rows[i].Cells[HSupName2Col].Value = grdMain.Rows[j].Cells[HSupNameCol].Value;
                        grdSub.Rows[i].Cells[HDeptID2Col].Value = grdMain.Rows[j].Cells[HDeptIDCol].Value;
                        grdSub.Rows[i].Cells[HDeptNumber2Col].Value = grdMain.Rows[j].Cells[HDeptNumberCol].Value;
                        grdSub.Rows[i].Cells[HDeptName2Col].Value = grdMain.Rows[j].Cells[HDeptNameCol].Value;
                        grdSub.Rows[i].Cells[HRemark2Col].Value = grdMain.Rows[j].Cells[HRemarkCol].Value;
                        grdSub.Rows[i].Cells[HDate2Col].Value = grdMain.Rows[j].Cells[HDateCol].Value;
                        grdSub.Rows[i].Cells[HShowDate2Col].Value = grdMain.Rows[j].Cells[HShowDateCol].Value;
                        grdSub.Rows[i].Cells[HWhID2Col].Value = grdMain.Rows[j].Cells[HWhIDCol].Value;
                        grdSub.Rows[i].Cells[HWhNumber2Col].Value = grdMain.Rows[j].Cells[HWhNumberCol].Value;
                        grdSub.Rows[i].Cells[HWhName2Col].Value = grdMain.Rows[j].Cells[HWhNameCol].Value;
                        grdSub.Rows[i].Cells[HSPID2Col].Value = grdMain.Rows[j].Cells[HSPIDCol].Value;
                        grdSub.Rows[i].Cells[HSPNumber2Col].Value = grdMain.Rows[j].Cells[HSPNumberCol].Value;
                        grdSub.Rows[i].Cells[HSPName2Col].Value = grdMain.Rows[j].Cells[HSPNameCol].Value;
                        grdSub.Rows[i].Cells[HMTONo2Col].Value = grdMain.Rows[j].Cells[HMTONoCol].Value;
                        grdSub.Rows[i].Cells[HCusID2Col].Value = grdMain.Rows[j].Cells[HCusIDCol].Value;
                        grdSub.Rows[i].Cells[HCusNumber2Col].Value = grdMain.Rows[j].Cells[HCusNumberCol].Value;
                        grdSub.Rows[i].Cells[HCusName2Col].Value = grdMain.Rows[j].Cells[HCusNameCol].Value;
                        grdSub.Rows[i].Cells[HCusType2Col].Value = grdMain.Rows[j].Cells[HCusTypeCol].Value;
                        grdSub.Rows[i].Cells[HSourceID2Col].Value = grdMain.Rows[j].Cells[HSourceIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceNumber2Col].Value = grdMain.Rows[j].Cells[HSourceNumberCol].Value;
                        grdSub.Rows[i].Cells[HSourceName2Col].Value = grdMain.Rows[j].Cells[HSourceNameCol].Value;
                        grdSub.Rows[i].Cells[HEndDate2Col].Value = grdMain.Rows[j].Cells[HEndDateCol].Value;
                        grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value = grdMain.Rows[j].Cells[HSeOrderBillNoCol].Value;
                        grdSub.Rows[i].Cells[HSeOrderSEQ2Col].Value = grdMain.Rows[j].Cells[HSeOrderSEQCol].Value;
                        grdSub.Rows[i].Cells[HInnerBillNo2Col].Value = grdMain.Rows[j].Cells[HInnerBillNoCol].Value;
                        grdSub.Rows[i].Cells[HMaker2Col].Value = grdMain.Rows[j].Cells[HMakerCol].Value;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value = grdMain.Rows[j].Cells[HGiveAwayFlagCol].Value;
                        grdSub.Rows[i].Cells[HProduceDate2Col].Value = grdMain.Rows[j].Cells[HProduceDateCol].Value;
                        grdSub.Rows[i].Cells[HExpiryDate2Col].Value = grdMain.Rows[j].Cells[HExpiryDateCol].Value;
                        grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value = grdMain.Rows[j].Cells[HISKFPERIODCol].Value;
                        grdSub.Rows[i].Cells[HEXPUNIT2Col].Value = grdMain.Rows[j].Cells[HEXPUNITCol].Value;
                        grdSub.Rows[i].Cells[HEXPPERIOD2Col].Value = grdMain.Rows[j].Cells[HEXPPERIODCol].Value;
                        //网格打勾
                        //是否赠品
                        DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                        oCell.ThreeState = false;
                        oCell.Value = grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value;
                        oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                        //是否启用保质期
                        DataGridViewCheckBoxCell oCell2 = new DataGridViewCheckBoxCell();
                        oCell2.ThreeState = false;
                        oCell2.Value = grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value;
                        oCell2.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        grdSub.Rows[i].Cells[HISKFPERIOD2Col] = oCell2;
                        k = k + 1;
                        n = n + 1;
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        nn = nn + 1;
                    }
                    //后台批量执行语句
                    oCn.RunProc("exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + nn.ToString() + " ");
                }
            }
            string HWei = "";      //尾数
            string HBarCode = "";
            string HBarCodeType = "";
            Int64 HMaterID = 0;
            Int64 HAuxPropID = 0;
            Int64 HUnitID = 0;
            double HQty2 = 0;
            string HBatchNo2 = "";
            Int64 HSupID = 0;
            Int64 HGroupID = 0;
            int HPrintQty = 0;
            Int64 HSourceInterID = 0;
            Int64 HSourceEntryID = 0;
            string HSourceBillNo = "";
            string HSourceBillType = "";
            Int64 HBarcodeNo = 0;       //托号
            Int64 HBarcodeQtys = 0;     //总托数
            Int64 HDeptID = 0;
            Int64 HWhID = 0;
            Int64 HSPID = 0;
            string HRemark = "";
            string HMaterName = "";
            string HMaterModel = "";
            string HPinfan = "";
            string HMTONo = "";
            Int64 HCusID = 0;
            string HCusType = "";
            DateTime HEndDate;
            string HWorkLineName = "";
            string HSeOrderBillNo = "";
            Int64 HSeOrderSEQ = 0;
            string HInnerBillNo = "";
            bool HGiveAwayFlag = false;
            Int64 HEntryID = 0;
            string HProduceDate;
            string HExpiryDate;
            bool HISKFPERIOD = false;
            string HEXPUNIT = "";
            double HEXPPERIOD = 0;
            try
            {
                oCn.BeginTran();
                for (int i = 0; i < grdSub.Rows.Count; i++)
                {
                    if (ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value) != 0)
                    {
                        HWei = ClsPub.isStrNull(grdSub.Rows[i].Cells[HWeiCol].Value);
                        HBarCode = ClsPub.isStrNull(grdSub.Rows[i].Cells[HTMCol].Value);
                        //
                        HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text);
                        if (CampanyName == "博日科技" || CampanyName == "夏宝电器")
                        {
                            HBarCodeType = "唯一条码";
                        }
                        //
                        HMaterID = ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        HEntryID = ClsPub.isLong(grdSub.Rows[i].Cells[HEntryID2Col].Value);
                        HAuxPropID = ClsPub.isLong(grdSub.Rows[i].Cells[HAuxPropID2Col].Value);
                        HUnitID = ClsPub.isLong(grdSub.Rows[i].Cells[HUnitID2Col].Value);
                        HQty2 = ClsPub.isDoule(grdSub.Rows[i].Cells[HQty2Col].Value);
                        HBatchNo2 = ClsPub.isStrNull(grdSub.Rows[i].Cells[HBatchNo2Col].Value);
                        HSourceInterID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceInterID2Col].Value);
                        HSourceEntryID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceEntryID2Col].Value);
                        HSourceBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillNo2Col].Value);
                        HSourceBillType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillType2Col].Value);
                        HBarcodeQtys = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeQtysCol].Value);
                        HBarcodeNo = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeNoCol].Value);
                        HSupID = ClsPub.isLong(grdSub.Rows[i].Cells[HSupID2Col].Value);
                        HDeptID = ClsPub.isLong(grdSub.Rows[i].Cells[HDeptID2Col].Value);
                        HWhID = ClsPub.isLong(grdSub.Rows[i].Cells[HWhID2Col].Value);
                        HSPID = ClsPub.isLong(grdSub.Rows[i].Cells[HSPID2Col].Value);
                        HRemark = ClsPub.isStrNull(grdSub.Rows[i].Cells[HRemark2Col].Value);
                        HMaterName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterName2Col].Value);
                        HMaterModel = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterModel2Col].Value);
                        HPinfan = ClsPub.isStrNull(grdSub.Rows[i].Cells[HPinfan2Col].Value);
                        HMTONo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMTONo2Col].Value);
                        HCusID = ClsPub.isLong(grdSub.Rows[i].Cells[HCusID2Col].Value);
                        HCusType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HCusType2Col].Value);
                        HEndDate = ClsPub.isDate(grdSub.Rows[i].Cells[HEndDate2Col].Value);
                        HWorkLineName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceName2Col].Value);
                        HSeOrderBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value);
                        HSeOrderSEQ = ClsPub.isLong(grdSub.Rows[i].Cells[HSeOrderSEQ2Col].Value);
                        HInnerBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HInnerBillNo2Col].Value);
                        HGiveAwayFlag = ClsPub.isBool(grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value);
                        if (ClsPub.isDate(grdSub.Rows[i].Cells[HProduceDate2Col].Value) < Convert.ToDateTime("1950-01-01"))
                        {
                            HProduceDate = "";
                        }
                        else
                        {
                            HProduceDate = ClsPub.isStrNull(grdSub.Rows[i].Cells[HProduceDate2Col].Value);
                        }
                        if (ClsPub.isDate(grdSub.Rows[i].Cells[HExpiryDate2Col].Value) < Convert.ToDateTime("1950-01-01"))
                        {
                            HExpiryDate = "";
                        }
                        else
                        {
                            HExpiryDate = ClsPub.isStrNull(grdSub.Rows[i].Cells[HExpiryDate2Col].Value);
                        }
                        HISKFPERIOD = ClsPub.isBool(grdSub.Rows[i].Cells[HISKFPERIOD2Col].Value);
                        HEXPUNIT = ClsPub.isStrNull(grdSub.Rows[i].Cells[HEXPUNIT2Col].Value);
                        HEXPPERIOD = ClsPub.isDoule(grdSub.Rows[i].Cells[HEXPPERIOD2Col].Value);
                        if (radioButton_HIsUsingBatchNo.Checked)
                        {
                            HBatchNo2 = getBatchNo();
                        }
                        oCn.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                    ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HEntryID " +
                                    ",HGiveAwayFlag,HSeOrderSEQ,HInitSourceEntryID " +
                                    ",HProduceDate,HExpiryDate " +
                                    ",HISKFPERIOD,HEXPUNIT,HEXPPERIOD " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                    ") values ("
                                    + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString()
                                    + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + ClsPub.CurUserName + "',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString()
                                    + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HWei + "'"
                                    + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'"
                                    + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + sDate + "'"
                                    + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HSeOrderBillNo + "'," + HInterID.ToString() + "," + HEntryID.ToString()
                                    + ", " + DBUtility.ClsPub.BoolToString(HGiveAwayFlag) + "," + HSeOrderSEQ.ToString() + "," + HSourceEntryID.ToString()
                                    + ", " + (HProduceDate == "" ? "NULL" : "'" + HProduceDate + "'") + "," + (HExpiryDate == "" ? "NULL" : "'" + HExpiryDate + "'")
                                    + ", " + DBUtility.ClsPub.BoolToString(HISKFPERIOD) + ",'" + HEXPUNIT + "'," + HEXPPERIOD.ToString()
                                    + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "')");
                        //HNumber = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        //if (cmbHBarCodeType.Text == "唯一条码")
                        //{
                        //    if (CampanyName == "卓力") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        //    {
                        //        //条码前缀 = ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else if (CampanyName == "飞龙")
                        //    {
                        //        string HWorksNumber = "";
                        //        HWorksNumber = cmbHWorksNumber.Text;
                        //        if (HWorksNumber == "")
                        //        {
                        //            MessageBox.Show("工厂代码不能为空!");
                        //            return;
                        //        }
                        //        //条码前缀 = å·¥åŽ‚ä»£ç  + ç‰©æ–™å†…码 + æ—¥æœŸ
                        //        sTMNumber = HWorksNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else  //通用方法
                        //    {
                        //        //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //}
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
                //增加 æ¡ç è¶…过未生成功能控制
                //
                oCn.Commit();
                //MessageBox.Show("条码生成完毕!");
                //grdSub.RowCount = 0;
                tabControl1.SelectedIndex = 3;
            }
            catch (Exception e)
            {
                oCn.RollBack();
                MessageBox.Show("条码生成失败!" + e.Message);
                grdSub.RowCount = 0;
            }
        }
        private string getBatchNo()
        {
            string HBatchNo = "";
            if (radioButton_HIsUsingBatchNo.Checked)
            {
                //日期获取方式
                string sDate = dtpHDate.Value.ToShortDateString();                                                                                   //
                string sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                string sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                string sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                sDay = sDay.Substring(sDay.Length - 2, 2);
                string HDate = "20" + sYear + "-" + sPeriod + "-" + sDay;
                //获取流水号:四位,该物料当天生成的条码数
                string LIU = "";
                int LEN = 4;
                DataSet ds;
                string sql = "select * from h_v_IF_BarCodeBillList Where HMaterID = " + grdMain.Rows[0].Cells[HMaterIDCol].Value + " and HSTOCKORGID = " + HOrgID + " and CONVERT(varchar(100),条码日期, 23) = '" + HDate + "' order by æ‰¹å· desc";
                ds = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList");
                if (ds != null)
                {
                    long count = ClsPub.isLong(ds.Tables[0].Rows[0]["批号"].ToString().Replace(sYear + sPeriod + sDay, ""));
                    LIU += count + 1;
                    while (LIU.Length < LEN)  //如果流水号小于6位数前面补0
                    {
                        LIU = "0" + LIU;
                    }
                }
                else
                {
                    return "";
                }
                //拼接批号
                HBatchNo = sYear + sPeriod + sDay + LIU;
            }
            return HBatchNo;
        }
        //生成条码 åšæ—¥
        //物料编码+序列号+生产日期
        private void SaveBarCode_bori()
        {
            grdSub.Rows.Clear();
            int LSHlen = 6;             //流水号长度
            int SumLen = 10;            //总长度
            string TM = "";             //条码
            string HNumber = "";        //物料内码
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            Int64 HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            //int LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
            string sPeriod = "";        //月
            string sDay = "";           //日
            string HBatchNo = "";       //批次
            int k = 0;
            int n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
            DataSet Ds;
            //Ds = oCn.RunProcReturn("exec GetLSH '" + ClsPub.GetServerDate(0) + "'", "GetLSH");
            //LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
            for (int j = 0; j < grdMain.Rows.Count; j++)
            {
                if (ClsPub.isLong(grdMain.Rows[j].Cells[HMaterIDCol].Value) != 0)
                {
                    HNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterIDCol].Value);
                    HMaterNumber = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HMaterNumberCol].Value);
                    HBatchNo = ClsPub.isStrNull(grdMain.Rows[j].Cells[HBatchNoCol].Value);
                    //日期获取方式
                    sDate = dtpHDate.Value.ToShortDateString();
                    //
                    if (cmbHBarCodeType.Text == "试剂成品条码规则")// å¤±æ•ˆæ—¥æœŸï¼ˆç”Ÿäº§è®¢å•)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HEndDateCol].Value);
                    }
                    //
                    sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                    sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                    sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                    sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                    sDay = sDay.Substring(sDay.Length - 2, 2);
                    //==================================
                    //if (cmbHBarCodeType.Text == "试剂成品条码规则")
                    //{
                    //    //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                    //sTMNumber = HMaterNumber + HNumber + sYear + sPeriod + sDay;
                    //    Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                    //    //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    //    LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                    //}
                    //else
                    //{
                    //    MessageBox.Show("错误的条码类型,不能生成条码!");
                    //    return;
                    //}
                    HBQty = HBQty + ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HMinQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);
                    HSumQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);
                    n = 0;
                    //从金蝶序列号表获取序列号
                    DataSet DSet = oCn.RunProcReturn("exec h_p_CLD_GetBarCodeSno  " + ClsPub.isStrNull(grdMain.Rows[j].Cells[HMainIDCol].Value) + "," + ClsPub.isStrNull(grdMain.Rows[j].Cells[HSubIDCol].Value) + "  ", "h_p_CLD_GetBarCodeSno", ref DBUtility.ClsPub.sExeReturnInfo);
                    //生成首行标题
                    if (DSet == null)
                    {
                        MessageBox.Show("没有返回任何结果,金蝶云序列号不存在!" + DBUtility.ClsPub.sExeReturnInfo);
                        continue;
                    }
                    //
                    for (int i = k; i < DSet.Tables[0].Rows.Count; i++)
                    //for (int i = k; i < HBQty; i++)
                    {
                        if (HSumQty - HMinQty > 0)
                        {
                            WeiShu = "";
                            HSumQty = HSumQty - HMinQty;
                        }
                        else
                        {
                            if (HSumQty == HMinQty)
                            {
                                WeiShu = "";
                            }
                            else
                            {
                                WeiShu = "尾数";
                            }
                            HMinQty = HSumQty;
                        }
                        //
                        //LSH = LSH + 1;
                        LSH2 = DBUtility.ClsPub.isStrNull(DSet.Tables[0].Rows[n]["SHNO"]);
                        //while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                        //{
                        //    LSH2 = "0" + LSH2;
                        //}
                        //if (cmbHBarCodeType.Text == "唯一条码")
                        //{
                        //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                        //T/*M*/ = HMaterNumber + LSH2 + sYear + sPeriod + sDay;
                        TM = LSH2 + sYear + sPeriod + sDay;
                        //}
                        if (i + 1 > grdSub.Rows.Count)
                        {
                            grdSub.RowCount = grdSub.RowCount + 1;
                        }
                        grdSub.Rows[i].Cells[HSno2Col].Value = ClsPub.isStrNull(i + 1);
                        if (TM.Trim() == "")
                        {
                            MessageBox.Show("条形码不能为空,不能生成条码!");
                            return;
                        }
                        grdSub.Rows[i].Cells[HTMCol].Value = TM;
                        grdSub.Rows[i].Cells[HMaterID2Col].Value = grdMain.Rows[j].Cells[HMaterIDCol].Value;
                        grdSub.Rows[i].Cells[HMaterNumber2Col].Value = grdMain.Rows[j].Cells[HMaterNumberCol].Value;
                        grdSub.Rows[i].Cells[HMaterName2Col].Value = grdMain.Rows[j].Cells[HMaterNameCol].Value;
                        grdSub.Rows[i].Cells[HMaterModel2Col].Value = grdMain.Rows[j].Cells[HMaterModelCol].Value;
                        grdSub.Rows[i].Cells[HPinfan2Col].Value = grdMain.Rows[j].Cells[HPinfanCol].Value;
                        grdSub.Rows[i].Cells[HPinfanBarCode2Col].Value = grdMain.Rows[j].Cells[HPinfanBarCodeCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropID2Col].Value = grdMain.Rows[j].Cells[HAuxPropIDCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropNumber2Col].Value = grdMain.Rows[j].Cells[HAuxPropNumberCol].Value;
                        grdSub.Rows[i].Cells[HAuxPropName2Col].Value = grdMain.Rows[j].Cells[HAuxPropNameCol].Value;
                        grdSub.Rows[i].Cells[HUnitID2Col].Value = grdMain.Rows[j].Cells[HUnitIDCol].Value;
                        grdSub.Rows[i].Cells[HUnitNumber2Col].Value = grdMain.Rows[j].Cells[HUnitNumberCol].Value;
                        grdSub.Rows[i].Cells[HUnitName2Col].Value = grdMain.Rows[j].Cells[HUnitNameCol].Value;
                        grdSub.Rows[i].Cells[HQty2Col].Value = HMinQty;
                        grdSub.Rows[i].Cells[HBatchNo2Col].Value = grdMain.Rows[j].Cells[HBatchNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceInterID2Col].Value = grdMain.Rows[j].Cells[HMainIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceEntryID2Col].Value = grdMain.Rows[j].Cells[HSubIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillNo2Col].Value = grdMain.Rows[j].Cells[HBillNoCol].Value;
                        grdSub.Rows[i].Cells[HSourceBillType2Col].Value = grdMain.Rows[j].Cells[HBillTypeCol].Value;
                        grdSub.Rows[i].Cells[HPrintCol].Value = "0";
                        grdSub.Rows[i].Cells[HWeiCol].Value = WeiShu;
                        grdSub.Rows[i].Cells[HBarcodeNoCol].Value = n + 1;
                        grdSub.Rows[i].Cells[HBarcodeQtysCol].Value = grdMain.Rows[j].Cells[HBQtyCol].Value;
                        grdSub.Rows[i].Cells[HSupID2Col].Value = grdMain.Rows[j].Cells[HSupIDCol].Value;
                        grdSub.Rows[i].Cells[HSupNumber2Col].Value = grdMain.Rows[j].Cells[HSupNumberCol].Value;
                        grdSub.Rows[i].Cells[HSupName2Col].Value = grdMain.Rows[j].Cells[HSupNameCol].Value;
                        grdSub.Rows[i].Cells[HDeptID2Col].Value = grdMain.Rows[j].Cells[HDeptIDCol].Value;
                        grdSub.Rows[i].Cells[HDeptNumber2Col].Value = grdMain.Rows[j].Cells[HDeptNumberCol].Value;
                        grdSub.Rows[i].Cells[HDeptName2Col].Value = grdMain.Rows[j].Cells[HDeptNameCol].Value;
                        grdSub.Rows[i].Cells[HRemark2Col].Value = grdMain.Rows[j].Cells[HRemarkCol].Value;
                        grdSub.Rows[i].Cells[HDate2Col].Value = grdMain.Rows[j].Cells[HDateCol].Value;
                        grdSub.Rows[i].Cells[HShowDate2Col].Value = grdMain.Rows[j].Cells[HShowDateCol].Value;
                        grdSub.Rows[i].Cells[HWhID2Col].Value = grdMain.Rows[j].Cells[HWhIDCol].Value;
                        grdSub.Rows[i].Cells[HWhNumber2Col].Value = grdMain.Rows[j].Cells[HWhNumberCol].Value;
                        grdSub.Rows[i].Cells[HWhName2Col].Value = grdMain.Rows[j].Cells[HWhNameCol].Value;
                        grdSub.Rows[i].Cells[HSPID2Col].Value = grdMain.Rows[j].Cells[HSPIDCol].Value;
                        grdSub.Rows[i].Cells[HSPNumber2Col].Value = grdMain.Rows[j].Cells[HSPNumberCol].Value;
                        grdSub.Rows[i].Cells[HSPName2Col].Value = grdMain.Rows[j].Cells[HSPNameCol].Value;
                        grdSub.Rows[i].Cells[HMTONo2Col].Value = grdMain.Rows[j].Cells[HMTONoCol].Value;
                        grdSub.Rows[i].Cells[HCusID2Col].Value = grdMain.Rows[j].Cells[HCusIDCol].Value;
                        grdSub.Rows[i].Cells[HCusNumber2Col].Value = grdMain.Rows[j].Cells[HCusNumberCol].Value;
                        grdSub.Rows[i].Cells[HCusName2Col].Value = grdMain.Rows[j].Cells[HCusNameCol].Value;
                        grdSub.Rows[i].Cells[HCusType2Col].Value = grdMain.Rows[j].Cells[HCusTypeCol].Value;
                        grdSub.Rows[i].Cells[HSourceID2Col].Value = grdMain.Rows[j].Cells[HSourceIDCol].Value;
                        grdSub.Rows[i].Cells[HSourceNumber2Col].Value = grdMain.Rows[j].Cells[HSourceNumberCol].Value;
                        grdSub.Rows[i].Cells[HSourceName2Col].Value = grdMain.Rows[j].Cells[HSourceNameCol].Value;
                        grdSub.Rows[i].Cells[HEndDate2Col].Value = grdMain.Rows[j].Cells[HEndDateCol].Value;
                        grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value = grdMain.Rows[j].Cells[HSeOrderBillNoCol].Value;
                        grdSub.Rows[i].Cells[HInnerBillNo2Col].Value = grdMain.Rows[j].Cells[HInnerBillNoCol].Value;
                        grdSub.Rows[i].Cells[HMaker2Col].Value = grdMain.Rows[j].Cells[HMakerCol].Value;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value = grdMain.Rows[j].Cells[HGiveAwayFlagCol].Value;
                        //网格打勾
                        DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                        oCell.ThreeState = false;
                        oCell.Value = grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value;
                        oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                        k = k + 1;
                        n = n + 1;
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
            }
            string HWei = "";      //尾数
            string HBarCode = "";
            string HBarCodeType = "";
            Int64 HMaterID = 0;
            Int64 HAuxPropID = 0;
            Int64 HUnitID = 0;
            double HQty2 = 0;
            string HBatchNo2 = "";
            Int64 HSupID = 0;
            Int64 HGroupID = 0;
            int HPrintQty = 0;
            Int64 HSourceInterID = 0;
            Int64 HSourceEntryID = 0;
            string HSourceBillNo = "";
            string HSourceBillType = "";
            Int64 HBarcodeNo = 0;       //托号
            Int64 HBarcodeQtys = 0;     //总托数
            Int64 HDeptID = 0;
            Int64 HWhID = 0;
            Int64 HSPID = 0;
            string HRemark = "";
            string HMaterName = "";
            string HMaterModel = "";
            string HPinfan = "";
            string HMTONo = "";
            Int64 HCusID = 0;
            string HCusType = "";
            DateTime HEndDate;
            string HWorkLineName = "";
            string HSeOrderBillNo = "";
            string HInnerBillNo = "";
            bool HGiveAwayFlag = false;
            try
            {
                oCn.BeginTran();
                for (int i = 0; i < grdSub.Rows.Count; i++)
                {
                    if (ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value) != 0)
                    {
                        HWei = ClsPub.isStrNull(grdSub.Rows[i].Cells[HWeiCol].Value);
                        HBarCode = ClsPub.isStrNull(grdSub.Rows[i].Cells[HTMCol].Value);
                        //
                        HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text);
                        if (CampanyName == "博日科技" || CampanyName == "夏宝电器")
                        {
                            HBarCodeType = "唯一条码";
                        }
                        //
                        HMaterID = ClsPub.isLong(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        HAuxPropID = ClsPub.isLong(grdSub.Rows[i].Cells[HAuxPropID2Col].Value);
                        HUnitID = ClsPub.isLong(grdSub.Rows[i].Cells[HUnitID2Col].Value);
                        HQty2 = ClsPub.isDoule(grdSub.Rows[i].Cells[HQty2Col].Value);
                        HBatchNo2 = ClsPub.isStrNull(grdSub.Rows[i].Cells[HBatchNo2Col].Value);
                        HSourceInterID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceInterID2Col].Value);
                        HSourceEntryID = ClsPub.isLong(grdSub.Rows[i].Cells[HSourceEntryID2Col].Value);
                        HSourceBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillNo2Col].Value);
                        HSourceBillType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceBillType2Col].Value);
                        HBarcodeQtys = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeQtysCol].Value);
                        HBarcodeNo = ClsPub.isLong(grdSub.Rows[i].Cells[HBarcodeNoCol].Value);
                        HSupID = ClsPub.isLong(grdSub.Rows[i].Cells[HSupID2Col].Value);
                        HDeptID = ClsPub.isLong(grdSub.Rows[i].Cells[HDeptID2Col].Value);
                        HWhID = ClsPub.isLong(grdSub.Rows[i].Cells[HWhID2Col].Value);
                        HSPID = ClsPub.isLong(grdSub.Rows[i].Cells[HSPID2Col].Value);
                        HRemark = ClsPub.isStrNull(grdSub.Rows[i].Cells[HRemark2Col].Value);
                        HMaterName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterName2Col].Value);
                        HMaterModel = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterModel2Col].Value);
                        HPinfan = ClsPub.isStrNull(grdSub.Rows[i].Cells[HPinfan2Col].Value);
                        HMTONo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMTONo2Col].Value);
                        HCusID = ClsPub.isLong(grdSub.Rows[i].Cells[HCusID2Col].Value);
                        HCusType = ClsPub.isStrNull(grdSub.Rows[i].Cells[HCusType2Col].Value);
                        HEndDate = ClsPub.isDate(grdSub.Rows[i].Cells[HEndDate2Col].Value);
                        HWorkLineName = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSourceName2Col].Value);
                        HSeOrderBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HSeOrderBillNo2Col].Value);
                        HInnerBillNo = ClsPub.isStrNull(grdSub.Rows[i].Cells[HInnerBillNo2Col].Value);
                        HGiveAwayFlag = ClsPub.isBool(grdSub.Rows[i].Cells[HGiveAwayFlag2Col].Value);
                        oCn.RunProc("insert into Gy_BarCodeBill (HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                                    ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                                    ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                                    ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                                    ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate " +
                                    ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID " +
                                    ",HGiveAwayFlag " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                    ") values ("
                                    + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString()
                                    + ",'" + HBatchNo2 + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + ClsPub.CurUserName + "',getdate()," + HPrintQty.ToString() + "," + HQty2.ToString()
                                    + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "','" + HWei + "'"
                                    + ", " + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'"
                                    + ", " + HCusID.ToString() + ",'" + HCusType + "','" + HEndDate.ToShortDateString() + "','" + HWorkLineName + "','" + sDate + "'"
                                    + ", " + HOrgID.ToString() + "," + HOrgID.ToString() + ",'" + HSeOrderBillNo + "'," + HInterID.ToString()
                                    + ", " + DBUtility.ClsPub.BoolToString(HGiveAwayFlag)
                                    + ",'" + HMaterName + "','" + HMaterModel + "','" + HPinfan + "'," + HAuxPropID.ToString() + ",'" + HMTONo + "','" + HInnerBillNo + "')");
                        //HNumber = ClsPub.isStrNull(grdSub.Rows[i].Cells[HMaterID2Col].Value);
                        //if (cmbHBarCodeType.Text == "唯一条码")
                        //{
                        //    if (CampanyName == "卓力") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
                        //    {
                        //        //条码前缀 = ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else if (CampanyName == "飞龙")
                        //    {
                        //        string HWorksNumber = "";
                        //        HWorksNumber = cmbHWorksNumber.Text;
                        //        if (HWorksNumber == "")
                        //        {
                        //            MessageBox.Show("工厂代码不能为空!");
                        //            return;
                        //        }
                        //        //条码前缀 = å·¥åŽ‚ä»£ç  + ç‰©æ–™å†…码 + æ—¥æœŸ
                        //        sTMNumber = HWorksNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //    else  //通用方法
                        //    {
                        //        //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                        //        sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                        //    }
                        //}
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
                //增加 æ¡ç è¶…过未生成功能控制
                //
                oCn.Commit();
                MessageBox.Show("条码生成完毕!");
                //grdSub.RowCount = 0;
                tabControl1.SelectedIndex = 3;
            }
            catch (Exception e)
            {
                oCn.RollBack();
                MessageBox.Show("条码生成失败!" + e.Message);
                grdSub.RowCount = 0;
            }
        }
        #endregion 
        #region çª—体处理方法
        //初始化GRID
        private void initGrid()
        {
            //
            grdMain.RowCount = 0;
            grdSub.RowCount = 0;
            grdMain.ColumnCount = 68;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdMain, this.Name);
            grdMain.Columns[HSnoCol].HeaderText = "序号";
            grdMain.Columns[HMainIDCol].HeaderText = "源单主ID";
            grdMain.Columns[HSubIDCol].HeaderText = "源单子ID";
            grdMain.Columns[HBillNoCol].HeaderText = "源单单号";
            grdMain.Columns[HBillTypeCol].HeaderText = "单据类型";
            grdMain.Columns[HMaterIDCol].HeaderText = "物料ID";
            grdMain.Columns[HMaterNumberCol].HeaderText = "物料代码";
            grdMain.Columns[HMaterNameCol].HeaderText = "物料名称";
            grdMain.Columns[HMaterModelCol].HeaderText = "规格型号";
            grdMain.Columns[HModelCol].HeaderText = "自定义规格";
            grdMain.Columns[HPinfanCol].HeaderText = "品番";
            grdMain.Columns[HPinfanBarCodeCol].HeaderText = "HPinfanBarCode";
            grdMain.Columns[HAuxPropIDCol].HeaderText = "辅助属性ID";
            grdMain.Columns[HAuxPropNumberCol].HeaderText = "辅助属性代码";
            grdMain.Columns[HAuxPropNameCol].HeaderText = "辅助属性名称";
            grdMain.Columns[HUnitIDCol].HeaderText = "计量单位ID";
            grdMain.Columns[HUnitNumberCol].HeaderText = "计量单位代码";
            grdMain.Columns[HUnitNameCol].HeaderText = "计量单位名称";
            grdMain.Columns[HBarCodeTypeCol].HeaderText = "条码类型";
            grdMain.Columns[HBatchManagerCol].HeaderText = "是否启用批次";
            grdMain.Columns[HBatchNoCol].HeaderText = "批号";
            grdMain.Columns[HGiveAwayFlagCol].HeaderText = "是否赠品";
            grdMain.Columns[HQtyCol].HeaderText = "数量";
            grdMain.Columns[HMinQtyCol].HeaderText = "最小包装数";
            grdMain.Columns[HPackQtyCol].HeaderText = "外箱数";
            grdMain.Columns[HBQtyCol].HeaderText = "箱数";
            grdMain.Columns[HSupIDCol].HeaderText = "供应商ID";
            grdMain.Columns[HSupNumberCol].HeaderText = "供应商代码";
            grdMain.Columns[HSupNameCol].HeaderText = "供应商";
            grdMain.Columns[HDeptIDCol].HeaderText = "车间ID";
            grdMain.Columns[HDeptNumberCol].HeaderText = "车间代码";
            grdMain.Columns[HDeptNameCol].HeaderText = "车间";
            grdMain.Columns[HWhIDCol].HeaderText = "仓库ID";
            grdMain.Columns[HWhNumberCol].HeaderText = "仓库代码";
            grdMain.Columns[HWhNameCol].HeaderText = "仓库";
            grdMain.Columns[HSPIDCol].HeaderText = "仓位ID";
            grdMain.Columns[HSPNumberCol].HeaderText = "仓位代码";
            grdMain.Columns[HSPNameCol].HeaderText = "仓位";
            grdMain.Columns[HInstructNoCol].HeaderText = "指令单号";
            grdMain.Columns[HSeOrderBillNoCol].HeaderText = "销售订单号";
            grdMain.Columns[HSeOrderSEQCol].HeaderText = "销售订单行号";
            grdMain.Columns[HDateCol].HeaderText = "进料日期";
            grdMain.Columns[HRemarkCol].HeaderText = "备注";
            grdMain.Columns[HMTONoCol].HeaderText = "计划跟踪号";
            grdMain.Columns[HCusIDCol].HeaderText = "客户ID";
            grdMain.Columns[HCusNumberCol].HeaderText = "客户代码";
            grdMain.Columns[HCusNameCol].HeaderText = "客户";
            grdMain.Columns[HCusTypeCol].HeaderText = "客户型号";
            grdMain.Columns[HEndDateCol].HeaderText = "计划完工日期";
            grdMain.Columns[HSourceIDCol].HeaderText = "生产线ID";
            grdMain.Columns[HSourceNumberCol].HeaderText = "生产线代码";
            grdMain.Columns[HSourceNameCol].HeaderText = "生产线";
            grdMain.Columns[HShowDateCol].HeaderText = "日期";
            grdMain.Columns[HInnerBillNoCol].HeaderText = "内部采购订单号";
            grdMain.Columns[HMakerCol].HeaderText = "制单人";
            grdMain.Columns[HProduceDateCol].HeaderText = "生产日期";
            grdMain.Columns[HExpiryDateCol].HeaderText = "有效期至";
            grdMain.Columns[HISKFPERIODCol].HeaderText = "是否启用保质期";
            grdMain.Columns[HEXPUNITCol].HeaderText = "保质期单位";
            grdMain.Columns[HEXPPERIODCol].HeaderText = "保质期";
            ////
            //格式化
            grdMain.Columns[HTagCol].Visible = false;                           //隐藏列
            grdMain.Columns[HMainIDCol].Visible = false;
            grdMain.Columns[HSubIDCol].Visible = false;
            grdMain.Columns[HBillTypeCol].Visible = false;
            grdMain.Columns[HMaterIDCol].Visible = false;
            grdMain.Columns[HModelCol].Visible = false;
            //grdMain.Columns[HBatchNoCol].Visible = false;
            grdMain.Columns[HAuxPropIDCol].Visible = false;
            //grdMain.Columns[HAuxPropNumberCol].Visible = false;
            //grdMain.Columns[HAuxPropNameCol].Visible = false;
            grdMain.Columns[HUnitIDCol].Visible = false;
            grdMain.Columns[HinitQtyCol].Visible = false;
            grdMain.Columns[HSupIDCol].Visible = false;
            grdMain.Columns[HSupNumberCol].Visible = false;
            grdMain.Columns[HSupNameCol].Visible = false;
            grdMain.Columns[HDeptIDCol].Visible = false;
            grdMain.Columns[HDeptNumberCol].Visible = false;
            grdMain.Columns[HDeptNameCol].Visible = false;
            grdMain.Columns[HWhIDCol].Visible = false;
            grdMain.Columns[HWhNumberCol].Visible = false;
            grdMain.Columns[HWhNameCol].Visible = false;
            grdMain.Columns[HSPIDCol].Visible = false;
            grdMain.Columns[HSPNumberCol].Visible = false;
            grdMain.Columns[HSPNameCol].Visible = false;
            grdMain.Columns[HSourceInterIDCol].Visible = false;
            grdMain.Columns[HSourceEntryIDCol].Visible = false;
            grdMain.Columns[HSourceBillNoCol].Visible = false;
            grdMain.Columns[HSourceBillTypeCol].Visible = false;
            grdMain.Columns[HInstructIDCol].Visible = false;
            grdMain.Columns[HInstructNoCol].Visible = false;
            grdMain.Columns[HSeOrderBillIDCol].Visible = false;
            //grdMain.Columns[HSeOrderBillNoCol].Visible = false;
            grdMain.Columns[HBarCodeTypeCol].Visible = false;
            grdMain.Columns[HBatchManagerCol].Visible = false;
            //grdMain.Columns[HDateCol].Visible = false;
            grdMain.Columns[HPinfanCol].Visible = false;
            grdMain.Columns[HPinfanBarCodeCol].Visible = false;
            grdMain.Columns[HCusIDCol].Visible = false;
            //grdMain.Columns[HCusNumberCol].Visible = false;
            //grdMain.Columns[HCusNameCol].Visible = false;
            grdMain.Columns[HCusTypeCol].Visible = false;
            grdMain.Columns[HEndDateCol].Visible = false;
            grdMain.Columns[HSourceIDCol].Visible = false;
            grdMain.Columns[HSourceNumberCol].Visible = false;
            grdMain.Columns[HSourceNameCol].Visible = false;
            //grdMain.Columns[HProduceDateCol].Visible = false;
            //grdMain.Columns[HExpiryDateCol].Visible = false;
            grdMain.Columns[HISKFPERIODCol].Visible = false;
            grdMain.Columns[HEXPUNITCol].Visible = false;
            grdMain.Columns[HEXPPERIODCol].Visible = false;
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HMaterNumberCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HUnitNumberCol.ToString() +
                                "," + HSeOrderBillNoCol.ToString() +
                                "," + HBatchNoCol.ToString() +
                                "," + HCusNumberCol.ToString() +
                                "," + HPackQtyCol.ToString() +
                                "," + HRemarkCol.ToString();
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //设置特殊列
            for (int i = 0; i < grdMain.Rows.Count; i++)
            {
                //网格打勾
                DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                oCell.ThreeState = false;
                oCell.Value = 0;
                oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdMain.Rows[i].Cells[HGiveAwayFlagCol] = oCell;
            }
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            //----------------------------
            grdSub.ColumnCount = 65;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdSub, this.Name);
            grdSub.Columns[HSelectCol].HeaderText = "选择";
            grdSub.Columns[HTMCol].HeaderText = "条码编号";
            grdSub.Columns[HBarCodeType2Col].HeaderText = "条码类型";
            grdSub.Columns[HSno2Col].HeaderText = "序号";
            grdSub.Columns[HMaterID2Col].HeaderText = "物料ID";
            grdSub.Columns[HMaterNumber2Col].HeaderText = "物料代码";
            grdSub.Columns[HMaterName2Col].HeaderText = "物料名称";
            grdSub.Columns[HMaterModel2Col].HeaderText = "规格型号";
            grdSub.Columns[HModel2Col].HeaderText = "自定义规格";
            grdSub.Columns[HAuxPropID2Col].HeaderText = "辅助属性ID";
            grdSub.Columns[HAuxPropNumber2Col].HeaderText = "辅助属性代码";
            grdSub.Columns[HAuxPropName2Col].HeaderText = "辅助属性";
            grdSub.Columns[HPinfan2Col].HeaderText = "品番";
            grdSub.Columns[HPinfanBarCode2Col].HeaderText = "HPinfanBarCode";
            grdSub.Columns[HBatchNo2Col].HeaderText = "批号";
            grdSub.Columns[HGiveAwayFlag2Col].HeaderText = "是否赠品";
            grdSub.Columns[HUnitID2Col].HeaderText = "计量单位ID";
            grdSub.Columns[HUnitNumber2Col].HeaderText = "计量单位代码";
            grdSub.Columns[HUnitName2Col].HeaderText = "计量单位";
            grdSub.Columns[HQty2Col].HeaderText = "数量";
            grdSub.Columns[HWeiCol].HeaderText = "尾数";
            grdSub.Columns[HPrintCol].HeaderText = "打印次数";
            grdSub.Columns[HSourceInterID2Col].HeaderText = "源单主ID";
            grdSub.Columns[HSourceEntryID2Col].HeaderText = "源单子ID";
            grdSub.Columns[HSourceBillNo2Col].HeaderText = "源单单号";
            grdSub.Columns[HSourceBillType2Col].HeaderText = "源单类型";
            grdSub.Columns[HSeOrderBillNo2Col].HeaderText = "销售订单号";
            grdSub.Columns[HSeOrderSEQ2Col].HeaderText = "销售订单行号";
            grdSub.Columns[HBarcodeNoCol].HeaderText = "托号";
            grdSub.Columns[HBarcodeQtysCol].HeaderText = "总托数";
            grdSub.Columns[HSupID2Col].HeaderText = "供应商ID";
            grdSub.Columns[HSupNumber2Col].HeaderText = "供应商代码";
            grdSub.Columns[HSupName2Col].HeaderText = "供应商";
            grdSub.Columns[HDeptID2Col].HeaderText = "车间ID";
            grdSub.Columns[HDeptNumber2Col].HeaderText = "车间代码";
            grdSub.Columns[HDeptName2Col].HeaderText = "车间";
            grdSub.Columns[HWhID2Col].HeaderText = "仓库ID";
            grdSub.Columns[HWhNumber2Col].HeaderText = "仓库代码";
            grdSub.Columns[HWhName2Col].HeaderText = "仓库";
            grdSub.Columns[HSPID2Col].HeaderText = "仓位ID";
            grdSub.Columns[HSPNumber2Col].HeaderText = "仓位代码";
            grdSub.Columns[HSPName2Col].HeaderText = "仓位";
            grdSub.Columns[HInstructNo2Col].HeaderText = "指令单号";
            grdSub.Columns[HDate2Col].HeaderText = "进料日期";
            grdSub.Columns[HRemark2Col].HeaderText = "备注";
            grdSub.Columns[HMTONo2Col].HeaderText = "计划跟踪号";
            grdSub.Columns[HCusID2Col].HeaderText = "客户ID";
            grdSub.Columns[HCusNumber2Col].HeaderText = "客户代码";
            grdSub.Columns[HCusName2Col].HeaderText = "客户";
            grdSub.Columns[HCusType2Col].HeaderText = "客户型号";
            grdSub.Columns[HEndDate2Col].HeaderText = "计划完工日期";
            grdSub.Columns[HSourceID2Col].HeaderText = "生产线ID";
            grdSub.Columns[HSourceNumber2Col].HeaderText = "生产线代码";
            grdSub.Columns[HSourceName2Col].HeaderText = "生产线";
            grdSub.Columns[HShowDate2Col].HeaderText = "日期";
            grdSub.Columns[HInnerBillNo2Col].HeaderText = "内部采购订单号";
            grdSub.Columns[HMaker2Col].HeaderText = "制单人";
            grdSub.Columns[HEntryID2Col].HeaderText = "行号";
            grdSub.Columns[HProduceDate2Col].HeaderText = "生产日期";
            grdSub.Columns[HExpiryDate2Col].HeaderText = "有效期至";
            grdSub.Columns[HISKFPERIOD2Col].HeaderText = "是否启用保质期";
            grdSub.Columns[HEXPUNIT2Col].HeaderText = "保质期单位";
            grdSub.Columns[HEXPPERIOD2Col].HeaderText = "保质期";
            //格式化
            grdSub.Columns[HMaterID2Col].Visible = false;
            grdSub.Columns[HModel2Col].Visible = false;
            grdSub.Columns[HAuxPropID2Col].Visible = false;
            //grdSub.Columns[HAuxPropNumber2Col].Visible = false;
            //grdSub.Columns[HAuxPropName2Col].Visible = false;
            grdSub.Columns[HUnitID2Col].Visible = false;
            grdSub.Columns[HPrintCol].Visible = false;
            grdSub.Columns[HSourceInterID2Col].Visible = false;
            grdSub.Columns[HSourceEntryID2Col].Visible = false;
            grdSub.Columns[HSourceBillType2Col].Visible = false;
            grdSub.Columns[HDeptID2Col].Visible = false;
            grdSub.Columns[HDeptNumber2Col].Visible = false;
            grdSub.Columns[HDeptName2Col].Visible = false;
            //grdSub.Columns[HDate2Col].Visible = false;
            grdSub.Columns[HBarCodeType2Col].Visible = false;
            //grdSub.Columns[HBatchNo2Col].Visible = false;
            grdSub.Columns[HWeiCol].Visible = false;
            grdSub.Columns[HBarcodeNoCol].Visible = false;
            grdSub.Columns[HBarcodeQtysCol].Visible = false;
            grdSub.Columns[HSupID2Col].Visible = false;
            grdSub.Columns[HSupNumber2Col].Visible = false;
            grdSub.Columns[HSupName2Col].Visible = false;
            grdSub.Columns[HWhID2Col].Visible = false;
            grdSub.Columns[HWhNumber2Col].Visible = false;
            grdSub.Columns[HWhName2Col].Visible = false;
            grdSub.Columns[HSPID2Col].Visible = false;
            grdSub.Columns[HSPNumber2Col].Visible = false;
            grdSub.Columns[HSPName2Col].Visible = false;
            grdSub.Columns[HInstructID2Col].Visible = false;
            grdSub.Columns[HInstructNo2Col].Visible = false;
            grdSub.Columns[HSeOrderBillID2Col].Visible = false;
            //grdSub.Columns[HSeOrderBillNo2Col].Visible = false;
            grdSub.Columns[HPinfan2Col].Visible = false;
            grdSub.Columns[HPinfanBarCode2Col].Visible = false;
            grdSub.Columns[HCusID2Col].Visible = false;
            //grdSub.Columns[HCusNumber2Col].Visible = false;
            //grdSub.Columns[HCusName2Col].Visible = false;
            grdSub.Columns[HCusType2Col].Visible = false;
            grdSub.Columns[HEndDate2Col].Visible = false;
            grdSub.Columns[HSourceID2Col].Visible = false;
            grdSub.Columns[HSourceNumber2Col].Visible = false;
            grdSub.Columns[HSourceName2Col].Visible = false;
            //设置特殊列
            for (int i = 0; i < grdSub.Rows.Count; i++)
            {
                //网格打勾
                //是否赠品
                DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                oCell.ThreeState = false;
                oCell.Value = 0;
                oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                //是否启用保质期
                DataGridViewCheckBoxCell oCell2 = new DataGridViewCheckBoxCell();
                oCell2.ThreeState = false;
                oCell2.Value = 0;
                oCell2.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdSub.Rows[i].Cells[HISKFPERIOD2Col] = oCell2;
            }
            DBUtility.Xt_BaseBillFun.GetGrid(grdMain, this.Name);
            DBUtility.Xt_BaseBillFun.GetGrid(grdSub, this.Name + "grdSub");
            grdSub.SelectionMode = DataGridViewSelectionMode.FullRowSelect;                     //选行模式
            ////
            DBUtility.Xt_BaseBillFun.initGridList(grdList, this.Name + "grdList");
            DBUtility.Xt_BaseBillFun.initGridList(grdBillBarCodeList, this.Name + "grdBillBarCodeList");
            ////
        }
        //公式重算
        private void RowCount(int sRow, int sTag)
@@ -2118,1539 +2167,11 @@
            }
            return true;
        }
        //帮助函数
        private void Sub_GridKey(int sKeyCode, int sRow, int sCol, DataGridViewTextBoxEditingControl oEdit)
        {
            DataSet oDs = new DataSet();
            DataSet oDs2 = new DataSet();
            long sHMaterID = 0;
            long sHAuxPropID = 0;
            long sHOrgID = -1;
            string sWhere = "";
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                sHOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
            }
            if (sHOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return;
            }
            DAL.ClsIF_Material_View oMater = new DAL.ClsIF_Material_View();//物料
            DAL.ClsIF_Unit_View oUnit = new DAL.ClsIF_Unit_View();//计量单位
            DAL.ClsIF_Property_View oProperty = new DAL.ClsIF_Property_View();//辅助属性
            if (!grdStatus)
            {
                return;
            }
            //if (oSumGrid.FindAllowEditCol(sCol))
            //{
            oSumGrid.EditStatus = true;
            //}
            //else
            //{
            //    return;
            //}
            switch (sKeyCode)
            {
                case 118:          //F7
                    {
                        switch (sCol)
                        {
                            case HMaterNumberCol:
                                oMater.WherePart = "";
                                sWhere = " and HUSEORGID = " + sHOrgID;
                                if (oMater.RefreshViewForBig(sWhere))
                                {
                                    if (oMater.GetInfoByID(oMater.oModel.HItemID))
                                    {
                                        grdMain.Rows[sRow].Cells[HMaterIDCol].Value = oMater.omodel.HItemID.ToString();
                                        grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = oMater.omodel.HNumber;
                                        grdMain.Rows[sRow].Cells[HMaterNameCol].Value = oMater.omodel.HName;
                                        grdMain.Rows[sRow].Cells[HMaterModelCol].Value = oMater.omodel.HModel;
                                        grdMain.Rows[sRow].Cells[HMinQtyCol].Value = oMater.omodel.HQtyMin;
                                        grdMain.Rows[sRow].Cells[HDateCol].Value = dtpHDate.Value.ToShortDateString();
                                        grdMain.Rows[sRow].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
                                        grdMain.Rows[sRow].Cells[HAuxPropIDCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HAuxPropNumberCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HAuxPropNameCol].Value = "";
                                        if (oUnit.GetInfoByID(oMater.omodel.HUnitID))
                                        {
                                            grdMain.Rows[sRow].Cells[HUnitIDCol].Value = oUnit.omodel.HItemID.ToString();
                                            grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = oUnit.omodel.HNumber;
                                            grdMain.Rows[sRow].Cells[HUnitNameCol].Value = oUnit.omodel.HName;
                                        }
                                        else
                                        {
                                            grdMain.Rows[sRow].Cells[HUnitIDCol].Value = 0;
                                            grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = "";
                                            grdMain.Rows[sRow].Cells[HUnitNameCol].Value = "";
                                        }
                                        if (CampanyName == "中控")
                                        {
                                            grdMain.Rows[sRow].Cells[HQtyCol].Value = oMater.omodel.HQtyMin;
                                            grdMain.Rows[sRow].Cells[HBQtyCol].Value = 1;
                                        }
                                        oEdit.Text = oMater.omodel.HNumber;
                                    }
                                    else
                                    {
                                        grdMain.Rows[sRow].Cells[HMaterIDCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HMaterNameCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HMaterModelCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HMinQtyCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HUnitIDCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HUnitNameCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HAuxPropIDCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HAuxPropNumberCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HAuxPropNameCol].Value = "";
                                    }
                                }
                                else
                                {
                                    grdMain.Rows[sRow].Cells[HMaterIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HMaterNameCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HMaterModelCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HMinQtyCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HUnitIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HUnitNameCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HAuxPropIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HAuxPropNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HAuxPropNameCol].Value = "";
                                }
                                break;
                            case HUnitNumberCol:
                                oUnit.WherePart = "";
                                if (oUnit.RefreshView())
                                {
                                    grdMain.Rows[sRow].Cells[HUnitIDCol].Value = oUnit.oModel.HItemID.ToString();
                                    grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = oUnit.oModel.HNumber;
                                    grdMain.Rows[sRow].Cells[HUnitNameCol].Value = oUnit.oModel.HName;
                                    EditingControl.Text = oUnit.oModel.HNumber;
                                }
                                else
                                {
                                    grdMain.Rows[sRow].Cells[HUnitIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HUnitNameCol].Value = "";
                                }
                                break;
                            case HDeptNumberCol:
                                BLL.ClsBaseSelect_InterFace.SetGridByDept(grdMain, sRow, HDeptIDCol, HDeptNumberCol, HDeptNameCol);
                                oEdit.Text = DBUtility.ClsPub.isStrNull(grdMain.Rows[sRow].Cells[HDeptNumberCol].Value);
                                break;
                            case HCusNumberCol:
                                BLL.ClsBaseSelect_InterFace.SetGridByCus(grdMain, sRow, HCusIDCol, HCusNumberCol, HCusNameCol);
                                oEdit.Text = DBUtility.ClsPub.isStrNull(grdMain.Rows[sRow].Cells[HCusNumberCol].Value);
                                break;
                            case HDateCol:
                                BLL.ClsPub_BLL.Sub_SelectDate(grdMain, sRow, HDateCol);
                                oEdit.Text = DBUtility.ClsPub.isStrNull(grdMain.Rows[sRow].Cells[HDateCol].Value);
                                break;
                            case HAuxPropNumberCol:
                                oProperty.WherePart = "";
                                if (ERPMode == "CLOUD")
                                {
                                    sWhere = " and HMaterNumber = '" + DBUtility.ClsPub.isStrNull(grdMain.Rows[grdMain.CurrentCell.RowIndex].Cells[HMaterNumberCol].Value) + "'";
                                }
                                else
                                {
                                    sWhere = "";
                                }
                                if (oProperty.RefreshView(sWhere))
                                {
                                    grdMain.Rows[sRow].Cells[HAuxPropIDCol].Value = oProperty.oModel.HItemID.ToString();
                                    grdMain.Rows[sRow].Cells[HAuxPropNumberCol].Value = oProperty.oModel.HNumber;
                                    grdMain.Rows[sRow].Cells[HAuxPropNameCol].Value = oProperty.oModel.HName;
                                    oEdit.Text = oProperty.oModel.HNumber;
                                }
                                else
                                {
                                    grdMain.Rows[sRow].Cells[HAuxPropIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HAuxPropNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HAuxPropNameCol].Value = "";
                                }
                                break;
                            default:
                                break;
                        }
                        bc.Enabled = true;
                        break;
                    }
                case 117:  //F6
                    {
                        switch (sCol)
                        {
                            default:
                                break;
                        }
                        break;
                    }
                default:
                    break;
            }
        }
        //选原单
        private void cmdSourceBillNo_Click(object sender, EventArgs e)
        {
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                HOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
            }
            if (HOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return;
            }
            if (cmbSourceBillType.Text.Trim() == "生产订单")
            {
                string sWhere = "";
                //系统参数,生成条码数量可否超源单数量控制(N为不可超源单数量)
                if (SourceQtyCtl == "N")
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString() + " and ä»»åŠ¡æ•°é‡>0";
                }
                else
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString();
                }
                DAL.Cls_S_IFCLD_ICMOList oIFCLD_ICMOList = new DAL.Cls_S_IFCLD_ICMOList();
                if (oIFCLD_ICMOList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIFCLD_ICMOList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "生产汇报单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_ICMOReportBillList oIF_ICMOReportBillList = new DAL.Cls_S_IF_ICMOReportBillList();
                if (oIF_ICMOReportBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_ICMOReportBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "收料通知单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_POInStockBillList oIF_POInStockBillList = new DAL.Cls_S_IF_POInStockBillList();
                if (oIF_POInStockBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_POInStockBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "采购订单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_POOrderBillList oIF_POOrderBillList = new DAL.Cls_S_IF_POOrderBillList();
                if (oIF_POOrderBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_POOrderBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "委外订单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_EntrustOrderBillList oIF_EntrustOrderBillList = new DAL.Cls_S_IF_EntrustOrderBillList();
                if (oIF_EntrustOrderBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_EntrustOrderBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "采购入库单")
            {
                string sWhere = "";
                DAL.Cls_S_IF_POStockInBillList oIF_POStockInBillList = new DAL.Cls_S_IF_POStockInBillList();
                if (oIF_POStockInBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_POStockInBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "倒箱单")
            {
                string sWhere = "";
                DAL.Cls_S_IF_ChangeBoxBillList oIF_ChangeBoxBillList = new DAL.Cls_S_IF_ChangeBoxBillList();
                if (oIF_ChangeBoxBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_ChangeBoxBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "退货通知单")
            {
                string sWhere = "";
                DAL.Cls_S_IF_SeOutStockBackBillList oIF_SeOutStockBackBillList = new DAL.Cls_S_IF_SeOutStockBackBillList();
                if (oIF_SeOutStockBackBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_SeOutStockBackBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "其他入库单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_OtherInBillList oIF_OtherInBillList = new DAL.Cls_S_IF_OtherInBillList();
                if (oIF_OtherInBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_OtherInBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "直接调拨单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_MoveStockBillList oIF_MoveStockBillList = new DAL.Cls_S_IF_MoveStockBillList();
                if (oIF_MoveStockBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_MoveStockBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "采购退料单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_POStockInBackBillList oIF_POStockInBackBillList = new DAL.Cls_S_IF_POStockInBackBillList();
                if (oIF_POStockInBackBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_POStockInBackBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "生产退料单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_MateOutBackBillList oIF_MateOutBackBillList = new DAL.Cls_S_IF_MateOutBackBillList();
                if (oIF_MateOutBackBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_MateOutBackBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "组装拆卸单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_PackageDismantleBillList oIF_PackageDismantleBillList = new DAL.Cls_S_IF_PackageDismantleBillList();
                if (oIF_PackageDismantleBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_PackageDismantleBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "工序流转卡")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_ProcessExchangeBillList oIF_ProcessExchangeBillList = new DAL.Cls_S_IF_ProcessExchangeBillList();
                if (oIF_ProcessExchangeBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_ProcessExchangeBillList.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "工序汇报单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                DAL.Cls_S_IF_ProcessReportBillList oIF_ProcessReportBillList = new DAL.Cls_S_IF_ProcessReportBillList();
                if (oIF_ProcessReportBillList.Refresh(sWhere))  //选择原单
                {
                    FillSelectData(oIF_ProcessReportBillList.oBillSelectColl);
                }
            }
            else
            {
            }
            //选择源单后,加载该源单记录物料在当前日期的条码列表
            Display4();
        }
        //
        private void FillSelectData(List<DBUtility.BillSelect> oList)
        {
            if (oList.Count != 1)
            {
                MessageBox.Show("请选择一条数据!");
                return;
            }
            DataSet Ds;
            oSumGrid.Changelock = true;
            initGrid();
            int i = -1;
            foreach (DBUtility.BillSelect oSelectRow in oList)
            {
                i = i + 1;
                //生产订单
                if (oSelectRow.BillType == "3710")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_ICMOBillList " + oSelectRow.BillMainID.ToString() + "," + oSelectRow.BillSubID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_ICMOBillList");
                    //Ds = oCn.RunProcReturn("select * from h_v_IFCLD_ICMOList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IFCLD_ICMOList");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                }
                //生产汇报单
                if (oSelectRow.BillType == "3711")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_ICMOReportList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_ICMOReportList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //收料通知单
                if (oSelectRow.BillType == "1103")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POInStockList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POInStockList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //采购订单
                if (oSelectRow.BillType == "1102")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POOrderList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POOrderList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //委外订单
                if (oSelectRow.BillType == "1601")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_EntrustOrderList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_EntrustOrderList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //采购入库单
                if (oSelectRow.BillType == "1201")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POStockInBillList_Source where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POStockInBillList_Source");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //倒箱单
                if (oSelectRow.BillType == "1240")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_ChangeBoxList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_ChangeBoxList");
                    //写入信息
                    Sub_WriteInForm3(Ds.Tables[0], i);
                }
                //退货通知单
                if (oSelectRow.BillType == "1403")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_SeOutStockBackList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_SeOutStockBackList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //其他入库单
                if (oSelectRow.BillType == "1203")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_OtherInList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_OtherInList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //直接调拨单
                if (oSelectRow.BillType == "1207")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_MoveStockList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_MoveStockList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //采购退料单
                if (oSelectRow.BillType == "1239")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POStockInBackList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POStockInBackList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //生产退料单
                if (oSelectRow.BillType == "1244")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_MateOutBackList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_MateOutBackList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //组装拆卸单
                if (oSelectRow.BillType == "1255")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_PackageDismantleList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_PackageDismantleList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //工序流转卡
                if (oSelectRow.BillType == "3772")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_ProcessExchangeList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_ProcessExchangeList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //工序汇报单
                if (oSelectRow.BillType == "3714")
                {
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_ProcessReportList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_ProcessReportList");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //即时库存
                if (oSelectRow.BillType == "JSKC")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_KF_ICInventoryList_IF where hmaterid=" + oSelectRow.BillMainID + " and hwhid=" + oSelectRow.BillSubID + " and hspid=" + oSelectRow.SPID + " and HAuxPropID=" + oSelectRow.HAuxPropID + " and æ‰¹æ¬¡='" + oSelectRow.BatchNo + "' and è®¡åˆ’跟踪号='" + oSelectRow.BillNo + "' and ç”Ÿäº§æ—¥æœŸ='" + oSelectRow.HProduceDate + "' and æœ‰æ•ˆæœŸè‡³='" + oSelectRow.HExpiryDate + "'", "h_v_KF_ICInventoryList_IF");
                    //写入信息
                    Sub_WriteInForm2(Ds.Tables[0], i);
                }
            }
            //
            oSumGrid.Changelock = false;
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            if (grdMain.Rows.Count > 0)
            {
                //根据源单设置表头
                textBox_HMaterNumber.Text = grdMain.Rows[0].Cells[HMaterNumberCol].Value.ToString();
                textBox_HMaterName.Text = grdMain.Rows[0].Cells[HMaterNameCol].Value.ToString();
                textBox_HMaterModel.Text = grdMain.Rows[0].Cells[HMaterModelCol].Value.ToString();
                long HMaterID = ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value.ToString());
                Ds = oCn.RunProcReturn("select * from Gy_Material where HItemID = " + HMaterID + " and HUSEORGID =" + HOrgID, "Gy_Material");
                if (Ds != null && Ds.Tables[0].Rows.Count > 0)
                {
                    string HBatchManager = Ds.Tables[0].Rows[0]["HBatchManager"].ToString();
                    if (HBatchManager == "False")
                    {
                        radioButton_HIsUsingBatchNo.Checked = false;
                    }
                    else
                    {
                        radioButton_HIsUsingBatchNo.Checked = true;
                    }
                }
                //设置批号
                if (radioButton_HIsUsingBatchNo.Checked)
                {
                    grdMain.Rows[0].Cells[HBatchNoCol].Value = getBatchNo();
                }
            }
        }
        //根据TABLE写入界面(生产任务单)
        private void Sub_WriteInForm(DataTable oTable, int i)
        {
            ////加载表头
            //this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            //this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            grdMain.Rows[i].Cells[HinitQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            //
            grdMain.Rows[i].Cells[HMainIDCol].Value = oTable.Rows[0]["hmainid"].ToString();
            grdMain.Rows[i].Cells[HSubIDCol].Value = oTable.Rows[0]["hsubid"].ToString();
            grdMain.Rows[i].Cells[HBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HSourceBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HBillTypeCol].Value = oTable.Rows[0]["HBillType"].ToString();
            grdMain.Rows[i].Cells[HDateCol].Value = oTable.Rows[0]["日期"].ToString(); //博日 æ”¶æ–™å•据日期
            grdMain.Rows[i].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
            grdMain.Rows[i].Cells[HSupIDCol].Value = oTable.Rows[0]["hsupid"].ToString();
            grdMain.Rows[i].Cells[HSupNumberCol].Value = oTable.Rows[0]["供应商代码"].ToString();
            grdMain.Rows[i].Cells[HSupNameCol].Value = oTable.Rows[0]["供应商"].ToString();
            grdMain.Rows[i].Cells[HDeptIDCol].Value = oTable.Rows[0]["HDeptID"].ToString();
            grdMain.Rows[i].Cells[HDeptNumberCol].Value = oTable.Rows[0]["部门代码"].ToString();
            grdMain.Rows[i].Cells[HDeptNameCol].Value = oTable.Rows[0]["部门"].ToString();
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            //grdMain.Rows[i].Cells[HBatchManagerCol].Value = oTable.Rows[0]["是否启用批次"].ToString();
            grdMain.Rows[i].Cells[HBatchNoCol].Value = oTable.Rows[0]["批次"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = oTable.Rows[0]["备注"].ToString();
            grdMain.Rows[i].Cells[HMTONoCol].Value = oTable.Rows[0]["计划跟踪号"].ToString();
            grdMain.Rows[i].Cells[HCusIDCol].Value = oTable.Rows[0]["HCusID"].ToString();
            grdMain.Rows[i].Cells[HCusNumberCol].Value = oTable.Rows[0]["客户代码"].ToString();
            grdMain.Rows[i].Cells[HCusNameCol].Value = oTable.Rows[0]["客户"].ToString();
            grdMain.Rows[i].Cells[HCusTypeCol].Value = oTable.Rows[0]["客户型号"].ToString();
            grdMain.Rows[i].Cells[HPinfanBarCodeCol].Value = oTable.Rows[0]["HPinfanBarCode"].ToString();
            grdMain.Rows[i].Cells[HPinfanCol].Value = oTable.Rows[0]["HPinfan"].ToString();
            //grdMain.Rows[i].Cells[HSourceIDCol].Value = oTable.Rows[0]["HSourceID"].ToString();
            //grdMain.Rows[i].Cells[HSourceNumberCol].Value = oTable.Rows[0]["生产线代码"].ToString();
            grdMain.Rows[i].Cells[HSourceNameCol].Value = oTable.Rows[0]["生产线"].ToString();
            grdMain.Rows[i].Cells[HEndDateCol].Value = oTable.Rows[0]["计划完工日期"].ToString();//博日 ç”Ÿäº§è®¢å• å¤±æ•ˆæ—¥æœŸ
            if (cmbHBarCodeType.Text == "仪器外购件条码容器规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            }
            else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则"
                || cmbHBarCodeType.Text == "仪器成品条码规则"
                || cmbHBarCodeType.Text == "试剂成品条码规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = "1";
            }
            else
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
            }
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["HProduceDate"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["HExpiryDate"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            //自动生成-设置数量、最小包装数、箱数为1
            grdMain.Rows[i].Cells[HQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HMinQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HBQtyCol].Value = 1;
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HBatchNoCol.ToString() +
                                "," + HPackQtyCol.ToString() +
                                "," + HRemarkCol.ToString();
            grdMain.Columns[HBillNoCol].ReadOnly = true;
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            tabControl1.SelectedIndex = 3;
            bc.Enabled = true;
            //
            RowCount(i, 0);
        }
        //根据TABLE写入界面
        private void Sub_WriteInForm1(DataTable oTable, int i)
        {
            ////加载表头
            //this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            //this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            grdMain.Rows[i].Cells[HinitQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            //
            grdMain.Rows[i].Cells[HMainIDCol].Value = oTable.Rows[0]["hmainid"].ToString();
            grdMain.Rows[i].Cells[HSubIDCol].Value = oTable.Rows[0]["hsubid"].ToString();
            grdMain.Rows[i].Cells[HBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HBillTypeCol].Value = oTable.Rows[0]["HBillType"].ToString();
            grdMain.Rows[i].Cells[HDateCol].Value = oTable.Rows[0]["日期"].ToString(); //博日 å•据日期
            grdMain.Rows[i].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
            grdMain.Rows[i].Cells[HDeptIDCol].Value = oTable.Rows[0]["HDeptID"].ToString();
            grdMain.Rows[i].Cells[HDeptNumberCol].Value = oTable.Rows[0]["部门代码"].ToString();
            grdMain.Rows[i].Cells[HDeptNameCol].Value = oTable.Rows[0]["部门"].ToString();
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            //grdMain.Rows[i].Cells[HBatchManagerCol].Value = oTable.Rows[0]["是否启用批次"].ToString();
            grdMain.Rows[i].Cells[HBatchNoCol].Value = oTable.Rows[0]["批次"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = oTable.Rows[0]["备注"].ToString();
            grdMain.Rows[i].Cells[HMTONoCol].Value = oTable.Rows[0]["计划跟踪号"].ToString();
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["生产日期"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["有效期至"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            if (cmbHBarCodeType.Text == "仪器外购件条码容器规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            }
            else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = "1";
            }
            else
            {
                if (CampanyName == "中控")
                {
                    grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
                }
                else
                {
                    grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
                }
            }
            grdMain.Rows[i].Cells[HMakerCol].Value = ClsPub.CurUserName;
            if (cmbSourceBillType.Text.Trim() == "收料通知单" || cmbSourceBillType.Text.Trim() == "采购订单"
                || cmbSourceBillType.Text.Trim() == "委外订单" || cmbSourceBillType.Text.Trim() == "采购入库单")
            {
                grdMain.Rows[i].Cells[HInnerBillNoCol].Value = oTable.Rows[0]["内部采购订单号"].ToString();
                grdMain.Rows[i].Cells[HSupIDCol].Value = oTable.Rows[0]["hsupid"].ToString();
                grdMain.Rows[i].Cells[HSupNumberCol].Value = oTable.Rows[0]["供应商代码"].ToString();
                grdMain.Rows[i].Cells[HSupNameCol].Value = oTable.Rows[0]["供应商"].ToString();
                if (cmbSourceBillType.Text.Trim() == "收料通知单")
                {
                    if (oTable.Rows[0]["是否赠品"].ToString() == "是")
                    {
                        grdMain.Rows[i].Cells[HGiveAwayFlagCol].Value = 1;
                    }
                    else
                    {
                        grdMain.Rows[i].Cells[HGiveAwayFlagCol].Value = 0;
                    }
                    grdMain.Rows[i].Cells[HSeOrderBillNoCol].Value = oTable.Rows[0]["销售订单号"].ToString();
                    grdMain.Rows[i].Cells[HSeOrderSEQCol].Value = oTable.Rows[0]["销售订单行号"].ToString();
                }
            }
            if (cmbSourceBillType.Text.Trim() == "退货通知单")
            {
                grdMain.Rows[i].Cells[HCusIDCol].Value = oTable.Rows[0]["HCusID"].ToString();
                grdMain.Rows[i].Cells[HCusNumberCol].Value = oTable.Rows[0]["客户代码"].ToString();
                grdMain.Rows[i].Cells[HCusNameCol].Value = oTable.Rows[0]["客户"].ToString();
            }
            if (cmbSourceBillType.Text.Trim() == "其他入库单")
            {
                grdMain.Rows[i].Cells[HWhIDCol].Value = oTable.Rows[0]["HWhID"].ToString();
                grdMain.Rows[i].Cells[HWhNumberCol].Value = oTable.Rows[0]["仓库代码"].ToString();
                grdMain.Rows[i].Cells[HWhNameCol].Value = oTable.Rows[0]["仓库"].ToString();
                grdMain.Rows[i].Cells[HSPIDCol].Value = oTable.Rows[0]["HSPID"].ToString();
                grdMain.Rows[i].Cells[HSPNumberCol].Value = oTable.Rows[0]["仓位代码"].ToString();
                grdMain.Rows[i].Cells[HSPNameCol].Value = oTable.Rows[0]["仓位"].ToString();
            }
            //自动生成-设置数量、最小包装数、箱数为1
            grdMain.Rows[i].Cells[HQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HMinQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HBQtyCol].Value = 1;
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HBatchNoCol.ToString() +
                                "," + HRemarkCol.ToString();
            grdMain.Columns[HBillNoCol].ReadOnly = true;
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            tabControl1.SelectedIndex = 3;
            bc.Enabled = true;
            //
            RowCount(i, 0);
        }
        //根据TABLE写入界面(K3即时库存)
        private void Sub_WriteInForm2(DataTable oTable, int i)
        {
            ////加载表头
            //this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            //this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            grdMain.Rows[i].Cells[HinitQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            //
            //grdMain.Rows[i].Cells[HMainIDCol].Value = oTable.Rows[0]["hmainid"].ToString();
            //grdMain.Rows[i].Cells[HBillNoCol].Value = oTable.Rows[0]["任务单号"].ToString();
            //grdMain.Rows[i].Cells[HBillTypeCol].Value = oTable.Rows[0]["HBillType"].ToString();
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            grdMain.Rows[i].Cells[HAuxPropIDCol].Value = oTable.Rows[0]["HAuxPropID"].ToString();
            grdMain.Rows[i].Cells[HAuxPropNumberCol].Value = oTable.Rows[0]["辅助属性代码"].ToString();
            grdMain.Rows[i].Cells[HAuxPropNameCol].Value = oTable.Rows[0]["辅助属性名称"].ToString();
            grdMain.Rows[i].Cells[HBatchNoCol].Value = oTable.Rows[0]["批次"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HSupIDCol].Value = oTable.Rows[0]["HSupplyID"].ToString();
            grdMain.Rows[i].Cells[HSupNumberCol].Value = oTable.Rows[0]["供应商代码"].ToString();
            grdMain.Rows[i].Cells[HSupNameCol].Value = oTable.Rows[0]["供应商"].ToString();
            grdMain.Rows[i].Cells[HWhIDCol].Value = oTable.Rows[0]["HWhID"].ToString();
            grdMain.Rows[i].Cells[HWhNumberCol].Value = oTable.Rows[0]["仓库代码"].ToString();
            grdMain.Rows[i].Cells[HWhNameCol].Value = oTable.Rows[0]["仓库"].ToString();
            grdMain.Rows[i].Cells[HSPIDCol].Value = oTable.Rows[0]["HSPID"].ToString();
            grdMain.Rows[i].Cells[HSPNumberCol].Value = oTable.Rows[0]["仓位代码"].ToString();
            grdMain.Rows[i].Cells[HSPNameCol].Value = oTable.Rows[0]["仓位"].ToString();
            grdMain.Rows[i].Cells[HDateCol].Value = ClsPub.GetServerDate(0);
            grdMain.Rows[i].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = "按库存生成";
            grdMain.Rows[i].Cells[HMTONoCol].Value = oTable.Rows[0]["计划跟踪号"].ToString();
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["生产日期"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["有效期至"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            if (CampanyName == "中控")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            }
            //自动生成-设置数量、最小包装数、箱数为1
            grdMain.Rows[i].Cells[HQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HMinQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HBQtyCol].Value = 1;
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HRemarkCol.ToString() +
                                "," + HMinQtyCol.ToString();
            grdMain.Columns[HBillNoCol].ReadOnly = true;
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            tabControl1.SelectedIndex = 3;
            bc.Enabled = true;
            //
            RowCount(i, 0);
        }
        //根据TABLE写入界面(倒箱单)
        private void Sub_WriteInForm3(DataTable oTable, int i)
        {
            ////加载表头
            //this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            //this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["可生成条码数量"]);
            grdMain.Rows[i].Cells[HinitQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["可生成条码数量"]);
            //
            grdMain.Rows[i].Cells[HMainIDCol].Value = oTable.Rows[0]["hmainid"].ToString();
            grdMain.Rows[i].Cells[HSubIDCol].Value = oTable.Rows[0]["hsubid"].ToString();
            grdMain.Rows[i].Cells[HBillNoCol].Value = oTable.Rows[0]["单据号"].ToString();
            grdMain.Rows[i].Cells[HBillTypeCol].Value = oTable.Rows[0]["HBillType"].ToString();
            grdMain.Rows[i].Cells[HDateCol].Value = oTable.Rows[0]["日期"].ToString();
            grdMain.Rows[i].Cells[HShowDateCol].Value = dtpHDate.Value.ToShortDateString();
            grdMain.Rows[i].Cells[HDeptIDCol].Value = oTable.Rows[0]["HDeptID"].ToString();
            grdMain.Rows[i].Cells[HDeptNumberCol].Value = oTable.Rows[0]["部门代码"].ToString();
            grdMain.Rows[i].Cells[HDeptNameCol].Value = oTable.Rows[0]["部门"].ToString();
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            grdMain.Rows[i].Cells[HPinfanCol].Value = oTable.Rows[0]["品番"].ToString();
            grdMain.Rows[i].Cells[HPinfanBarCodeCol].Value = oTable.Rows[0]["HPinfanBarCode"].ToString();
            grdMain.Rows[i].Cells[HAuxPropIDCol].Value = oTable.Rows[0]["HAuxPropID"].ToString();
            grdMain.Rows[i].Cells[HAuxPropNumberCol].Value = oTable.Rows[0]["辅助属性代码"].ToString();
            grdMain.Rows[i].Cells[HAuxPropNameCol].Value = oTable.Rows[0]["辅助属性名称"].ToString();
            grdMain.Rows[i].Cells[HBatchNoCol].Value = oTable.Rows[0]["批号"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = oTable.Rows[0]["备注"].ToString();
            //获取最新最小包装数
            DataSet oDs = new DataSet();
            oDs = oCn.RunProcReturn("exec h_p_Gy_StdPack " + oTable.Rows[0]["HMaterID"].ToString() + "," + oTable.Rows[0]["HAuxPropID"].ToString(), "h_p_Gy_StdPack");
            //
            if (oDs != null && oDs.Tables[0].Rows.Count > 0)
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = DBUtility.ClsPub.isSingle(oDs.Tables[0].Rows[0]["HMinPack"]);
            }
            //自动生成-设置数量、最小包装数、箱数为1
            grdMain.Rows[i].Cells[HQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HMinQtyCol].Value = 1;
            grdMain.Rows[i].Cells[HBQtyCol].Value = 1;
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                                "," + HRemarkCol.ToString() +
                                "," + HMaterNameCol.ToString() +
                                "," + HMaterModelCol.ToString() +
                                "," + HPinfanCol.ToString() +
                                "," + HMinQtyCol.ToString();
            grdMain.Columns[HBillNoCol].ReadOnly = true;
            //设置合计列
            string sTotalCol = HQtyCol.ToString();
            //
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
            tabControl1.SelectedIndex = 3;
            bc.Enabled = true;
            //
            RowCount(i, 0);
        }
        //网格编辑前判断
        private void grdMain_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            int i = grdMain.CurrentCell.ColumnIndex;
            if (DBUtility.Xt_BaseBillFun.AllowEdit(grdStatus, oSumGrid, i))
            {
                e.Cancel = true;
            }
        }
        //网格编辑后处理
        private void grdMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            if (e.ColumnIndex == HMinQtyCol)
            {
                RowCount(e.RowIndex, 0);  //
            }
            else if (e.ColumnIndex == HQtyCol)
            {
                RowCount(e.RowIndex, 0);  //
            }
            //
            if (this.EditingControl != null)      //释放事件
            {
                EditingControl.KeyDown -= new KeyEventHandler(this.EditingControl_KeyDown);
                this.EditingControl = null;
            }
        }
        DataGridViewTextBoxEditingControl EditingControl;
        private void grdMain_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            //
            if (!grdStatus)
            {
                return;
            }
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            //
            //if (oSumGrid.Changelock)
            //    return;
            //if(oSumGrid.EditStatus)
            //{
            if (!CheckGridRow(oSumGrid.OldCell.Row))
                return;
            //}
        }
        private void grdMain_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        private void grdMain_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (grdMain.CurrentCell != null)
            {
                if (e.Control is DataGridViewTextBoxEditingControl)
                {
                    this.EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
                    //增加委托处理
                    this.EditingControl.KeyDown += new KeyEventHandler(this.EditingControl_KeyDown);
                }
            }
        }
        private void EditingControl_KeyDown(object sender, KeyEventArgs e)
        {
            //业务处理
            Sub_GridKey(e.KeyValue, grdMain.CurrentRow.Index, grdMain.CurrentCell.ColumnIndex, EditingControl);
        }
        private void grdMain_RowHeadersWidthChanged(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        private void grdMain_Scroll(object sender, ScrollEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            oSumGrid.DisplayCurRow();
        }
        #endregion
        #region  //打印设置
        GridppReport Report;
        int CurRows = 0;
        string sBarCodeItemID = ""; //条码自增列
        //预览
        private void yl_Click(object sender, EventArgs e)
        {
            //判断是否已经生成条码
            if (DBUtility.ClsPub.isStrNull(grdSub.Rows[0].Cells[HTMCol].Value) == "")
            {
                MessageBox.Show("条码未生成,请先生成条码后再预览!");
                return;
            }
            //打印前判断条码是否已打印过
            if (ReportPrintBegin())
            {
                return;
            }
            //选择打印模板
            BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
            oFrm.sBillName = ModName;
            oFrm.sBillModel = ModCaption;
            oFrm.ShowDialog();
            if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK)
            {
                Sub_SetReport(oFrm.sOpenTmp);
                Report.PrintPreview(false);
                Thread.Sleep(1000);
            }
        }
        //打印
        private void dy_Click(object sender, EventArgs e)
        {
            //判断是否已经生成条码
            if (DBUtility.ClsPub.isStrNull(grdSub.Rows[0].Cells[HTMCol].Value) == "")
            {
                MessageBox.Show("条码未生成,请先生成条码后再打印!");
                return;
            }
            //打印前判断条码是否已打印过
            if (ReportPrintBegin())
            {
                return;
            }
            //选择打印模板
            BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
            oFrm.sBillName = ModName;
            oFrm.sBillModel = ModCaption;
            oFrm.ShowDialog();
            if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK)
            {
                //循环选中行
                Sub_SetReport(oFrm.sOpenTmp);
                Report.Print(true);
                Thread.Sleep(1000);
            }
        }
        ////打印前判断条码是否已打印过
        //private bool ReportPrintBegin()
        //{
        //    string sRelQty = "";
        //    if (oBar.Set_BPrintQty(DBUtility.ClsPub.isStrNull(grdSub.Rows[0].Cells[HTMCol].Value), ref sRelQty))
        //    {
        //        MessageBox.Show("条码已经打印过,不可重复打印!");
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        //打印前判断条码是否超过允许可打印次数
        private bool ReportPrintBegin()
        {
            string sHRemark = "";
            if (PrintQtyCtl == "Y")
            {
                if (oBar.Set_CheckPrintQty_SD(HInterID, PrintQty, ref sHRemark))
                {
                    MessageBox.Show(sHRemark);
                    return true;
                }
                return false;
            }
            else
            {
                return false;
            }
        }
        private void Sub_SetReport(string sOpenTmp)
        {
            //判断行数
            for (int i = 0; i < grdList.Rows.Count; i++)
            {
                grdList.Rows[i].Cells[0].Value = "*";
            }
            //
            Report = new GridppReport();
            Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf");  //here .
            Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
            Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
            Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd);
        }
        //填入单据表头信息
        private void ReportBeforePostRecord()//
        {
            try
            {
                //Report.FieldByName("物料代码").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterNumber2Col].Value);
                //Report.FieldByName("物料名称").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterName2Col].Value);
                //Report.FieldByName("规格型号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterModel2Col].Value);
                ////Report.FieldByName("自定义规格").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HModel2Col].Value);
                //Report.FieldByName("条码编号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HTMCol].Value);
                //Report.FieldByName("数量").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HQty2Col].Value);
                //Report.FieldByName("源单单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSourceBillNoCol].Value);
                //Report.FieldByName("销售订单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSeOrderBillNo2Col].Value);
                //Report.FieldByName("生产车间").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HDeptName2Col].Value);
                //Report.FieldByName("备注").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HRemark2Col].Value);
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表头:" + e.Message);
            }
        }
        //填入单据表体信息
        private void ReportFetchRecordByDataTable()
        {
            try
            {
                DataTable ds = new DataTable();
                BLL.Utility.FillRecordToReport_Sel(Report, grdList, ds, Fun_GetCol("选择"));
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表体:" + e.Message);
            }
        }
        ////打印结束后回填条码打印次数
        //private void ReportPrintEnd()
        //{
        //    try
        //    {
        //        oCn.RunProc("update Gy_BarCodeBill set HPrintQty=isnull(HPrintQty,0)+1 where HInterID=" + HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
        //    }
        //    catch (Exception e)
        //    {
        //        MessageBox.Show("打印失败!打印结束 ï¼š" + e.Message);
        //    }
        //}
        //打印结束后回填条码打印次数
        private void ReportPrintEnd()
        {
            if (UpdatePrintQtyCtl == "Y")
            {
                oBar.Set_UpdatePrintQty_SD(HInterID);
            }
        }
        //试打印
        private void sdy_Click(object sender, EventArgs e)
        {
            //判断是否已经生成条码
            if (DBUtility.ClsPub.isStrNull(grdSub.Rows[0].Cells[HTMCol].Value) == "")
            {
                MessageBox.Show("条码未生成,请先生成条码后再预览!");
                return;
            }
            //打印前判断条码是否已打印过
            if (ReportPrintBegin_SDY())
            {
                return;
            }
            //选择打印模板
            BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
            oFrm.sBillName = ModName;
            oFrm.sBillModel = ModCaption;
            oFrm.ShowDialog();
            if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK)
            {
                Sub_SetReportView(oFrm.sOpenTmp);
                Report.PrintPreview(false);
                Thread.Sleep(1000);
            }
        }
        //打印前判断条码是否超过允许可打印次数
        private bool ReportPrintBegin_SDY()
        {
            string sHRemark = "";
            sBarCodeItemID = "";
            for (int i = 0; i < grdList.SelectedRows.Count; i++)
            {
                sBarCodeItemID = sBarCodeItemID + "," + DBUtility.ClsPub.isLong(grdList.Rows[grdList.SelectedRows[i].Index].Cells[Fun_GetCol("HItemID")].Value).ToString();
            }
            sBarCodeItemID = sBarCodeItemID.Remove(0, 1);
            if (PrintQtyCtl == "Y")
            {
                if (oBar.Set_CheckPrintQty(sBarCodeItemID, PrintQty, ref sHRemark))
                {
                    MessageBox.Show(sHRemark);
                    return true;
                }
                return false;
            }
            else
            {
                return false;
            }
        }
        private void Sub_SetReportView(string sOpenTmp)
        {
            //判断行数
            for (int i = 0; i < grdList.Rows.Count; i++)
            {
                grdList.Rows[i].Cells[0].Value = "";
            }
            for (int i = 0; i < grdList.SelectedRows.Count; i++)
            {
                grdList.Rows[grdList.SelectedRows[i].Index].Cells[0].Value = "*";
            }
            //
            Report = new GridppReport();
            Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf");  //here .
            Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
            Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
            Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd_SDY);
        }
        //打印结束后回填条码打印次数
        private void ReportPrintEnd_SDY()
        {
            if (UpdatePrintQtyCtl == "Y")
            {
                oBar.Set_UpdatePrintQty(sBarCodeItemID);
            }
        }
        private Int32 Fun_GetCol(string sCol)
        {
            return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdList);
        }
        #endregion
        private void grdSub_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            int i = grdSub.CurrentCell.ColumnIndex;
            if (DBUtility.Xt_BaseBillFun.AllowEdit(grdStatus, oSumGrid, i))
            {
                e.Cancel = true;
            }
        }
        private void grdSub_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            RowCount(e.RowIndex, 0);  //计算 é‡‘额 å•ä»·
            //
            if (this.EditingControl != null)      //释放事件
            {
                EditingControl.KeyDown -= new KeyEventHandler(this.EditingControl_KeyDown);
                this.EditingControl = null;
            }
        }
        //按库存生成条码
        private void kc_Click(object sender, EventArgs e)
        {
            long sHOrgID = -1;
            string sWhere = "";
            DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
            if (oClsGy_ORGANIZATIONS_View.GetInfoByName(cmbHOrgID.Text))
            {
                sHOrgID = oClsGy_ORGANIZATIONS_View.omodel.HItemID;
            }
            if (sHOrgID == -1)
            {
                MessageBox.Show("选择组织有错误!");
                return;
            }
            sWhere = " and HOrgID =" + sHOrgID.ToString();
            BLL.Cls_S_KF_ICInventoryList_IF oadd = new BLL.Cls_S_KF_ICInventoryList_IF();
            if (oadd.Refresh(sWhere))  //选择原单
            //if (oadd.Refresh(" and HErpClsID in (1,2,3) "))  //选择原单
            {
                FillSelectData(oadd.oBillSelectColl);
            }
        }
        //获取本月的第几周
        private static int getWeekNumInMonth(DateTime daytime)
        {
            int dayInMonth = daytime.Day;
            //本月第一天
            DateTime firstDay = daytime.AddDays(1 - daytime.Day);
            //本月第一天是周几
            int weekday = (int)firstDay.DayOfWeek == 0 ? 7 : (int)firstDay.DayOfWeek;
            //本月第一周有几天
            int firstWeekEndDay = 7 - (weekday - 1);
            //当前日期和第一周之差
            int diffday = dayInMonth - firstWeekEndDay;
            diffday = diffday > 0 ? diffday : 1;
            //当前是第几周,如果整除7就减一天
            int WeekNumInMonth = ((diffday % 7) == 0
             ? (diffday / 7 - 1)
             : (diffday / 7)) + 1 + (dayInMonth > firstWeekEndDay ? 1 : 0);
            return WeekNumInMonth;
        }
        //同步基础资料信息
        private void tb_Click(object sender, EventArgs e)
        {
            try
            {
                oCn.RunProc("exec h_p_IF_ERPDataToLocal", ref DBUtility.ClsPub.sExeReturnInfo);
                MessageBox.Show("同步基础资料成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("同步基础资料失败!" + ex);
            }
        }
        public Frm_Split oDlg = new Frm_Split();
        private void spRow_Click(object sender, EventArgs e)
        {
            //DBUtility.Xt_BaseBillFun.AddRow(oSumGrid);
            oDlg.ShowDialog();
            if (oDlg.IsOk == 1)
            {
                grdMainData_CF(DBUtility.ClsPub.isInt(oDlg.txtHQ.Text));
            }
        }
        private void grdMainData_CF(int HQty)
        {
            double hq = 0;
            int Qty = HQty - 1;
            int row = grdMain.CurrentCell.RowIndex;
            grdMain.Rows.Insert(row + 1, Qty);
            hq = DBUtility.ClsPub.isDoule(grdMain.Rows[row].Cells[HQtyCol].Value) / HQty;
            grdMain.Rows[row].Cells[HQtyCol].Value = hq;
            for (int i = 0; i < Qty; i++)
            {
                int r = i + 1;
                grdMain.Rows[row + r].Cells[HMaterIDCol].Value = grdMain.Rows[row].Cells[HMaterIDCol].Value;
                grdMain.Rows[row + r].Cells[HMaterNumberCol].Value = grdMain.Rows[row].Cells[HMaterNumberCol].Value;
                grdMain.Rows[row + r].Cells[HMaterNameCol].Value = grdMain.Rows[row].Cells[HMaterNameCol].Value;
                grdMain.Rows[row + r].Cells[HMaterModelCol].Value = grdMain.Rows[row].Cells[HMaterModelCol].Value;
                grdMain.Rows[row + r].Cells[HUnitIDCol].Value = grdMain.Rows[row].Cells[HUnitIDCol].Value;
                grdMain.Rows[row + r].Cells[HUnitNameCol].Value = grdMain.Rows[row].Cells[HUnitNameCol].Value;
                grdMain.Rows[row + r].Cells[HSourceIDCol].Value = grdMain.Rows[row].Cells[HSourceIDCol].Value;
                grdMain.Rows[row + r].Cells[HSourceNumberCol].Value = grdMain.Rows[row].Cells[HSourceNumberCol].Value;
                grdMain.Rows[row + r].Cells[HSourceNameCol].Value = grdMain.Rows[row].Cells[HSourceNameCol].Value;
                grdMain.Rows[row + r].Cells[HQtyCol].Value = DBUtility.ClsPub.isDoule(hq, 4);
                grdMain.Rows[row + r].Cells[HinitQtyCol].Value = DBUtility.ClsPub.isDoule(hq, 4);
                grdMain.Rows[row + r].Cells[HMinQtyCol].Value = 0;
                grdMain.Rows[row + r].Cells[HTagCol].Value = grdMain.Rows[row].Cells[HTagCol].Value;
                grdMain.Rows[row + r].Cells[HMainIDCol].Value = grdMain.Rows[row].Cells[HMainIDCol].Value;
                grdMain.Rows[row + r].Cells[HSubIDCol].Value = grdMain.Rows[row].Cells[HSubIDCol].Value;
                grdMain.Rows[row + r].Cells[HBillNoCol].Value = grdMain.Rows[row].Cells[HBillNoCol].Value;
                grdMain.Rows[row + r].Cells[HBillTypeCol].Value = grdMain.Rows[row].Cells[HBillTypeCol].Value;
                grdMain.Rows[row + r].Cells[HDateCol].Value = grdMain.Rows[row].Cells[HDateCol].Value;
                grdMain.Rows[row + r].Cells[HShowDateCol].Value = grdMain.Rows[row].Cells[HShowDateCol].Value;
                grdMain.Rows[row + r].Cells[HEndDateCol].Value = grdMain.Rows[row].Cells[HEndDateCol].Value;
                grdMain.Rows[row + r].Cells[HSupIDCol].Value = grdMain.Rows[row].Cells[HSupIDCol].Value;
                grdMain.Rows[row + r].Cells[HSupNumberCol].Value = grdMain.Rows[row].Cells[HSupNumberCol].Value;
                grdMain.Rows[row + r].Cells[HSupNameCol].Value = grdMain.Rows[row].Cells[HSupNameCol].Value;
                grdMain.Rows[row + r].Cells[HDeptIDCol].Value = grdMain.Rows[row].Cells[HDeptIDCol].Value;
                grdMain.Rows[row + r].Cells[HDeptNumberCol].Value = grdMain.Rows[row].Cells[HDeptNumberCol].Value;
                grdMain.Rows[row + r].Cells[HDeptNameCol].Value = grdMain.Rows[row].Cells[HDeptNameCol].Value;
                grdMain.Rows[row + r].Cells[HBatchNoCol].Value = grdMain.Rows[row].Cells[HBatchNoCol].Value;
                grdMain.Rows[row + r].Cells[HAuxPropIDCol].Value = grdMain.Rows[row].Cells[HAuxPropIDCol].Value;
                grdMain.Rows[row + r].Cells[HAuxPropNumberCol].Value = grdMain.Rows[row].Cells[HAuxPropNumberCol].Value;
                grdMain.Rows[row + r].Cells[HAuxPropNameCol].Value = grdMain.Rows[row].Cells[HAuxPropNameCol].Value;
                grdMain.Rows[row + r].Cells[HRemarkCol].Value = grdMain.Rows[row].Cells[HRemarkCol].Value;
                grdMain.Rows[row + r].Cells[HMTONoCol].Value = grdMain.Rows[row].Cells[HMTONoCol].Value;
                grdMain.Rows[row + r].Cells[HInnerBillNoCol].Value = grdMain.Rows[row].Cells[HInnerBillNoCol].Value;
                grdMain.Rows[row + r].Cells[HMakerCol].Value = grdMain.Rows[row].Cells[HMakerCol].Value;
                //网格打勾
                DataGridViewCheckBoxCell oCell = new DataGridViewCheckBoxCell();
                oCell.ThreeState = false;
                oCell.Value = grdMain.Rows[row].Cells[HGiveAwayFlagCol].Value;
                oCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                grdMain.Rows[row + r].Cells[HGiveAwayFlagCol] = oCell;
            }
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        private void grdSub_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        }
        private void Display()
        {
            //设置档案列表选项卡表格数据
            DataSet DSet = oCn.RunProcReturn("select * from h_v_IF_BarCodeBillList Where HinterID=" + HInterID.ToString() + " order by HItemID", "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo);
            //生成首行标题
            if (DSet == null)
            {
                MessageBox.Show("没有返回任何结果,条码不存在!" + DBUtility.ClsPub.sExeReturnInfo);
                return;
            }
            //
            grdList.DataSource = DSet.Tables[0].DefaultView;
            //冻结
            int FrCol = 0;
            string s = "是";
            DBUtility.Xt_BaseBillFun.DisplayGrid(grdList, this.Name + "grdList", s, FrCol);
            //画线
            //GraphLine();
        }
        // //设置工单条码选项卡表格数据
        private void Display4()
        {
            if (grdMain.Rows.Count > 0)
            {
                //日期获取方式
                string sDate = dtpHDate.Value.ToShortDateString();                                                                                     //
                string sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
                string sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
                sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                string sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
                sDay = sDay.Substring(sDay.Length - 2, 2);
                sDate = "20" + sYear + "-" + sPeriod + "-" + sDay;
                //设置工单条码选项卡表格数据
                string sql = "select * from h_v_IF_BarCodeBillList Where æºå•单号 = '" + grdMain.Rows[0].Cells[HBillNoCol].Value + "' and HMaterID = " + grdMain.Rows[0].Cells[HMaterIDCol].Value + " and HSTOCKORGID = " + HOrgID + " and CONVERT(varchar(100),条码日期, 23) = '" + sDate + "' order by æ¡ç ç¼–号";
                DataSet DSet1 = oCn.RunProcReturn(sql, "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo);
                //生成首行标题
                if (DSet1 == null)
                {
                    return;
                }
                //
                grdBillBarCodeList.DataSource = DSet1.Tables[0].DefaultView;
                //冻结
                int FrCol = 0;
                string s = "是";
                DBUtility.Xt_BaseBillFun.DisplayGrid(grdBillBarCodeList, this.Name + "grdBillBarCodeList", s, FrCol);
                //画线
                //GraphLine();
                //
            }
        }
        //关联按钮
        private void gl_Click(object sender, EventArgs e)
        {
            try
            {
                long HInterID = DBUtility.ClsPub.isLong(grdList.Rows[0].Cells[Fun_GetCol("HInterID")].Value);
                string HBarCode = DBUtility.ClsPub.isStrNull(grdList.Rows[0].Cells[Fun_GetCol("条码编号")].Value);
                string HBarCodeType = DBUtility.ClsPub.isStrNull(grdList.Rows[0].Cells[Fun_GetCol("条码类型")].Value);
                string HSourceBillType = DBUtility.ClsPub.isStrNull(grdList.Rows[0].Cells[Fun_GetCol("HSourceBillType")].Value);
                DataSet oDs = oCn.RunProcReturn("exec h_p_WMS_BarCodeToICStockBillSub_Insert " + HInterID.ToString() + ",'" + HBarCode + "','" + HBarCodeType + "','" + HSourceBillType + "'", "h_p_WMS_BarCodeToICStockBillSub_Insert");
                //
                if (oDs == null && oDs.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("关联自动生成条码出入库记录失败!");
                }
                else
                {
                    MessageBox.Show(DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0]["HRemark"]));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("关联自动生成条码出入库记录失败22!" + ex);
            }
        }
        //批次按钮
        private void BatchNo_Click(object sender, EventArgs e)
        {
            lblCaption.Focus();
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
            {
                long HMaterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value);          // ç‰©æ–™å†…码
                string HBatchNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HBatchNoCol].Value);     // æ‰¹å·
                if (HMaterID != 0)
                {
                    DataSet oDs = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_GetBatchNo " + HMaterID.ToString() + ",'" + HBatchNo + "','" + dtpHDate.Value.ToShortDateString() + "','" + CampanyName + "'", "h_p_Gy_BarCodeBill_GetBatchNo");
                    //
                    if (oDs == null && oDs.Tables[0].Rows.Count == 0)
                    {
                        MessageBox.Show("生成批次失败!");
                        return;
                    }
                    else if (DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0][0]) == "1")
                    {
                        grdMain.Rows[i].Cells[HBatchNoCol].Value = DBUtility.ClsPub.isStrNull(oDs.Tables[0].Rows[0]["HBatchNo"]);
                        b = true;
                    }
                }
            }
            //明细表是否为零行
            if (b == false)
            {
                MessageBox.Show("没有需要生成批次的明细行!", "提示");
                return;
            }
        }
        private void txtHSourceBillNo_KeyPress(object sender, KeyPressEventArgs e)
        {
@@ -3764,448 +2285,5 @@
            }
        }
        //生成外箱码
        private void wxm_Click(object sender, EventArgs e)
        {
            try
            {
                Int64 iInterID = 0;
                Int64 dPackQty = 0; //外箱数量
                Int64 dPackLeftQty = 0; //外箱剩余数量
                Int64 dLabelQty = 0; //小箱数量
                Int64 dQty = 0; //总数量
                Int64 dEntryID = 0; //行号
                string sPackBarCode = ""; //外箱码
                string sBarCode = ""; //唯一码
                Int64 LSH = 0;
                DataSet Ds;
                string sYear = DateTime.Today.Year.ToString().Substring(2, 2);
                string sPeriod = "0" + DateTime.Today.Month.ToString();
                sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                string sDay = "0" + DateTime.Today.Day.ToString();
                sDay = sDay.Substring(sDay.Length - 2, 2);
                //
                string sPackStr = "ZXM" + sYear + sPeriod + sDay; //外箱码 å‰ç¼€
                //必须条码生成按钮是灰度才可以生成箱条码
                if (bc.Enabled != false)
                {
                    MessageBox.Show("请先生成条形码,再生成箱条码");
                    return;
                }
                //-------------------根据HINTERID生成箱条码
                //生成前判断,循环物料网格,判断 æ˜¯å¦è®¾ç½®äº†åˆç†çš„ å¤–箱数量。 å¤–箱数量 å¿…须是 æœ€å°åŒ…装数的 å€æ•° å¹¶å¿…须大于0和大于等于最小包装数量。
                for (int i = 0; i < grdMain.Rows.Count; i++)
                {
                    if (DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value) != 0)
                    {
                        if (DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value) <= 0)
                        {
                            MessageBox.Show("请录入合理的外箱数量,第" + Convert.ToString(i + 1) + "行");
                            return;
                        }
                        if (DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value)
                            % DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMinQtyCol].Value) != 0
                            || DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value)
                            < DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMinQtyCol].Value))
                        {
                            MessageBox.Show("外箱数量必须是最小包装数的倍数,且大于等于最小包装数,第" + Convert.ToString(i + 1) + "行");
                            return;
                        }
                    }
                }
                //oCn.BeginTran();
                //从0行进行循环 ç‰©æ–™ç½‘格,获取外箱数量
                for (int i = 0; i < grdMain.Rows.Count; i++)
                {
                    if (DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value) != 0)
                    {
                        //获取总数量、外箱数量
                        dPackQty = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value);
                        dQty = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HQtyCol].Value);
                        dEntryID = i + 1;
                        dPackLeftQty = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value);
                        //生成一个外箱码
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sPackStr + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号                                                                                          //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]) + 1;
                        sPackBarCode = sPackStr + LSH.ToString();
                        oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sPackStr + "'");
                        //子循环 æ¡ç ç½‘æ ¼
                        for (int j = 0; j < grdSub.Rows.Count; j++)
                        {
                            if (dEntryID == DBUtility.ClsPub.isLong(grdSub.Rows[j].Cells[HEntryID2Col].Value))
                            {
                                if (dQty <= 0)
                                {
                                    continue;
                                }
                                if (dPackLeftQty > 0) //当剩余外箱数量小于等于0时,重新生成外箱码
                                {
                                }
                                else
                                {
                                    //生成一个外箱码
                                    Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sPackStr + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号                                                                                          //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                                    LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]) + 1;
                                    sPackBarCode = sPackStr + LSH.ToString();
                                    oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sPackStr + "'");
                                    dPackLeftQty = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackQtyCol].Value);
                                }
                                sBarCode = DBUtility.ClsPub.isStrNull(grdSub.Rows[j].Cells[HTMCol].Value); // æ¡ç 
                                dLabelQty = DBUtility.ClsPub.isLong(grdSub.Rows[j].Cells[HQty2Col].Value); // å°ç®±æ•°é‡
                                oCn.RunProc("update Gy_BarCodebill set HInnerBillNo= '" + sPackBarCode + "' Where HbarCode='" + sBarCode + "'");
                                dPackLeftQty = dPackLeftQty - dLabelQty;
                                dQty = dQty - dLabelQty;
                                if (dPackLeftQty <= 0)//当箱剩余数量小于等于0时 æ‰§è¡Œ ç»„托单
                                {
                                    //获取组托单内码
                                    iInterID = DBUtility.ClsPub.CreateBillID("3783", ref DBUtility.ClsPub.sExeReturnInfo); ;//得到新单号;
                                                                                                                            //根据外箱码 å†™å…¥ ç»„托单主表,组托单子表,SUM,外箱码档案,SUM档案
                                    oCn.RunProc("exec  h_p_WMS_PackUnionBill_AddNew  '" + sPackBarCode + "'," + iInterID.ToString() + ",'" + DBUtility.ClsPub.CurUserName + "'," + HInterID.ToString()); //根据箱条码,写入 ä¸»è¡¨ï¼Œå­è¡¨ ï¼Œç®±æ¡ç æ¡£æ¡ˆ
                                    oCn.RunProc("exec  h_p_WMS_PackUnionBill_SumSubBill  " + iInterID.ToString() + ",'" + sPackBarCode + "','3783','" + DBUtility.ClsPub.CurUserName + "'," + HInterID.ToString()); //根据箱条码,写入 SUM表,SUM条码档案
                                }
                            }
                            else
                            {
                                continue;
                            }
                        }
                    }
                }
                wxm.Enabled = false;
                //oCn.Commit();
                MessageBox.Show("生成箱码完毕!");
                //刷新数据
                Display();
            }
            catch (Exception e1)
            {
                //oCn.RollBack();
                MessageBox.Show("生成箱码失败!" + e1.Message);
            }
        }
        private void cmbSourceBillType_TextChanged(object sender, EventArgs e)
        {
            if (cmbSourceBillType.Text == "工序流转卡")
            {
                cmbHBarCodeType.Items.Clear();
                cmbHBarCodeType.Items.Add("序列码");
                this.cmbHBarCodeType.SelectedIndex = 0;
            }
            else
            {
                if (CampanyName == "夏宝电器")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("内销机条码");
                    cmbHBarCodeType.Items.Add("外销机条码");
                    cmbHBarCodeType.Items.Add("半成品条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else if (CampanyName == "博日科技")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("仪器外购件条码普通规则");
                    cmbHBarCodeType.Items.Add("仪器外购件条码容器规则");
                    cmbHBarCodeType.Items.Add("仪器成品条码规则");
                    cmbHBarCodeType.Items.Add("试剂成品条码规则");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else if (CampanyName == "中控")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("唯一条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("唯一条码");
                    cmbHBarCodeType.Items.Add("品种条码");
                    cmbHBarCodeType.Items.Add("批次条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
            }
        }
        private void cmdSourceBillNo_Click_1(object sender, EventArgs e)
        {
            cmdSourceBillNo_Click(sender, e);
        }
        private void button_startListen_Click(object sender, EventArgs e)
        {
            try
            {
                if (grdMain.Rows.Count == 0 || grdMain.Rows[0].Cells[HMaterIDCol].Value == null || grdMain.Rows[0].Cells[HMaterIDCol].Value.ToString() == "" || grdMain.Rows[0].Cells[HMaterIDCol].Value.ToString() == "0")
                {
                    MessageBox.Show("请选择源单!");
                    return;
                }
                if (textBox_IPParams.Text == "")
                {
                    MessageBox.Show("请设置IP地址!");
                    return;
                }
                if (textBox_PortParams.Text == "")
                {
                    MessageBox.Show("请设置端口号!");
                    return;
                }
                if (comboBox_PrinterParams.Text == "")
                {
                    MessageBox.Show("请选择打印机!");
                    return;
                }
                if (textBox_PrintModelParams.Text == "")
                {
                    MessageBox.Show("请设置打印模板!");
                    return;
                }
                if (!judgePrinterIsConnected())
                {
                    MessageBox.Show("打印机处于离线状态,请检查!");
                    return;
                }
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPAddress iPAddress = IPAddress.Parse(textBox_IPParams.Text);
                IPEndPoint point = new IPEndPoint(iPAddress, Convert.ToInt32(textBox_PortParams.Text));
                socket.Connect(point);
                Thread thread = new Thread(ReceiveMess);
                thread.Start();
                MessageBox.Show("连接成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        //socket通讯:客户端接收信息
        private void ReceiveMess()
        {
            try
            {
                while (true)
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    int length = socket.Receive(buffer);
                    if (length == 0)
                    {
                        break;
                    }
                    else
                    {
                        string RMess = Encoding.UTF8.GetString(buffer, 0, length);
                        long produceQty = ClsPub.isLong(RMess);
                        for (int i = 0; i < produceQty; i++)
                        {
                            //生成条码
                            this.Sub_SaveBill();
                            //获取需要打印的数据
                            Display();
                            //设置打印模板,打印
                            grdList.Rows[0].Cells[0].Value = "*";
                            Report = new GridppReport();
                            Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + textBox_PrintModelParams.Text + ".grf");  //here .
                            Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
                            Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
                            Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd);
                            if (comboBox_PrinterParams.Text != "")
                            {
                                Report.Printer.PrinterName = comboBox_PrinterParams.Text;
                            }
                            Report.Print(false);
                        }
                        //重新加载该物料当天生成的条码
                        Display4();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("接口异常,已关闭连接:" + ex.Message);
                socket.Close();
            }
        }
        private void button_stopListen_Click(object sender, EventArgs e)
        {
            try
            {
                if (socket.Connected)
                {
                    socket.Close();
                }
                else
                {
                    MessageBox.Show("当前尚未连接");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button_resetParams_Click(object sender, EventArgs e)
        {
            //comboBox_SourceNameParams.Items.Clear();
            //comboBox_PrinterParams.Items.Clear();
            //DBUtility.Xt_BaseBillFun.Sub_ClearBill(groupBox_ParamsInfo);
        }
        //写入配置参数
        private void saveParams()
        {
            //判断文件是否存在
            if (!File.Exists(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt"))
            {
                FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1);
                sw.WriteLine(textBox_IPParams.Text);//开始写入值
                sw.WriteLine(textBox_PortParams.Text);
                sw.WriteLine(comboBox_SourceNameParams.Text);
                sw.WriteLine(comboBox_PrinterParams.Text);
                sw.WriteLine(textBox_PrintModelParams.Text);
                sw.Close();
                fs1.Close();
            }
            else
            {
                FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1);
                sw.WriteLine(textBox_IPParams.Text);//开始写入值
                sw.WriteLine(textBox_PortParams.Text);
                sw.WriteLine(comboBox_SourceNameParams.Text);
                sw.WriteLine(comboBox_PrinterParams.Text);
                sw.WriteLine(textBox_PrintModelParams.Text);
                sw.Close();
                fs1.Close();
            }
            MessageBox.Show("保存成功!");
        }
        private void readParams()
        {
            if (File.Exists(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt"))
            {
                //读取文件值并显示到窗体
                FileStream fs = new FileStream(Application.StartupPath + "//Gy_BarCodeBill_automaticallyByPLC.txt", FileMode.Open, FileAccess.ReadWrite);
                StreamReader sr = new StreamReader(fs);
                string line = sr.ReadLine();
                int curLine = 0;
                while (line != null)
                {
                    if (++curLine == 1)
                    {
                        textBox_IPParams.Text = line;
                    }
                    else if (curLine == 2)
                    {
                        textBox_PortParams.Text = line;
                    }
                    else if (curLine == 3)
                    {
                        for (int i = 0; i < comboBox_SourceNameParams.Items.Count; i++)
                        {
                            if (comboBox_SourceNameParams.Items[i].ToString() == line)
                            {
                                comboBox_SourceNameParams.Text = line;
                            }
                        }
                        if (comboBox_SourceNameParams.Text == "")
                        {
                            comboBox_SourceNameParams.Items.Add(line);
                            comboBox_SourceNameParams.Text = line;
                        }
                    }
                    else if (curLine == 4)
                    {
                        for (int i = 0; i < comboBox_PrinterParams.Items.Count; i++)
                        {
                            if (comboBox_PrinterParams.Items[i].ToString() == line)
                            {
                                comboBox_PrinterParams.Text = line;
                            }
                        }
                    }
                    else if (curLine == 5)
                    {
                        textBox_PrintModelParams.Text = line;
                    }
                    else
                    {
                    }
                    line = sr.ReadLine();
                }
                sr.Close();
                fs.Close();
            }
        }
        private void button_saveParams_Click(object sender, EventArgs e)
        {
            saveParams();
        }
        //判断打印机是否可用
        private bool judgePrinterIsConnected()
        {
            //获取电脑连接的打印机列表
            ManagementObjectSearcher searcher = new
            ManagementObjectSearcher("SELECT * FROM Win32_Printer");
            //匹配设置的打印机,并判断是否可用
            string printerName = "";
            foreach (ManagementObject printer in searcher.Get())
            {
                printerName = printer["Name"].ToString().ToLower();
                if (printerName.Equals(comboBox_PrinterParams.Text.ToLower()))
                {
                    string HPrinterName = printer.Properties["Name"].Value.ToString();                      //获取打印机名称
                    string HPrinterPort = printer.Properties["PortName"].Value.ToString();                  //获取打印机端口号
                    string HPrinterDefault =  printer.Properties["Default"].Value.ToString();               //获取打印机是否是默认打印机
                    string HPrinterWorkStatus = printer.Properties["PrinterStatus"].Value.ToString();       //获取打印机工作状态(1:其他,2:未知,3:空闲,4:打印,5:预热,6:停止打印,7:脱机)
                    string HIsOffOnline = printer.Properties["WorkOffline"].Value.ToString();               //获取打印机是否离线
                    string isConnected = printer["WorkOffline"].ToString().ToLower();
                    if (isConnected.Equals("true"))
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
            }
            return false;
        }
    }
}