zzr99
2022-06-27 20f0478d39110034363d852d6d0594cea325617f
Pub_Class/CustomerCls/ClsPub.cs
@@ -418,7 +418,7 @@
                            }
                            return sBillNo;
                        case 1://根据 YY年+MM月 + 流水号  生成单据号
                        case 1://根据 YY年+MM月 日 + 流水号  生成单据号 (日 采用了 仓库的字段)
                            sKjYear = sKjYear.Substring(2, 2);
                            sPeriod = "0" + sPeriod;
                            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
@@ -440,7 +440,6 @@
                                oCn.RunProc("update Gy_Maxnum set NowNumBer=NowNumBer+1 where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'");
                            }
                            return sBillNo;
                        case 2:      //根据年+月+日  生成单据号
                            Ds = oCn.RunProcReturn("Select * from Gy_MaxNum where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'", "Gy_MaxNum");
                            if (Ds.Tables[0].Rows.Count != 0)
@@ -476,6 +475,138 @@
            oCn = null;
        }
        //得到最大单据号
        public static string CreateBillCode(string BillCode,string HOrgNumber,Int64 HOrgID,string HWhNumber, ref string sReturn, bool Add)
        {
            Int64 BillCodeMode;
            string Profix;
            Int64 Glida;
            Int32 CodeLen;
            string sBillNo = "";
            char c = Convert.ToChar("0");
            string sKjYear = DateTime.Today.Year.ToString();
            string sPeriod = DateTime.Today.Month.ToString();
            string sDay = DateTime.Today.Day.ToString();
            //得到单据号表 信息
            ClsSqlHelper oCn = new ClsSqlHelper();
            DataSet Ds = new DataSet();
            Ds = oCn.RunProcReturn("Select * from Gy_BillNumber where BillCode='" + BillCode.Trim() + "'", "Gy_BillNumber");
            if (Ds.Tables[0].Rows.Count != 0)
            {
                BillCodeMode = ClsPub.isLong(Ds.Tables[0].Rows[0]["BillCodeMode"].ToString());
                Profix = ClsPub.isStrNull(Ds.Tables[0].Rows[0]["Profix"].ToString());
                Glida = ClsPub.isLong(Ds.Tables[0].Rows[0]["Glida"].ToString());
                CodeLen = ClsPub.isInt(Ds.Tables[0].Rows[0]["CodeLen"].ToString());
            }
            else
            {
                return "";
            }
            //
            string sStr;
            switch (BillCodeMode)
            {
                case 0:
                    switch (Glida)
                    {
                        case 0://纯流水号
                            Ds = oCn.RunProcReturn("Select * from Gy_MaxNum where BillCode='" + BillCode.Trim() + "'", "Gy_MaxNum");
                            if (Ds.Tables[0].Rows.Count != 0)
                            {
                                sStr = new string(c, CodeLen - (Ds.Tables[0].Rows[0]["NowNumBer"].ToString()).Length);
                                sBillNo = Profix.Trim() + sStr + Ds.Tables[0].Rows[0]["NowNumBer"].ToString().Trim();
                            }
                            else //插入新记录
                            {
                                sStr = new string(c, CodeLen - 1);
                                oCn.RunProc("insert into Gy_MaxNum(BillCode,NowNumber) values('" + BillCode.Trim() + "',1)");
                                sBillNo = Profix.Trim() + sStr + 1;
                            }
                            if (Add == true)
                            {
                                oCn.RunProc("update Gy_Maxnum set NowNumBer=NowNumBer+1 where BillCode='" + BillCode.Trim() + "'");
                            }
                            return sBillNo;
                        case 1://根据 YY年+MM月 日 + 流水号  生成单据号 (日 采用了 仓库的字段)
                            sKjYear = sKjYear.Substring(2, 2);
                            sPeriod = "0" + sPeriod;
                            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                            sDay = "";
                            Ds = oCn.RunProcReturn("Select * from Gy_MaxNum where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'", "Gy_MaxNum");
                            if (Ds.Tables[0].Rows.Count != 0)
                            {
                                sStr = new string(c, CodeLen - (Ds.Tables[0].Rows[0]["NowNumBer"].ToString()).Length);
                                sBillNo = Profix.Trim() + sKjYear + sPeriod + sDay + sStr + Ds.Tables[0].Rows[0]["NowNumBer"].ToString().Trim();
                            }
                            else //插入新记录
                            {
                                sStr = new string(c, CodeLen - 1);
                                oCn.RunProc("insert into Gy_Maxnum(BillCode,Kjyear,Period,whcode,NowNumber)  values('" + BillCode.Trim() + "','" + sKjYear + "','" + sPeriod + "','" + sDay + "',1)");
                                sBillNo = Profix.Trim() + sKjYear + sPeriod + sDay + sStr + "1";
                            }
                            if (Add == true)
                            {
                                oCn.RunProc("update Gy_Maxnum set NowNumBer=NowNumBer+1 where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'");
                            }
                            return sBillNo;
                        case 2:      //根据年+月+日  生成单据号 (这功能 好像是作废了)
                            Ds = oCn.RunProcReturn("Select * from Gy_MaxNum where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'", "Gy_MaxNum");
                            if (Ds.Tables[0].Rows.Count != 0)
                            {
                                sStr = new string(c, CodeLen - (Ds.Tables[0].Rows[0]["NowNumBer"].ToString()).Length);
                                sBillNo = Profix.Trim() + sKjYear + ClsPub.isStrNull(("0" + sPeriod)).Substring(ClsPub.isStrNull(("0" + sPeriod)).Length - 2, 2) + ClsPub.isStrNull(("0" + sDay)).Substring(ClsPub.isStrNull(("0" + sDay)).Length - 2, 2) + sStr + Ds.Tables[0].Rows[0]["NowNumBer"].ToString().Trim();
                            }
                            else //插入新记录
                            {
                                sStr = new string(c, CodeLen - 1);
                                oCn.RunProc("insert into Gy_Maxnum(BillCode,Kjyear,Period,whcode,NowNumber)  values('" + BillCode.Trim() + "','" + sKjYear + "','" + sPeriod + "','" + sDay + "',1)");
                                sBillNo = Profix.Trim() + sKjYear + ClsPub.isStrNull(("0" + sPeriod)).Substring(ClsPub.isStrNull(("0" + sPeriod)).Length - 2, 2) + ClsPub.isStrNull(("0" + sDay)).Substring(ClsPub.isStrNull(("0" + sDay)).Length - 2, 2) + sStr + 1;
                            }
                            if (Add == true)
                            {
                                oCn.RunProc("update Gy_Maxnum set NowNumBer=NowNumBer+1 where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + sDay + "'");
                            }
                            return sBillNo;
                        case 3://根据 前缀+组织+ YY年+MM月   + 流水号  生成单据号  (组织 采用了 仓库的字段)
                            sKjYear = sKjYear.Substring(2, 2);
                            sPeriod = "0" + sPeriod;
                            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
                            Ds = oCn.RunProcReturn("Select * from Gy_MaxNum where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + HOrgNumber + "'", "Gy_MaxNum");
                            if (Ds.Tables[0].Rows.Count != 0)
                            {
                                sStr = new string(c, CodeLen - (Ds.Tables[0].Rows[0]["NowNumBer"].ToString()).Length);
                                sBillNo = Profix.Trim() + HOrgNumber + sKjYear + sPeriod  + sStr + Ds.Tables[0].Rows[0]["NowNumBer"].ToString().Trim();
                            }
                            else //插入新记录
                            {
                                sStr = new string(c, CodeLen - 1);
                                oCn.RunProc("insert into Gy_Maxnum(BillCode,Kjyear,Period,whcode,NowNumber)  values('" + BillCode.Trim() + "','" + sKjYear + "','" + sPeriod + "','" + HOrgNumber + "',1)");
                                sBillNo = Profix.Trim() + sKjYear + sPeriod + sDay + sStr + "1";
                            }
                            if (Add == true)
                            {
                                oCn.RunProc("update Gy_Maxnum set NowNumBer=NowNumBer+1 where BillCode='" + BillCode.Trim() + "' and KjYear='" + sKjYear + "' and Period='" + sPeriod + "' and whcode='" + HOrgNumber + "'");
                            }
                            return sBillNo;
                        default:
                            return sBillNo;
                    }
                case 1:
                    return sBillNo;
                default:
                    return sBillNo;
            }
            oCn.CnClose();
            oCn.CnDispose();
            oCn = null;
        }
        //得到最大单据号2
        public static string CreateBillCode(string BillCode, ref string sReturn, bool Add,ClsSqlHelper oCn)