#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
|
{
|
/// <summary>
|
/// 号码管理工具,支持生成序列号或指定规则的单据号码。
|
/// </summary>
|
public class DocNoTool
|
{
|
/// <summary>
|
/// 在同一事务内生成流水号码,格式:XX00000001
|
/// </summary>
|
/// <param name="tran">当前事务</param>
|
/// <param name="dataCode">字头</param>
|
/// <param name="asHeader">当号码表没有该字头的定义,自动初始化一条序号为1的记录</param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 生成流水号,格式:XX00000001
|
/// </summary>
|
/// <param name="conn">SQL连接</param>
|
/// <param name="dataCode">字头</param>
|
/// <param name="asHeader">当号码表没有该字头的定义,自动初始化一条序号为1的记录</param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 在同一事务内生成流水号,格式:XX00000001
|
/// </summary>
|
/// <param name="tran">当前事务</param>
|
/// <param name="dataCode">字头,如:XX</param>
|
/// <param name="asHeader">True/False,当号码表没有该字头的定义,自动初始化一条序号为1的记录</param>
|
/// <param name="asLength">数字序号的长度,如6位序号: 000001, 完整流水号+字头: XX000001</param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 获取单据的流水号码
|
/// </summary>
|
/// <param name="conn">当前SQL连接</param>
|
/// <param name="DocNoName">单据名称,前缀,如:SO, AR,AP</param>
|
/// <returns></returns>
|
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);
|
}
|
|
/// <summary>
|
/// 在同一事务内生成单号,格式:XX20170228001
|
/// </summary>
|
/// <param name="tran">当前事务</param>
|
/// <param name="DocNoName">单据名称,前缀,如:SO, AR,AP</param>
|
/// <returns></returns>
|
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);
|
}
|
}
|
}
|