52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
using YLErp.BLL;
|
|
using YLErp.Modules;
|
|
|
|
namespace YLErp.CustomizedBizLogic
|
|
{
|
|
public class BizLogicDZ : BizLogicDefault
|
|
{
|
|
public override string GenerateTradeNumberBeforeConfirm(TradeNumberReqModel reqModel, YLContext db)
|
|
{
|
|
if (reqModel is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(reqModel));
|
|
}
|
|
|
|
if (reqModel.trade.TradeDate == null)
|
|
{
|
|
throw new Exception("生成合同编号失败,请先确认该交易成交日期!");
|
|
}
|
|
|
|
if (reqModel.clientId == 0)
|
|
{
|
|
throw new Exception("生成合同编号失败,请先确认该交易交易对手方!");
|
|
}
|
|
|
|
|
|
var code = "";
|
|
var clientNumber = DataCacheProvider.GetClientDataSource().GetData(reqModel.clientId)?.Number.TrimToNull();
|
|
|
|
var prefix = reqModel.trade.TradeDate?.ToString("yyyyMMdd");
|
|
|
|
prefix += "-" + clientNumber + "-";
|
|
|
|
var tradeNumbers =
|
|
db.trade
|
|
.Where(O =>
|
|
O.TradeNumber.StartsWith(prefix)
|
|
&& O.ValidState != "InValid").Select(O => O.TradeNumber).OrderByDescending(O => O);
|
|
var tradeNumber = tradeNumbers.FirstOrDefault();
|
|
if (string.IsNullOrWhiteSpace(tradeNumber) || !int.TryParse(tradeNumber.Substring(prefix.Length).Split('-')[0], out var tradeCount))
|
|
{
|
|
tradeCount = 0;
|
|
}
|
|
do
|
|
{
|
|
tradeCount++;
|
|
code = $"{prefix}{tradeCount:D2}";
|
|
} while (tradeNumbers.Contains(code));
|
|
return code;
|
|
}
|
|
}
|
|
}
|