Files
zszq-trs/YLErpWeb/Views/trade/maturityDateReport.cshtml
T
hjhan fdc0331407 cleanup(trade): 收敛 IsGuoJun 死分支并删除失去调用方的 guojun 报表函数
国联下 PS.Config.IsGuoJun 恒为 false,以下分支只走 else 侧:
- tradeDayConfirmList.cshtml: IsGuoJun if/else 收敛为 sendReport() 单行
- maturityDateReport.cshtml: 发送结算确认书按钮的 if/else 收敛为 SendEmailSettleBill()
- maturityDateReport.cshtml: _chooseContractType 的三元收敛为 "sendReport()"

随之失去全部调用方的死函数一并删除(大小写不敏感全仓检索确认无其它引用,
包括无 window["xxx"] 之类的动态调用):
- tradeDayConfirmList.js sendReportGuojun()(713-749)
- maturityDateReport.cshtml sendReport_guojun()(913-939)

顺带清掉 percentColumnText.js 注释里对已删除文件 structure_dz.js 的引用。

注:后端 SendEmailSettleBill_Guojun / SendEmailUnwindReportGuojun 两个 Action
前端已无调用方,但属 C# 公开终结点,本次不动,留待单独决策。

净减 78 行。
2026-08-28 15:52:21 +08:00

1156 lines
57 KiB
Plaintext

@{
ViewBag.Title = "到期结算报告";
Layout = "~/Views/Shared/_MainLayout.cshtml";
var IsHongYuan = PS.Config.Is宏源;
bool isMarketMaker = YLErp.PS.Config.ComponentVersion == YLErp.Configuration.ComponentVersion.MarketMaker ? true : false;
var OptionTradeTypes = ConsTrade.OptionTradeTypes;
if (PS.Config.Is渤海||PS.Config.Company==CompanyEnum.广发商贸)
{
OptionTradeTypes = new List<string>(ConsTrade.OptionTradeTypes.ToArray().Append("远期"));
}
var isAutoSealAndUploadFiles = PS.GetErpConfig().IsAutoSealAndUploadFiles;
var isAutoSealAfterGenerateBook = PS.GetErpConfig().IsAutoSealAfterGeneratedBook;
}
@section CSS{
}
<style>
table input[type=text][disabled] {
border: none;
background-color: transparent !important;
text-align: left;
}
.ui-datepicker td > a.ui-state-active {
color: #363636 !important;
}
.sealTag {
float: left;
width: 50%;
text-align: left;
padding: 10px 20px 0;
}
</style>
@section JS{
<script src="~/Scripts/app/tradeHelper.js?v=@HtmlUtil.JsVersion"></script>
<script type="text/javascript">
var settleDocMode = "@valuedateBLL.SystemDate.SettleDocMode";
var IsHongYuan = "@IsHongYuan" == "True";
var allTradeCashIds = "";
var g_grid={};
var selectConfirmationBookTemplate = "@GlobalConfig.SelectConfirmationBookTemplate" === "True";
var templateNames = @Json.Serialize(ViewBag.TemplateNames as IEnumerable<string>);
var ContractTypeCtrl;
var ReportId;
var IsZheQi = "@PS.Config.Is浙期" === "True";
const page = {
IsUseDisplayNotional: "@PS.Config.IsUseDisplayNotional" === "True",
IsAutoSealAndUploadFiles: "@isAutoSealAndUploadFiles" === "True",
IsAutoSealAfterGenerateBook: "@isAutoSealAfterGenerateBook" === "True"
}
$(function () {
var curDate = "@valuedateBLL.ValueDate.ToString("yyyy-MM-dd")";
var PostData = { ValidState: $("#ValidState").val(), ExerciseDateStart: curDate, UnWindDateStart: curDate, UnWindDateEnd: curDate, TradeTypes: '@string.Join(",", OptionTradeTypes)' };
$("#DateFromExerciseDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateToExerciseDate", selectedDate, false);
}
});
$("#DateToExerciseDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateFromExerciseDate", selectedDate, true);
}
});
$("#DateFromExerciseDate").val(curDate);
$("#DateToExerciseDate").val();
setValidation("DateFromExerciseDate", $("#DateToExerciseDate").val(), true);
setValidation("DateToExerciseDate", $("#DateFromExerciseDate").val(), false);
$("#DateFromUnWindDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateToUnWindDate", selectedDate, false);
}
});
$("#DateToUnWindDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateFromUnWindDate", selectedDate, true);
}
});
$("#DateFromUnWindDate").val(curDate);
$("#DateToUnWindDate").val(curDate);
setValidation("DateFromUnWindDate", $("#DateToUnWindDate").val(), true);
setValidation("DateToUnWindDate", $("#DateFromUnWindDate").val(), false);
if(page.IsAutoSealAndUploadFiles){
$("#DateFromSealDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateToSealDate", selectedDate, false);
}
});
$("#DateToSealDate").datepicker({
changeMonth: true, changeYear: true, showButtonPanel: true, showOtherMonths: true, selectOtherMonths: true,
onSelect: function (selectedDate) {//选择日期后执行的操作
setValidation("DateFromSealDate", selectedDate, true);
}
});
$("#DateToSealDate").val(curDate);
$("#DateFromSealDate").val(curDate);
setValidation("DateFromSealDate", $("#DateToSealDate").val(), true);
setValidation("DateToSealDate", $("#DateFromSealDate").val(), false);
}
@Html.Raw(JqGridSimple.OutGrid("/trade/todayMaturityTradeReportQuery", isMultiSelect: true));
g_grid = jQuery('#listGrid');
function keyEnter(event) {
try {
var e = event ? event : (window.event ? window.event : null);
if (e.keyCode == 13) {
SearchClick(true);
}
} catch (e) {
}
}
document.onkeydown = keyEnter;
let underlyingCtrl = new tradeHelper.UnderlyingSelectCtrl('#UnderlyingId')
.setFlag(tradeHelper.UnderlyingSelectFlag.OtcTrade);
ContractTypeCtrl = new ContractTypeCtrl(document.getElementById('ContractTypeCtrl'));
});
function setValidation(elId,selectedDate,isSetMax) {
if (isSetMax){
var time = selectedDate.split("-");
var year = time[0];
var month = time[1]-1;
var day = time[2];
$("#" + elId).datepicker(
'option', 'maxDate', new Date(year, month, day)
);
} else {
var time = selectedDate.split("-");
var year = time[0];
var month = time[1]-1;
var day = time[2];
$("#" + elId).datepicker(
'option', 'minDate', new Date(year, month, day)
);
}
}
var i = 0;
var colModelGrid = [
{
name: '', label: '操作', index: '', sortIndex: i++, width: 200, align: 'left', formatter: showToolName
}, {
name: 'id', label: 'id', index: 'id', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
}, {
name: 'trade.id', label: 'tradeId', index: 'trade.id', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
}, {
name: 'trade_cash.id', label: 'tradeCashId', index: 'trade_cash.id', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
}, {
name: 'trade.EncryptId', label: 'EncryptId', index: 'trade.EncryptId', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
}, {
name: 'trade.IsMoneynessOption', label: 'IsMoneynessOption', index: 'trade.IsMoneynessOption', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
}, {
name: 'trade_contract_r.id', label: 'trade_contract_r.id', index: 'trade_contract_r.id', sortIndex: i++, width: 0, align: 'left', hidden: true, optionHide: true
},{
name: 'trade.TradeNumber', label: '交易编号', index: 'trade.TradeNumber', sortIndex: i++, width: 200, align: 'left'
}, {
name: 'ConfirmContractR.ContractCode', label: '合约编号', index: 'ConfirmContractR.ContractCode', sortIndex: i++, width: 200, align: 'left', formatter: ShowStructFormater
}, {
name: 'trade_contract_r.TradeClearCode', label: '结算确认书编号', index: 'trade_contract_r.TradeClearCode', sortIndex: i++, width: 200, align: 'left',
formatter: function (cellValue, options, rowObject) {
var html = "";
if (cellValue) {
html += "<a href='javascript:;' title='修改结算确认书编号' id='bt_" + rowObject.trade_contract_document.EncryptId + "' onclick='setControl(\"" + rowObject.trade_contract_document.EncryptId + "\")' ><i class='fa fa-pencil-square-o'></i></a>";
html += "<input style='width: 100%;' id='ip_" + rowObject.trade_contract_document.EncryptId + "' type='text' value='" + cellValue + "' disabled />";
} else {
html = "";
}
return html;
}
}, {
name: 'trade.ClientName', label: '客户名称', index: 'trade.ClientName', sortIndex: i++, width: 180, align: 'left'
}, {
name: 'underlying_manager.UnderlyingName', label: '标的名称', index: 'underlying_manager.UnderlyingName', sortIndex: i++, width: 80, align: 'left'
}, {
name: 'trade.UnderlyingCode', label: '标的代码', index: 'trade.UnderlyingCode', sortIndex: i++, width: 80, align: 'left', formatter: ShowStructFormater
}, {
name: 'trade.TradeType', label: '结构类型', index: 'trade.TradeType', sortIndex: i++, width: 70, align: 'left',
formatter: function (cellvalue, options, rowObject) {
rowObject = rowObject.trade;
return rowObject.StructureType && rowObject.IsGroup != 2 ? rowObject.StructureType : rowObject.TradeType;
}
}, {
name: 'TradeType2', label: 'TradeType2', index: 'TradeType2', sortIndex: i++, optionHide: true, hidden: true,
formatter: function (cellvalue, options, rowObject) {
rowObject = rowObject.trade;
return rowObject.TradeType;
}
}, {
name: 'trade.OptionType', label: '看涨看跌', index: 'trade.OptionType', sortable: false, sortIndex: i++, width: 70, align: 'left'
}, {
name: 'trade.ExerciseModeCn', label: '行权方式', index: 'trade.ExerciseModeCn', sortable: false, sortIndex: i++, width: 70, align: 'left'
}, {
name: 'trade.OriginalStockEqvNotionalV2', label: '交易起始名义本金', index: 'trade.OriginalStockEqvNotionalV2', sortable: false, sortIndex: i++, width: 100, align: 'right', formatter: otcformat.trading.StockEqvNotional
}, {
name: 'trade_cash.UnwindTradeAmount', label: '了结数量', index: 'trade_cash.UnwindTradeAmount', width: 90, align: 'right', sortable: false, sortIndex: i++, formatter: unwindTradeAmountFormat
}, {
name: 'trade.Strike', label: '执行价格', index: 'trade.Strike', sortable: false, sortIndex: i++, width: 90, align: 'right', formatter: calcActualStrike
}, {
name: 'trade.BuySell', label: '交易方向', index: 'trade.BuySell', sortable: false, sortIndex: i++, width: 70, align: 'left'
}, {
name: 'trade.TradeDate', label: '开仓起始日', index: 'trade.TradeDate', sortable: false, sortIndex: i++, width: 90, align: 'left', formatter: 'date'
}, {
name: 'trade.TradeStatus', label: '交易状态', index: 'trade.TradeStatus', sortable: false, sortIndex: i++, width: 90, align: 'left', formatter: ShowTradeStatusFormater
}, {
name: 'trade.ExerciseDate', label: '期权到期日', index: 'trade.ExerciseDate', sortable: false, sortIndex: i++, width: 90, align: 'left', formatter: 'date'
}, {
name: 'trade_cash.ValueDate', label: '实际行权日', index: 'trade_cash.ValueDate', sortable: false, sortIndex: i++, width: 90, align: 'left', formatter: 'date'
}, {
name: 'trade.InitialSpotPrice', label: '调整后的期初价格', index: 'trade.InitialSpotPrice', sortable: false, sortIndex: i++, width: 80, align: 'right', formatter: otcformat.trading.umprice
}, {
name: 'trade_cash.FinalPrice', label: '期末价格', index: 'trade_cash.FinalPrice', sortable: false, sortIndex: i++, width: 80, align: 'right', formatter: otcformat.trading.umprice
}, {
name: 'trade_cash.Amount1', label: '结算收益', index: 'trade_cash.Amount1', sortable: false, sortIndex: i++, width: 80, align: 'right', formatter: calcInMoneyPerContract
}, {
name: 'trade_cash.Amount', label: '了结总额', index: 'trade_cash.Amount', sortable: false, sortIndex: i++, width: 150, align: 'right', formatter: otcformat.trading.tradePrice
},{
name: 'trade.OptName', label: '交易操作者', index: 'trade.OptName', width: 70, align: 'left'
}, {
name: 'trade_cash.OptDate', label: '交易操作时间', index: 'trade_cash.OptDate', width: 90, align: 'left', formatter: 'date'
}, {
name: 'trade_contract_document.OptName', label: '操作人', index: 'trade_contract_document.OptName', width: 70, align: 'left'
}, {
name: 'trade_contract_document.OptDate', label: '操作时间', index: 'trade_contract_document.OptDate', width: 90, align: 'left', formatter: 'date'
}];
if ("@PS.Config.ErpElement.ConfirmBookStampStatus".toLowerCase() == "true") {
var colObj = {
name: '',
label: '用印扫描件',
index: '',
width: 250,
align: 'left',
formatter: function (cellValue, options, rowObject) {
var encryptId = "";
var stampDocumentFileName = "";
var status = "";
if (rowObject.trade_contract_document) {
encryptId = rowObject.trade_contract_document.EncryptId;
stampDocumentFileName = rowObject.trade_contract_document.StampDocumentFileName;
status = rowObject.trade_contract_document.Status;
}
var templateHtml = "";
if(page.IsAutoSealAndUploadFiles && !page.IsAutoSealAfterGeneratedBook){
templateHtml += "<input type=\"button\" class=\"wentiEdit\" {2} value=\"用印\" />";
}
templateHtml += "<input type=\"button\" class=\"wentiEdit\" {0} value=\"上传\" />" +
"<input type=\"button\" class=\"wentiEdit\" {1} value=\"下载\" />";
var html = (templateHtml)
.template(
(status ? 'onclick="upload(\'{0}\',\'{1}\')"'.template(encryptId, rowObject.trade_cash.id) : "disabled"),
(stampDocumentFileName ? 'onclick="main.downloadFiles(\'{0}\')"'.template(stampDocumentFileName) : "disabled"));
if(page.IsAutoSealAndUploadFiles && !page.IsAutoSealAfterGeneratedBook) {
html = (templateHtml)
.template(
(rowObject.MetaDic.ContractDocUrl ? 'onclick="colModelGrid.upload(\'{0}\',\'{1}\')"'.template(rowObject.MetaDic.ContractEncryptId, rowObject.EncryptId) : "disabled"),
(rowObject.MetaDic.StampDocumentFileName ? 'onclick="main.downloadFiles(\'{0}\')"'.template(rowObject.MetaDic.StampDocumentFileName) : "disabled"),
('onclick="SealContract(\'{0}\')"'.template(rowObject.trade_contract_r.id))
);
}
if ("@PS.Config.ErpElement.ConfirmBookStampStatus" == "True" && status) {
html = html + (status == "草稿" ? "未用印" : status);
}
return html;
}
};
colModelGrid.splice(1, 0, colObj)
function setControl(encryptId) {
var button = "#bt_" + encryptId;
var inputSelect = "#ip_" + encryptId;
if ($(inputSelect).prop("disabled")) {
$(inputSelect).prop("disabled", false);
$(button).prop("title", "保存结算确认书编号");
$(button).html("<i class='fa fa-floppy-o'></i>");
} else {
changeCode(encryptId, $(inputSelect).val(), function () {
$(button).html("<i class='fa fa-pencil-square-o'></i>");
$(inputSelect).prop("disabled", true);
$(button).prop("title", "修改结算确认书编号");
});
}
}
function changeCode(encryptId, code, callback) {
var data = new FormData();
data.append("encryptId", encryptId);
data.append("ContractCode", code);
$.ajax({
type: "Post",
//async: false,
url: "/trade/UploadContractFile",
contentType: false,
processData: false,
data: data,
success: function (res) {
main.message(res.msg);
if (!res.success) {
} else {
callback();
}
},
beforeSend(jqXHR) {
main.waitMe(true);
},
complete(jqXHR, textStatus) {
main.waitMe(false);
}
});
}
function upload(encryptId, sendMail) {
var srcurl = "/TradeConfirmBook/confirmBookUpload/?Id=" + encryptId + "&SendMailId=" + sendMail;
main.open("上传确认书", srcurl, {
area: ['500px', '420px'],
end: SearchClick(true)
});
}
}
if (page.IsAutoSealAndUploadFiles) {
var colObj1 = {
name: 'SealResult',
label: '电子章用印结果',
index: 'SealResult',
width: 150,
align: 'center',
formatter: function (cellValue, options, rowObject) {
if (rowObject.SealResult == "失败") {
var html = ("<span style='color:red;'>失败</span><a href='javascript:;' style='color:blue;' title='查看失败详情' onclick=\"ViewErrInfo('{0}')\" ><详情></a>")
.template(rowObject.ContractCode);
return html;
}
else {
return rowObject.SealResult;
}
}
};
var colObj2 = {
name: 'SealTime',
label: '电子章用印时间',
index: 'SealTime',
width: 150,
align: 'left',
formatter: function (cellValue, options, rowObject) {
return rowObject.SealTime;
}
};
colModelGrid.push(colObj1, colObj2);
}
function ViewErrInfo(code) {
main.post("/trade/GetSealErrMsg/", {code:code},
{
success: function (resp) {
main.alert(resp.msg);
}
});
}
function ShowTradeStatusFormater(cellValue, options, rowObject) {
if (rowObject.trade_cash != undefined && rowObject.trade_cash.Action != undefined && rowObject.trade_cash.Action == "系统操作-平仓费") {
return "@ConsTrade.已平仓";
}
else {
return rowObject.trade.TradeStatus;
}
}
function gridComplete() {
var jgrid = $(this);
var rowNum = parseInt(jgrid.getGridParam('records'), 10);
if (rowNum > 0) {
allTradeCashIds = arguments[0].Sum == null ? "" : arguments[0].Sum.AllTradeCashIds;
$(".ui-jqgrid-sortable").css("text-align", "center");
} else {
$(".ui-jqgrid-sdiv").hide();
}
main.setcolumnChooser(jQuery('#listGrid'), "@configcolumn_data.已行权报告");
$(".selftooltip").tooltip({ html: true, show: 50000, trigger: "hover" });
}
function ShowStructFormater(cellValue, options, rowObject) {
var html;
//if (rowObject.trade.TradeType == "结构化交易") {
// html = "<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
// .template(cellValue || '', setStructTable(rowObject.trade));
// return html;
//}
if (rowObject.trade.TradeType == "合成价差期权") {
html =
"<a href=\"#\" class=\"selftooltip\" style=\"z-index:10000000\" data-toggle=\"tooltip\" title=\"{1}\">{0}</a>"
.template(cellValue || '', rowObject.trade.SyntheticUnderlyingTipsInfo);
return html;
}
return cellValue || '';
}
function unwindTradeAmountFormat(cellValue, options, rowObject) {
var amount = rowObject.trade_cash.Action == "系统操作-行权费" ? (rowObject.trade_cash.TradeAmount == null || rowObject.trade_cash.TradeAmount == undefined ? 0 : rowObject.trade_cash.TradeAmount) : (rowObject.trade_cash.UnwindTradeAmount == null || rowObject.trade_cash.UnwindTradeAmount == undefined ? 0 : rowObject.trade_cash.UnwindTradeAmount);
return otcformat.trading.notional(page.IsUseDisplayNotional ? amount * (rowObject.CountRatio || 1) : amount);
}
function setStructTable(rowObject) {
structTrades = rowObject.SubTrades;
var trhtml = "";
var trcode = "<td>标的代码</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.UnderlyingCode);
var trstrike = "<td>执行价格</td>";
var trbuysell = "<td>买卖方向</td>";
var trvarity = "<td>结构类型</td><td colspan='{0}'>{1}</td>".template(structTrades.length, rowObject.StructureType);
var trstockeqvnotional = "<td>名义本金</td><td colspan='{0}'>{1}</td>".template(structTrades.length, otcformat.trading.StockEqvNotional(new Number(rowObject.StockEqvNotional) / 10000) + "万");
var trmaturedate = "<td>到期日期</td><td colspan='{0}'>{1}</td>".template(structTrades.length, moment(rowObject.ExerciseDate).format("YYYY-MM-DD"));
if (structTrades) {
for (var i = 0; i < structTrades.length; i++) {
trstrike += "<td>{0}</td>".template(structTrades[i].IsMoneynessOption === "是" ? otcformat.trading.premiumRateP(new Number(structTrades[i].Strike)) : otcformat.trading.umprice(structTrades[i].Strike));
trbuysell += "<td>{0}</td>".template(structTrades[i].BuySell);
}
}
trhtml = "<tr>{0}</tr>".template(trcode);
trhtml += "<tr>{0}</tr>".template(trstrike);
trhtml += "<tr>{0}</tr>".template(trbuysell);
trhtml += "<tr>{0}</tr>".template(trstockeqvnotional);
trhtml += "<tr>{0}</tr>".template(trmaturedate);
trhtml += "<tr>{0}</tr>".template(trvarity);
var showTable = "<table class='table'>{0}<table>".template(trhtml);
return showTable;
}
function showToolName(cellValue, options, rowObject) {
var color = "width:auto";
var title = "查看";
var html = "";
title = page.IsAutoSealAndUploadFiles ? "生成并用印" : "生成结算确认书";
var isWait = (rowObject.SealResult == "用印等待中");
@if (isMarketMaker)
{
<text>
html = html + "<input type=\"button\" class=\"wentiEdit\" title='{2}' onclick=\"GenerateSettleBill('{0}','{4}','{3}',{5})\" value=\"{2}\" />"
.template(rowObject.trade_cash.id, color, title, rowObject.ContractDocUrl,rowObject.trade.id,isWait);
</text>
}
else
{
<text>
if (settleDocMode == "@valuedate.SettleDocModeSingle") {
html = html + "<input type=\"button\" class=\"wentiEdit\" title='{2}' onclick=\"GenerateSettleBillForSingle('{0}','{3}',{4})\" value=\"{2}\" />"
.template(rowObject.trade_cash.id, color, title, rowObject.ContractDocUrl,isWait);
}
</text>
}
if ("@YLErp.PS.Config.Is光大光子".toLowerCase() == "false") {
if (rowObject.ContractDocUrl != undefined && rowObject.ContractDocUrl != null && rowObject.ContractDocUrl != "") {
html +=
"<input type=\"button\" class=\"wentiEdit\" title='下载结算确认书' onclick=\"DownLoadDoc('{0}')\" value=\"{1}\" />"
.template(rowObject.ContractDocUrl, "下载");
} else {
html +=
"<input type=\"button\" class=\"wentiEdit\" title='未生成结算确认书' disabled='disabled' value=\"{0}\" />"
.template("下载");
}
}
return html;
}
//下载清算确认书
function DownLoadDoc(res) {
if (IsHongYuan) {
var len = res.lastIndexOf(".");
if (len >= 0) {
res = res.substr(0, len);
}
var res2 = res + ".xlsx";
window.open(res2);
} else {
if (isExistFile(res)) {
window.open(res);
} else {
res += "x";
window.open(res);
}
}
}
//判断文件是否存在
function isExistFile(url) {
var result = false;
main.post("/TradeConfirmBook/ExistFile", { filePath: url }, { async: false }).done(function (res) {
if (res && res.obj) {
result = true;
}
});
return result;
}
var g_curdate = new moment().format("YYYY-MM-DD");
function SetAsExpired() {
var selectedIds = jQuery('#listGrid').jqGrid('getGridParam', 'selarrrow');
if (selectedIds.length == 0) {
main.message("请选择需要标记为到期的交易");
return;
}
//批量到期
main.confirm("确认将所有选中交易的标记为到期?",
function () {
var ggrid = jQuery('#listGrid');
var ors = [];
for (var i = 0; i < selectedIds.length; i++) {
var or = ggrid.getRowData(selectedIds[i]).id;
ors.push(or);
}
main.post("/trade/MultipleTradeExpireConfirm/", { tradeids: ors }).done(function () {
reloadMaturityTrade();
});
});
}
function reloadMaturityTrade() {
//重新加载
SearchClick();
}
function SearchClick(isSearchclick) {
var listGrid = $('#listGrid');
listGrid.appendPostData({ TradeNumber: $("#TradeNumber").val() });
listGrid.appendPostData({ ContractCode: $("#ContractCode").val() });
listGrid.appendPostData({ AssetIds: $("#AssetId").val() == null ? "" : $("#AssetId").val().join() });
listGrid.appendPostData({ AssetIdGroupList: $("#GroupId").val() });
listGrid.appendPostData({ UnderlyingIds: $("#UnderlyingId").val() == null ? "" : $("#UnderlyingId").val().join(",") });
listGrid.appendPostData({ ClientIds: $("#ClientId").val() == null ? "" : $("#ClientId").val().join(",") });
listGrid.appendPostData({ TradeType: $("#TradeType").val() });
listGrid.appendPostData({ ExerciseMode: $("#ExerciseMode").val() });
listGrid.appendPostData({ MaturityDateStart: $("#DateFromMaturityDate").val() });
listGrid.appendPostData({ MaturityDateEnd: $("#DateToMaturityDate").val() });
listGrid.appendPostData({ ExerciseDate: $("#ExerciseDate").val() });
listGrid.appendPostData({ ExerciseDateStart: $("#DateFromExerciseDate").val() });
listGrid.appendPostData({ ExerciseDateEnd: $("#DateToExerciseDate").val() });
listGrid.appendPostData({ UnWindDateStart: $("#DateFromUnWindDate").val() });
listGrid.appendPostData({ UnWindDateEnd: $("#DateToUnWindDate").val() });
var tradeTypes = $("#TradeTypes").val() == null
? '@string.Join(",", ConsTrade.OptionTradeTypes)'
: $("#TradeTypes").val().join(",");
listGrid.appendPostData({ TradeTypes: tradeTypes });
var reqTradeStatus = $("#TradeStatus").val() == null
? "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期"
: $("#TradeStatus").val().join(",");
if (!reqTradeStatus) {
reqTradeStatus = "@ConsTrade.确认成交,@ConsTrade.新增待确认,@ConsTrade.期初价格已确认,@ConsTrade.修改待确认,@ConsTrade.已执行,@ConsTrade.已平仓,@ConsTrade.已到期";
}
listGrid.appendPostData({ TradeStatus: reqTradeStatus });
if (page.IsAutoSealAndUploadFiles) {
listGrid.appendPostData({ SealResults: $("#SealResults").val() });
listGrid.appendPostData({ SealDateStart: $("#DateFromSealDate").val() });
listGrid.appendPostData({ SealDateEnd: $("#DateToSealDate").val() });
}
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
//点击搜索时默认第一页
listGrid.jqGrid('setGridParam', {
page: 1
});
}
listGrid.trigger('reloadGrid');
}
function showcolumnChooser() {
var jgrid = jQuery('#listGrid');
main.showcolumnChooser(jgrid,"@configcolumn_data.已行权报告" );
}
@if (isMarketMaker)
{
<text>
function GenerateSettleBill(id,tradeId, contractDocUrl,isWait) {
if (page.IsAutoSealAndUploadFiles) {
//if (isWait) {
// if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) {
// return;
// }
//}
if (!confirm("重新生成将覆盖已有的交易确认书并重新进行自动用印(如有),是否确认操作?")) {
return;
}
}
if (contractDocUrl != "undefined" && contractDocUrl) {
if (!page.IsAutoSealAndUploadFiles){
if (!confirm("确认覆盖已有的结算确认书?")) {
return;
}
}
}
var tradeCashIds = [];
var tradeIds = [];
if (id) {
tradeCashIds.push(id);
tradeIds.push(tradeId);
} else {
var jgrid = jQuery('#listGrid');
tradeCashIds = main.GetGridIds(jgrid);
tradeIds = main.GetGridIds(jgrid,"trade.id")
// if (page.IsAutoSealAndUploadFiles) {
// tradeIds.forEach((v, i, arr) => {
// var tradeId = v;
// main.post("/trade/IsSealWaiting/", {tradeId: tradeId},
// {
// success: function (resp) {
// if (resp.success) {
// if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) {
// return;
// }
// }
// }
// });
// });
//}
}
if (tradeCashIds.length === 0) {
main.message("请选择交易");
return;
}
var templateHtml = "";
if (selectConfirmationBookTemplate) {
var currentTemplate = "";
var postData = {
key: "结算确认书"
};
if (tradeIds.length == 1) {
postData.tradeId = tradeIds[0];
main.post("/trade/GetTradeMeta", postData, { waitMe: false, async: false }).done(function (res) {
currentTemplate = res;
});
}
templateHtml = '<div class="form-group">' +
'<label class="col-sm-4 control-label">选择模板</label>' +
'<select style="width: 145px; margin-left: 14px;" data-placeholder="请选择 确认书模板" name="templateName">' +
'<option ' +
(currentTemplate === "" ? "selected" : "") +
' value="">默认</option>';
if (templateNames !== null) {
templateNames.forEach((t, i, arr) => {
templateHtml += '<option ' +
(currentTemplate !== "" && currentTemplate === t ? "selected" : "") +
' value="{0}">{0}</option>'.template(t);
});
}
templateHtml += '</select>' +
'</div>';
}
var htmlContent = '<form class="form-horizontal" role="form" style="padding:15px 12px 5px">' +
'<div class="form-group">' +
'<label class="col-sm-4 control-label">文档类型</label>' +
'<div class="btn-group col-sm-8" data-toggle="buttons">' +
'<label class="btn btn-sm btn-primary active" style="border:none"><input type="radio" checked name="docType" value="PDF"> PDF</label>' +
'<label class="btn btn-sm btn-primary" style="border:none"><input type="radio" name="docType" value="DOC"> DOC</label>' +
'</div>' +
'</div>' +
templateHtml +
'</form>';
if (IsHongYuan) {
var htmlContent = '<form class="form-horizontal" role="form" style="padding:15px 12px 5px">' +
'<div class="form-group">' +
'<label class="col-sm-4 control-label">文档类型</label>' +
'<div class="btn-group col-sm-8" data-toggle="buttons">' +
'<label class="btn btn-sm btn-primary active" style="border:none"><input type="radio" checked name="docType" value="PDF"> PDF</label>' +
'<label class="btn btn-sm btn-primary" style="border:none"><input type="radio" name="docType" value="DOC"> XLSX</label>' +
'</div>' +
'</div>' +
templateHtml +
'</form>';
}
main.open2("生成结算确认书",
htmlContent,
{
area:selectConfirmationBookTemplate? ["320px", "200px"]: ["320px", "165px"],
btn: ['生成', '取消'],
yes: function(index, layero) {
var docType = $('input[name="docType"]:checked').val();
if (selectConfirmationBookTemplate) {
postData.value = $('select[name="templateName"]').val();
if (_.trim(postData.value)) {
tradeIds.forEach((v, i, arr) => {
postData.tradeId = v;
main.post("/trade/SetTradeMeta", postData, { waitMe: false, async: false });
})
}
}
main.post("/trade/GJGenerateSettleBillByTradeCashIds/",
{ tradeCashIds: tradeCashIds, docType: docType },
{
success: function(resp) {
if (resp.success) {
main.downloadFiles(resp.obj);
} else {
main.alert(resp.msg.replace("\r\n", "<br/>"));
main.downloadFiles(resp.obj);
}
reloadMaturityTrade();
parent.layer.closeAll();
}
});
},
cancel: function(index, layero) {
parent.layer.closeAll();
},
success: function(layero, index) {
$(".btn-group").on("click",
".btn",
function(event) {
$('input[name="docType"]:checked').prop("checked", false);
$(this).children("input").prop("checked", true);
});
}
});
}
</text>
}
function BatchGenerateSettleBill(id) {
var clientIds = $("#ClientId").val() == null ? "" : $("#ClientId").val().join(",");
var selectedIds = $('#listGrid').jqGrid('getGridParam', 'selarrrow');
var orIds = [];
if (selectedIds.length > 0) {
for (var i = 0; i < selectedIds.length; i++) {
var or = $('#listGrid').getRowData(selectedIds[i]).id;
orIds.push(or);
}
}
var data = {
UnWindDateStart: $("#DateFromUnWindDate").val(), UnWindDateEnd: $("#DateToUnWindDate").val(), ClientIds: clientIds,
TradeTypes: $("#TradeTypes").val(), TradeIds: orIds.join(','),
ExerciseDateStart: $("#DateFromExerciseDate").val(),
ExerciseDateEnd: $("#DateToExerciseDate").val()
};
if (data.UnWindDateStart == undefined || data.UnWindDateStart == null || data.UnWindDateStart == ""
|| data.UnWindDateEnd == undefined || data.UnWindDateEnd == null || data.UnWindDateEnd == "") {
showmiddlemessage("批量生成结算确认书需要选择确切的实际行权日区间!");
return;
}
if (page.IsAutoSealAndUploadFiles) {
data.SealResults = $("#SealResults").val();
//data.SealDateStart = $("#DateFromSealDate").val();
//data.SealDateEnd = $("#DateToSealDate").val();
//if (data.SealDateStart == undefined || data.SealDateStart == null || data.SealDateStart == ""
// || data.SealDateEnd == undefined || data.SealDateEnd == null || data.SealDateEnd == "") {
// showmiddlemessage("发送清算确认书需要选择确切的电子章用印日期区间!");
// return;
//}
}
main.confirm("确定生成当前所选[客户名称]与[实际行权日]条件下交易的确认书吗?", function () {
main.post("/trade/BatchGenerateSettleBill/", data).done(function (data) {
console.info(data);
reloadMaturityTrade();
});
});
}
function GenerateSettleBillForSingle(id, contractDocUrl,isWait) {
if (contractDocUrl != "undefined" && contractDocUrl) {
if (page.IsAutoSealAndUploadFiles) {
//if (isWait) {
// if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) {
// return;
// }
//}
if (!confirm("重新生成将覆盖已有的交易确认书并重新进行自动用印(如有),是否确认操作?")) {
return;
}
}else{
if (!confirm("确认覆盖已有的结算确认书?")) {
return;
}
}
}
var tradeCashIds = id;
if(!isWait){
// if (page.IsAutoSealAndUploadFiles) {
// main.post("/trade/IsSealWaiting/", {tradeId: id},
// {
// success: function (resp) {
// if (resp.success) {
// if (!confirm("用印正在等待中重新生成将中断用印并重新进行自动用印(如有),是否确认操作?")) {
// return;
// }
// }
// }
// });
//}
}
var jgrid = jQuery('#listGrid');
if (tradeCashIds != undefined && tradeCashIds.length > 0) {
main.post("/trade/GenerateSettleBillForSingle/", { TradeCashIds: tradeCashIds}).done(function (data) {
console.info(data);
reloadMaturityTrade();
});
} else {
main.confirm("确定生成当前条件下所有交易的确认书吗?", function () {
main.post("/trade/GenerateSettleBillForSingle/", { TradeCashIds : allTradeCashIds}).done(function (data) {
console.info(data);
reloadMaturityTrade();
});
});
}
}
function sendReport() {
var clientIds = $("#ClientId").val() == null ? "" : $("#ClientId").val().join(",");
var contractTypes = ContractTypeCtrl.getValue();
var data = { UnWindDateStart: $("#DateFromUnWindDate").val(), UnWindDateEnd: $("#DateToUnWindDate").val(), ClientIds: clientIds, receiver: contractTypes };
if (page.IsAutoSealAndUploadFiles) {
data.SealResults = $("#ClientId").val();
//data.SealDateStart = $("#DateFromSealDate").val();
//data.SealDateEnd = $("#DateToSealDate").val();
}
var jgrid = jQuery('#listGrid');
var ids = [];
if (ReportId) {
ids.push(ReportId);
}
else {
ids = main.GetGridIds(jgrid);
}
if (ids.length == 0) {
if (data.UnWindDateStart == undefined || data.UnWindDateStart == null || data.UnWindDateStart == ""
|| data.UnWindDateEnd == undefined || data.UnWindDateEnd == null || data.UnWindDateEnd == "") {
showmiddlemessage("发送结算确认书需要选择确切的实际行权日区间!");
return;
}
//if(page.IsAutoSealAndUploadFiles){
// if (data.SealDateStart == undefined || data.SealDateStart == null || data.SealDateStart == ""
// || data.SealDateEnd == undefined || data.SealDateEnd == null || data.SealDateEnd == "") {
// showmiddlemessage("发送清算确认书需要选择确切的电子章用印日期区间!");
// return;
// }
//}
}
else { data.TradeCashIds = ids.join(","); }
if (ids.length == 0 && clientIds == "") {
main.confirm("确定发送所有结算确认书?可选择客户名称单个发送", function () {
main.post("/trade/SendEmailSettleBill", data).done(function (data) {
});
})
}
else {
main.post("/trade/SendEmailSettleBill", data).done(function (data) {
});
}
$("#modalChooseContractType").modal('hide');
}
function sentMail(id) {
ReportId = id;
var clientIds = $("#ClientId").val();
ContractTypeCtrl.changeContractType(clientIds);
$("#modalChooseContractType").modal('show');
}
function SendEmailSettleBill() {
ReportId = "";
var clientIds = $("#ClientId").val();
ContractTypeCtrl.changeContractType(clientIds);
$("#modalChooseContractType").modal('show');
}
function calcActualStrike(cellValue, options, rowObject) {
if (rowObject.trade.IsMoneynessOption == "是") {
return otcformat.trading.umprice(rowObject.trade.Strike * rowObject.trade.InitialSpotPrice);
} else {
return otcformat.trading.umprice(rowObject.trade.Strike);
}
}
function calcInMoneyPerContract(cellValue, options, rowObject) {
if (rowObject.trade.TradeStatus == "已到期") {
return 0.00;
}
var actualStrike = rowObject.trade.IsMoneynessOption == "是" ? (rowObject.trade.Strike * rowObject.trade.InitialSpotPrice) : rowObject.trade.Strike;
if (rowObject.trade.OptionType == "看涨") {
var payoff = rowObject.trade_cash.FinalPrice - actualStrike;
return otcformat.trading.tradePrice(payoff > 0 ? payoff : 0);
} else {
var payoff = actualStrike - rowObject.trade_cash.FinalPrice;
return otcformat.trading.tradePrice(payoff > 0 ? payoff : 0);
}
}
/**
* 客户行权日报告
*/
function ClientMaturityTrade() {
var srcurl = "/trade/clientMaturityDateTradeList";
main.open("客户行权日报告", srcurl);
}
function downloadMaturityReports() {
var startDate = $("#DateFromUnWindDate").val();
var endDate = $("#DateToUnWindDate").val();
var clientIds = $("#ClientId").val();
var jgrid = jQuery('#listGrid');
var tradeCashIdList = main.GetGridIds(jgrid, "trade_cash.id")
tradeids = tradeCashIdList.join(",");
var tip = "下载" + startDate + "至" + endDate + "的结算确认书";
if (tradeids) { tip = "下载所有已勾选的结算确认书"; }
var htmlContent = '<form class="form-horizontal" role="form" style="padding:15px 12px 5px">' +
'<div class="form-group">' +
'<label style="padding:10px 12px 10px">' + tip + '</label><br />' +
'<label class="col-sm-5 control-label">文档类型</label>' +
'<label class="btn btn-sm btn-primary" style="border:none"><input type="checkbox" checked name="docType" value="PDF"> PDF</label>' +
'<label class="btn btn-sm btn-primary" style="border:none"><input type="checkbox" checked name="docType" value="DOC"> DOC</label>';
if (IsZheQi) {
htmlContent += '<br/><label class="col-sm-5 control-label">下载用印文件</label>' +
'<select id="Seal" style="margin-top:5px;"><option>是</option><option>否</option></select>';
}
main.open2("批量下载交易确认书",
htmlContent + '</div></form>',
{
area: ["400px", "250px"],
btn: ['下载', '取消'],
yes: function (index, layero) {
var docpdf = [];
$('input[name="docType"]:checked').each(function (i) {
docpdf.push($(this).val())
})
var isSeal = $("#Seal").val() == '是' ? true : false;
var confirmBookPostData = { TradeDateStart: startDate, TradeDateEnd: endDate, ClientIds: clientIds, TradeIds: null, TradeCashIds: tradeCashIdList, DocType: "结算确认书", docpdf: docpdf,IsSeal: isSeal };
if (page.IsAutoSealAndUploadFiles) {
confirmBookPostData.SealResults = $("#SealResults").val();
//confirmBookPostData.SealDateStart = $("#DateFromSealDate").val();
//confirmBookPostData.SealDateEnd = $("#DateToSealDate").val();
}
openWindowWithPost("/trade/BatchDownLoadDoc/", confirmBookPostData);
parent.layer.closeAll();
},
cancel: function (index, layero) {
parent.layer.closeAll();
},
success: function (layero, index) {
$(".btn-group").on("click", ".btn", function (event) {
$('input[name="docType"]:checked').prop("checked", false);
$(this).children("input").prop("checked", true);
});
}
});
}
function openWindowWithPost(url, data) {
var form = document.createElement("form");
form.target = "_blank";
form.method = "POST";
form.action = url;
form.style.display = "none";
for (var key in data) {
if (data[key] instanceof Array) {
if (data[key].length === 0) {
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = null;
form.appendChild(input);
}
else {
data[key].forEach((item, index, array) => {
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = data[key][index];
form.appendChild(input);
});
}
}
else {
var input1 = document.createElement("input");
input1.type = "hidden";
input1.name = key;
input1.value = data[key];
form.appendChild(input1);
}
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
function SealContract(id){
var ids = [];
ids.push(id);
main.post("/trade/IsContractGenerated/", { ids: ids,types:["结算确认书"] }).done(function (res) {
if (res.success) {
main.post("/trade/SealContracts/", { ids: ids,types:["结算确认书"] }).done(function (res) {
if (res.success) {
SearchClick(true);
}
});
}
}).fail(function(res){
});
}
function BatchSealContracts() {
var jgrid = jQuery('#listGrid');
var ids = main.GetGridIds(jgrid,"trade_contract_r.id");
if (ids.length == 0) {
main.alert("请至少选择一笔交易"); return;
}
main.post("/trade/IsContractGenerated/", { ids: ids,types:["结算确认书"] }).done(function (res) {
if (res.success) {
main.post("/trade/SealContracts/", { ids: ids,types:["结算确认书"] }).done(function (resp) {
if (resp.success) {
SearchClick(true);
}
});
}
}).fail(function(res){
});
}
</script>
}
<div class="searchdiv">
@Html.ShortInput("TradeNumber", "交易编号")
@Html.ShortInput("ContractCode", "合约编号")
@Html.MyAceDropdownInput("AssetId", "簿记账户", AssetunitController.GetClientassetunit())
@Html.MyAceDropdownInput("GroupId", "簿记账户组", AssetUnitModel.GetAllAssetUnitGroupItem())
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient())
<div class="search-group">
<span class="search-label">标的代码</span>
<select class="" data-placeholder="请选择 标的代码" id="UnderlyingId" name="UnderlyingId" multiple></select>
</div>
@Html.MyAceDropdownInput("TradeTypes", "结构类型", GlobalData.GetTradeTypes(OptionTradeTypes, true))
@Html.MyAceDropdownInput2("ExerciseMode", "行权方式", ConsTrade.ExerciseType.GetSelectItems())
@Html.SearchDateRange("ExerciseDate", "期权到期日")
@Html.SearchDateRange("UnWindDate", "实际行权日")
@if (isAutoSealAndUploadFiles)
{
@Html.MyAceDropdownInput("SealResults", "用印结果", GlobalData.GetSealResultItems())
@Html.SearchDateRange("SealDate", "用印日期")
}
@MyControls.SearchBtn()
@if (isMarketMaker)
{
@MyControls.Btn(isAutoSealAndUploadFiles && PS.GetErpConfig().IsAutoSealAfterGeneratedBook ? "批量生成结算确认书并用印" : "批量生成结算确认书", "GenerateSettleBill()")
}
else if (PS.Config.Company == CompanyEnum.申万)
{
}
else
{
if (valuedate.SettleDocModeMultiple.Equals(valuedateBLL.SystemDate.SettleDocMode))
{
@MyControls.Btn(isAutoSealAndUploadFiles && PS.GetErpConfig().IsAutoSealAfterGeneratedBook ? "批量生成结算确认书并用印" : "批量生成结算确认书", "BatchGenerateSettleBill()")
}
else
{
@MyControls.Btn(isAutoSealAndUploadFiles && PS.GetErpConfig().IsAutoSealAfterGeneratedBook ? "批量生成结算确认书并用印" : "批量生成结算确认书", "GenerateSettleBillForSingle()")
}
//@MyControls.Btn("客户行权日报告", "ClientMaturityTrade()")
}
@MyControls.Btn("批量下载结算确认书", "downloadMaturityReports()")
@MyControls.Btn("发送结算确认书", "SendEmailSettleBill()")
@if (isAutoSealAndUploadFiles && !isAutoSealAfterGenerateBook)
{
@MyControls.Btn("批量确认书用印", "BatchSealContracts()")
}
<div style="width:30px;display:inline;" onclick="showcolumnChooser();return false;">
<img src="~/Images/configure.png"/>
</div>
</div>
<!--
<div>
@MyControls.Btn("配置显示列", "showcolumnChooser()")
</div>
-->
@Html.Raw(JqGridSimple.OutTable())
@await Html.PartialAsync("/Views/Common/_chooseContractType.cshtml", "sendReport()")