chenhaozhe
2025-10-26 1948124877478db58b27841f9398aed97ef13053
WarM/ÌõÂë´òÓ¡/Gy_CusBarCodeBill_KaiBei.cs
@@ -8,6 +8,7 @@
using gregn6Lib;
using Pub_Class;
using System.Threading;
using System.Globalization;
namespace WarM
{
@@ -62,6 +63,7 @@
        public const Int16 HEXPPERIODCol = 41;
        public const Int16 HLSHCol = 42;
        public const Int16 HBaNoCol = 43;
        public const Int16 HCusModelCol = 44;
        //
        public  string ModName = "85";
        public  string ModCaption = "客户标签生成";
@@ -81,6 +83,9 @@
        public string sYear4 = "";         //年(4位)
        public string sPeriod = "";        //月
        public string sDay = "";           //日
        public string sWeek = "";          //周
        public string sYearWeek = "";      //年(2位)周(2位)
        public string sYearPeriodDay = ""; //年(4位)月(2位)日(2位)
        public string HBarCodeType = "超聚变内标签";   //条码类型
@@ -275,6 +280,23 @@
            cmbHCusName.DataSource = ds.Tables[0];
            cmbHCusName.DisplayMember = "HName";
            cmbHCusName.ValueMember = "HItemID";
            if (cmbHCusName.Text.Contains("锐捷"))
            {
                HBarCodeType = "锐捷标签";
            }
            else if (cmbHCusName.Text.Contains("普睿云创"))
            {
                HBarCodeType = "华勤标签";
            }
            else if (cmbHCusName.Text.Contains("英业达"))
            {
                HBarCodeType = "英业达标签";
            }
            else
            {
                HBarCodeType = "超聚变内标签";
            }
        }
        //窗体尺寸变化时
@@ -452,6 +474,14 @@
            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
            sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
            sDay = sDay.Substring(sDay.Length - 2, 2);
            //获取周
            GregorianCalendar calendar = new GregorianCalendar();
            int weekNumber = calendar.GetWeekOfYear(dtpHDate.Value, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
            sWeek = "0" + weekNumber.ToString();
            sWeek = sWeek.Substring(sWeek.Length - 2, 2);
            sYearWeek = sYear + sWeek;
            //获取年月日
            sYearPeriodDay = sYear4 + sPeriod + sDay;
            //==================================
            switch (sPeriod)
            {
@@ -611,6 +641,7 @@
                double HQty = 0;            //数量
                Int64 HCusID = 0;           //客户ID
                string HCusModelName = "";  //客户物料编码
                string HCusModel = "";      //客户物料名称
                bool HGiveAwayFlag = false; //赠品标记
                string HProduceDate;        //生产日期(保质期用)
                string HExpiryDate;         //保质期至(保质期用)
@@ -641,10 +672,51 @@
                        HMaterNumber = HMaterNumber.Substring(HMaterNumber.Length - 3, 3);  //取物料代码后三位
                        string sHCusModelName = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HCusModelNameCol].Value);   //客户代码(取金蝶客户物料对应表客户物料编码)
                        //条码前缀 = å¹´ + æœˆ
                        sTMNumber = sYear + sPeriod;
                        Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                        LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        if (HBarCodeType == "锐捷标签")
                        {
                            LSHlen = 5;
                            //条码前缀 = å®¢æˆ·æ–™å·+供应商代码(固定'264')+年月日(20250705)
                            sTMNumber = sHCusModelName + "264" + sYearPeriodDay;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (HBarCodeType == "华勤标签")
                        {
                            LSHlen = 4;
                            //条码前缀 = å®¢æˆ·æ–™å·+年周
                            sTMNumber = sHCusModelName + sYearWeek;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (HBarCodeType == "英业达标签")
                        {
                            LSHlen = 3;
                            string sPN = "";
                            string sBB = "";
                            if (sHCusModelName.Length >= 6)
                            {
                                sPN = sHCusModelName.Substring(sHCusModelName.Length - 6, 4);  //PN  å®¢æˆ·æ–™å·åŽå…­ä½ä¸­çš„前四位
                                sBB = sHCusModelName.Substring(sHCusModelName.Length - 2, 2);  //版本  å–客户料号后两位
                            }
                            else
                            {
                                MessageBox.Show("英业达客户料号为[" + sHCusModelName + "],长度必须大于或等于6位!");
                                return;
                            }
                            //条码前缀 = 1位固定码(9)+4位PN(客户料号后六位中的前四位)+2位厂商代码(固定33)+2位版本(客户料号后两位)+1位年份(年最后一位)+2位周(一年中的第几周)
                            sTMNumber = "9" + sPN + "33" + sBB + sYearWeek.Substring(sYearWeek.Length - 3, 3);
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else
                        //超聚变内标签
                        {
                            //条码前缀 = å¹´ + æœˆ
                            sTMNumber = sYear + sPeriod;
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        HBQty = ClsPub.isInt(grdMain.Rows[j].Cells[HBQtyCol].Value);
                        HMinQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);
@@ -665,20 +737,37 @@
                                HMinQty = HSumQty;
                            }
                            //
                            LSH = LSH + 1;
                            LSH2 = LSH.ToString();
                            LSH = LSH + 1;
                            if (HBarCodeType == "英业达标签")
                            {
                                LSH2 = ConvertToBase(ClsPub.isInt(LSH), 34);
                            }
                            else
                            {
                                LSH2 = LSH.ToString();
                            }
                            while (LSH2.Length < LSHlen)  //如果流水号位数小于 æµæ°´å·é•¿åº¦ å‰é¢è¡¥0
                            {
                                LSH2 = "0" + LSH2;
                            }
                            if (LSH2.Length != 7)
                            if (HBarCodeType == "锐捷标签" || HBarCodeType == "华勤标签" || HBarCodeType == "英业达标签")
                            {
                                MessageBox.Show("条码流水号为[" + LSH2 + "],长度不允许超过7位!");
                                return;
                                TM = sTMNumber + LSH2;
                            }
                            //超聚变数字技术有限公司   æ¡ç ç¼–号(共26位) = ä»£ç ï¼ˆ1位固定‘S’) + åŽ‚å•†ä»£ç ï¼ˆ2位固定‘Y3’) + å¹´ï¼ˆ2位年后两位) + æœˆï¼ˆ1位10=A,11=B,12=C) + æµæ°´å·ï¼ˆ7位) + ä»£å·ï¼ˆ2位固定‘1P’) + å®¢æˆ·ä»£ç ï¼ˆ8位取金蝶客户物料对应表客户物料编码) + ç‰©æ–™ç‰ˆæœ¬ï¼ˆ3位取物料编码后三位)
                            TM = "SY3" + sYear + sPeriod + LSH2 + "1P" + sHCusModelName;
                            //TM = "SY3" + sYear + sPeriod + LSH2 + "1P" + sHCusModelName + HMaterNumber;
                            else
                            //超聚变内标签
                            {
                                if (LSH2.Length != 7)
                                {
                                    MessageBox.Show("条码流水号为[" + LSH2 + "],长度不允许超过7位!");
                                    return;
                                }
                                //超聚变数字技术有限公司   æ¡ç ç¼–号(共26位) = ä»£ç ï¼ˆ1位固定‘S’) + åŽ‚å•†ä»£ç ï¼ˆ2位固定‘Y3’) + å¹´ï¼ˆ2位年后两位) + æœˆï¼ˆ1位10=A,11=B,12=C) + æµæ°´å·ï¼ˆ7位) + ä»£å·ï¼ˆ2位固定‘1P’) + å®¢æˆ·ä»£ç ï¼ˆ8位取金蝶客户物料对应表客户物料编码) + ç‰©æ–™ç‰ˆæœ¬ï¼ˆ3位取物料编码后三位)
                                TM = "SY3" + sYear + sPeriod + LSH2 + "1P" + sHCusModelName;
                                //TM = "SY3" + sYear + sPeriod + LSH2 + "1P" + sHCusModelName + HMaterNumber;
                            }
                            HEntryID = j + 1;
                            HBarCode = TM.ToUpper();
@@ -688,6 +777,7 @@
                            HQty = HMinQty;
                            HCusID = ClsPub.isLong(cmbHCusName.SelectedValue);
                            HCusModelName = ClsPub.isStrNull(grdMain.Rows[j].Cells[HCusModelNameCol].Value);
                            HCusModel = ClsPub.isStrNull(grdMain.Rows[j].Cells[HCusModelCol].Value);
                            HGiveAwayFlag = ClsPub.isBool(grdMain.Rows[j].Cells[HGiveAwayFlagCol].Value);
                            HISKFPERIOD = ClsPub.isBool(grdMain.Rows[j].Cells[HISKFPERIODCol].Value);
                            HProduceDate = ClsPub.isStrNull(grdMain.Rows[j].Cells[HProduceDateCol].Value);
@@ -706,7 +796,7 @@
                            HBoxNo = sTMNumber;
                            sHBaNo = ClsPub.isStrNull(grdMain.Rows[j].Cells[HBaNoCol].Value);                        // ç•Œé¢ä¸Šè¾“入的批次位
                            //超聚变数字技术有限公司   å®¢æˆ·ç‰©æ–™ç¼–码HCusModelName、流水号HSno、流水号HSupNumber、流水号生成前缀HBoxNo、物料版本HCode3
                            //超聚变数字技术有限公司   å®¢æˆ·ç‰©æ–™ç¼–码HCusModelName、客户物料名称HCusModel、流水号HSno、流水号HSupNumber、流水号生成前缀HBoxNo、物料版本HCode3
                            oCn.RunProc("insert into Gy_BarCodeBill_Cus" +
                                    "(HInterID,HEntryID,HBillType,HBarCode,HBarCodeType" +
                                    ",HMaterID,HUnitID,HAuxPropID,HBatchNo,HQty" +
@@ -722,7 +812,7 @@
                                    ",HCode2,HCode3,HBackDataFlag,HSno,HBoxNo" +
                                    ") values (" + HInterID + "," + HEntryID + ",'','" + HBarCode + "','" + HBarCodeType + "'"
                                    + "," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HAuxPropID.ToString() + ",'" + HBatchNo + "'," + HQty.ToString()
                                    + "," + HCusID.ToString() + ",'','" + HCusModelName + "','" + sDate + "',''"
                                    + "," + HCusID.ToString() + ",'" + HCusModel + "','" + HCusModelName + "','" + sDate + "',''"
                                    + "," + DBUtility.ClsPub.BoolToString(HGiveAwayFlag) + "," + DBUtility.ClsPub.BoolToString(HISKFPERIOD) + ",''"
                                    + "," + (HProduceDate == "" ? "NULL" : "'" + HProduceDate + "'") + "," + (HExpiryDate == "" ? "NULL" : "'" + HExpiryDate + "'")
                                    + "," + HBarcodeQtys.ToString() + "," + HBarcodeNo.ToString() + ",1,0"
@@ -786,7 +876,7 @@
        #region  å°†åè¿›åˆ¶æ•°å€¼è½¬æˆæŒ‡å®šè¿›åˆ¶æ•°å€¼ï¼ˆnum为要转换的十进行数值,nbase为指定进制)
        public string ConvertToBase(int num, int nbase)
        {
            string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string chars = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
            if (nbase < 2 || nbase > chars.Length)
                return "";
            int r;
@@ -811,7 +901,7 @@
        private void initGrid()
        {
            grdMain.RowCount = 0;
            grdMain.ColumnCount = 44;                       //总列数
            grdMain.ColumnCount = 45;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdMain, this.Name);
            grdMain.Columns[HSnoCol].HeaderText = "序号";
            grdMain.Columns[HMainIDCol].HeaderText = "源单主ID";
@@ -823,6 +913,7 @@
            grdMain.Columns[HMaterNameCol].HeaderText = "物料名称";
            grdMain.Columns[HMaterModelCol].HeaderText = "规格型号";
            grdMain.Columns[HCusModelNameCol].HeaderText = "客户物料编码";
            grdMain.Columns[HCusModelCol].HeaderText = "客户物料名称";
            grdMain.Columns[HUnitIDCol].HeaderText = "计量单位ID";
            grdMain.Columns[HUnitNumberCol].HeaderText = "计量单位代码";
            grdMain.Columns[HUnitNameCol].HeaderText = "计量单位名称";
@@ -891,6 +982,8 @@
                                "," + HMinQtyCol.ToString() +
                                "," + HMaterNumberCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HCusModelNameCol.ToString() +
                                "," + HCusModelCol.ToString() +
                                "," + HUnitNumberCol.ToString() +
                                "," + HCode1Col.ToString() +
                                //"," + HCode2Col.ToString() +
@@ -1308,6 +1401,8 @@
            string sAllowCol = HQtyCol.ToString() +
                                "," + HMinQtyCol.ToString() +
                                "," + HAuxPropNumberCol.ToString() +
                                "," + HCusModelNameCol.ToString() +
                                "," + HCusModelCol.ToString() +
                                "," + HCode1Col.ToString() +
                                //"," + HCode2Col.ToString() +
                                "," + HCode3Col.ToString() +
@@ -1556,11 +1651,23 @@
                    DataSet ds = oCn.RunProcReturn("exec h_p_Gy_CusBarCodeBill_CusMatNo " + num.ToString() + "," + HCusID.ToString() + "," + HMaterID.ToString(), "h_p_Gy_CusBarCodeBill_CusMatNo");
                    if (ds == null || ds.Tables[0].Rows.Count == 0)
                    {
                        grdMain.Rows[j].Cells[HCusModelNameCol].Value = "";
                        //网格下拉选择框
                        DataGridViewComboBoxCell column = new DataGridViewComboBoxCell();
                        column.Items.Add("");
                        grdMain.Rows[j].Cells[HCusModelNameCol] = column;
                        grdMain.Rows[j].Cells[HCusModelCol].Value = "";
                    }
                    else
                    {
                        //网格下拉选择框
                        DataGridViewComboBoxCell column = new DataGridViewComboBoxCell();
                        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        {
                            column.Items.Add(DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[i]["HCusRelationNumber"]));
                        }
                        grdMain.Rows[j].Cells[HCusModelNameCol] = column;
                        grdMain.Rows[j].Cells[HCusModelNameCol].Value = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HCusRelationNumber"]);
                        grdMain.Rows[j].Cells[HCusModelCol].Value = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HCusRelationName"]);
                        if (num == 2)
                        {
                            grdMain.Rows[j].Cells[HCode1Col].Value = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HCode1"]);
@@ -1577,6 +1684,22 @@
        #region é€‰æ‹©å®¢æˆ·
        private void cmbHCusName_TextChanged(object sender, EventArgs e)
        {
            if (cmbHCusName.Text.Contains("锐捷"))
            {
                HBarCodeType = "锐捷标签";
            }
            else if (cmbHCusName.Text.Contains("普睿云创"))
            {
                HBarCodeType = "华勤标签";
            }
            else if (cmbHCusName.Text.Contains("英业达"))
            {
                HBarCodeType = "英业达标签";
            }
            else
            {
                HBarCodeType = "超聚变内标签";
            }
            GetCusMatNo(1);
        }