BugFix 平仓互换平仓,导致页面的分红不对
This commit is contained in:
@@ -102,7 +102,7 @@ namespace YLErp.Web.Controllers
|
||||
decimal consumedDividend = 0;
|
||||
if (tradeId.HasValue)
|
||||
{
|
||||
List<int> swapEventTypes = new List<int>() { (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换 };
|
||||
List<int> swapEventTypes = new List<int>() { (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换,(int)SwapEventTypeEnum.平仓 };
|
||||
consumedDividend = yldb.swap_flow_event
|
||||
.Where(x => x.SwapTradeId == tradeId.Value
|
||||
&& swapEventTypes.Contains(x.EventType)
|
||||
|
||||
@@ -194,8 +194,8 @@ const vue = new Vue({
|
||||
let floatRatio = this.floatPosition.PayDirection == 1 ? 1 : -1;
|
||||
var postData = { startDate: thisObj.TradeStartDate, endDate: thisObj.deal.UnwindDate, underlyingCode: thisObj.floatPosition.UnderlyingCode, tradeId: thisObj.deal.SwapTradeId, unwindDate: thisObj.deal.UnwindDate }
|
||||
main.post("/BondPayment/GetBondPayMentInterest", postData, { async: false }).done(function (resp) {
|
||||
let totalDividend = parseFloat(thisObj.deal.PositionQty) * resp.obj.totalInterest * ratio * floatRatio;
|
||||
let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio;
|
||||
let totalDividend = parseFloat(thisObj.deal.NotionalQty) * resp.obj.totalInterest * ratio * floatRatio;//总的
|
||||
let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio;//已实现的
|
||||
// 互换是全量消费,consumedDividend>0 表示分红已被当天互换消费,归0
|
||||
thisObj.floatPosition.DividendIn = Math.abs(consumedDividend) > 0 ? parseFloat((totalDividend - consumedDividend).toFixed(2)) : parseFloat(totalDividend.toFixed(2));
|
||||
thisObj.floatPosition.DividendPending = 0;
|
||||
|
||||
@@ -280,13 +280,18 @@ const vue = new Vue({
|
||||
let floatRatio = this.floatPosition.PayDirection == 1 ? 1 : -1;
|
||||
var postData = { startDate: thisObj.TradeStartDate, endDate: thisObj.deal.UnwindDate, underlyingCode: thisObj.floatPosition.UnderlyingCode, tradeId: thisObj.deal.SwapTradeId, unwindDate: thisObj.deal.UnwindDate }
|
||||
main.post("/BondPayment/GetBondPayMentInterest", postData, { async: false }).done(function (resp) {
|
||||
let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0));//保持和totalInterest同向
|
||||
let consumedDividendInterest = consumedDividend / parseFloat(thisObj.deal.NotionalQty)
|
||||
let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio;//已实现的
|
||||
let totalDividend = parseFloat(thisObj.deal.NotionalQty) * resp.obj.totalInterest * ratio * floatRatio;
|
||||
let remainDividend = totalDividend - consumedDividend;
|
||||
let dividendIn = 0;
|
||||
if (remainDividend != 0) {
|
||||
dividendIn = parseFloat(thisObj.deal.CloseQty) / parseFloat(thisObj.floatPosition.Quantity) * remainDividend
|
||||
}
|
||||
// 这里计算已经分红的利息,从totalInterest里扣除
|
||||
let totalDividend = parseFloat(thisObj.deal.CloseQty) * (resp.obj.totalInterest - consumedDividendInterest) * ratio * floatRatio;
|
||||
|
||||
// 互换是全量消费,consumedDividend>0 表示分红已被当天互换消费,归0
|
||||
// 现在可能做了纯分红的互换结算,所以不能直接归0
|
||||
thisObj.floatPosition.DividendIn = parseFloat(totalDividend.toFixed(2));
|
||||
thisObj.floatPosition.DividendIn = parseFloat(dividendIn.toFixed(2));
|
||||
var posiQty = parseFloat(thisObj.floatPosition.Quantity) - parseFloat(thisObj.deal.CloseQty);
|
||||
thisObj.floatPosition.DividendPending = parseFloat((posiQty * resp.obj.totalInterest * ratio * floatRatio).toFixed(2));
|
||||
thisObj.calcFloatClosePnl();
|
||||
|
||||
Reference in New Issue
Block a user