TRS-ZS-450 每日估值单中各tab字段逻辑调整汇总
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -475,13 +475,16 @@ namespace YLErp.Modules.SwapModule
|
||||
var tradeQuery = DbContext.trade.Where(tradePredicate);
|
||||
var query = from flow in positionQuery
|
||||
join td in tradeQuery on flow.SwapTradeId equals td.id
|
||||
join tr in DbContext.trade_contract_r on td.id equals tr.TradeId into tradeContractGroup
|
||||
from tradeContract in tradeContractGroup.DefaultIfEmpty()
|
||||
select new ClientSwapPositionResponse
|
||||
{
|
||||
FlowEvent = flow,
|
||||
SwapTradeNo = td.TradeNumber,
|
||||
StructureType = td.StructureType,
|
||||
ClientName = td.ClientName,
|
||||
ClientId = td.ClientId
|
||||
ClientId = td.ClientId,
|
||||
ContractCode = tradeContract.ContractCode,
|
||||
};
|
||||
if (string.IsNullOrEmpty(req.sidx))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user