Files
zszq-trs/YLErpWeb/Views/trade/tradeView_Swap.cshtml
T
2024-05-09 14:06:26 +08:00

1269 lines
63 KiB
Plaintext

@using YieldChain.Security
@model TradeViewModel
@{
Layout = null;
var tradeModel = Model.Trade;
var trade_swap = tradeModel.trade_swap;
var salesNames = String.Join(",", Model.SalesCommission.Select(n => n.SalesmanName).ToArray());
var isJd = tradeModel.UnderlyingCode?.Trim().ToUpper().StartsWith("JD") ?? false;
tradeModel.TradeUnit = PS.Config.IsUseDisplayNotional ? (tradeModel.QuoteUnit == "500千克" ? "半吨" : (isJd ? "吨" : tradeModel.QuoteUnit)) : tradeModel.TradeUnit;
}
<script>
function showSwapRate(timeRate) {
sessionStorage.setItem("observationdates", timeRate);
var url = "/trade/tradeObservationDateInfoList?title1=互换利率&isTitle1Percent=true";
main.open("互换利率", url, { area: ['400px', '600px'] });
}
function setUnderlyings(isForGet) {
vueDetails.isForGet = isForGet;
$("#myModal").modal("show");
}
</script>
<div id="optionVueDiv">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link active" href="#baseInfo" data-toggle="tab">成交</a>
</li>
@if (Model.unWindTradeCashList != null && Model.unWindTradeCashList.Any())
{
<li class="nav-item">
<a class="nav-link" href="#terminationInfo" data-toggle="tab">提前终止</a>
</li>
}
@if (Model.swapTradeCashList != null && Model.swapTradeCashList.Any())
{
<li class="nav-item">
<a class="nav-link" href="#swapInfo" data-toggle="tab">互换</a>
</li>
}
@if (Model.tradeMarginTemplates != null && Model.tradeMarginTemplates.Any())
{
<li class="nav-item">
<a class="nav-link" href="#tradeMarginTemplatesInfo" data-toggle="tab">预付金模板</a>
</li>
}
</ul>
</div>
<div class="tab-content">
<div id="baseInfo" class="tab-pane in active">
<table class="table table-bordered">
<tr>
<td class="tdRight">互换类型</td>
<td>@(tradeModel.trade_swap.SwapType)</td>
<td class="tdRight">交易员收取</td>
<td>@(tradeModel.trade_swap.IsGetFloatingProfit ? "浮动收益" : "利息")</td>
<td class="tdRight">交易员支付</td>
<td>@(tradeModel.trade_swap.IsPayFloatingProfit ? "浮动收益" : "利息")</td>
</tr>
@if (tradeModel.trade_swap.SwapType == "多空组合")
{
<tr>
<td class="tdRight">簿记账户</td>
<td>@(tradeModel.AssetBookName)</td>
@if (tradeModel.trade_swap.IsGetFloatingProfit)
{
<td class="tdRight">标的代码</td>
<td>@(trade_swap.GetUnderlyingCode)</td>
}
else
{
<td class="tdRight">互换利率(年化)</td>
<td>
<button class="btn btn-sm btn-outline-danger" type="button" onclick="showSwapRate('@(trade_swap.GetSwapTimeAndRate)')">查看</button>
</td>
}
@if (tradeModel.trade_swap.IsPayFloatingProfit)
{
<td class="tdRight">标的代码</td>
<td>@(trade_swap.PayUnderlyingCode)</td>
}
else
{
<td class="tdRight">互换利率(年化)</td>
<td>
<button class="btn btn-sm btn-outline-danger" type="button" onclick="showSwapRate('@(trade_swap.PaySwapTimeAndRate)')">查看</button>
</td>
}
</tr>
<tr>
<td class="tdRight">交易对手方</td>
<td class="tdRight">交易对手方</td>
<td>
@(tradeModel.ClientName)
@if (!PS.Config.IsGuoJun && !PS.Config.Is润和)
{
<span>(@(tradeModel.OpponentRole ?? "乙方"))</span>
}
</td>
@if (tradeModel.trade_swap.IsGetFloatingProfit)
{
<td class="tdRight">增强收益(年化)</td>
<td>@(tradeModel.trade_swap.GetSwapRate.OtcFormatPercent())</td>
}
else
{
<td class="tdRight">交易费用</td>
<td>@(trade_swap.GetTradePrice.OtcFormatMoney())</td>
}
@if (tradeModel.trade_swap.IsPayFloatingProfit)
{
<td class="tdRight">增强收益(年化)</td>
<td>@(tradeModel.trade_swap.PaySwapRate.OtcFormatPercent())</td>
}
else
{
<td class="tdRight">交易费用</td>
<td>@(trade_swap.PayTradePrice.OtcFormatMoney())</td>
}
</tr>
<tr>
<td class="tdRight">交易员</td>
<td>@(tradeModel.TraderName)</td>
@if (tradeModel.trade_swap.IsGetFloatingProfit)
{
<td class="tdRight">交易费用</td>
<td>@(trade_swap.GetTradePrice.OtcFormatMoney())</td>
}
else
{
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.GetMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
@if (tradeModel.trade_swap.IsPayFloatingProfit)
{
<td class="tdRight">交易费用</td>
<td>@(trade_swap.PayTradePrice.OtcFormatMoney())</td>
}
else
{
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.PayMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
</tr>
<tr>
<td class="tdRight">成交日期</td>
<td>@(tradeModel.TradeDate.OtcFormatDate())</td>
@if (tradeModel.trade_swap.IsGetFloatingProfit)
{
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.GetMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
@if (tradeModel.trade_swap.IsPayFloatingProfit)
{
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.PayMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
</tr>
<tr>
<td class="tdRight">自然日</td>
<td>@(tradeModel.StartDate.OtcFormatDate())</td>
<td class="tdRight" colspan="2" rowspan="7">
@if (tradeModel.get_trade_swap_details.Count >= 1)
{
<div style="overflow-x: auto; overflow-y: auto; max-height: 300px;">
<table class="table table-bordered">
<thead>
<tr>
@*<td>操作</td>*@
<td>交易编号</td>
<td>标的代码</td>
<td>多空方向</td>
<td>期初价格</td>
<td>数量</td>
</tr>
</thead>
<tbody>
@foreach (var item in tradeModel.get_trade_swap_details)
{
<tr>
@*<td>
@if (item.Notional > 0)
{
<a style="color: red;" onclick="unWindSwapTrade('@DataProtect.Encrypt(item.ChildTradeId.ToString())',0)">平仓</a>
}
</td>*@
<td>@item.ChildTradeNumber</td>
<td>@item.UnderlyingCode</td>
<td>@item.LongShort</td>
<td>@item.SpotPrice</td>
<td>@item.Notional / @tradeModel.trade_swap.GetCountRatio </td>
</tr>
}
</tbody>
</table>
</div>
@*<a style="margin: 10px; color: red;" onclick="addSwapTrade(@tradeModel.id);return false;">开仓</a>*@
}
</td>
<td class="tdRight" colspan="2" rowspan="7">
@if (tradeModel.pay_trade_swap_details.Count >= 1)
{
<div style="overflow-x: auto; overflow-y: auto; max-height: 300px;">
<table class="table table-bordered">
<thead>
<tr>
@*<td>操作</td>*@
<td>交易编号</td>
<td>标的代码</td>
<td>多空方向</td>
<td>期初价格</td>
<td>数量</td>
</tr>
</thead>
<tbody>
@foreach (var item in tradeModel.pay_trade_swap_details)
{
<tr>
@*<td>
@if (item.Notional > 0)
{
<a style="color: red;" onclick="unWindSwapTrade('@DataProtect.Encrypt(item.ChildTradeId.ToString())',0)">平仓</a>
}
</td>*@
<td>@item.ChildTradeNumber</td>
<td>@item.UnderlyingCode</td>
<td>@item.LongShort</td>
<td>@item.SpotPrice</td>
<td>@item.Notional / @tradeModel.trade_swap.PayCountRatio </td>
</tr>
}
</tbody>
</table>
</div>
@*<a style="margin: 10px; color: red;" onclick="addSwapTrade(@tradeModel.id);return false;">开仓</a>*@
}
</td>
</tr>
<tr>
<td class="tdRight">到期日期</td>
<td><span id="exerciseDate">@(tradeModel.ExerciseDate.OtcFormatDate())</span></td>
</tr>
<tr>
<td class="tdRight">名义本金</td>
<td><span id="originalStockEqvNotional">@(tradeModel.OriginalStockEqvNotional.OtcFormat(OtcFormatFlag.StockEqvNotional))</span></td>
</tr>
if (!string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<tr>
<td class="tdRight">名义本金(结算币种)</td>
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
</tr>
}
<tr>
<td class="tdRight">交易编号</td>
<td>@(tradeModel.TradeNumber)</td>
</tr>
<tr>
<td class="tdRight">浮动收益年化</td>
<td>@(tradeModel.trade_swap.AnnualVarIncome ? "是" : "否")</td>
</tr>
<tr>
<td class="tdRight">年化天数</td>
<td>@(trade_swap.AnnualDays)</td>
</tr>
<tr>
<td class="tdRight">计息方式</td>
<td>@(TradeViewModel.GetSwapRateCalcModeDesc(tradeModel.trade_swap.RateCalcMode))</td>
</tr>
<tr>
<td class="tdRight">计价货币</td>
<td>@(tradeModel.QuoteCurrency)</td>
</tr>
<tr>
<td class="tdRight">结算日期</td>
<td>@((tradeModel.SettlementDate ?? tradeModel.ExerciseDate).OtcFormatDate())</td>
</tr>
<tr>
<td class="tdRight">是否延期结算</td>
<td>@(tradeModel.SettlementFlag == 1 ? "是" : "否")</td>
</tr>
<tr>
<td class="tdRight">是否开仓时收取手续费</td>
<td>@(tradeModel.trade_swap.IsTradePriceWhenOpen ? "是" : "否")</td>
</tr>
<tr>
<td class="tdRight">收费基本单位</td>
<td>@(tradeModel.trade_swap.IsShare ? "按手数收费" : "按份额收费")</td>
</tr>
}
else if (tradeModel.trade_swap.IsPayFloatingProfit)
{
<tr>
<td class="tdRight">簿记账户</td>
<td>@(tradeModel.AssetBookName)</td>
<td class="tdRight">互换利率(年化)</td>
<td>
<button class="btn btn-sm btn-outline-danger" type="button" onclick="showSwapRate('@(trade_swap.GetSwapTimeAndRate)')">查看</button>
</td>
<td class="tdRight">多空方向</td>
<td>@(trade_swap.PayLongShort)</td>
</tr>
<tr>
<td class="tdRight">交易对手方</td>
<td>
@(tradeModel.ClientName)
@if (!PS.Config.IsGuoJun && !PS.Config.Is润和)
{
<span>(@(tradeModel.OpponentRole ?? "乙方"))</span>
}
</td>
<td class="tdRight">单位交易费用</td>
<td>@(trade_swap.GetUnAnnualRate > 0 ? (trade_swap.GetUnAnnualRate ?? 0).OtcFormat(OtcFormatFlag.premiumRateP) : (trade_swap.IsShare ? (trade_swap.GetSingleFee ?? 0) : ((trade_swap.GetSingleFee ?? 0) / trade_swap.PayContractSize)).OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.PayUnderlyingCode)</td>
</tr>
<tr>
<td class="tdRight">交易员</td>
<td>@(tradeModel.TraderName)</td>
<td class="tdRight">交易费用</td>
<td>@(trade_swap.GetTradePrice.OtcFormatMoney())</td>
<td class="tdRight">期初标的价格</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.PaySpotPrice.OtcFormatFlex(6, 6);
}
else
{
@trade_swap.PaySpotPrice.OtcFormat(OtcFormatFlag.umprice)
}
</td>
</tr>
<tr>
<td class="tdRight">成交日期</td>
<td>@(tradeModel.TradeDate.OtcFormatDate())</td>
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.GetMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
<td class="tdRight">开仓价格</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.PayOpenPrice.OtcFormatFlex(6, 6);
}
else
{
@trade_swap.PayOpenPrice.OtcFormat(OtcFormatFlag.umprice)
}
</td>
</tr>
<tr>
<td class="tdRight">自然日</td>
<td>@(tradeModel.StartDate.OtcFormatDate())</td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.chargeCycle, out var chargeCycle);
}
@if (!string.IsNullOrEmpty(chargeCycle))
{
<td class="tdRight">收取周期</td>
if (chargeCycle == "TERM")
{
<td>到期支付</td>
}
else
{
<td> @(!string.IsNullOrEmpty(chargeCycle) && chargeCycle.IndexOf("|")>=0 ? "每" + chargeCycle.Substring(0, chargeCycle.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年').Replace("TERM", "到期支付") : "到期支付")</td>
}
}
else
{
<td class="tdRight">收取周期</td>
<td>到期支付</td>
}
<td class="tdRight">交易手数</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.PayLot.OtcFormatFlex(6, 6);
}
else
{
@(trade_swap.PayLot.OtcFormatNotional())
}
</td>
</tr>
<tr>
<td class="tdRight">到期日期</td>
<td><span id="exerciseDate">@(tradeModel.ExerciseDate.OtcFormatDate())</span></td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">中央对手方清算</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.IsCentralClearing, out var isCentralClearing);
}
@(isCentralClearing=="Y"?"是": isCentralClearing == "I"? "计划中央对手方清算" : "否")
</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
<td class="tdRight">交易数量</td>
<td>
@if (PS.Config.IsGuoJun)
{
@((PS.Config.IsUseDisplayNotional ? trade_swap.PayTradeAmount * trade_swap.PayCountRatio : trade_swap.PayTradeAmount).OtcFormatFlex(6, 6));
}
else
{
@(trade_swap.PayTradeAmount.OtcFormatNotional((int)trade_swap.PayCountRatio,PS.Config.IsUseDisplayNotional))
}
</td>
</tr>
<tr>
<td class="tdRight">名义本金</td>
<td><span id="originalStockEqvNotional">@(tradeModel.OriginalStockEqvNotional.OtcFormat(OtcFormatFlag.StockEqvNotional))</span></td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">中央清算平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CentralClearingPaltform, out var centralClearingPaltform);
}
@centralClearingPaltform
</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
<td class="tdRight">增强收益(年化)</td>
<td>@(tradeModel.trade_swap.PaySwapRate.OtcFormatPercent())</td>
</tr>
if (!string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<tr>
<td class="tdRight">名义本金(结算币种)</td>
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
}
<tr>
<td class="tdRight">交易编号</td>
<td>@(tradeModel.TradeNumber)</td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">交易平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPaltform, out var tradingPaltform);
}
@tradingPaltform
</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.PayMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
</tr>
<tr>
<td class="tdRight">浮动收益年化</td>
<td>@(tradeModel.trade_swap.AnnualVarIncome ? "是" : "否")</td>
<td class="tdRight">报送收取周期频率</td>
<td>
@{
@(!string.IsNullOrEmpty(chargeCycle) && chargeCycle.IndexOf("|") >= 0? chargeCycle.Substring(chargeCycle.IndexOf('|')+1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他").Replace("TERM", "到期支付") : "到期支付")
}
</td>
<td class="tdRight">持仓数量</td>
<td>@tradeModel.TradeAmount.OtcFormatNotional()</td>
</tr>
<tr>
<td class="tdRight">年化天数</td>
<td>@(trade_swap.AnnualDays)</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">计息方式</td>
<td>@(TradeViewModel.GetSwapRateCalcModeDesc(tradeModel.trade_swap.RateCalcMode))</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">计价货币</td>
<td>@(tradeModel.QuoteCurrency)</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">汇率</td>
<td>@(tradeModel.MetaDic.ContainsKey("ExchangeRate") ? tradeModel.MetaDic["ExchangeRate"] : "")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">结算日期</td>
<td>@((tradeModel.SettlementDate ?? tradeModel.ExerciseDate).OtcFormatDate())</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">是否延期结算</td>
<td>@(tradeModel.SettlementFlag == 1 ? "是" : "否")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">是否开仓时收取手续费</td>
<td>@(tradeModel.trade_swap.IsTradePriceWhenOpen ? "是" : "否")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">收费基本单位</td>
<td>@(tradeModel.trade_swap.IsShare ? "按手数收费" : "按份额收费")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
}
else
{
<tr>
<td class="tdRight">簿记账户</td>
<td>@(tradeModel.AssetBookName)</td>
<td class="tdRight">多空方向</td>
<td>@(trade_swap.GetLongShort)</td>
<td class="tdRight">互换利率(年化)</td>
<td>
<button class="btn btn-sm btn-outline-danger" type="button" onclick="showSwapRate('@(trade_swap.PaySwapTimeAndRate)')">查看</button>
</td>
</tr>
<tr>
<td class="tdRight">交易对手方</td>
<td>
@(tradeModel.ClientName)
@if (!PS.Config.IsGuoJun && !PS.Config.Is润和)
{
<span>(@(tradeModel.OpponentRole ?? "乙方"))</span>
}
</td>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.GetUnderlyingCode)</td>
<td class="tdRight">单位交易费用</td>
<td>@(trade_swap.PayUnAnnualRate > 0 ? (trade_swap.PayUnAnnualRate ?? 0).OtcFormat(OtcFormatFlag.premiumRateP) : (trade_swap.IsShare ? (trade_swap.PaySingleFee ?? 0) : ((trade_swap.PaySingleFee ?? 0) / trade_swap.GetContractSize)).OtcFormat(OtcFormatFlag.tradeSinglePrice))</td>
</tr>
<tr>
<td class="tdRight">交易员</td>
<td>@(tradeModel.TraderName)</td>
<td class="tdRight">期初标的价格</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.GetSpotPrice.OtcFormatFlex(6, 6);
}
else
{
@(trade_swap.GetSpotPrice.OtcFormat(OtcFormatFlag.umprice))
}
</td>
<td class="tdRight">交易费用</td>
<td>@(trade_swap.PayTradePrice.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">成交日期</td>
<td>@(tradeModel.TradeDate.OtcFormatDate())</td>
<td class="tdRight">开仓价格</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.GetOpenPrice.OtcFormatFlex(6, 6);
}
else
{
@(trade_swap.GetOpenPrice.OtcFormat(OtcFormatFlag.umprice))
}
</td>
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.PayMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
</tr>
<tr>
<td class="tdRight">自然日</td>
<td>@(tradeModel.StartDate.OtcFormatDate())</td>
<td class="tdRight">交易手数</td>
<td>
@if (PS.Config.IsGuoJun)
{
@trade_swap.GetLot.OtcFormatFlex(6, 6);
}
else
{
@(trade_swap.GetLot.OtcFormatNotional())
}
</td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.paymentCycle, out var paymentCycle);
}
@if (!string.IsNullOrEmpty(paymentCycle))
{
<td class="tdRight">支付周期</td>
if (paymentCycle == "TERM")
{
<td>到期支付</td>
}
else
{
<td> @(!string.IsNullOrEmpty(paymentCycle) && paymentCycle.IndexOf("|")>=0 ? "每" + paymentCycle.Substring(0, paymentCycle.IndexOf('|')).Replace('D', '天').Replace('W', '周').Replace('M', '月').Replace('Y', '年').Replace("TERM", "到期支付") : "到期支付")</td>
}
}
else
{
<td class="tdRight">支付周期</td>
<td>到期支付</td>
}
</tr>
<tr>
<td class="tdRight">到期日期</td>
<td><span id="exerciseDate">@(tradeModel.ExerciseDate.OtcFormatDate())</span></td>
<td class="tdRight">交易数量</td>
<td>
@if (PS.Config.IsGuoJun)
{
@((PS.Config.IsUseDisplayNotional? trade_swap.GetTradeAmount* trade_swap.PayCountRatio: trade_swap.GetTradeAmount).OtcFormatFlex(6, 6));
}
else
{
@(trade_swap.GetTradeAmount.OtcFormatNotional((int)trade_swap.GetCountRatio, PS.Config.IsUseDisplayNotional))
}
</td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">中央对手方清算</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.IsCentralClearing, out var isCentralClearing);
}
@(isCentralClearing=="Y"?"是":"否")
</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
</tr>
<tr>
<td class="tdRight">名义本金</td>
<td><span id="originalStockEqvNotional">@(tradeModel.OriginalStockEqvNotional.OtcFormat(OtcFormatFlag.StockEqvNotional))</span></td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">中央清算平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CentralClearingPaltform, out var centralClearingPaltform);
}
@centralClearingPaltform
</td>
}
else
{
if (!string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<td class="tdRight">名义本金(结算币种)</td>
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
}
}
<td class="tdRight">增强收益(年化)</td>
<td>@(tradeModel.trade_swap.GetSwapRate.OtcFormatPercent())</td>
</tr>
if (PS.Config.ErpElement.SecuritiesEnvironment && !string.IsNullOrEmpty(Model.OriginalStockEqvNotionalV2MultipleExchangeRate))
{
<tr>
<td class="tdRight">名义本金(结算币种)</td>
<td>@Model.OriginalStockEqvNotionalV2MultipleExchangeRate</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
}
<tr>
<td class="tdRight">交易编号</td>
<td>@(tradeModel.TradeNumber)</td>
<td class="tdRight">初始预付金率</td>
<td>@(trade_swap.GetMarginRate.OtcFormat(OtcFormatFlag.premiumRateP))</td>
@if (!PS.Config.ErpElement.SecuritiesEnvironment)
{
<td class="tdRight">交易平台</td>
<td>
@{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPaltform, out var tradingPaltform);
}
@tradingPaltform
</td>
}
else
{
<td class="tdRight"></td>
<td></td>
}
</tr>
<tr>
<td class="tdRight">浮动收益年化</td>
<td>@(tradeModel.trade_swap.AnnualVarIncome ? "是" : "否")</td>
<td class="tdRight">持仓数量</td>
<td>@tradeModel.TradeAmount.OtcFormatNotional()</td>
<td class="tdRight">报送支付周期频率</td>
<td>
@{
@(!string.IsNullOrEmpty(paymentCycle) && paymentCycle.IndexOf("|") >= 0? paymentCycle.Substring(paymentCycle.IndexOf('|')+1).Replace("DAIL", " 日度").Replace("WEEK", " 周度").Replace("MNTH", " 月度").Replace("YEAR", " 年度").Replace("OTHER", "其他").Replace("TERM", "到期支付") : "到期支付")
}
</td>
</tr>
<tr>
<td class="tdRight">年化天数</td>
<td>@(trade_swap.AnnualDays)</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">计息方式</td>
<td>@(TradeViewModel.GetSwapRateCalcModeDesc(tradeModel.trade_swap.RateCalcMode))</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">计价货币</td>
<td>@(tradeModel.QuoteCurrency)</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">结算日期</td>
<td>@((tradeModel.SettlementDate ?? tradeModel.ExerciseDate).OtcFormatDate())</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">是否延期结算</td>
<td>@(tradeModel.SettlementFlag == 1 ? "是" : "否")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">是否开仓时收取手续费</td>
<td>@(tradeModel.trade_swap.IsTradePriceWhenOpen ? "是" : "否")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
<td class="tdRight">收费基本单位</td>
<td>@(tradeModel.trade_swap.IsShare ? "按手数收费" : "按份额收费")</td>
<td class="tdRight"></td>
<td></td>
<td class="tdRight"></td>
<td></td>
</tr>
}
<tr>
<td class="tdRight">备注</td>
<td colspan="5">
@if (tradeModel.RemarkInfo != null && tradeModel.RemarkInfo.StartsWith("http://"))
{
<a href="@(tradeModel.RemarkInfo)" style="text-decoration:underline;" target="_blank">@(tradeModel.RemarkInfo)</a>
}
else
{
@(tradeModel.RemarkInfo)
}
</td>
</tr>
@if (CurUser.交易管理_交易标签查看权限)
{
<tr>
<td class="tdRight">标签</td>
<td colspan="5">
<div class="tag-context" style="width:100%;display:inline-block;line-height:36px;text-align:left;">
@if (Model.Tags != null && Model.Tags.Any())
{
foreach (var tag in Model.Tags)
{
<span class="tag-item" data-id="@tag.Id" data-name="@tag.Name">
<span class="tag-text" data-value="@tag.Id">@tag.Name</span>
@if (CurUser.交易管理_交易标签调整权限)
{
<span class="tag-remove" onclick="DeleteTag('@tag.Name')">x</span>
}
</span>
}
}
@if (CurUser.交易管理_交易标签调整权限)
{
<span class="tag-add">+</span>
}
</div>
</td>
</tr>
}
</table>
<table class="table table-bordered mt-4">
@if (PS.Config.Company == CompanyEnum.国海)
{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.CCR_K, out var ccr_k);
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.ignoreRiskExposure, out var ignoreRiskExposure);
<tr>
<td class="tdRight">CCR指标k值</td>
<td>@ccr_k</td>
<td class="tdRight">信用风险敞口</td>
<td>@(ignoreRiskExposure != "1" ? "参与计算" : "忽略")</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
@if (PS.Config.ErpElement.SecuritiesEnvironment)
{
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.ClearingAgency, out var clearingAgency);
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.TradingPlace, out var tradingPlace);
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.MainProtocolCode, out var mainProtocolCode);
tradeModel.MetaDic.TryGetValue(YLErp.DBModels.Consts.ConsTradeMetaKey.SupProtocolCode, out var supProtocolCode);
if (!PS.Config.Is润和)
{
<tr>
<td class="tdRight">交易场所</td>
<td>@(tradingPlace)</td>
<td class="tdRight">清算机构</td>
<td>@(clearingAgency)</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
<tr>
<td class="tdRight">主协议编号</td>
<td>@(mainProtocolCode)</td>
<td class="tdRight">补充协议编号</td>
<td>@(supProtocolCode)</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
@if (AppHelper.UseFutureVersion("销售提成", "V2"))
{
<tr>
<td class="tdRight"> @(PS.Config.ErpElement.SaleMode == YLErp.Configuration.Enums.SaleMode.SaleMen ?"销售员":"客户经理")</td>
<td>@(salesNames)</td>
<td class="tdRight">销售提成</td>
<td>@(Model.SalesCommission.FirstOrDefault()?.CommissionString())</td>
<td class="tdRight"></td>
<td></td>
</tr>
}
</table>
</div>
@if (Model.unWindTradeCashList != null)
{
var index = 1;
<div id="terminationInfo" class="tab-pane">
@foreach (var tc in Model.unWindTradeCashList)
{
var tc_swap = tc.trade_cash_swap;
<table class="table table-bordered">
<tr>
<td class="tdRight">提前终止序号</td>
<td>@(index++)</td>
<td class="tdRight"></td>
<td></td>
</tr>
<tr>
@if (tc.UnwindMethod == 1)
{
<td class="tdRight">平仓数量</td>
<td>@((PS.Config.IsUseDisplayNotional ? tc.UnwindTradeAmount * (tradeModel.CountRatio ?? 1) : tc.UnwindTradeAmount).OtcFormatNotional())</td>
<td class="tdRight">返还预付金</td>
<td>@(tc.AdvanceMoney.OtcFormatMoney())</td>
}
else
{
<td class="tdRight">平仓比例</td>
<td>@(tc.UnwindPercentRate.OtcFormatPercent())</td>
<td class="tdRight">平仓名义本金</td>
<td>@(tc.UnwindStockEqvNotional.OtcFormatFlex(6,4))</td>
}
</tr>
<tr>
<td class="tdRight">起始日期</td>
<td>@(tc_swap.StartDate.OtcFormatDate())</td>
<td class="tdRight">平仓日期</td>
<td>@(tc.ValueDate.OtcFormatDate())</td>
</tr>
@if (PS.Config.IsGuoJun)
{
<tr>
<td class="tdRight">平仓总额(计价货币)</td>
<td>@(tc.QuoteAmount.OtcFormatMoney())</td>
<td class="tdRight">实现盈亏(计价货币)</td>
<td>@(tc.QuoteWinloss)</td>
</tr>
}
<tr>
<td class="tdRight">平仓总额</td>
<td>@(tc.Amount.OtcFormatMoney())</td>
<td class="tdRight">实现盈亏</td>
<td>@(tc.WinLoss)</td>
</tr>
@if (tc.UnwindMethod != 1)
{
<tr>
@if (PS.Config.IsGuoJun)
{
<td class="tdRight">结算汇率</td>
<td>@(tc.CurrencyRate)</td>
}
@*<td class="tdRight">平仓费用</td>
<td>@(tc.ExtraAmount.OtcFormatMoney())</td>*@
<td class="tdRight">返还预付金</td>
<td>@(tc.AdvanceMoney.OtcFormatMoney())</td>
</tr>
}
else
{
if (PS.Config.IsGuoJun)
{
<tr>
<td class="tdRight">结算汇率</td>
<td>@(tc.CurrencyRate)</td>
</tr>
}
}
@if (!PS.Config.IsGuoJun)
{
<tr>
<td colspan="2">收取</td>
<td colspan="2">支付</td>
</tr>
<tr>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.GetUnderlyingCode)</td>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.PayUnderlyingCode)</td>
</tr>
<tr>
<td class="tdRight">多头空头</td>
<td>@(trade_swap.GetLongShort)</td>
<td class="tdRight">多头空头</td>
<td>@(trade_swap.PayLongShort)</td>
</tr>
<tr>
<td class="tdRight">年化利率</td>
<td>@(tc_swap.GetSwapRate.OtcFormatPercent())</td>
<td class="tdRight">年化利率</td>
<td>@(tc_swap.PaySwapRate.OtcFormatPercent())</td>
</tr>
<tr>
<td class="tdRight">基准价格</td>
<td>@(tc_swap.GetStartPrice.OtcFormat(OtcFormatFlag.umprice))</td>
<td class="tdRight">基准价格</td>
<td>@(tc_swap.PayStartPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
<tr>
<td class="tdRight">标的价格</td>
<td>@(tc_swap.GetFinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
<td class="tdRight">标的价格</td>
<td>@(tc_swap.PayFinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
<tr>
<td class="tdRight">手续费</td>
<td>@(tc_swap.GetCostFee.OtcFormatMoney())</td>
<td class="tdRight">手续费</td>
<td>
@(tc_swap.PayCostFee.OtcFormatMoney())
</td>
</tr>
<tr>
<td class="tdRight">利息金额</td>
<td>@(tc_swap.GetExtraAmount.OtcFormatMoney())</td>
<td class="tdRight">利息金额</td>
<td>@(tc_swap.PayExtraAmount.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">收益金额</td>
<td>@(tc_swap.GetInitialAmount.OtcFormatMoney())</td>
<td class="tdRight">收益金额</td>
<td>@(tc_swap.PayInitialAmount.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">互换金额</td>
<td>@(tc_swap.GetAmount.OtcFormatMoney())</td>
<td class="tdRight">互换金额</td>
<td>@(tc_swap.PayAmount.OtcFormatMoney())</td>
</tr>
}
</table>
}
</div>
}
@if (Model.swapTradeCashList != null)
{
var index = 1;
<div id="swapInfo" class="tab-pane">
@foreach (var tc in Model.swapTradeCashList)
{
var tc_swap = tc.trade_cash_swap;
if (tc_swap != null)
{
<table class="table table-bordered">
<tr>
<td class="tdRight">互换序号</td>
<td>@(index++)</td>
<td class="tdRight">互换名义本金</td>
<td>@(tc.StockEqvNotional.ToString("F2"))</td>
</tr>
<tr>
<td class="tdRight">起始日期</td>
<td>@(tc_swap.StartDate.OtcFormatDate())</td>
<td class="tdRight">互换日期</td>
<td>@((tc.HappenedDate??tc.ValueDate).OtcFormatDate())</td>
</tr>
<tr>
<td class="tdRight">互换净额</td>
<td>@(tc.Amount.OtcFormatMoney())</td>
<td class="tdRight">实现盈亏</td>
<td>@(tc.WinLoss)</td>
</tr>
<tr>
<td colspan="2">收取</td>
<td colspan="2">支付</td>
</tr>
<tr>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.GetUnderlyingCode)</td>
<td class="tdRight">标的代码</td>
<td>@(trade_swap.PayUnderlyingCode)</td>
</tr>
<tr>
<td class="tdRight">多头空头</td>
<td>@(trade_swap.GetLongShort)</td>
<td class="tdRight">多头空头</td>
<td>@(trade_swap.PayLongShort)</td>
</tr>
<tr>
<td class="tdRight">年化利率</td>
<td>@(tc_swap.GetSwapRate.OtcFormatPercent())</td>
<td class="tdRight">年化利率</td>
<td>@(tc_swap.PaySwapRate.OtcFormatPercent())</td>
</tr>
<tr>
<td class="tdRight">基准价格</td>
<td>@(tc_swap.GetStartPrice.OtcFormat(OtcFormatFlag.umprice))</td>
<td class="tdRight">基准价格</td>
<td>@(tc_swap.PayStartPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
<tr>
<td class="tdRight">标的价格</td>
<td>@(tc_swap.GetFinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
<td class="tdRight">标的价格</td>
<td>@(tc_swap.PayFinalPrice.OtcFormat(OtcFormatFlag.umprice))</td>
</tr>
@if (PS.Config.Company == CompanyEnum.中金)
{
<tr>
<td class="tdRight">手续费</td>
<td>@(tc_swap.GetCostFee.OtcFormatMoney())</td>
<td class="tdRight">手续费</td>
<td>@(tc_swap.PayCostFee.OtcFormatMoney())</td>
</tr>
}
else
{
<tr>
<td class="tdRight">手续费</td>
<td>@(tc_swap.GetCostFee.OtcFormatMoney())</td>
<td class="tdRight">手续费</td>
<td>@(tc_swap.PayCostFee.OtcFormatMoney())</td>
</tr>
}
<tr>
<td class="tdRight">利息金额</td>
<td>@(tc_swap.GetExtraAmount.OtcFormatMoney())</td>
<td class="tdRight">利息金额</td>
<td>@(tc_swap.PayExtraAmount.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">收益金额</td>
<td>@(tc_swap.GetInitialAmount.OtcFormatMoney())</td>
<td class="tdRight">收益金额</td>
<td>@(tc_swap.PayInitialAmount.OtcFormatMoney())</td>
</tr>
<tr>
<td class="tdRight">互换金额</td>
<td>@(tc_swap.GetAmount.OtcFormatMoney())</td>
<td class="tdRight">互换金额</td>
<td>@(tc_swap.PayAmount.OtcFormatMoney())</td>
</tr>
</table>
}
}
</div>
}
@if (Model.tradeMarginTemplates != null && Model.tradeMarginTemplates.Any())
{
<div id="tradeMarginTemplatesInfo" class="tab-pane">
<table class="table table-bordered">
<tr>
<th>模板名称</th>
<th>预付金规则</th>
<th>规则类型</th>
<th>生效日期</th>
<th>操作时间</th>
<th>规则说明</th>
</tr>
@foreach (var tradeMarginTemplate in Model.tradeMarginTemplates)
{
<tr>
<td>@(tradeMarginTemplate.MarginTemplateName)</td>
<td>@(tradeMarginTemplate.MarginRuleTypeName)</td>
<td>@(tradeMarginTemplate.MarginTypeName)</td>
<td>@(tradeMarginTemplate.ValueDate.ToString("yyyy-MM-dd"))</td>
<td>@(tradeMarginTemplate.OptDate)</td>
<td>@(tradeMarginTemplate.Comments)</td>
</tr>
}
</table>
</div>
}
</div>
</div>
<div class="modal fade" id="myModal" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<!-- 模态框头部 -->
<div class="modal-header">
<h4 class="modal-title">详情设置</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<!-- 模态框主体 -->
<div class="modal-body">
<table class="table">
<thead>
<tr>
<td> 标的代码 </td>
<td> 期初价格 </td>
<td> 份额 </td>
<td> 到期日 </td>
<template v-if="isForGet">
<td> 支付利率 </td>
</template>
<template v-else>
<td> 收取利率 </td>
</template>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in getDetails" v-show="isForGet">
<td>{{item.UnderlyingCode}}</td>
<td>{{item.SpotPrice | FixNumber2}}</td>
<td><vue-number-input v-model="item.Notional" v-bind:format="inputFormatDouble2" /></td>
<td><vue-datepicker v-model="item.ExerciseDate" /></td>
<td><input v-model="item.SwapTimeAndRate" /></td>
</tr>
<tr v-for="(item, index) in payDetails" v-show="!isForGet">
<td>{{item.UnderlyingCode}}</td>
<td>{{item.SpotPrice | FixNumber2}}</td>
<td><vue-number-input v-model="item.Notional" v-bind:format="inputFormatDouble2" /></td>
<td><vue-datepicker v-model="item.ExerciseDate" /></td>
<td><input v-model="item.SwapTimeAndRate" /></td>
</tr>
</tbody>
</table>
</div>
<!-- 模态框底部 -->
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal" v-on:click="closeModal(isForGet)">保存</button>
</div>
</div>
</div>
</div>