yusijie
2024-01-23 2095d4d4920f16a8b493c80bada80db5cedc8c31
WarM/ÌõÂë´òÓ¡/Gy_BarCodeBill.cs
@@ -44,43 +44,48 @@
        public const Int16 HMinQtyCol = 23;
        public const Int16 HBQtyCol = 24;
        public const Int16 HPackQtyCol = 25;
        public const Int16 HDeptIDCol = 26;
        public const Int16 HDeptNumberCol = 27;
        public const Int16 HDeptNameCol = 28;
        public const Int16 HSourceIDCol = 29;
        public const Int16 HSourceNumberCol = 30;
        public const Int16 HSourceNameCol = 31;
        public const Int16 HDateCol = 32;
        public const Int16 HEndDateCol = 33;
        public const Int16 HSupIDCol = 34;
        public const Int16 HSupNumberCol = 35;
        public const Int16 HSupNameCol = 36;
        public const Int16 HCusIDCol = 37;
        public const Int16 HCusNumberCol = 38;
        public const Int16 HCusNameCol = 39;
        public const Int16 HCusTypeCol = 40;
        public const Int16 HSourceInterIDCol = 41;
        public const Int16 HSourceEntryIDCol = 42;
        public const Int16 HSourceBillNoCol = 43;
        public const Int16 HSourceBillTypeCol = 44;
        public const Int16 HInstructIDCol = 45;
        public const Int16 HInstructNoCol = 46;
        public const Int16 HSeOrderBillIDCol = 47;
        public const Int16 HSeOrderBillNoCol = 48;
        public const Int16 HSeOrderSEQCol = 49;
        public const Int16 HWhIDCol = 50;
        public const Int16 HWhNumberCol = 51;
        public const Int16 HWhNameCol = 52;
        public const Int16 HSPIDCol = 53;
        public const Int16 HSPNumberCol = 54;
        public const Int16 HSPNameCol = 55;
        public const Int16 HinitQtyCol = 56;
        public const Int16 HRemarkCol = 57;
        public const Int16 HPinfanBarCodeCol = 58;
        public const Int16 HMTONoCol = 59;
        public const Int16 HShowDateCol = 60;
        public const Int16 HInnerBillNoCol = 61;
        public const Int16 HMakerCol = 62;
        public const Int16 HProduceDateCol = 26;
        public const Int16 HExpiryDateCol = 27;
        public const Int16 HDeptIDCol = 28;
        public const Int16 HDeptNumberCol = 29;
        public const Int16 HDeptNameCol = 30;
        public const Int16 HSourceIDCol = 31;
        public const Int16 HSourceNumberCol = 32;
        public const Int16 HSourceNameCol = 33;
        public const Int16 HDateCol = 34;
        public const Int16 HEndDateCol = 35;
        public const Int16 HSupIDCol = 36;
        public const Int16 HSupNumberCol = 37;
        public const Int16 HSupNameCol = 38;
        public const Int16 HCusIDCol = 39;
        public const Int16 HCusNumberCol = 40;
        public const Int16 HCusNameCol = 41;
        public const Int16 HCusTypeCol = 42;
        public const Int16 HSourceInterIDCol = 43;
        public const Int16 HSourceEntryIDCol = 44;
        public const Int16 HSourceBillNoCol = 45;
        public const Int16 HSourceBillTypeCol = 46;
        public const Int16 HInstructIDCol = 47;
        public const Int16 HInstructNoCol = 48;
        public const Int16 HSeOrderBillIDCol = 49;
        public const Int16 HSeOrderBillNoCol = 50;
        public const Int16 HSeOrderSEQCol = 51;
        public const Int16 HWhIDCol = 52;
        public const Int16 HWhNumberCol = 53;
        public const Int16 HWhNameCol = 54;
        public const Int16 HSPIDCol = 55;
        public const Int16 HSPNumberCol = 56;
        public const Int16 HSPNameCol = 57;
        public const Int16 HinitQtyCol = 58;
        public const Int16 HRemarkCol = 59;
        public const Int16 HPinfanBarCodeCol = 60;
        public const Int16 HMTONoCol = 61;
        public const Int16 HShowDateCol = 62;
        public const Int16 HInnerBillNoCol = 63;
        public const Int16 HMakerCol = 64;
        public const Int16 HISKFPERIODCol = 65;
        public const Int16 HEXPUNITCol = 66;
        public const Int16 HEXPPERIODCol = 67;
        public Int16 HSelectCol = 0;
        public Int16 HSno2Col = 1;
@@ -142,6 +147,11 @@
        public Int16 HInnerBillNo2Col = 57; 
        public Int16 HMaker2Col = 58;
        public Int16 HEntryID2Col = 59;
        public Int16 HProduceDate2Col = 60;
        public Int16 HExpiryDate2Col = 61;
        public Int16 HISKFPERIOD2Col = 62;
        public Int16 HEXPUNIT2Col = 63;
        public Int16 HEXPPERIOD2Col = 64;
        //
        public  string ModName = "85";
        public  string ModCaption = "条码生成";
@@ -196,6 +206,10 @@
                cmbHBarCodeType.Items.Add("仪器成品条码规则");
                cmbHBarCodeType.Items.Add("试剂成品条码规则");
            }
            else if (sCapName == "中控")
            {
                cmbHBarCodeType.Items.Add("唯一条码");
            }
            else
            {
                //
@@ -205,18 +219,28 @@
                //cmbHBarCodeType.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("组装拆卸单");
            //源单类型
            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);
            //
@@ -624,6 +648,45 @@
                    {
                        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!="")
@@ -685,10 +748,10 @@
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            int HBQty = 0;              //箱数
            Int64 HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            int LSH = 0;                //流水号
            Int64 LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
@@ -701,8 +764,10 @@
            string HBarCodeBatchNo = "";       //条码批次号
            string HBarCodeDate = "";         //条码日期
            int k = 0;
            int n = 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]);
@@ -748,7 +813,7 @@
                            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.isInt(Ds.Tables[0].Rows[0][0]);
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "飞龙")
                        {
@@ -763,7 +828,24 @@
                            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.isInt(Ds.Tables[0].Rows[0][0]);
                            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  //通用方法
                        {
@@ -771,7 +853,7 @@
                            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.isInt(Ds.Tables[0].Rows[0][0]);
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                    }
                    else if (cmbHBarCodeType.Text == "品种条码")
@@ -789,13 +871,22 @@
                    {
                        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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                    }
                    else if (cmbHBarCodeType.Text == "仪器成品条码规则") //另外处理了
@@ -804,7 +895,7 @@
                        //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.isInt(Ds.Tables[0].Rows[0][0]);
                        //LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                    }
                    else if (cmbHBarCodeType.Text == "试剂成品条码规则")
                    {
@@ -812,7 +903,7 @@
                        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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 6;
                    }
                    else if (cmbHBarCodeType.Text == "内销机条码")
@@ -822,11 +913,11 @@
                        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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                        if (sTMNumber.Length != 16)
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                        if (sTMNumber.Length != 16 && sTMNumber.Length != 15)
                        {
                            MessageBox.Show("条码长度不够16位,是否数据不全!制造本部1位:[0] + æœºåž‹ä»£ç 5位:[" + HModelName + "] + å¹´æœˆæ—¥5位:["+ HBarCodeDate + "] + æ‰¹æ¬¡å·2位:[" + HBarCodeBatchNo  + "]+ åŽ‹ç¼©æœº1位:["+ HYasuoji + "]+00 ; ");
                            MessageBox.Show("条码长度不够15或16位,是否数据不全!制造本部1位:[0] + æœºåž‹ä»£ç 5位:[" + HModelName + "] + å¹´æœˆæ—¥4或5位:["+ HBarCodeDate + "] + æ‰¹æ¬¡å·2位:[" + HBarCodeBatchNo  + "]+ åŽ‹ç¼©æœº1位:["+ HYasuoji + "]+00 ; ");
                            return;
                        }
                    }
@@ -837,11 +928,11 @@
                        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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                        if (sTMNumber.Length != 18)
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                        if (sTMNumber.Length != 18 && sTMNumber.Length != 17)
                        {
                            MessageBox.Show("条码长度不够18位,是否数据不全!物料代码11位:["+ HMaterNumber.Replace(".", "") + "]+年月日5位:["+ HBarCodeDate + "]+批次号2位:[" + HBarCodeBatchNo  + "];");
                            MessageBox.Show("条码长度不够17或18位,是否数据不全!物料代码11位:["+ HMaterNumber.Replace(".", "") + "]+年月日4或5位:["+ HBarCodeDate + "]+批次号2位:[" + HBarCodeBatchNo  + "];");
                            return;
                        }
                    }
@@ -851,7 +942,7 @@
                        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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 5;
                    }
                    //else if (cmbHBarCodeType.Text == "托盘条码")
@@ -864,10 +955,13 @@
                        return;
                    }
                    HBQty = HBQty + ClsPub.isInt(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    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)
@@ -895,6 +989,33 @@
                            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;
@@ -976,16 +1097,31 @@
                        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 + "'");
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        nn = nn + 1;
                    }
                    //后台批量执行语句
                    oCn.RunProc("exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + nn.ToString() + " ");
                }
            }
            string HWei = "";      //尾数
@@ -1022,6 +1158,11 @@
            string HInnerBillNo = "";
            bool HGiveAwayFlag = false;
            Int64 HEntryID = 0;
            string HProduceDate;
            string HExpiryDate;
            bool HISKFPERIOD = false;
            string HEXPUNIT = "";
            double HEXPPERIOD = 0;
            try
            {
                oCn.BeginTran();
@@ -1067,13 +1208,34 @@
                        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);
                        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 " +
                                    ",HGiveAwayFlag,HSeOrderSEQ,HInitSourceEntryID " +
                                    ",HProduceDate,HExpiryDate " +
                                    ",HISKFPERIOD,HEXPUNIT,HEXPPERIOD " +
                                    ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo " +
                                    ") values ("
                                    + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty2.ToString()
@@ -1081,8 +1243,10 @@
                                    + ", " + 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()
                                    + ", " + 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 + "')");
@@ -1165,7 +1329,7 @@
            string HMaterNumber = "";   //物料代码
            double HSumQty = 0;         //产品数量
            double HMinQty = 0;         //最小包装数
            int HBQty = 0;              //箱数
            Int64 HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            //int LSH = 0;                //流水号
@@ -1216,7 +1380,7 @@
                    //    return;
                    //}
                    HBQty = HBQty + ClsPub.isInt(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;
@@ -1489,7 +1653,7 @@
            //
            grdMain.RowCount = 0;
            grdSub.RowCount = 0;
            grdMain.ColumnCount = 63;                       //总列数
            grdMain.ColumnCount = 68;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdMain, this.Name);
            grdMain.Columns[HSnoCol].HeaderText = "序号";
            grdMain.Columns[HMainIDCol].HeaderText = "源单主ID";
@@ -1546,6 +1710,11 @@
            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;                           //隐藏列
@@ -1593,7 +1762,12 @@
            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() +
@@ -1623,7 +1797,7 @@
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol,oSumGrid);
            //----------------------------
            grdSub.ColumnCount = 60;                       //总列数
            grdSub.ColumnCount = 65;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdSub, this.Name);
            grdSub.Columns[HSelectCol].HeaderText = "选择";
            grdSub.Columns[HTMCol].HeaderText = "条码编号";
@@ -1683,6 +1857,11 @@
            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;
@@ -1731,11 +1910,18 @@
            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);
@@ -1928,6 +2114,11 @@
                                            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;
                                    }
@@ -2173,6 +2364,24 @@
                    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
            {
@@ -2244,7 +2453,7 @@
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POStockInList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POStockInList");
                    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);
                }
@@ -2318,13 +2527,33 @@
                    //写入信息
                    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 + "'", "h_v_KF_ICInventoryList_IF");
                    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);
                }
@@ -2392,6 +2621,11 @@
            {
                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();
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
@@ -2442,6 +2676,11 @@
            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]["未生成条码数量"]);
@@ -2452,7 +2691,14 @@
            }
            else
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
                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() == "采购订单"
@@ -2548,6 +2794,15 @@
            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]["数量"]);
            }
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
@@ -3014,7 +3269,7 @@
            }
            sWhere = " and HOrgID =" + sHOrgID.ToString();
            BLL.Cls_S_KF_ICInventoryList_IF oadd = new BLL.Cls_S_KF_ICInventoryList_IF();
            if (oadd.Refresh(""))  //选择原单
            if (oadd.Refresh(sWhere))  //选择原单
            //if (oadd.Refresh(" and HErpClsID in (1,2,3) "))  //选择原单
            {
                FillSelectData(oadd.oBillSelectColl);
@@ -3113,6 +3368,12 @@
                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);
@@ -3422,5 +3683,32 @@
                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("唯一条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("唯一条码");
                    cmbHBarCodeType.Items.Add("品种条码");
                    cmbHBarCodeType.Items.Add("批次条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
            }
        }
    }
}