예제 #1
0
        private bool AddDocSNRule(IDatabase db, ModelDocNo Model)
        {
            string sql             = "INSERT INTO sys_DataSN(DocCode,DocName,DocHeader,Separate,DocType,[Length]) VALUES(@DocCode,@DocName,@DocHeader,@Seperate,@DocType,@Length)";
            SqlParameterProvider p = new SqlParameterProvider();

            p.AddParameter("@DocCode", SqlDbType.VarChar, Model.DocCode);
            p.AddParameter("@DocName", SqlDbType.VarChar, Model.DocName);
            p.AddParameter("@DocHeader", SqlDbType.VarChar, Model.DocHeader ?? "");
            p.AddParameter("@Seperate", SqlDbType.VarChar, Model.Separate ?? "");
            p.AddParameter("@DocType", SqlDbType.VarChar, Model.DocRule);
            p.AddParameter("@Length", SqlDbType.Int, Model.Length);

            return(db.ExecuteNonQuery(sql, p) > 0);
        }
예제 #2
0
        public string DoGetDocSN(IDatabase db, ModelDocNo Model)
        {
            SqlParameterProvider p = new SqlParameterProvider();

            p.AddParameter("@DocCode", SqlDbType.VarChar, 50, Model.DocCode);
            string sql = "SELECT * FROM sys_DataSN WHERE DocCode=@DocCode";

            DataTable dt        = db.GetTable(sql, "", p);
            string    DocHeader = "";
            string    DocType   = "";
            string    Separate  = "";
            int       Length    = 0;

            if (dt.Rows.Count > 0)
            {
                DocHeader = ConvertLib.ToString(dt.Rows[0][sys_DataSN.DocHeader]);
                DocType   = ConvertLib.ToString(dt.Rows[0][sys_DataSN.DocType]);
                Separate  = ConvertLib.ToString(dt.Rows[0][sys_DataSN.Separate]);
                Length    = ConvertLib.ToInt(dt.Rows[0][sys_DataSN.Length]);
            }
            else
            {
                AddDocSNRule(db, Model);
                DocHeader = Model.DocHeader;
                DocType   = Model.DocRule;
                Separate  = Model.Separate;
                Length    = Model.Length;
            }

            string DocSeed = "";

            switch (DocType.ToUpper())
            {
            case "YEAR":
                DocSeed   = DateTime.Now.Year.ToString();
                DocHeader = DocHeader + DocSeed;
                break;

            case "YEAR-MONTH":
                DocSeed   = DateTime.Now.ToString("yyyyMM");
                DocHeader = DocHeader + DocSeed;
                break;

            case "YEAR-MONTH-DD":
                DocSeed   = DateTime.Now.ToString("yyyyMMdd");
                DocHeader = DocHeader + DocSeed;
                break;

            case "UP":
                DocSeed = Model.DocCode;
                break;

            case "CUSTOMER":
                DocSeed = Model.CustomerSeed;
                break;
            }


            int    snindex          = 0;
            string sql2             = "SELECT * FROM sys_DataSNDetail WHERE DocCode=@DocCode AND Seed=@Seed";
            SqlParameterProvider p2 = new SqlParameterProvider();

            p2.AddParameter("@DocCode", SqlDbType.VarChar, 50, Model.DocCode);
            p2.AddParameter("@Seed", SqlDbType.VarChar, 50, DocSeed);
            DataTable datasn = db.GetTable(sql2, "t", p2);

            if (datasn.Rows.Count > 0)
            {
                snindex = ConvertLib.ToInt(datasn.Rows[0]["MaxID"]);
                snindex = ValidateSN(snindex + 1);

                string sql3             = "UPDATE sys_DataSNDetail SET MaxID=@Value WHERE DocCode=@DocCode AND Seed=@Seed";
                SqlParameterProvider p3 = new SqlParameterProvider();
                p3.AddParameter("@Value", SqlDbType.Int, snindex);
                p3.AddParameter("@DocCode", SqlDbType.VarChar, 50, Model.DocCode);
                p3.AddParameter("@Seed", SqlDbType.VarChar, 50, DocSeed);
                db.ExecuteNonQuery(sql3, p3);
            }
            else
            {
                snindex = ValidateSN(1);
                string sql4             = "INSERT INTO sys_DataSNDetail(DocCode,Seed,MaxID) VALUES(@DocCode, @Seed, @Value)";
                SqlParameterProvider p4 = new SqlParameterProvider();
                p4.AddParameter("@Value", SqlDbType.Int, snindex);
                p4.AddParameter("@DocCode", SqlDbType.VarChar, 50, Model.DocCode);
                p4.AddParameter("@Seed", SqlDbType.VarChar, 50, DocSeed);
                db.ExecuteNonQuery(sql4, p4);
            }
            string snvalue = snindex.ToString().PadLeft(Length, '0');

            if (DocType.ToUpper() == "CUSTOMER")
            {
                return(DocHeader + snvalue);
            }
            else
            {
                return(DocHeader + Separate + snvalue);
            }
        }