Files
zszq-trs/YLErpWeb/Views/clientbalance/TradeMarketReport_BalanceStatement.cshtml
T

606 lines
24 KiB
Plaintext

@{
ViewBag.Title = "每日估值报告";
ViewBag.Menu = "结算财务-每日估值报告";
Layout = "~/Views/Shared/_MainLayout.cshtml";
}
@section CSS{
<link href="~/Style/Css/TradeMarketReport.css" rel="stylesheet" />
<style>
.ui-jqgrid tr.footrow td[aria-describedby="listGrid_Direction"] {
color: red;
}
#ValueDateFrom, #ValueDate {
width: 152px !important;
font-size: 1rem !important;
}
.ui-jqgrid {
margin: 0 !important;
}
</style>
}
@section JS{
<script>
const calcDate = "@valuedateBLL.ValueDate.ToString("yyyy-MM-dd")";
</script>
<script type="text/javascript">
var isShenWan = "@YLErp.PS.Config.Is申万" == "True";
var g_grid = {};
$(function () {
var PostData = {};
//控件选择时的触发事件
main.setTradeDatePicker("", "#ValueDate", calcDate, function (selectedDate) {
if (selectedDate != null && selectedDate != undefined) {
$("#ValueDateFrom").datepicker("option", "maxDate", selectedDate);
}
});
main.setTradeDatePicker("", "#ValueDateFrom", calcDate, function (selectedDate) {
if (selectedDate != null && selectedDate != undefined) {
$("#ValueDate").datepicker("option", "minDate", selectedDate);
}
});
//手动修改时的触发事件
$("#ValueDate").change(function () {
$("#ValueDateFrom").datepicker("option", "maxDate", $("#ValueDate").val());
});
$("#ValueDateFrom").change(function () {
$("#ValueDate").datepicker("option", "minDate", $("#ValueDateFrom").val());
});
//默认初始值赋值逻辑
if ("@ViewBag.EndTime" == "" || "@ViewBag.EndTime" == "undefined") {
$("#ValueDate").val(calcDate);
} else {
$("#ValueDate").val("@ViewBag.EndTime");
}
if (("@ViewBag.StartTime" == "" || "@ViewBag.StartTime" == "undefined") && ("@ViewBag.EndTime" == "" || "@ViewBag.EndTime" == "undefined")) {
} else {
$("#ValueDateFrom").val("@ViewBag.StartTime");
}
if ("@ViewBag.ParentFlag" == "True")
$("#ParentFlag").attr("checked", true);
else
$("#ParentFlag").attr("checked", false);
var PostData = {};
PostData.HappenDateStart = $("#ValueDateFrom").val();
PostData.HappenDateEnd = $("#ValueDate").val();
PostData.ClientId = $("#ClientId").val();
if ($("#ParentFlag").prop("checked"))
PostData.ParentFlag = true;
else
PostData.ParentFlag = false;
var grid = jQuery('#listGrid').jqGrid({
url: '/entryexit/ExecutedCashList',
datatype: 'json',
height: 'auto',
width: '96%',
autowidth: false,
shrinkToFit: false,
viewrecords: true,
multiselect: true,
jsonReader: { repeatitems: false },
caption: '',
mtype: 'POST',
postData: PostData,
afterInsertRow: AfterInsertRow,
onSelectRow: rowclick,
onSelectAll: allRowSelect,
ondblClickRow: rowdblclick,
colModel: colModelGrid,
pager: jQuery('#pagerGrid'),
pagerpos: 'left',
rowNum: 20,
rowList: [20, 30, 50, 200, 10000],
footerrow: true,
loadComplete: gridComplete,
onPaging: onJqgridPaging,
grouping: true
});
g_grid = jQuery('#listGrid');
main.post("/trade_span/GetPositionAndHistoryTotalNumber", { clientId: $("#ClientId").val(), ValueDateFrom: $("#ValueDateFrom").val(), ValueDateTo: $("#ValueDate").val() }).done(function (data) {
$("#positionTab").attr("title", data.PostionListNumber);
$("#historyTab").attr("title", data.HistoryListNumber);
$("#positionSwapTab").attr("title", data.PositionSwapListNumber);
$("#historySwapTab").attr("title", data.HistorySwapListNumber);
});
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 showTradeNumber(cellValue, options, rowObject) {
if (cellValue == "合计:") {
return cellValue;
}
//console.log(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;
}
var colModelGrid = [
{
name: 'id',
label: 'id',
index: 'id',
width: 1,
align: 'center',
sortable: false,
hidden: true
}, {
name: 'EncryptId',
label: 'EncryptId',
index: 'EncryptId',
width: 0,
align: 'center',
sortable: false,
hidden: true
}, {
name: 'HappenDate',
label: '发生时间',
index: 'HappenDate',
width: 150,
align: 'center',
sortable: false,
formatter: 'datetime'
}, {
name: 'Direction',
label: '收支方向',
index: 'Direction',
width: 150,
sortable: false,
align: 'center',
formatter: directionType
}, {
name: 'MoneyInOut',
label: '出入金',
index: 'MoneyInOut',
width: 150,
sortable: false,
align: 'right',
formatter: moneyInOutFormat
}, {
name: 'MoneyPrice',
label: '权利金/开仓费用',
index: 'MoneyPrice',
width: 150,
sortable: false,
align: 'right',
formatter: moneyTradeFormat
}, {
name: 'MoneyUnwindExer',
label: '平仓行权',
index: 'MoneyUnwindExer',
width: 150,
sortable: false,
align: 'right',
formatter: moneyTradeFormat
}, {
name: 'MoneyCoupon',
label: '票息',
index: 'MoneyCoupon',
width: 150,
sortable: false,
align: 'right',
formatter: moneyTradeFormat
}, {
name: 'MoneyOther',
label: '其他',
index: 'MoneyOther',
width: 150,
sortable: false,
align: 'right',
formatter: moneyOtherFormat
}, {
name: 'TradeNumber',
label: '相关交易',
index: 'TradeNumber',
width: 150,
sortable: false,
align: 'center',
formatter: tradeNumberFormat
}, {
name: 'OptName',
label: '执行人',
index: 'OptName',
width: 90,
sortable: false,
align: 'center'
}, {
name: 'Comments',
label: '备注',
index: 'Comments',
width: 150,
sortable: false,
align: 'center'
}
];
colModelGrid.push({
name: 'EncryptTradeId',
hidden: true,
optionHide: true
});
function gridComplete() {
var jgrid = $(this);
var rowNum = parseInt(jgrid.getGridParam('records'), 10);
if (rowNum > 0) {
$(".ui-jqgrid-sdiv").show();
var moneySum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneySum;
var moneyInOutSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyInOutSum;
var moneyPriceSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyPriceSum;
var moneyUnwindExerSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyUnwindExerSum;
var moneyCouponSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyCouponSum;
var moneyOtherSum = arguments[0].Sum == null ? "" : arguments[0].Sum.MoneyOtherSum;
jgrid.footerData("set", { HappenDate: "合计:", Direction: main.toNumberExcludingNaN(moneySum), MoneyInOut: moneyInOutSum, MoneyPrice: moneyPriceSum, MoneyUnwindExer: moneyUnwindExerSum, MoneyCoupon: moneyCouponSum, MoneyOther: moneyOtherSum });
} else {
$(".ui-jqgrid-sdiv").hide();
}
$(window).off('resize.jqGrid');
}
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 starttradeView(id, tradeType) {
if (tradeType.indexOf("收益互换") >= 0) {
main.open("查看交易", "/swaptrade2/tradeView/?enid=" + id + "&isOnlyCloseButton=true", { area: ['90%', '90%'] });
} else {
let srcurl = "/trade/tradeView/?fromZiJinMingXi=1&isOnlyCloseButton=true&enid=" + id;
main.open("查看交易(机构方向)", srcurl, { area: ['1260px', '100%'], scrollbar: false });
}
}
function tradeNumberFormat(cellValue, options, rowObject) {
return `<a href="javascript:void(0)" style="text-decoration:underline" onclick="starttradeView('${rowObject.EncryptTradeId}','${rowObject.TradeType}')">${cellValue}</a>`;
}
function moneyInOutFormat(cellValue, options, rowObject) {
var result = "";
if (rowObject.Direction == "出金") {
result = numeral(-1 * rowObject.Money).format("0,0.00");
}
else if (rowObject.Direction == "入金") {
result = numeral(rowObject.Money).format("0,0.00");
}
else {
result = numeral(cellValue).format("0,0.00");
}
return result == "NaN" || result == "0.00" ? "" : result;
}
function moneyTradeFormat(cellValue, options, rowObject) {
var result = "";
result = numeral(cellValue).format("0,0.000");
return result == "NaN" || result == "0.000" ? "" : result;
}
function moneyOtherFormat(cellValue, options, rowObject) {
var result = numeral(cellValue).format("0,0.00");
return result == "NaN" || result == "0.00" ? "" : result;
}
function directionType(cellValue, options, rowObject) {
if (rowObject.CashFlag == 21) {
return "调入";
}
if (rowObject.CashFlag == 121) {
return "调出";
}
if (cellValue == "入金" || cellValue == "其他收入") {
return "收入";
}
else if (cellValue == "出金" || cellValue == "其他支出") {
return "支出";
}
else if (rowObject.Action == "系统操作-期权费" || rowObject.Action == "系统操作-平仓费" || rowObject.Action == "系统操作-行权费" || rowObject.Action == "系统操作-票息" || rowObject.Action == "系统操作-互换" || rowObject.Action == "系统操作-应付预付金" || rowObject.Action == "系统操作-预付金返息" || rowObject.Action == "系统操作-追加保证金") {
if (rowObject.Money < 0) {
return "支出";
}
else {
return "收入";
}
}
else {
return cellValue;
}
}
function percentFormat(cellValue, options, rowObject) {
return cellValue == null || cellValue == undefined ? "0.00%" : (cellValue * 100).toFixed(2) + "%"
}
function doubleFormat(cellValue, options, rowObject) {
return cellValue == null || cellValue == undefined ? "0.00" : cellValue.toFixed(2);
}
function unwindNotionalFormat(cellValue, options, rowObject) {
return rowObject.trade_cash.Action == "系统操作-行权费" ? (rowObject.trade_cash.Notional == null || rowObject.trade_cash.Notional == undefined ? 0 : rowObject.trade_cash.Notional) : 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 == undefined || rowObject.trade.Strike == null ? 0 : rowObject.trade.Strike)).format("0,0.00") : numeral(rowObject.trade.Strike == undefined || rowObject.trade.Strike == null ? 0 : rowObject.trade.Strike).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 setFooter() {
var rowObjs = main.GetGridObjs($("#listGrid"));
var moneySum = 0;
var moneyInOutSum = 0;
var moneyPriceSum = 0;
var moneyUnwindExerSum = 0;
var moneyCouponSum = 0;
var moneySwapSum = 0;
var moneyOtherSum = 0;
var moneySwapMarginSum = 0;
rowObjs.forEach(obj => {
moneyInOutSum += numeral(obj.MoneyInOut).value();
moneyPriceSum += numeral(obj.MoneyPrice).value();
moneyUnwindExerSum += numeral(obj.MoneyUnwindExer).value();
moneyCouponSum += numeral(obj.MoneyCoupon).value();
moneySwapSum += numeral(obj.MoneySwap).value();
moneyOtherSum += numeral(obj.MoneyOther).value();
moneySwapMarginSum += numeral(obj.MoneySwapMarginSum).value();
});
moneySum = moneyInOutSum + moneyPriceSum + moneyUnwindExerSum + moneyCouponSum + moneySwapSum + moneyOtherSum + moneySwapMarginSum;
$("#listGrid").footerData("set", { HappenDate: "合计:", Direction: main.toNumberExcludingNaN(moneySum), MoneyInOut: moneyInOutSum, MoneyPrice: moneyPriceSum, MoneyUnwindExer: moneyUnwindExerSum, MoneyCoupon: moneyCouponSum, MoneySwap: moneySwapSum, MoneyOther: moneyOtherSum, MoneySwapMarginSum: moneySwapMarginSum });
}
function rowclick(id) {
setFooter();
}
function allRowSelect(rowids, status) {
setFooter();
}
function reloadTradeMarketReport() {
//重新加载
SearchClick(true);
}
function SearchTable(isSearchclick) {
//搜索资金流水
searchentryexit(isSearchclick);
}
//搜索资金流水
function searchentryexit(isSearchclick) {
var listGrid = $('#listGrid');
listGrid.appendPostData({ HappenDateStart: $("#ValueDateFrom").val() });
listGrid.appendPostData({ HappenDateEnd: $("#ValueDate").val() });
listGrid.appendPostData({ ClientId: $("#ClientId").val() });
if ($("#ParentFlag").prop("checked"))
listGrid.appendPostData({ ParentFlag: true });
else
listGrid.appendPostData({ ParentFlag: false });
if ($("#ValueDate").val() == "" ||
$("#ValueDate").val() == undefined ||
$("#ValueDate").val() == null) {
main.message("请选择要查看报告的结束日期!");
return;
}
if ($("#ValueDate").val() > calcDate) {
main.message("结束日期不能大于当前系统日期!");
return;
}
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
main.message("起始日期不能大于结束日期!");
return;
}
if (typeof (isSearchclick) != "undefined" && isSearchclick) {
//点击搜索时默认第一页
listGrid.jqGrid('setGridParam',
{
page: 1
});
}
listGrid.trigger('reloadGrid');
main.post("/trade_span/GetPositionAndHistoryTotalNumber", { clientId: $("#ClientId").val(), ValueDateFrom: $("#ValueDateFrom").val(), ValueDateTo: $("#ValueDate").val() }).done(function (data) {
$("#positionTab").attr("title", data.PostionListNumber);
$("#historyTab").attr("title", data.HistoryListNumber);
$("#positionSwapTab").attr("title", data.PositionSwapListNumber);
$("#historySwapTab").attr("title", data.HistorySwapListNumber);
});
}
function SearchClick(isSearchclick) {
SearchTable(isSearchclick);
}
function numFormart(num) {
if (num == undefined || num == null) {
num = "0.00"
}
return numeral(num).format("0,0.00");
}
function PopDesc() {
main.open("配置报告", "/clientbalance/TradeMarketDescSet");
}
function SendReport() {
var param = {};
var clientName = $("#ClientId :selected").text();
param.ClientId = $("#ClientId").val();
param.ValueDate = $("#ValueDate").val();
if (param.ClientId === "" ||
param.ClientId == undefined ||
param.ClientId == null ||
param.ClientId === 'null') {
main.message("请选择要查看报告的客户名称!");
return;
}
if (param.ValueDate === "" ||
param.ValueDate == undefined ||
param.ValueDate == null ||
param.ValueDate === 'null') {
main.message("请选择要查看报告的结束日期!");
return;
}
if ($("#ParentFlag").prop("checked"))
param.ParentFlag = true;
else
param.ParentFlag = false;
if ($("#ValueDate").val() > calcDate) {
main.message("结束日期不能大于当前系统日期!");
return;
}
if ($("#ValueDate").val() < $("#ValueDateFrom").val()) {
main.message("起始日期不能大于结束日期!");
return;
}
if (isShenWan) {
main.post("/clientbalance/GenerateTradeMarketBill2", screenData());
}
else {
main.open("向{0}发送报告".template(clientName), "/clientbalance/TradeMarketClientSend?clientid=" + param.ClientId + "&ParentFlag=" + param.ParentFlag);
}
}
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() > calcDate) {
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) {
if ($("#ValueDate").val() > calcDate) {
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;
}
</script>
}
<div class="searchdiv">
@Html.MyAceDropdownInput("ClientId", "客户名称", ClientDataModel.GetAllClient(), false, true, null, false)
@Html.CheckBox("ParentFlag", false) @Html.Label(null,"包含子级", new { @style = "font-size:12px;" })
@Html.ShortInput("ValueDateFrom", "起始日期:")
@Html.ShortInput("ValueDate", "结束日期:")
@MyControls.SearchBtn()
@if (CurUser.结算管理_每日估值报告邮件发送)
{
@MyControls.Btn("配置报告", "PopDesc()")
@MyControls.Btn("发送报告", "SendReport()")
}
</div>
<br />
<fieldset id="fieldsetgbox_listGrid" style="margin-bottom: 20px;">
<div class="tabbable">
<ul id="myTab" class="nav nav-tabs nav-main">
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport")'>账户状况</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/swaptrade2/TradeMarketReport_EodPosition")' id="positionTab">互换估值</a>
</li>
<li class="nav-item">
<a class="nav-link" onclick='locationChange("/clientbalance/TradeMarketReport_HistoricalPositionSwapFlow")' id="historySwapTab">互换交易流水</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#">资金明细</a>
</li>
</ul>
</div>
<div id="tableContent" class="yc-panel my-0 p-0">
@Html.Raw(JqGridSimple.OutTable())
</div>
</fieldset>
<fieldset id="fieldsetgbox_listGrid" class="ml-3">
<span style="color:gray">
@Html.Raw(DBCacheManager.Single.GetStr(CacheTable.DingShiDesc))
</span>
</fieldset>