diff --git a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs index a926b273..f7db099e 100644 --- a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs +++ b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs @@ -241,21 +241,15 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator dic["参考标的期初全价%"] = ((double)swapPosition.PosiGrossPrice * 100).ToString("N4"); dic["参考标的期初净价%"] = ((double)(swapPosition.PosiNetNoFeePrice ?? 0m) * 100).ToString("N4"); - // 固定收益率(年化)- ETF默认取"增强收益"腿的计息利率 + // 固定收益率(年化)仅对应增强收益腿;互换利率腿在模板中应留空。 bool isEtf = IsBondEtf(underlying?.UnderlyingCode ?? string.Empty); - if (isEtf) - { - var enhancePosition = swapPositions - .Where(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.category_tag == "增强收益") - .FirstOrDefault(); - dic["固定收益率"] = enhancePosition != null - ? ((double)enhancePosition.InterestRateDefault * 100).ToString("N4") - : "0.0000"; - } - else - { - dic["固定收益率"] = "0.0000"; - } + var enhancePosition = swapPositions + .FirstOrDefault(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.category_tag == "增强收益"); + var swapRatePosition = swapPositions + .FirstOrDefault(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.category_tag == "互换利率"); + dic["固定收益率"] = enhancePosition != null + ? ((double)enhancePosition.InterestRateDefault * 100).ToString("N4") + : swapRatePosition != null ? "" : "0.0000"; // 获取客户适用的保证金率 var clientMarginRate = UnderlyingHelper.GetApplicableMarginRate( @@ -416,13 +410,10 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator // 利率类型判断(固定/浮动) swap_position interestMargin = null; - // ETF: 优先取"互换利率"腿 - if (isEtf) - { - interestMargin = swapPositions - .Where(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.category_tag == "互换利率") - .FirstOrDefault(); - } + // 优先取互换利率腿,避免同时存在增强收益腿时受集合顺序影响。 + interestMargin = swapPositions + .Where(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.category_tag == "互换利率") + .FirstOrDefault(); if (interestMargin == null) interestMargin = swapPositions .Where(x => ConsTrade.InterestModels.Contains(x.InterestMode) && x.interest_rest_days != null) @@ -442,11 +433,14 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator dic["期末观察日"] = trade.ExerciseDate?.ToString("【yyyy】年【M】月【d】日") ?? ""; if (interestMargin != null) { - if (string.IsNullOrEmpty(interestMargin.FloatRateUnderlyingCode)) + // 增强收益腿在确认书中固定展示为固定利率,不展示其浮动利率标的或利差。 + if (interestMargin.category_tag == "增强收益" || string.IsNullOrEmpty(interestMargin.FloatRateUnderlyingCode)) { dic["利率类型"] = "固定利率"; dic["IsFixed"] = "☑"; //☑ - dic["固定利率"] = ((double)interestMargin.InterestRateDefault * 100).ToString("N4"); + dic["固定利率"] = interestMargin.category_tag == "增强收益" + ? "0.0000" + : ((double)interestMargin.InterestRateDefault * 100).ToString("N4"); dic["利差"] = ""; } else