fix: 结算单-期间分红
This commit is contained in:
@@ -9,7 +9,7 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule;
|
||||
|
||||
/// <summary>
|
||||
/// 构造普通收益互换结算单单行数据所需的业务输入。
|
||||
/// 数据来自平仓事件、关联交易及结算日日终持仓。
|
||||
/// 数据来自平仓事件及其关联交易。
|
||||
/// </summary>
|
||||
public sealed class SwapSettlementBillRowInput
|
||||
{
|
||||
@@ -40,9 +40,6 @@ public sealed class SwapSettlementBillRowInput
|
||||
/// <summary>平仓事件浮动腿记录的期末结算收益率(展示态数值)。</summary>
|
||||
public decimal? ExitYtm { get; set; }
|
||||
|
||||
/// <summary>结算日日终持仓中的当日浮动端分红,保留原始收付方向。</summary>
|
||||
public decimal CurrentDayFloatingDividend { get; set; }
|
||||
|
||||
/// <summary>期间付息或分红是否计入本次净额结算。</summary>
|
||||
public bool IncludePeriodPaymentInNetting { get; set; }
|
||||
}
|
||||
@@ -89,6 +86,7 @@ public static class SwapSettlementBillRowBuilder
|
||||
var floatingAmount = -input.CloseFlow.MarkClosePnl;
|
||||
var fee = -(input.CloseFlow.TradingFee + input.CloseFlow.TradingFeePending);
|
||||
var marginInterest = -marginEvents.Sum(x => x.InterestClosePnL);
|
||||
var periodAmount = -input.CloseFlow.DividendPending;
|
||||
var initialMargin = SumMargin(effectiveMargins, InterestModeEnum.初始预付金);
|
||||
|
||||
var additionalMarginPositions = positions
|
||||
@@ -106,6 +104,9 @@ public static class SwapSettlementBillRowBuilder
|
||||
|
||||
|
||||
var isCashBond = ConsGlobal.InstrumentType.IsBond(input.UnderlyingInstrumentType);
|
||||
var isEtf = ConsGlobal.InstrumentType.Fund.Equals(
|
||||
input.UnderlyingInstrumentType,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
|
||||
return new ExcelReportModel
|
||||
@@ -121,11 +122,11 @@ public static class SwapSettlementBillRowBuilder
|
||||
PosiNotionalValue = input.CloseNotionalValue.ToString("0.00"),
|
||||
Quantity = input.CloseFlow.Quantity.ToString("0.00"),
|
||||
DividendIn = isCashBond
|
||||
? input.CurrentDayFloatingDividend.ToString("0.00")
|
||||
? periodAmount.ToString("0.00")
|
||||
: string.Empty,
|
||||
PeriodDividend = isEtf
|
||||
? periodAmount.ToString("0.00")
|
||||
: string.Empty,
|
||||
PeriodDividend = isCashBond
|
||||
? string.Empty
|
||||
: input.CurrentDayFloatingDividend.ToString("0.00"),
|
||||
PosiNetPrice = ((settlementPosition?.PosiGrossPrice ?? 0m) * 100m).ToString("0.00000000"),
|
||||
InitYtm = isCashBond && input.Trade.InitYtm.HasValue
|
||||
? input.Trade.InitYtm.Value.ToString("0.####%")
|
||||
|
||||
Reference in New Issue
Block a user