TRS-ZS-450 每日估值单中各tab字段逻辑调整汇总

This commit is contained in:
吴方海
2025-05-28 10:29:09 +08:00
parent 84ea6b09fc
commit 4e4cb17dab
11 changed files with 50 additions and 57 deletions
@@ -1892,7 +1892,10 @@ namespace YLErp.Modules.SwapModule
//item.position.PosiProfitSum += item.position.VTradingFee-item.position.PosiFeePending;
SetClientEodPosition(item.position);
//item.position.PosiProfitSum += item.TradingFee;
item.NetSettmentAmount = item.position.PosiProfitSum;
var posiProfitSum= item.position.PosiProfitSum;
//item.position.PosiProfitSum 不需要加交易费用
item.position.PosiProfitSum = item.position.PosiProfitSum - item.position.VTradingFee;
item.NetSettmentAmount = posiProfitSum;
var margins = positions.Where(x => x.SwapTradeId == item.position.SwapTradeId);
var interests = eodPositions.Where(x => x.SwapTradeId == item.position.SwapTradeId && x.ValueDate == item.position.ValueDate);
var eodMargins = interests.Where(x => marginTypes.Contains(x.InterestMode));
@@ -1901,29 +1904,12 @@ namespace YLErp.Modules.SwapModule
item.OpenMarginRate = margins.Sum(s => s.InterestRateDefault * (s.InterestDirection == (int)SwapDirectionEnum. ? 1 : -1));
item.MarginInterestAmount = eodMargins.Sum(s => s.InterestIncomeSum * (s.InterestDirection == (int)SwapDirectionEnum. ? 1 : -1));
item.InterestAmount = eodInterests.Sum(s => s.InterestIncomeSum * (s.InterestDirection == (int)SwapDirectionEnum. ? -1 : 1));
if (item.StructureType != "普通债券类收益互换")
{
var floatRateInterest = eodInterests.FirstOrDefault(x => !string.IsNullOrEmpty(x.FloatRateUnderlyingCode));
item.NetSettmentAmount += item.InterestAmount;
if (floatRateInterest != null)
{
item.InterestRate = floatRateInterest.InterestRateDefault;
item.FloatRateUnderlyingCode = floatRateInterest.FloatRateUnderlyingCode;
}
else
{
item.InterestRate = eodInterests.FirstOrDefault()?.InterestRateDefault ?? 0;
}
}
else
{
item.InterestRate = eodInterests.Sum(s => s.InterestRateDefault);
item.NetSettmentAmount += item.InterestAmount + item.MarginInterestAmount + eodMargins.Sum(s => s.InterestPrincipalFix * (s.InterestDirection == (int)SwapDirectionEnum. ? 1 : -1));
}
item.InterestRate = eodInterests.Sum(s => s.InterestRateDefault);
item.NetSettmentAmount += item.InterestAmount + item.MarginInterestAmount + eodMargins.Sum(s => s.InterestPrincipalFix * (s.InterestDirection == (int)SwapDirectionEnum. ? 1 : -1));
item.NetSettmentAmount = decimal.Parse(item.NetSettmentAmount.ToString("0.00"));
if (item.position.PosiNotionalValue != 0 && item.position.PosiNetPrice != 0)
{
item.FloatRateAbs = item.position.PosiNotionalValue == 0 ? 0 : item.InterestAmount / (item.position.PosiNotionalValue * item.position.PosiNetPrice);
item.FloatRateAbs = item.position.PosiNotionalValue == 0 ? 0 : item.InterestAmount / item.position.PosiNotionalValue;
}
SetPosiPrice(item.position);
}