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

340 lines
17 KiB
Plaintext

@model TradeViewModel
@{
if (Model.IsStructureTrade)
{
return;
}
var tradeModel = Model.Trade;
var isSubTrade = tradeModel.ParentTradeId > 0;
var IsGenerateConfirmDoc = false;
if (Model.IsGenerateConfirmDoc)
{
IsGenerateConfirmDoc = true;
}
else
{
IsGenerateConfirmDoc = !isSubTrade && (tradeModel.IsOption() || tradeModel.IsGroup == 1) && tradeModel.TradeType != "场内期权"
&& !Model.IsFromPositionReport && tradeModel.TradeStatus == ConsTrade.确认成交;
}
var isHedgingTrade = ConsTrade.TradeTypesForHedge.Contains(Model.Trade.TradeType);
var canEdit = tradeModel.CanEdit() && !Model.IsFromPositionReport && CurUser.交易管理_交易编辑;
var canEditNotEditPower = ConsTrade.已拒绝 == tradeModel.TradeStatus && !Model.IsFromPositionReport && tradeModel.TraderId == CurUser.UserId;
var canBackTrade = CurUser.交易管理_交易回退 && Model.Trade.IsGroup != 2 && !Model.IsStructureTrade && !Model.IsFromPositionReport &&
new[] { ConsTrade.确认成交, ConsTrade.已平仓, ConsTrade.已执行, ConsTrade.已到期 }.Contains(tradeModel.TradeStatus);
var btnName = PS.GetErpConfig().IsAutoSealAndUploadFiles && PS.GetErpConfig().IsAutoSealAfterGeneratedBook ? "生成确认书并用印" : "生成确认书";
}
<div class="toolbarDiv">
@if (!Model.IsOnlyCloseButton)
{
if ((canEdit || canEditNotEditPower) && (Model.Trade.TradeType != "累计期权" || Model.autoCallObsercationList == null || !Model.autoCallObsercationList.Any()))
{
if (Model.Trade.IsGroup != 1 || Model.Trade.TradeType == "收益互换")
{
if (Model.Trade.IsGroup == 0)
{
@MyControls.Btn("修改", string.Format("editTrade('{0}','{1}')", tradeModel.EncryptId, tradeModel.TradeType))
}
else
{
//如果组合交易主交易存在了结记录,则子交易不能修改
if (!Model.Trade.HasUnwindAction())
{
@MyControls.Btn("修改", string.Format("editTrade('{0}','{1}')", tradeModel.EncryptId, tradeModel.TradeType))
}
}
}
else
{
//如果组合交易存在了结记录,则主交易不能修改
if (!Model.Trade.HasUnwindAction())
{
@MyControls.Btn("修改", string.Format("editGroupTrade('{0}')", tradeModel.id))
}
}
}
else if (tradeModel.TradeStatus == ConsTrade.已执行 || tradeModel.TradeStatus == ConsTrade.已平仓 || tradeModel.TradeStatus == ConsTrade.已到期 || (tradeModel.TradeStatus == ConsTrade.确认成交 && tradeModel.HasPartialUnWind == 1))
{
@MyControls.Btn("修改备注", string.Format("editTradeRemarkInfo('{0}','{1}')", tradeModel.EncryptId, tradeModel.TradeType))
}
@* if (Model.canEditMaturityDate == true && !Model.IsFromPositionReport && tradeModel.TradeType != "收益互换" && Model.Trade.IsGroup == 0)
{
@MyControls.Btn("到期修改", "editTradeMaturityDate('" + tradeModel.EncryptId + "');")
}*@
if (tradeModel.CanDelete() && !Model.IsFromPositionReport && CurUser.交易管理_交易删除 && (Model.Trade.IsGroup != 2 || Model.Trade.TradeType == "收益互换"))
{
@MyControls.Btn("删除", "deletetrade('" + tradeModel.EncryptId + "');")
}
if (!isHedgingTrade)
{
if (PS.Config.IsAutoGenerateContracts)
{
@MyControls.Btn("文件管理", "contractManagement('" + tradeModel.TradeNumber + "')")
}
else
{
@MyControls.Btn("文件管理", "fileManagement('" + tradeModel.TradeNumber + "');")
}
}
if (IsGenerateConfirmDoc)
{
if (YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.MarketMaker)
{
@MyControls.Btn(btnName, "gJGenerateConfirmBook('" + tradeModel.id + "','" + tradeModel.HasGeneratedConfirmBook() + "')")
}
else if (YLErp.PS.Config.Company != YLErp.Configuration.CompanyEnum.渤海)
{
@MyControls.Btn(btnName, "toPdf('" + tradeModel.EncryptId + "')")
}
}
if (canBackTrade)
{
@MyControls.Btn("交易回退", "backTrade('" + tradeModel.EncryptId + "')")
}
if (CurUser.交易管理_交易操作历史 && !isHedgingTrade)
{
<div class="d-inline-block">
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">操作历史</button>
<div class="dropdown-menu">
<a href="javascript:;" class="dropdown-item" onclick="tradeOperationHistory('@(tradeModel.EncryptId)')">交易操作</a>
<a href="javascript:;" class="dropdown-item" onclick="tradeTrialHistory('@(tradeModel.ParentTradeId == 0 ? tradeModel.id : tradeModel.ParentTradeId)')">限额试算</a>
</div>
</div>
</div>
}
if (CurUser.交易管理_分组设置 && tradeModel.IsGroup == 1 && tradeModel.ValidState != "InValid" && (tradeModel.TradeStatus == ConsTrade.确认成交 || tradeModel.TradeStatus == ConsTrade.提前终止拒绝))
{
@MyControls.Btn("分组了结", "addGroupTradeCash('"+ tradeModel.id+ "')")
}
if (Model.Trade.TradeType.EndsWith("期权"))
{
<div class="dropdown d-inline-block">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">分析</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:;" onclick="showPvChart('@(tradeModel.EncryptId)')">组合价值曲线</a>
</div>
</div>
}
}
else if (!isSubTrade && !isHedgingTrade && !string.IsNullOrWhiteSpace(Context.Request.Query["fromZiJinMingXi"]))
{
if (PS.Config.IsAutoGenerateContracts)
{
@MyControls.Btn("文件管理", "contractManagement('" + tradeModel.TradeNumber + "')")
}
else
{
@MyControls.Btn("文件管理", "fileManagement('" + tradeModel.TradeNumber + "');")
}
if (CurUser.交易管理_交易操作历史 && !isHedgingTrade)
{
<div class="d-inline-block">
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">操作历史</button>
<div class="dropdown-menu">
<a href="javascript:;" class="dropdown-item" onclick="tradeOperationHistory('@(tradeModel.EncryptId)')">交易操作</a>
<a href="javascript:;" class="dropdown-item" onclick="tradeTrialHistory('@(tradeModel.ParentTradeId == 0 ? tradeModel.id : tradeModel.ParentTradeId)')">限额试算</a>
</div>
</div>
</div>
}
}
else
{
if (PS.Config.IsAutoGenerateContracts)
{
@MyControls.Btn("文件管理", "contractManagement('" + tradeModel.TradeNumber + "')")
}
else
{
@MyControls.Btn("文件管理", "fileManagement('" + tradeModel.TradeNumber + "');")
}
if (CurUser.交易管理_交易操作历史 && !isHedgingTrade)
{
<div class="d-inline-block">
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">操作历史</button>
<div class="dropdown-menu">
<a href="javascript:;" class="dropdown-item" onclick="tradeOperationHistory('@(tradeModel.EncryptId)')">交易操作</a>
<a href="javascript:;" class="dropdown-item" onclick="tradeTrialHistory('@(tradeModel.ParentTradeId==0?tradeModel.id:tradeModel.ParentTradeId)')">限额试算</a>
</div>
</div>
</div>
}
}
@if ( tradeModel.IsOption() || tradeModel.TradeType == "结构化产品")
{
if (tradeModel.TradeType != "雪球期权" || tradeModel.trade_snowball.PrepaymentUsed!=true)
{
<button class="btn btn-primary" type="button" onclick="showStructureImport();">定价</button>
}
}
@if (tradeModel.TradeStatus == ConsTrade.审批中 && CurUser.交易管理_交易新增 &&((tradeModel.IsGroup==2 &&tradeModel.IsApproval)|| tradeModel.IsGroup!=2))
{
@MyControls.Btn("撤回", string.Format("tradewithdraw({0})", tradeModel.id))
}
else if (tradeModel.TradeStatus == ConsTrade.平仓待复核 && CurUser.交易管理_交易平仓 && ((tradeModel.IsGroup == 2 && tradeModel.IsApproval) || tradeModel.IsGroup != 2))
{
@MyControls.Btn("撤回", string.Format("traderevoke({0},{1})", tradeModel.id, 0))
}
else if (tradeModel.TradeStatus == ConsTrade.行权待复核 && CurUser.交易管理_交易行权 && ((tradeModel.IsGroup == 2 && tradeModel.IsApproval) || tradeModel.IsGroup != 2))
{
@MyControls.Btn("撤回", string.Format("traderevoke({0},{1})", tradeModel.id, 1))
}
else if (tradeModel.TradeStatus == ConsTrade.互换待复核 && CurUser.交易管理_收益互换 && ((tradeModel.IsGroup == 2 && tradeModel.IsApproval) || tradeModel.IsGroup != 2))
{
@MyControls.Btn("撤回", string.Format("traderevoke({0},{1})", tradeModel.id, 2))
}
<button class="btn btn-primary" type="button" onclick="closetradeWindow(@(!string.IsNullOrWhiteSpace(Context.Request.Query["abstract"])?1:0));">关闭</button>
<div style="display:inline-block;float:right;">
@if (Model.Trade.IsGroup == 1 || (Model.Trade.IsGroup == 2 && Model.Trade.TradeType != "收益互换" && Model.OperationStatus != "待完成"))
{
if (!string.IsNullOrWhiteSpace(tradeModel.UnderlyingCode) && (tradeModel.TradeType != "结构化交易" || tradeModel.IsGroup == 1) && tradeModel.TradeType != "现金流交易" && valuedateBLL.SystemDate.TradeTrial && (tradeModel.TradeStatus == ConsTrade.新增待确认 || tradeModel.TradeStatus == ConsTrade.修改待确认))
{
@MyControls.Btn("限额试算", "quotaTrial('" + (isSubTrade ? tradeModel.ParentTradeId : tradeModel.id) + "')")
}
if (tradeModel.CanConfirm() && CurUser.交易管理_交易新增)
{
@MyControls.Btn("确认交易", "confirmTrade('" + (isSubTrade && tradeModel.IsGroup == 0 ? tradeModel.ParentTradeId : tradeModel.id) + "')")
}
if (tradeModel.TradeStatus == ConsTrade.确认成交 && Model.Trade.IsGroup == 1 && Model.Trade.StructureType == "气囊结构")
{
@MyControls.Btn("敲入敲出设置", string.Format("setKnockInOutStatus({0})", tradeModel.id))
}
if (tradeModel.TradeType == "收益互换")
{
@MyControls.Btn("多空组合检测", "checkTradeGroup('" + tradeModel.TradeNumber + "')")
}
}
else if (!Model.IsOnlyCloseButton)
{
if (tradeModel.CanSwapTradeUnwind() && CurUser.交易管理_交易延期结算 && tradeModel.ExerciseDate <= valuedateBLL.ValueDate)
{
@MyControls.Btn("延期结算", string.Format("delaySettlement('{0}')", tradeModel.id))
}
if (!string.IsNullOrWhiteSpace(tradeModel.UnderlyingCode) && tradeModel.TradeType != "结构化交易" && tradeModel.TradeType != "现金流交易" && valuedateBLL.SystemDate.TradeTrial && (tradeModel.TradeStatus == ConsTrade.新增待确认 || tradeModel.TradeStatus == ConsTrade.修改待确认))
{
@MyControls.Btn("限额试算", "quotaTrial('" + (isSubTrade ? tradeModel.ParentTradeId : tradeModel.id) + "')")
}
if (tradeModel.CanConfirm() && CurUser.交易管理_交易新增)
{
@MyControls.Btn("确认交易", "confirmTrade('" + (isSubTrade && tradeModel.IsGroup == 0 ? tradeModel.ParentTradeId : tradeModel.id) + "')")
}
if (tradeModel.TradeStatus == ConsTrade.提前终止拒绝 && CurUser.交易管理_交易平仓)
{
@MyControls.Btn("提前终止放弃", "terminationBackToConfirmed('" + tradeModel.EncryptId + "')")
}
if (tradeModel.CanUnwind() && CurUser.交易管理_交易平仓)
{
@MyControls.Btn("平仓", string.Format("unWind('{0}','{1}',{2})", tradeModel.EncryptId, tradeModel.TradeType, Model.IsShowReCheckClose.ToString().ToLower()))
}
if (tradeModel.CanCustomizedTradeUnwind() && CurUser.交易管理_交易平仓)
{
@MyControls.Btn("平仓", string.Format("unWindCustomizedTrade('{0}')", tradeModel.EncryptId))
}
if (tradeModel.CanSwapTradeUnwind() && CurUser.交易管理_交易平仓)
{
@MyControls.Btn("平仓", string.Format("unWindSwapTrade('{0}',{1})", tradeModel.EncryptId, 0))
}
if (tradeModel.CanSwapTradeUnwind() && CurUser.交易管理_收益互换)
{
@MyControls.Btn("展期信息", string.Format("extensionTime('{0}','{1}')", tradeModel.EncryptId, tradeModel.TradeNumber))
}
if (tradeModel.CanSwapTradeUnwind() && CurUser.交易管理_收益互换)
{
@MyControls.Btn("收益结算", string.Format("unWindSwapTrade('{0}',{1})", tradeModel.EncryptId, 1))
}
var canExercise = false;
var canExpire = tradeModel.CanExpire();
switch (tradeModel.TradeType)
{
case "障碍期权":
if (tradeModel.trade_barrier_option.CanExercise())
{
canExercise = tradeModel.CanExercise();
}
else
{
canExpire = false;
}
break;
case "雪球期权": //雪球期权敲入转期权后才可以执行到期
canExercise = false;
canExpire = canExpire && tradeModel.trade_snowball.KnockInOutStatus == "KnockedIn" && tradeModel.trade_snowball.KIPayoffType > 0;
break;
case "凤凰期权":
canExercise = false;
canExpire = canExpire && tradeModel.trade_autocall.KnockInOutStatus == "KnockedIn" && tradeModel.trade_autocall.KIPayoffType > 0;
break;
default:
canExercise = tradeModel.CanExercise();
break;
}
if (canExercise && CurUser.交易管理_交易行权)
{
@MyControls.Btn("行权", string.Format("executionTrade('{0}',false,false)", tradeModel.EncryptId))
}
if (canExpire && CurUser.交易管理_交易到期)
{
@MyControls.Btn("执行到期", string.Format("executionTrade('{0}',false,true)", tradeModel.EncryptId))
}
if (CurUser.交易管理_交易风险维护)
{
@MyControls.Btn("风险维护", "RiskHandle('" + tradeModel.EncryptId + "')")
}
if (CurUser.交易管理_交易观察价格维护)
{
if ((tradeModel.TradeType == "双鲨期权" || tradeModel.TradeType == "区间累积期权" || tradeModel.TradeType == "雪球期权" || tradeModel.TradeType == "凤凰期权" || tradeModel.TradeType == "气囊结构" || tradeModel.TradeType == "累计期权") && tradeModel.TradeStatus == "确认成交")
{
@MyControls.Btn("设置观察价格", "SetObservationPrice('" + tradeModel.EncryptId + "')")
}
else if (tradeModel.TradeType == "障碍期权" && tradeModel.TradeStatus == "确认成交" &&
(tradeModel.trade_barrier_option.BarrierType == "上升敲出" || tradeModel.trade_barrier_option.BarrierType == "下降敲出" || tradeModel.trade_barrier_option.BarrierType == "双障碍敲出" || ((tradeModel.trade_barrier_option.BarrierType == "上升敲入" || tradeModel.trade_barrier_option.BarrierType == "下降敲入" || tradeModel.trade_barrier_option.BarrierType == "双障碍敲入") && tradeModel.trade_barrier_option.KnockInOutStatus != "KnockedIn")))
{
@MyControls.Btn("设置观察价格", "SetObservationPrice('" + tradeModel.EncryptId + "')")
}
}
if (tradeModel.TradeType == "累计期权" && ConsTrade.TradeStatusAfterConfirmed.Contains(tradeModel.TradeStatus))
{
@MyControls.Btn("换月调整", "setAccumulatorChange('" + tradeModel.EncryptId + "')")
}
}
</div>
</div>
@Html.HiddenFor(model => tradeModel.id)