diff --git a/Framework/YLErp.Core/Models/ClientSettleBalance.cs b/Framework/YLErp.Core/Models/ClientSettleBalance.cs index ed79be8e..079a8454 100644 --- a/Framework/YLErp.Core/Models/ClientSettleBalance.cs +++ b/Framework/YLErp.Core/Models/ClientSettleBalance.cs @@ -797,41 +797,7 @@ namespace YLErp.Models /// /// 可取资金 (可用资金 - 持仓期权费净额) /// - public double DesirableFund - { - get - { - if (PS.Config.Is申万 || PS.Config.Is宏源) - { - return Math.Max(AvailableAmount + FrozenRedeemFunds, 0); - } - else if (PS.Config.Is厦门象屿) - { - return Math.Max(AvailableAmount + FrozenRedeemFunds - Math.Max(FrozenBalance, 0) - Math.Max(-PositionPremiumNetCash, 0), 0); - } - else if (PS.Config.Is国投) - { - return Math.Max(AvailableAmount - TotalCredit, 0); - } - //伴兴 可用资金改为 可用资金=授信额度+期末结存-预付金占用 这里 -TotalCredit 是为了恢复系统默认算法 - else if (PS.Config.Is伴兴) - { - return Math.Max(AvailableAmount + FrozenRedeemFunds - Math.Max(-PositionPremiumNetCash, 0) - TotalCredit, 0); - } - else if (PS.Config.Is湘财) - { - return Math.Max(AvailableAmount + FrozenRedeemFunds - TotalCredit, 0); - } - else if (PS.Config.Is东吴) - { - return Math.Max(AmountFund + PayableMargin * DesirableRate, 0); - } - else - { - return Math.Max(AvailableAmount + FrozenRedeemFunds - Math.Max(-PositionPremiumNetCash, 0), 0); - } - } - } + public double DesirableFund { get; set; } /// /// 已了结部分可取资金 (期末结存_权利金后付) diff --git a/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs b/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs index 532da6ca..ac81a01d 100644 --- a/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs +++ b/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs @@ -228,7 +228,9 @@ namespace YLErp.BLL.EodSettlement } else { - data.AvailableAmount = data.AmountFund + data.TotalCredit + data.PayableMargin + data.GuaranteesTotalAmount; + //data.AvailableAmount = data.AmountFund + data.TotalCredit + data.PayableMargin + data.GuaranteesTotalAmount; + var AvailableMoney = data.AmountFund + data.TotalCredit + data.PayableMargin + data.GuaranteesTotalAmount; + data.AvailableAmount = AvailableMoney - data.FrozenMarginMoney; data.MinusPayableMarginTotal = data.MinusPayableMargin; data.MarginByPayableMarginTotal = data.MarginByPayableMargin; } diff --git a/YLErpDAL/BLL/EodSettlement/RealTimeClientBanlanceService.cs b/YLErpDAL/BLL/EodSettlement/RealTimeClientBanlanceService.cs index ad4cf13e..69fb450a 100644 --- a/YLErpDAL/BLL/EodSettlement/RealTimeClientBanlanceService.cs +++ b/YLErpDAL/BLL/EodSettlement/RealTimeClientBanlanceService.cs @@ -238,15 +238,7 @@ namespace YLErp.BLL.Eod #endregion item.ValueDate = calcDate; - if (clientFrozenFunds.TryGetValue(item.ClientId, out var clientFrozenFund)) - { - item.FreezePremium = clientFrozenFund.FrozenPayableOptionMoney; - item.ReceivablesPremium = clientFrozenFund.FrozenReceivableOptionMoney; - item.FrozenOutFund = clientFrozenFund.OutFunds; - item.FrozenRedeemFunds = clientFrozenFund.RedeemFunds; - //冻结预付金 - item.FrozenMarginMoney = clientFrozenFund.FrozenMarginMoney; - } + item.NetFund = item.InFund - item.OutFund; item.OtherFund = item.InFundOther + item.OutFundOther; //上日资金余额 @@ -256,68 +248,16 @@ namespace YLErp.BLL.Eod //当前账号资金 item.AmountFund = item.AmountFund + item.NetFund + item.OtherFund + item.Coupon + item.OptionPremium + item.OptionPremiumSwap + item.SwapBalance + item.SettlementBalance; - //当日可用资金 账户总资金 - 应付冻结权利金 - 冻结出金 - 冻结抵押品赎回 + 应收冻结权利金 - 应付预付金 - 冻结预付金 - item.AvailableAmount = item.AmountFund - item.FreezePremium - item.FrozenOutFund - item.FrozenRedeemFunds + - item.ReceivablesPremium + item.PayableMargin - item.FrozenMarginMoney; + item.AvailableAmount = item.AmountFund + item.TotalCredit + item.PayableMargin + item.GuaranteesTotalAmount + item.RoundedPositionPnl - item.FrozenMarginMoney; + item.DesirableFund = item.AvailableAmount; //预付金余额 item.MarginBalance = item.AmountFund - item.FreezePremium - item.FrozenOutFund - item.FrozenRedeemFunds + item.ReceivablesPremium + item.GuaranteesTotalAmount; - //判断潜在行权盈余是否计入预付金余额 - if (_systemDate.IsPotentialSurplusUseMargin == 1) - { - item.MarginBalance += item.PotentialSurpluses; - item.AvailableAmount += item.PotentialSurpluses; - } - //互换最大可用资金 - var marginBalanceSurplus = 0d; item.CreditCanApplySwap = clientDic.ContainsKey(clientId) ? clientDic[clientId].creditCanApplySwap : false; - //计算追保金额 - //是否期权费授信 - if (item.IsTradeCredit) - { - //授信是否可用于互换 - if (item.CreditCanApplySwap) - { - //期权费授信可以支付权利金 则预付金余额未0时 资金从 互换剔除互换容忍金额 - item.Margin = Math.Min(item.MarginBalance + item.TotalCredit + (item.PayableMargin - item.SwapUnMargin), 0); - } - else - { - //互换最大可用资金 - marginBalanceSurplus = Math.Max(Math.Min(Math.Max(item.MarginBalance - item.OptionPremiumSwap + item.TotalCredit + (item.PayableMargin - item.SwapPayableMargin), 0), Math.Max(item.MarginBalance - item.OptionPremiumSwap, 0)), 0); - - //收益互换追保金额 剩余可支付互换资金 - (互换占用预付金 - 互换容忍预付金额度) - var SwapMargin = Math.Min(marginBalanceSurplus + item.OptionPremiumSwap + (item.SwapPayableMargin - item.SwapUnMargin), 0); - - //计算期权追保 - item.Margin = Math.Min(item.MarginBalance - item.OptionPremiumSwap + item.TotalCredit + (item.PayableMargin - item.SwapPayableMargin), 0) + SwapMargin; - } - } - else - { - //授信是否可用于互换 - if (item.CreditCanApplySwap) - { - //期权费授信不可以支付权力金时 - item.Margin = Math.Min(Math.Max(item.MarginBalance, 0) + item.TotalCredit + (item.PayableMargin - item.SwapUnMargin), 0) + Math.Min(item.MarginBalance, 0); - } - else - { - //互换最大可用资金 - marginBalanceSurplus = Math.Max(Math.Min(Math.Max(Math.Max(item.MarginBalance - item.OptionPremiumSwap, 0) + item.TotalCredit + (item.PayableMargin - item.SwapUnMargin), 0), Math.Max(item.MarginBalance - item.OptionPremiumSwap, 0)), 0); - - //收益互换追保金额 剩余可支付互换资金 - (互换占用预付金 - 互换容忍预付金额度) - var SwapMargin = Math.Min(marginBalanceSurplus + item.OptionPremiumSwap + (item.SwapPayableMargin - item.SwapUnMargin), 0) + Math.Min(marginBalanceSurplus + item.OptionPremiumSwap, 0); - - //计算期权追保 - item.Margin = Math.Min(Math.Max(item.MarginBalance - item.OptionPremiumSwap, 0) + item.TotalCredit + (item.PayableMargin - item.SwapUnMargin), 0) + Math.Min(item.MarginBalance - item.OptionPremiumSwap, 0) + SwapMargin; - } - } - //可取预付金为预付金余额 - 应缴预付金(上浮 + 0.02) item.AdvisableMargin = Math.Max(item.MarginBalance + item.PayableMargin * marginMaxRation / marginRation, 0); @@ -1485,12 +1425,12 @@ namespace YLErp.BLL.Eod foreach (var itemGroup in flowGroup) { var balance = clientBalanceDic[itemGroup.Key.ClientId ?? 0]; - string marginType = balance.ClientType == 1 ? "多空组合" : "品种"; + //string marginType = balance.ClientType == 1 ? "多空组合" : "品种"; // 获取客户预付金比例设置 - var clientMarginTemplate = clientMarginTemplates.FirstOrDefault(x => x.ClientId == itemGroup.Key.ClientId && x.Type == marginType); + var clientMarginTemplate = clientMarginTemplates.FirstOrDefault(x => x.ClientId == itemGroup.Key.ClientId ); if (clientMarginTemplate == null) { - clientMarginTemplate = clientMarginTemplates.FirstOrDefault(x => x.ClientId == 0 && x.Type == marginType); + clientMarginTemplate = clientMarginTemplates.FirstOrDefault(x => x.ClientId == 0 ); } // 没有设置预付金比例则跳过 if (clientMarginTemplate == null) diff --git a/YLWinSer/RealTimeCalcPositionService/ClientNoDMABalanceTask.cs b/YLWinSer/RealTimeCalcPositionService/ClientNoDMABalanceTask.cs index 2d5e32b8..10262f01 100644 --- a/YLWinSer/RealTimeCalcPositionService/ClientNoDMABalanceTask.cs +++ b/YLWinSer/RealTimeCalcPositionService/ClientNoDMABalanceTask.cs @@ -62,7 +62,7 @@ namespace RealTimeCalcPositionService var clientSettles = new RealTimeClientBanlanceService(new OptUserInfo(0, "实时客户资金服务", OptUserFrom.Service)).GetBalances(); foreach (var cb in clientSettles) { - cb.AvailableAmount = cb.AmountFund + cb.TotalCredit + cb.PayableMargin + cb.GuaranteesTotalAmount; + var AvailableMoney = cb.AvailableAmount + cb.FrozenMarginMoney; Result result = new Result(); try { @@ -75,7 +75,8 @@ namespace RealTimeCalcPositionService DaliyPnl = Math.Round(cb.DaliyPnl, 2), ClientId = cb.ClientId, ClientType = cb.ClientType, - Credit = cb.TotalCredit + Credit = cb.TotalCredit, + AvailableMoney = AvailableMoney }; result.success = true; result.obj = obj;