#EQD-6604 国联民生-确认书编码生成环节移到簿记(支持手工录入)
feat: 国联民生收益互换簿记后按确认书规则生成交易编 - 补充单测文件
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
|||||||
|
using YLErp.Configuration;
|
||||||
|
using YLErp.DBModels;
|
||||||
|
using YLErp.Modules.TradeModule.DocGenerateModule;
|
||||||
|
|
||||||
|
namespace YLErp.UnitTestProject.Modules.TradeModule.DocGenerateModule
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class GuolianContractNoGeneratorTest
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public void IsGuolianSwapTrade_OnlyMatchesGuolianSwap()
|
||||||
|
{
|
||||||
|
var swapTrade = CreateSwapTrade();
|
||||||
|
|
||||||
|
Assert.IsTrue(GuolianContractNoGenerator.IsGuolianSwapTrade(swapTrade, CompanyEnum.国联));
|
||||||
|
Assert.IsFalse(GuolianContractNoGenerator.IsGuolianSwapTrade(
|
||||||
|
new trade { TradeType = "香草期权" }, CompanyEnum.国联));
|
||||||
|
Assert.IsFalse(GuolianContractNoGenerator.IsGuolianSwapTrade(swapTrade, CompanyEnum.国泰君安));
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void ShouldGenerateTradeNumberAfterSave_OnlyGeneratesForBlankTradeNumber()
|
||||||
|
{
|
||||||
|
var blankTrade = CreateSwapTrade();
|
||||||
|
var manualTrade = CreateSwapTrade();
|
||||||
|
manualTrade.TradeNumber = "MANUAL-001";
|
||||||
|
|
||||||
|
Assert.IsTrue(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
|
||||||
|
blankTrade, CompanyEnum.国联));
|
||||||
|
Assert.IsFalse(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
|
||||||
|
manualTrade, CompanyEnum.国联));
|
||||||
|
Assert.IsFalse(GuolianContractNoGenerator.ShouldGenerateTradeNumberAfterSave(
|
||||||
|
blankTrade, CompanyEnum.国泰君安));
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void BuildTradeNumber_ClientTrade_UsesNumericSequenceAndSanitizesUnderlyingCode()
|
||||||
|
{
|
||||||
|
var trade = CreateSwapTrade();
|
||||||
|
trade.OpponentRole = "甲方";
|
||||||
|
trade.TradeDate = new DateTime(2026, 7, 24);
|
||||||
|
trade.UnderlyingCode = "250210.IB";
|
||||||
|
|
||||||
|
var number = GuolianContractNoGenerator.BuildTradeNumber(trade, "IS", 3);
|
||||||
|
|
||||||
|
Assert.AreEqual("GLMS-IS-20260724-FICC-03-250210IB", number);
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataTestMethod]
|
||||||
|
[DataRow(1, "A")]
|
||||||
|
[DataRow(26, "Z")]
|
||||||
|
[DataRow(27, "AA")]
|
||||||
|
public void BuildTradeNumber_NonClientTrade_UsesLetterSequence(int sequenceNo, string sequenceCode)
|
||||||
|
{
|
||||||
|
var trade = CreateSwapTrade();
|
||||||
|
trade.OpponentRole = "乙方";
|
||||||
|
trade.TradeDate = new DateTime(2026, 7, 24);
|
||||||
|
trade.UnderlyingCode = "180205.IB";
|
||||||
|
|
||||||
|
var number = GuolianContractNoGenerator.BuildTradeNumber(trade, "glmscounter", sequenceNo);
|
||||||
|
|
||||||
|
Assert.AreEqual($"GLMS-glmscounter-20260724-FICC-{sequenceCode}-180205IB", number);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static trade CreateSwapTrade()
|
||||||
|
{
|
||||||
|
return new trade { TradeType = "收益互换" };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,10 +20,26 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule
|
|||||||
|
|
||||||
public static bool IsGuolianSwapTrade(trade trade)
|
public static bool IsGuolianSwapTrade(trade trade)
|
||||||
{
|
{
|
||||||
return PS.Config.Company == CompanyEnum.国联
|
return IsGuolianSwapTrade(trade, PS.Config.Company);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsGuolianSwapTrade(trade trade, CompanyEnum company)
|
||||||
|
{
|
||||||
|
return company == CompanyEnum.国联
|
||||||
&& trade?.TradeType == "收益互换";
|
&& trade?.TradeType == "收益互换";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool ShouldGenerateTradeNumberAfterSave(trade trade, CompanyEnum company)
|
||||||
|
{
|
||||||
|
return IsGuolianSwapTrade(trade, company)
|
||||||
|
&& string.IsNullOrWhiteSpace(trade.TradeNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool CanReuseRejectedTradeNumber(trade trade, CompanyEnum company)
|
||||||
|
{
|
||||||
|
return IsGuolianSwapTrade(trade, company);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 交易首次入库后按国联交易确认书编号规则回写交易编号。
|
/// 交易首次入库后按国联交易确认书编号规则回写交易编号。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user