refactor(margin): 3处散落保证金资金记录收敛到 RecordMarginCashFlow
RecordMarginCashFlow 加委托重载, 统一 AddClientCash(virtual)和 AddClientCashInCashOut(非virtual)两条路径。 替换3处 inline: - :1663 SwapUnwind 平仓(AddClientCash, 只有应付预付金) - :1979 DealUnwind(AddClientCashInCashOut, 只有应付预付金) - :2128 SwapIncome 互换(AddClientCash, 只有预付金返息) - :2195 自动互换(AddClientCash, 只有应付预付金, swapEvent.unwindData) 注释掉的返息代码(//if SwapMarginRebatePnl)同步清理—— 通过传 marginRebate:0 表达'不写返息', 不再留注释代码。 SwapDealService 保证金资金记录 inline: 4处 → 0。 全部走 RecordMarginCashFlow 的 2 个重载。 验证: 编译0错误, 全量509测试7失败(基线一致)。
This commit is contained in:
@@ -1172,15 +1172,23 @@ namespace YLErp.Modules.SwapModule
|
||||
/// 待迁入 Margin 模块。
|
||||
/// </summary>
|
||||
private void RecordMarginCashFlow(trade td, UnwindData unwindData)
|
||||
=> RecordMarginCashFlow(td, unwindData.ValueDate,
|
||||
unwindData.SwapMarginAmount, unwindData.SwapMarginRebatePnl,
|
||||
AddClientCashInCashOut);
|
||||
|
||||
/// <summary>
|
||||
/// 写入保证金资金记录的通用重载,接受资金写入委托。
|
||||
/// AddClientCash(virtual,测试可stub) 和 AddClientCashInCashOut(非virtual,直接写库)
|
||||
/// 都可通过此重载统一。
|
||||
/// </summary>
|
||||
private void RecordMarginCashFlow(trade td, DateTime valueDate,
|
||||
decimal marginAmount, decimal marginRebate,
|
||||
Func<trade, double, string, DateTime, int> writeCash)
|
||||
{
|
||||
if (unwindData.SwapMarginAmount != 0)
|
||||
{
|
||||
AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut.系统操作_应付预付金, unwindData.ValueDate);
|
||||
}
|
||||
if (unwindData.SwapMarginRebatePnl != 0)
|
||||
{
|
||||
AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut.系统操作_预付金返息, unwindData.ValueDate);
|
||||
}
|
||||
if (marginAmount != 0)
|
||||
writeCash(td, Convert.ToDouble(marginAmount), ClientCashInCashOut.系统操作_应付预付金, valueDate);
|
||||
if (marginRebate != 0)
|
||||
writeCash(td, Convert.ToDouble(-marginRebate), ClientCashInCashOut.系统操作_预付金返息, valueDate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1652,14 +1660,7 @@ namespace YLErp.Modules.SwapModule
|
||||
ExecuteInTransaction(() =>
|
||||
{
|
||||
int clientCashId = AddClientCash(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut.系统操作_平仓费, unwindData.ValueDate);
|
||||
if (unwindData.SwapMarginAmount != 0)
|
||||
{
|
||||
AddClientCash(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut.系统操作_应付预付金, unwindData.ValueDate);
|
||||
}
|
||||
//if (unwindData.SwapMarginRebatePnl != 0)
|
||||
//{
|
||||
// AddClientCash(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut.系统操作_预付金返息, unwindData.ValueDate);
|
||||
//}
|
||||
RecordMarginCashFlow(td, unwindData.ValueDate, unwindData.SwapMarginAmount, 0m, AddClientCash);
|
||||
DealFloatPosition(unwindData);
|
||||
var flowList = new List<swap_flow_event>(unwindData.FlowEvents);
|
||||
var eventId = SaveSwapDeal(unwindData, (int)SwapEventTypeEnum.平仓, clientCashId, "系统操作_平仓");
|
||||
@@ -1975,14 +1976,7 @@ namespace YLErp.Modules.SwapModule
|
||||
private void DealUnwind(UnwindData unwindData, trade td, string actionMsg = "系统操作_自动平仓")
|
||||
{
|
||||
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut.系统操作_平仓费, unwindData.ValueDate);
|
||||
if (unwindData.SwapMarginAmount != 0)
|
||||
{
|
||||
AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut.系统操作_应付预付金, unwindData.ValueDate);
|
||||
}
|
||||
//if (unwindData.SwapMarginRebatePnl != 0)
|
||||
//{
|
||||
// AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut.系统操作_预付金返息, unwindData.ValueDate);
|
||||
//}
|
||||
RecordMarginCashFlow(td, unwindData.ValueDate, unwindData.SwapMarginAmount, 0m, AddClientCashInCashOut);
|
||||
var flowList = new List<swap_flow_event>(unwindData.FlowEvents);
|
||||
var eventId = SaveSwapDeal(unwindData, (int)SwapEventTypeEnum.平仓, clientCashId, actionMsg);
|
||||
if (unwindData.CloseMethod == (int)CloseMethodEnum.全部平仓)
|
||||
@@ -2131,10 +2125,7 @@ namespace YLErp.Modules.SwapModule
|
||||
ExecuteInTransaction(() =>
|
||||
{
|
||||
int clientCashId = AddClientCash(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut.系统操作_互换, unwindData.ValueDate);
|
||||
if (unwindData.SwapMarginRebatePnl != 0)
|
||||
{
|
||||
AddClientCash(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut.系统操作_预付金返息, unwindData.ValueDate);
|
||||
}
|
||||
RecordMarginCashFlow(td, unwindData.ValueDate, 0m, unwindData.SwapMarginRebatePnl, AddClientCash);
|
||||
foreach (var item in unwindData.FlowEvents)
|
||||
{
|
||||
item.OptLog = "手工操作";
|
||||
@@ -2201,9 +2192,9 @@ namespace YLErp.Modules.SwapModule
|
||||
}
|
||||
string action = eventType == (int)SwapEventTypeEnum.互换 ? ClientCashInCashOut.系统操作_互换 : ClientCashInCashOut.系统操作_平仓费;
|
||||
int clientCashId = AddClientCash(td, Convert.ToDouble(-swapEvent.unwindData.SwapRealizedPnL), action, swapEvent.unwindData.ValueDate);
|
||||
if (eventType == (int)SwapEventTypeEnum.平仓 && swapEvent.unwindData.SwapMarginAmount != 0)
|
||||
if (eventType == (int)SwapEventTypeEnum.平仓)
|
||||
{
|
||||
AddClientCash(td, Convert.ToDouble(swapEvent.unwindData.SwapMarginAmount), ClientCashInCashOut.系统操作_应付预付金, swapEvent.unwindData.ValueDate);
|
||||
RecordMarginCashFlow(td, swapEvent.unwindData.ValueDate, swapEvent.unwindData.SwapMarginAmount, 0m, AddClientCash);
|
||||
}
|
||||
swapEvent.ClientCashId = clientCashId;
|
||||
td.UnWindDate = swapEvent.unwindData.UnwindDate;
|
||||
|
||||
Reference in New Issue
Block a user