Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/client/tradeMarketReport.js
T
2024-06-20 15:45:22 +08:00

604 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 = "<a href=\"javascript:void(0)\" title=\"查看客户文件\" onclick='main.open(\"客户文件\",\"{1}\")'>{0}</a>".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 : '';
}
}