fix: 统一互换部分平仓交易费用与待结算费用的分摊舍入

This commit is contained in:
tengyufan
2026-07-29 13:47:45 +08:00
parent e1d68393f8
commit 8c4f452482
4 changed files with 79 additions and 22 deletions
+11 -11
View File
@@ -323,12 +323,19 @@ namespace YLErp.Modules.SwapModule
return 0;
}
if (oriPosition.PosiFeeType == 1)
if (oriPosition.PosiTradingFeeUnit == 0)
{
return Math.Round(oriPosition.PosiTradingFeeUnit * unwindData.CloseQty, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero);
return 0;
}
return Math.Round(oriPosition.PosiTradingFeeUnit / 100m * unwindData.CloseNotionalValue, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero);
var closeBase = oriPosition.PosiFeeType == 1 ? unwindData.CloseQty : unwindData.CloseNotionalValue;
var originalBase = oriPosition.PosiFeeType == 1 ? unwindData.NotionalQty : unwindData.NotionalValue;
if (originalBase <= 0)
{
return 0;
}
return Math.Round(oriPosition.PosiTradingFeePending * closeBase / originalBase, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero);
}
private static decimal CalcInitTradingFeePending(swap_position oriPosition, swap_position position, UnwindData unwindData)
@@ -338,14 +345,7 @@ namespace YLErp.Modules.SwapModule
return position?.PosiTradingFeePending ?? 0;
}
var closeBase = oriPosition.PosiFeeType == 1 ? unwindData.CloseQty : unwindData.CloseNotionalValue;
var originalBase = oriPosition.PosiFeeType == 1 ? unwindData.NotionalQty : unwindData.NotionalValue;
if (originalBase <= 0)
{
return position?.PosiTradingFeePending ?? 0;
}
return Math.Round(oriPosition.PosiTradingFeePending * closeBase / originalBase, ConsGlobal.MoneyRound, MidpointRounding.AwayFromZero);
return CalcInitTradingFee(oriPosition, unwindData);
}
/// <summary>
/// 校验上日是否收盘