From de84a90badbf29d4247fe4ce2946a8fdf45fa0a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=86=B0=E5=86=B0?= <437394478@qq.com> Date: Tue, 28 Jul 2026 18:25:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=BD=E8=81=94=E6=B0=91=E7=94=9F-?= =?UTF-8?q?=E7=B0=BF=E8=AE=B0=E4=B8=AD=E5=A2=9E=E5=BC=BA=E6=94=B6=E7=9B=8A?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=8F=AF=E4=BB=A5=E8=AF=86=E5=88=AB=E5=B9=B6?= =?UTF-8?q?=E4=B8=94=E5=AF=B9=E5=BA=94=E5=88=B0=E4=BA=A4=E6=98=93=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E4=B9=A6=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TradeConfirmationGenerator.cs | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) 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