diff --git a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs index 0770cfc8..0f7a00bb 100644 --- a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs +++ b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs @@ -1,6 +1,7 @@ using Microsoft.VisualBasic; using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; +using System.Diagnostics; using System.Net.Http.Headers; using System.Text.RegularExpressions; using YLErp.Core.Helpers; @@ -113,6 +114,7 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator var trades = Context.Trades; var totalPosiQuantity = 0.0; var StockEqvNotionalRealSum = 0.0; + var PosiTradingFeePending = 0.0; var allSwapPositions = Context.GetSwapPositions(trades.Select(x => x.id).ToList(), true); var allinterestMargins = allSwapPositions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)); foreach (var trade in trades) @@ -142,8 +144,6 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator dic["到期日期"] = trade.ExerciseDate?.ToString("yyyy年M月d日"); bool posiLong = swapPosition?.PositionType == (int)PositionTypeFlag.Short ? false : true; var interestRate = interestMargin?.InterestRateDefault * 100 ?? 0; - var basicFee = (trade.OriginalStockEqvNotional ?? 0) == 0 ? 0 : ((double)((swapPosition?.PosiTradingFeePending) ?? 0) / (trade.OriginalStockEqvNotional ?? 0)) * 100; - dic["基本费率"] = (basicFee * 2).ToString("f4"); dic["交易费用"] = (double)((swapPosition?.PosiTradingFeePending * 2) ?? 0); dic["多头约定利率"] = "不适用"; dic["空头约定利率"] = "不适用"; @@ -200,7 +200,7 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator //dic["计算基准"] = calculationBasis; dic["初始保障金率"] = ((clientMarginRate?.InitMarginRate ?? 0) * 100).ToString("0.####") + "%"; dic["维持保障金率"] = ((clientMarginRate?.MaintenanceRate ?? 0) * 100).ToString("0.####") + "%"; - dic["交易费率"] = dic["基本费率"]; + //var initialMarginSum = initialMarginQuery.Sum(x => // x.InterestDirection == 2 ? x.InterestPrincipalFix * -1 : x.InterestPrincipalFix); //dic["期初预付金".Insert("期初预付金".Length, "2?")] = initialMarginSum.ToString("0.##"); @@ -221,7 +221,7 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator //row["利差"] = ((interestMargin?.InterestRateDefault) ?? 0) * 100; //var basicFee = trade.StockEqvNotionalReal == 0 ? 0 : ((double)((swapPosition?.PosiTradingFeePending) ?? 0) / trade.StockEqvNotionalReal) * 100; //row["基本费率"] = (basicFee * 2).ToString("f4"); - + PosiTradingFeePending += (double)((swapPosition?.PosiTradingFeePending) ?? 0); FormatToDict("交易费用", (double)((swapPosition?.PosiTradingFeePending * 2) ?? 0), row); row["期初预付金利率"] = ((initialMarginQuery.FirstOrDefault()?.InterestRateDefault) ?? 0) * 100; @@ -253,9 +253,12 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator _ => "" }; table1.Add(row); - dic["名义本金".Insert("名义本金".Length, "2?")] = StockEqvNotionalRealSum.ToString("0.##"); - dic["期初预付金".Insert("期初预付金".Length, "2?")] = (StockEqvNotionalRealSum * clientMarginRate?.InitMarginRate)?.ToString("0.##"); } + var basicFee = (StockEqvNotionalRealSum == 0 ? 0 : (PosiTradingFeePending / StockEqvNotionalRealSum * 100)); + dic["基本费率"] = (basicFee * 2).ToString("f4"); + dic["交易费率"] = dic["基本费率"]; + dic["名义本金".Insert("名义本金".Length, "2?")] = StockEqvNotionalRealSum.ToString("0.##"); + dic["期初预付金".Insert("期初预付金".Length, "2?")] = (StockEqvNotionalRealSum * clientMarginRate?.InitMarginRate)?.ToString("0.##"); clientduties = clientduties.Where(x => x.ContactTypeId.Contains("3")).OrderBy(o => o.id).ToList();//交易确认书邮件接收人