ch
2022-01-10 1440ef9f5e84ba2f4fa7b38b2dae0acbb09b0bdd
WarM/ÌõÂë´òÓ¡/Gy_BarCodeBill.cs
@@ -688,6 +688,7 @@
            string HModelName = "";       //机型
            string HICMOBillNo = "";       //源单号
            string HBarCodeBatchNo = "";       //条码批次号
            string HBarCodeDate = "";         //条码日期
            int k = 0;
            int n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
@@ -704,7 +705,7 @@
                    //日期获取方式
                    sDate = dtpHDate.Value.ToShortDateString();
                    //
                    if (cmbHBarCodeType.Text == "仪器外购件条码普通规则") //单据日期(收料通知单)
                    if (cmbHBarCodeType.Text == "仪器外购件条码普通规则" || cmbHBarCodeType.Text == "仪器外购件条码容器规则") //单据日期(收料通知单)
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HDateCol].Value);
                    }
@@ -712,14 +713,15 @@
                    {
                        sDate = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HEndDateCol].Value);
                    }
                    else if (CompanyName=="夏宝电器")// æ—¥æœŸï¼šç”Ÿäº§è®¢å• æ¡ç æ—¥æœŸ
                    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[HMaterModelCol].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();
@@ -776,7 +778,7 @@
                    {
                        TM = HOrgNumber + HNumber + HBatchNo;
                    }//博日特殊处理
                    else if(cmbHBarCodeType.Text == "仪器外购件条码普通规则")
                    else if(cmbHBarCodeType.Text == "仪器外购件条码普通规则" || cmbHBarCodeType.Text == "仪器外购件条码容器规则")
                    {
                        //物料编码+单据日期(YYMMDD)+流水4位 
                        sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
@@ -785,7 +787,7 @@
                        LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                    }
                    else if (cmbHBarCodeType.Text == "仪器成品条码规则")
                    else if (cmbHBarCodeType.Text == "仪器成品条码规则") //另外处理了
                    {
                        //物料编码+序列号+生产日期
                        //sTMNumber = HMaterNumber + sYear + sPeriod + sDay;
@@ -806,20 +808,31 @@
                    {
                        //制造本部1位(默认1)+机型代码5位()+å¹´2位+月1位(A、B、C代替10月份)
                        //+日2位+条码批次码2位+压缩机代码1位+00+流水号4位+校验码(默认0)
                        sTMNumber = "1" + HModelName + sYear + Sub_PeriodChange(sPeriod) + sDay + HBarCodeBatchNo + HYasuoji;
                        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 = 4;
                        if (sTMNumber.Length != 16)
                        {
                            MessageBox.Show("条码长度不够16位,是否数据不全!制造本部1位:[0] + æœºåž‹ä»£ç 5位:[" + HModelName + "] + å¹´æœˆæ—¥5位:["+ HBarCodeDate + "] + æ‰¹æ¬¡å·2位:[" + HBarCodeBatchNo  + "]+ åŽ‹ç¼©æœº1位:["+ HYasuoji + "]+00 ; ");
                            return;
                        }
                    }
                    else if (cmbHBarCodeType.Text == "外销机条码")
                    {
                        //物料代码11位+å¹´2位+月1位(A、B、C代替10月份)+日2位+批次2位+流水号4位
                        sTMNumber = HMaterNumber + sYear + Sub_PeriodChange(sPeriod) + sDay + HBarCodeBatchNo ;
                        //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.isInt(Ds.Tables[0].Rows[0][0]);
                        LSHlen = 4;
                        if (sTMNumber.Length != 18)
                        {
                            MessageBox.Show("条码长度不够18位,是否数据不全!物料代码11位:["+ HMaterNumber.Replace(".", "") + "]+年月日5位:["+ HBarCodeDate + "]+批次号2位:[" + HBarCodeBatchNo  + "];");
                            return;
                        }
                    }
                    else if (cmbHBarCodeType.Text == "半成品条码")
                    {
@@ -875,7 +888,17 @@
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            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;
@@ -1091,29 +1114,30 @@
            }
        }
        //月份转化
        private string Sub_PeriodChange(string sPeriod)
        {
            if(sPeriod=="10")
            {
                return "A";
            }
            else if (sPeriod == "11")
            {
                return "B";
            }
            else if (sPeriod == "12")
            {
                return "C";
            }
            else
            {
                return sPeriod.Substring(2, 1);
            }
        }
        ////月份转化
        //private string Sub_PeriodChange(string sPeriod)
        //{
        //    if(sPeriod=="10")
        //    {
        //        return "A";
        //    }
        //    else if (sPeriod == "11")
        //    {
        //        return "B";
        //    }
        //    else if (sPeriod == "12")
        //    {
        //        return "C";
        //    }
        //    else
        //    {
        //        return sPeriod.Substring(1, 1);
        //    }
        //}
        //生成条码 åšæ—¥ //物料编码+序列号+生产日期
        //生成条码 åšæ—¥
        //物料编码+序列号+生产日期
        private void SaveBarCode_bori() 
        {
            grdSub.Rows.Clear();
@@ -1127,7 +1151,7 @@
            int HBQty = 0;              //箱数
            double HQty = 0;            //数量
            string WeiShu = "";         //尾数
            int LSH = 0;                //流水号
            //int LSH = 0;                //流水号
            string LSH2 = "";           //流水号转换成字符
            string sDate = "";          //日期
            string sYear = "";          //å¹´
@@ -1161,25 +1185,36 @@
                    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.isInt(Ds.Tables[0].Rows[0][0]);
                    }
                    else
                    {
                        MessageBox.Show("错误的条码类型,不能生成条码!");
                        return;
                    }
                    //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.isInt(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;
                    for (int i = k; i < HBQty; i++)
                    //从金蝶序列号表获取序列号
                    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)
                        {
@@ -1199,17 +1234,18 @@
                            HMinQty = HSumQty;
                        }
                        //
                        LSH = LSH + 1;
                        LSH2 = LSH.ToString();
                        while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                        {
                            LSH2 = "0" + LSH2;
                        }
                        if (cmbHBarCodeType.Text == "唯一条码")
                        {
                        //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 == "唯一条码")
                        //{
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            TM = sTMNumber + LSH2;
                        }
                            //T/*M*/ = HMaterNumber + LSH2 + sYear + sPeriod + sDay;
                        TM =  LSH2 + sYear + sPeriod + sDay;
                        //}
                        if (i + 1 > grdSub.Rows.Count)
                        {
@@ -1283,7 +1319,7 @@
                        grdSub.Rows[i].Cells[HGiveAwayFlag2Col] = oCell;
                        k = k + 1;
                        n = n + 1;
                        oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                        //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                    }
                }
            }
@@ -2289,6 +2325,7 @@
            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();
@@ -2313,15 +2350,19 @@
            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 == "仪器外购件条码容器规则" && CampanyName == "博日科技")
            if (cmbHBarCodeType.Text == "仪器外购件条码容器规则" )
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
            }
            else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则" && CampanyName == "博日科技")
            else if (cmbHBarCodeType.Text == "仪器外购件条码普通规则"
                || cmbHBarCodeType.Text == "仪器成品条码规则"
                || cmbHBarCodeType.Text == "试剂成品条码规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = "1";
            }
@@ -2378,10 +2419,14 @@
            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();
            if (cmbHBarCodeType.Text == "批次条码" && CampanyName == "博日科技")
            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
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();