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;