BugFix 交易费率逻辑使用汇总值计算

This commit is contained in:
锦麟 王
2025-05-06 11:11:22 +08:00
parent 049433ba46
commit 3a1b00b6c3
@@ -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();//交易确认书邮件接收人