客户设置互换天数&利息计算重置频率

This commit is contained in:
吴方海
2025-04-14 16:31:35 +08:00
parent cbe8b2dc91
commit 5250a37d08
29 changed files with 637 additions and 389 deletions
@@ -252,7 +252,7 @@ namespace YLErp.Modules.SwapModule
string structureType = "普通债券类收益互换",
bool cashNeedAfter = false)
{
var td = PrepareTrade(flowMerge, client, asset, underlying, structureType);
var td = PrepareTrade(flowMerge, client, asset, underlying, clientMarginTemplate?.SwapEndDays??14, structureType);
PrepareTradeExtend(flowMerge, td, underlying, swapFloatRate, clientMarginTemplate);
td.TradeNumber = BizLogicSingleton.Instance.GenerateTradeNumberBeforeConfirm(td, DbContext);
flowMerge.SwapTradeNo = td.TradeNumber;
@@ -311,7 +311,7 @@ namespace YLErp.Modules.SwapModule
/// <param name="asset"></param>
/// <param name="underlying"></param>
/// <returns></returns>
private trade PrepareTrade(swap_flow_merge flowMerge, Client client, AssetUnit asset, underlying_manager underlying, string structureType = "普通债券类收益互换")
private trade PrepareTrade(swap_flow_merge flowMerge, Client client, AssetUnit asset, underlying_manager underlying,int swapEndDays, string structureType = "普通债券类收益互换")
{
trade td = new trade()
{
@@ -339,7 +339,7 @@ namespace YLErp.Modules.SwapModule
{
td.StartDate = flowMerge.SettleDate.Value;
}
td.ExerciseDate = QdpCalendarHelper.GetNonHolidayDefore(td.StartDate.Value.AddDays(14));
td.ExerciseDate = QdpCalendarHelper.GetNonHolidayDefore(td.StartDate.Value.AddDays(swapEndDays));
PrepareUnderlying(td, underlying);
PrepareSwapTradeClient(td, underlying);
td.TradeOldStatus = ConsTrade.;
@@ -446,6 +446,7 @@ namespace YLErp.Modules.SwapModule
PosiMatuirityDate = td.ExerciseDate.Value,
PosiStartDate = td.StartDate.Value,
IsInitial = true,
interest_rest_days = 7,
OptTime = DateTime.Now,
OptId = UserInfo.UserId,
OptName = UserInfo.UserName,
@@ -455,6 +456,9 @@ namespace YLErp.Modules.SwapModule
interestPosition.InterestRateDefault = flowMerge.BsType == (int)PositionTypeFlag.Long ? (swapFloatRate.LongPricePoint ?? 0) : (swapFloatRate.ShortPricePoint ?? 0) * -1;
interestPosition.InterestRateDefault = interestPosition.InterestRateDefault * 0.0001m;
interestPosition.FloatRateUnderlyingCode = swapFloatRate.BaseUnderlyingCode;
interestPosition.interest_rule = swapFloatRate.interest_rule;
interestPosition.interest_rest_days = swapFloatRate.interest_rest_days;
interestPosition.IsAnnualized = swapFloatRate.is_annualized ?? false;
}
var interval = new IntervalModel()
{
@@ -1411,6 +1415,8 @@ namespace YLErp.Modules.SwapModule
position.InterestType = swap.InterestType;
position.FloatRate = swap.FloatRate;
position.FloatRateUnderlyingCode = swap.FloatRateUnderlyingCode;
position.interest_rest_days = swap.interest_rest_days;
position.interest_rule = swap.interest_rule;
if (position.id == 0)
{
DbContext.swap_position.Add(position);