Files
2024-05-09 14:06:26 +08:00

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;
}
}
}