#region
using System.Data.Common;
using CSFramework.DB;
using CSFrameworkV5.Common;
///*************************************************************************/
///*
///* 文件名 :DocNoTool.cs
///* 程序说明 : 单据号码管理工具
///* 原创作者 :www.csframework.com
///*
///* Copyright 2006-2021 C/S框架网 www.csframework.com
///*
///**************************************************************************/
#endregion
namespace CSFrameworkV5.DataAccess
{
///
/// 号码管理工具,支持生成序列号或指定规则的单据号码。
///
public class DocNoTool
{
///
/// 在同一事务内生成流水号码,格式:XX00000001
///
/// 当前事务
/// 字头
/// 当号码表没有该字头的定义,自动初始化一条序号为1的记录
///
public static string GetDataSN(IDatabase db, DbTransaction tran,
string dataCode, bool asHeader)
{
var cmd = db.CreateSqlProc("sp_sys_GetDataSN");
cmd.AddParam("DataCode", dataCode);
cmd.AddParam("AsHeader", asHeader ? "Y" : "N");
cmd.Command.Connection = tran.Connection;
cmd.Command.Transaction = tran;
var no = db.ExecuteScalar(cmd.Command);
return ConvertEx.ToString(no);
}
///
/// 生成流水号,格式:XX00000001
///
/// SQL连接
/// 字头
/// 当号码表没有该字头的定义,自动初始化一条序号为1的记录
///
public static string GetDataSN(IDatabase db, string dataCode,
bool asHeader)
{
var cmd = db.CreateSqlProc("sp_sys_GetDataSN");
cmd.AddParam("DataCode", dataCode);
cmd.AddParam("AsHeader", asHeader ? "Y" : "N");
var no = db.ExecuteScalar(cmd.Command);
return ConvertEx.ToString(no);
}
///
/// 在同一事务内生成流水号,格式:XX00000001
///
/// 当前事务
/// 字头,如:XX
/// True/False,当号码表没有该字头的定义,自动初始化一条序号为1的记录
/// 数字序号的长度,如6位序号: 000001, 完整流水号+字头: XX000001
///
public static string GetDataSN(IDatabase db, DbTransaction tran,
string dataCode, bool asHeader, int asLength)
{
var cmd = db.CreateSqlProc("sp_sys_GetDataSN");
cmd.AddParam("DataCode", dataCode);
cmd.AddParam("AsHeader", asHeader ? "Y" : "N");
cmd.AddParam("AsLength", asLength);
cmd.Command.Connection = tran.Connection;
cmd.Command.Transaction = tran;
var no = db.ExecuteScalar(cmd.Command);
return ConvertEx.ToString(no);
}
///
/// 获取单据的流水号码
///
/// 当前SQL连接
/// 单据名称,前缀,如:SO, AR,AP
///
public static string GetDocNo(IDatabase db, string DocNoName)
{
var cmd = db.CreateSqlProc("sp_sys_GetDocNo");
cmd.AddParam("DocCode", DocNoName);
var no = db.ExecuteScalar(cmd.Command);
return ConvertEx.ToString(no);
}
///
/// 在同一事务内生成单号,格式:XX20170228001
///
/// 当前事务
/// 单据名称,前缀,如:SO, AR,AP
///
public static string GetNumber(IDatabase db, DbTransaction tran,
string DocNoName)
{
var cmd = db.CreateSqlProc("sp_sys_GetDocNo");
cmd.AddParam("DocCode", DocNoName);
cmd.Command.Connection = tran.Connection;
cmd.Command.Transaction = tran;
var no = db.ExecuteScalar(cmd.Command);
return ConvertEx.ToString(no);
}
}
}