var g_grid = {}; $(function () { var PostData = {}; var calcDate = page.ValueDate; //控件选择时的触发事件 main.setTradeDatePicker("", "#ValueDate", calcDate, function (selectedDate) { if (selectedDate) { $("#ValueDateFrom").datepicker("option", "maxDate", selectedDate); } }); main.setTradeDatePicker("", "#ValueDateFrom", calcDate, function (selectedDate) { if (selectedDate) { $("#ValueDate").datepicker("option", "minDate", selectedDate); } }); //手动修改时的触发事件 $("#ValueDate").change(function () { $("#ValueDateFrom").datepicker("option", "maxDate", $("#ValueDate").val()); }); $("#ValueDateFrom").change(function () { $("#ValueDate").datepicker("option", "minDate", $("#ValueDateFrom").val()); }); //默认初始值赋值逻辑 if (!page.EndTime) { $("#ValueDate").val(calcDate); } else { $("#ValueDate").val(page.EndTime); } //admin配置 结算报告配置 开始日期 if (page.TradeMarketReportCfg == "SYSTEMDATE") { $("#ValueDateFrom").val($("#ValueDate").val()); } if (page.StartTime && page.EndTime) { $("#ValueDateFrom").val(page.StartTime); } if (isRunHe || isGuoTou) { var ValueDateFrom = $("#ValueDateFrom").val(); if (!ValueDateFrom || ValueDateFrom === 'null') { $("#ValueDateFrom").val(calcDate); } var ValueDate = $("#ValueDate").val(); if (!ValueDate || ValueDate === 'null') { $("#ValueDate").val(calcDate); } } $("#ClientId").val(page.ClientId); if (page.ParentFlag == "True") $("#ParentFlag").attr("checked", true); else $("#ParentFlag").attr("checked", false); if ($("#ClientId").val()) { SearchClientBalance(); } function keyEnter(event) { try { var e = event ? event : (window.event ? window.event : null); if (e.keyCode === 13) { SearchClick(true); } } catch (e) { // } } document.onkeydown = keyEnter; try { SetAceDropDown(); } catch (e) { // } function AfterInsertRow(rowid, aData) { } function WorstCastClientPayableTrigger(data) { var payableMargin = numeral(data).value() > 0 ? numeral(data).value() : 0; var totalCredit = numeral($("#TotalCredit").val()).value(); var marginBalance = numeral($("#MarginBalance").val()).value(); var closedTradePayableFund = numeral($("#ClosedTradePayableFund").text()).value(); var positionTradePayableFund = numeral($("#PositionTradePayableFund").text()).value(); var frozenMarginMoney = numeral($("#FrozenMarginMoney").val()).value();//为负 var todayRemainFund = numeral($("#ToDayRemainFund").text()).value(); var todayRemianFundProduct = numeral($("#TodayRemianFundProduct").text()).value(); var frozenRedeemFunds = numeral($("#FrozenRedeemFunds").val()).value(); var positionPremiumNetCash = numeral($("#PositionPremiumNetCash").text()).value(); var availableAmount = marginBalance - payableMargin + frozenMarginMoney; $("#AvailableFund").text(numFormart(availableAmount)); let margin = Math.max(payableMargin - Math.max(todayRemainFund, 0) - todayRemianFundProduct - totalCredit, 0); if (isXiangCai) { margin = Math.max((-numFormart(availableAmount)), 0); } $("#Margin").text(numFormart(margin)); var payableFund = closedTradePayableFund + positionTradePayableFund + numeral($("#Margin").text()).value(); $("#PayableFund").val(numFormart(payableFund)); var desirableFund = isShenWan || isHongYuan ? Math.max(availableAmount + frozenRedeemFunds, 0) : Math.max(availableAmount + frozenRedeemFunds - Math.max(-positionPremiumNetCash, 0), 0); $("#DesirableFund").text(numFormart(desirableFund)); } $("#WorstCastClientPayable").blur(function () { var oldData = $("#WorstCastClientPayable").text(); var dateVal = $(this).val(); var clientId = parseInt($("#ClientId").val()); var client = clients.find(y => y.id === clientId); if (!(/^(0|[-1-9]\d*)(\.\d*)?$/.test(dateVal) && client && client.MarginOptionType == 1 || /^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal))) { $(this).val(""); return; } else { var clientName = $("#ClientId :selected").text(); if (!clientName) { main.alert("请先选择需要修改预付金占用的客户"); return; } main.confirm("确定修改{0}在{1}的预付金占用吗?".template(clientName, $("#ValueDate").val()), function () { var pData = { ClientId: $("#ClientId").val(), ValueDate: $("#ValueDate").val(), HoldingDeposit: dateVal }; main.post("/client_span/UpdateWorstCastClientPayable", pData).done(function (res) { if (res.success) { $("#WorstCastClientPayable").text(dateVal); $("#WorstCastClientPayable").css("border-color", "red"); $("#unlock").show(); WorstCastClientPayableTrigger(dateVal); } }); }, function () { $("#WorstCastClientPayable").val(oldData); WorstCastClientPayableTrigger(oldData); }); } }); $("#FundThreshold").blur(function () { var oldData = $("#FundThreshold").text(); var dateVal = $(this).val(); if (!/^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal)) { $(this).val(""); return; } else { ClientId = $("#ClientId").val() var clientName = $("#ClientId :selected").text(); if (ClientId == '' || ClientId === 'null') { main.alert("请先选择需要填写阈值的客户!"); return; } main.confirm("确定修改{0}阈值吗?".template(clientName), function () { var pData = { Id: $("#ClientId").val(), FundThreshold: dateVal }; main.post("/Client/UpdateClientFundThresholdJson", pData).done(function (res) { if (res.success) { $("#FundThreshold").text(dateVal); $("#FundThreshold").css("border-color", "red"); } }); }, function () { $("#FundThreshold").val(oldData); }); } }); }); function showTradeNumber(cellValue, options, rowObject) { if (cellValue === "合计:") { return cellValue; } var url = "/trade/tradeFileManagement?tradeNumber=" + cellValue; var showNumber = "{0}".template(cellValue, url); return showNumber; } function showExerciseMode(cellValue, options, rowObject) { if ("American" === rowObject.ExerciseMode || "American" === rowObject.trade.ExerciseMode) { return "美式"; } else if ("European" === rowObject.ExerciseMode || "European" === rowObject.trade.ExerciseMode) { return "欧式"; } } function percentFormat(cellValue, options, rowObject) { return cellValue ? (cellValue * 100).toFixed(2) + "%" : "0.00%"; } function doubleFormat(cellValue, options, rowObject) { return cellValue ? cellValue.toFixed(2) : "0.00"; } function unwindNotionalFormat(cellValue, options, rowObject) { return rowObject.trade_cash.Action === "系统操作-行权费" ? rowObject.trade_cash.Notional || 0 : rowObject.trade_cash.UnwindNotional; } function tradeStatusFormat(cellValue, options, rowObject) { return rowObject.trade_cash.Action === "系统操作-行权费" ? rowObject.trade.TradeStatus : "已平仓"; } function strikeFormat(cellValue, options, rowObject) { return rowObject.trade.IsMoneynessOptionData ? numeral(rowObject.trade.InitialSpotPrice * (rowObject.trade.Strike || 0)).format("0,0.00") : numeral(rowObject.trade.Strike || 0).format("0,0.0"); } //实现盈亏包含 了结数量的权利金,需要将其计算进去 function amountFormat(cellValue, options, rowObject) { return numeral(rowObject.trade_cash.Action === "系统操作-行权费" ? -rowObject.trade_cash.Amount + rowObject.trade.TradePrice * rowObject.trade_cash.UnwindPercentRate * (rowObject.trade.BuySell === "卖出" ? -1 : 1) : -rowObject.trade_cash.Amount + rowObject.trade.TradePrice * rowObject.trade_cash.UnwindPercentRate * (rowObject.trade.BuySell === "卖出" ? -1 : 1)).format("0,0.00"); } function rowclick(id) { } function reloadTradeMarketReport() { //重新加载 SearchClick(true); } function SearchClick(isSearchclick) { SearchClientBalance(); } function SearchClientBalance() { var param = {}; //param.JmsID = g_gmsid; param.ClientId = $("#ClientId").val(); param.ValueDate = $("#ValueDate").val(); //相当于ValueDateEnd param.ValueDateStart = $("#ValueDateFrom").val(); param.ValueDateEnd = param.ValueDate; param.IsClientBalanceGap = false; param.IsGetOuterMarginGap = false; if ($("#ParentFlag").prop("checked")) param.ParentFlag = true; else param.ParentFlag = false; $("#WorstCastClientPayable").prop("disabled", "true"); $("#PayableFund").prop("disabled", "true"); switch ($("#ShownType").val()) { case "default": $("#WorstCastClientPayable").prop("disabled", ""); $("#PayableFund").prop("disabled", ""); break; case "ClientBalanceGap": param.IsClientBalanceGap = true; break; case "GetOuterMargin": param.IsGetOuterMarginGap = true; break; default: $("#WorstCastClientPayable").prop("disabled", ""); $("#PayableFund").prop("disabled", ""); break; } if (!param.ValueDateStart) { // param.ValueDateStart = param.ValueDate; } if (!param.ClientId || param.ClientId === 'null') { main.message("请选择要查看报告的客户名称!"); return; } if (!param.ValueDate || param.ValueDate === 'null') { main.message("请选择要查看报告的结束日期!"); return; } if ($("#ValueDate").val() > page.ValueDate) { main.message("结束日期不能大于当前系统日期!"); return; } if ($("#ValueDate").val() < $("#ValueDateFrom").val()) { main.message("起始日期不能大于结束日期!"); return; } if (isXiangYu) { if ($("#ValueDate").val() < page.ValueDate) { $("#FundThreshold").prop("disabled", "true"); } else { $("#FundThreshold").prop("disabled", ""); } } main.post("/trade_span/GetClientLatestBalance", { clientId: $("#ClientId").val(), ValueDateFrom: param.ValueDateStart, ValueDateTo: param.ValueDateEnd, IsClientBalanceGap: param.IsClientBalanceGap, IsGetOuterMarginGap: param.IsGetOuterMarginGap, ParentFlag: param.ParentFlag }).done(function (data) { $("#LastDayRemainFund").text(numFormart(data.LastDayRemainFund)); $("#CashInCashOutChange").text(numFormart(data.NetFund)); $("#CashInChange").text(numFormart(data.InFund)); $("#CashOutChange").text(numFormart(data.OutFund)); $("#OptionPremium").text(numFormart(data.OptionPremium));//成交支出 $("#OptionPremiumSwap").text(numFormart(data.OptionPremiumSwap)); $("#OtherFund").text(numFormart(data.OtherFund)); $("#SettlementBalance").text(numFormart(data.SettlementBalance));//了解支出 $("#Coupon").text(numFormart(data.Coupon)); $("#SwapBalance").text(numFormart(data.SwapBalance)); $("#OptionPremiumAndUnwindBalance").text(numFormart(data.OptionPremiumAndUnwindBalanceTotal)); $("#ExerciseBalance").text(numFormart(data.ExerciseBalance)); $("#ToDayRemainFund").text(numFormart(data.AmountFund)); $("#TodayRemianFundProduct").text(numFormart(data.GuaranteesTotalAmount)); $("#WorstCastClientPayable").text(numFormart(data.MinusPayableMarginTotal)); $("#WorstCastClientPayable").val(numFormart(data.MinusPayableMarginTotal)); $("#PositionPremium").text(numFormart(-data.PositionPremiumNetCash)); $("#EndDesirableFund").text(numFormart(data.EndDesirableFund)); if (data.IsPayableMarginManual || data.ClientBalanceGap) { $("#WorstCastClientPayable").css("border-color", "red"); } else { $("#WorstCastClientPayable").css("border-color", "initial"); } if (data.IsPayableMarginLock && canUpdatePayableMargin) { $("#unlock").show(); } else { $("#unlock").hide(); } $("#TotalMargin").text(numFormart(data.TotalMarginTotal)); $("#Credit").text(numFormart(data.TotalCredit)); $("#WinLoss").text(numFormart(data.WinLoss)); $("#PositionPremiumNetCash").text(numFormart(data.PositionPremiumNetCash)); $("#Pv").text(numFormart(isPvRounded ? data.RoundedPositionPv : data.PositionPv)); $("#PositionPnl").text(numFormart(isPvRounded ? data.RoundedPositionPnl : data.PositionPnl)); $("#PrepaymentAmount").text(numFormart(data.PrepaymentAmount)); $("#Amount").text(numFormart(isPvRounded ? data.RoundedTotalAmountTotal : data.TotalAmountTotal)); $("#Margin").text(numFormart(data.MarginByPayableMarginTotal)); $("#ClosedTradePayableFund").text(numFormart(data.ClosedTradePayableFundTotal)); $("#PositionTradePayableFund").text(numFormart(data.PositionTradePayableFundTotal)); if (isGuoTou) { $("#ToEndBalance").text(numFormart(data.ToEndBalance)); $("#WinLossSum").text(numFormart(data.WinLossSum)); $("#AmountFundWithPositionPnl").text(numFormart(data.AmountFundWithPositionPnl)); $("#OptionPremiumAndSwapSum").text(numFormart(data.OptionPremiumAndSwapSum)); } if (isRunHe) { //东证界面上没有这个,追保用追保金额计算 $("#PayableFund").val(numFormart(data.MarginByPayableMarginTotal)); //东证有授信占用 $("#CreditOccupy").text(numFormart(Math.min(data.TotalCredit, Math.max(data.MinusPayableMarginTotal - data.AmountFund, 0)))); $("#AvailableFund").text(numFormart(data.AvailableAmount + data.TotalCredit)); $("#DesirableFund").text(numFormart(Math.max(data.AvailableAmount, 0))); } else { $("#PayableFund").val(numFormart(data.PayableFundTotal)); $("#AvailableFund").text(numFormart(data.AvailableAmount)); $("#DesirableFund").text(numFormart(data.DesirableFundTotal)); } $("#SellTradePrice").text(numFormart(data.SellTradePrice)); $("#ClientSellPositionPnl").text(numFormart(data.ClientSellPositionPnl)); $("#TotalNetSettlement").text(numFormart(data.TotalNetSettlementTotal)); $("#IsTradeCredit").val(data.IsTradeCredit); $("#TotalCredit").val(data.TotalCredit); $("#MarginBalance").val(data.MarginBalance); $("#FrozenMarginMoney").val(data.FrozenMarginMoney); $("#FrozenRedeemFunds").val(numFormart(data.FrozenRedeemFunds)); $("#FundThreshold").val(data.FundThreshold); if (!data.IsLatestDate) { $("#latestDataTip").show(); } else { $("#latestDataTip").hide(); } //定制需求 #TRS-ZS-144 每日估值报告字段调整 if (ylotc.Company == '浙商') { //保证金占用- 浙商 经过沟通,取值沿用-预付金占用 $("#NoccupyMargin").text(numFormart(data.MinusPayableMarginTotal)); //期末结存 = 期初结存+出金入金+已实现盈亏+其他收支 (经过产品沟通,取原理的期末结存值,描述不变更) $("#ToDayRemainFund").text(numFormart(data.AmountFund)); //可用资金=期末结存-保证金占用; $("#AvailableFund").text(numFormart(data.AmountFund - data.MinusPayableMarginTotal)); //可取资金 = 期末结存 - 持仓亏损 - 保证金占用; 产品沟通调整:可取资金=期末结存-保证金占用+ Min(0,持仓盈亏) $("#Margin").text(numFormart(data.AmountFund - data.MinusPayableMarginTotal + Math.min(0, isPvRounded ? data.RoundedPositionPnl : data.PositionPnl))); //总资产=期末结存+持仓市值 ; $("#Amount").text(numFormart(isPvRounded ? data.RoundedPositionPv + data.AmountFund : data.PositionPv + data.AmountFund)); } }); var data = { clientId: $("#ClientId").val(), ValueDateFrom: $("#ValueDateFrom").val(), ValueDateTo: $("#ValueDate").val() }; main.post("/trade_span/GetPositionAndHistoryTotalNumber", data, { waitMe: false }).done(function (data) { $("#positionTab").attr("title", data.PostionListNumber); $("#historyTab").attr("title", data.HistoryListNumber); $("#positionSwapTab").attr("title", data.PositionSwapListNumber); $("#historySwapTab").attr("title", data.HistorySwapListNumber); }); } function numFormart(num) { num = num || 0; var result = numeral(num).format("0,0.00") === "NaN" ? "0.00" : numeral(num).format("0,0.00"); if (result === "-0.00") { result = "0.00"; } return result; } function PopDesc() { main.open("配置报告", "/clientbalance/TradeMarketDescSet", { area: ['65%', '75%'] }); } function SendReport() { var param = {}; var clientName = $("#ClientId :selected").text(); param.ClientId = $("#ClientId").val(); param.ValueDate = $("#ValueDate").val(); if (!param.ClientId || param.ClientId === 'null') { main.message("请选择要查看报告的客户名称!"); return; } if (!param.ValueDate || param.ValueDate === 'null') { main.message("请选择要查看报告的结束日期!"); return; } if ($("#ParentFlag").prop("checked")) param.ParentFlag = true; else param.ParentFlag = false; if ($("#ValueDate").val() > page.ValueDate) { main.message("结束日期不能大于当前系统日期!"); return; } if ($("#ValueDate").val() < $("#ValueDateFrom").val()) { main.message("起始日期不能大于结束日期!"); return; } if (isShenWan) { main.post("/clientbalance/GenerateTradeMarketBill2", screenData()); } else { var payablemargin = numeral($("#WorstCastClientPayable").val()).format("0.00"); //湘财 追保金额 if (isXiangCai) { payablemargin = numeral($("#Margin").text()).format("0.00"); } main.open("向{0}发送报告".template(clientName), "/clientbalance/TradeMarketClientSend?clientid=" + param.ClientId + "&payablemargin=" + payablemargin + "&payableFund=" + numeral($("#PayableFund").val()).format("0.00") + "&reportType=" + $("#ShownType").val() + "&ParentFlag=" + param.ParentFlag, { area: ['65%', '95%'] }); } } function DownLoadReport() { var param = {}; var clientName = $("#ClientId :selected").text(); param.ClientId = $("#ClientId").val(); param.ValueDate = $("#ValueDate").val(); if (!param.ClientId || param.ClientId === 'null') { main.message("请选择要查看报告的客户名称!"); return; } if (!param.ValueDate || param.ValueDate === 'null') { main.message("请选择要查看报告的结束日期!"); return; } if ($("#ValueDate").val() > page.ValueDate) { main.message("结束日期不能大于当前系统日期!"); return; } if ($("#ValueDate").val() < $("#ValueDateFrom").val()) { main.message("起始日期不能大于结束日期!"); return; } main.post("/clientbalance/ViewTradeMarketFile", screenData()).done(function (res) { window.open(res.obj); }); } function screenData() { var data = { From: $("#ValueDateFrom").val(), To: $("#ValueDate").val() }; data.ClientId = $("#ClientId").val(); if ($("#ParentFlag").prop("checked")) data.ParentFlag = true; else data.ParentFlag = false; return data; } function locationChange(tab) { let val = $("#ClientId").val(); var ParentFlag = false; if (!val || val === 'null') { main.message("请选择要查看报告的客户名称!"); return; } if ($("#ValueDate").val() > page.ValueDate) { main.message("结束日期不能大于当前系统日期!"); return; } if ($("#ValueDate").val() < $("#ValueDateFrom").val()) { main.message("起始日期不能大于结束日期!"); return; } if ($("#ParentFlag").prop("checked")) ParentFlag = true; else ParentFlag = false; window.location.href = tab + "?clientId=" + $("#ClientId").val() + "&startTime=" + $("#ValueDateFrom").val() + "&endTime=" + $("#ValueDate").val() + "&ParentFlag=" + ParentFlag; return; } function unlockPayableMarginManual() { var clientName = $("#ClientId :selected").text(); if (!clientName) { main.alert("请先选择客户信息"); return; } main.confirm("确定解锁{0}在{1}的预付金占用吗?".template(clientName, $("#ValueDate").val()), function () { var pData = { ClientId: $("#ClientId").val(), ValueDate: $("#ValueDate").val() }; main.post("/client_span/unlockWorstCastClientPayable", pData).done(function (res) { $("#unlock").hide(); }); }); } function Upload() { $("#modalFileUpload").modal('show'); $("#Content").width("680px") } function uploadOuterData(Ismargin) { if (!$("#uploadfile").get(0).value.length) { main.alert("请选择要上传的文件!"); return; } var fd = new FormData(); /*上传的文件file*/ fd.append("file", $("#uploadfile").get(0).files[0]); fd.append("IsMargin", Ismargin); $.ajax({ url: "/clientbalance/ImportClientBalanceGap", type: "POST", processData: false, contentType: false, data: fd, success: function (res) { if (!res.success) { main.alert(res.msg); } else { $("#modalFileUpload").modal('hide'); main.message(res.msg); } }, beforeSend(jqXHR) { main.waitMe(true); }, complete(jqXHR, textStatus) { main.waitMe(false); } }); } function downloadOuterDataTemplate() { window.open("../App_Docs/导入模板/结算财务账户状况导入模板.xlsx"); } function downloadOuterMarginTemplate() { window.open("../App_Docs/导入模板/结算财务外部预付金导入模板.xlsx"); } function onkeyupMargin(value) { var clientId = parseInt($("#ClientId").val()); var client = clients.find(y => y.id === clientId); if (client && client.MarginOptionType == 1) { return value.replace(/[^-0-9.]/g, ''); } else { return value.replace(/[^0-9.]/g, ''); } } function onblurMargin(value) { var clientId = parseInt($("#ClientId").val()); var client = clients.find(y => y.id === clientId); if (client && client.MarginOptionType == 1) { return /^(0|[-1-9]\d*)(\.\d*)?$/.test(dateVal) ? value : ''; } else { return /^(0|[1-9]\d*)(\.\d*)?$/.test(dateVal) ? value : ''; } }