using BaseOUDAL; using YLErp.BLL; using YLErp.Configuration; using YLErp.Model; using YLErp.Models.Tag; using YLErp.Modules.RiskListModule; using YLErp.Modules.TagModule; using YLErp.Modules.TradeModule; using YLErp.QdpModule; namespace YLErp.Modules.FinancialModule { /// /// 长江财务凭证服务 /// public class CJFinancialVoucherService : YLBaseService { DateTime _valueDate; private static List ExcludedTrade = new List { "商品期货", "场内期权", "远期" }; private static Dictionary ErpDetailIds = new Dictionary(); private static List diedStatusList = new List() { ConsTrade.已到期, ConsTrade.已执行, ConsTrade.已平仓 }; public CJFinancialVoucherService(OptUserInfo userInfo) : base(userInfo) { _valueDate = valuedateBLL.ValueDate; using (var db = new ErpBaseContext()) { var dictId = db.Dictionaries.FirstOrDefault(x => x.Name == "财务凭证明细段")?.Id; if (dictId != null) { ErpDetailIds = db.DictionaryItems.Where(x => x.DictId == dictId).ToDictionary(x => x.Name, x => x.ShortName); } } } /// /// 获取客商编码 /// /// /// private string GetErpDetailId(string comment) { if (!string.IsNullOrWhiteSpace(comment) && ErpDetailIds.Any()) { if (ErpDetailIds.ContainsKey(comment)) { return ErpDetailIds[comment]; } } return string.Empty; } /// /// 一、交易确认(期末持仓成本) /// /// /// public FinancialVoucher_CJDto GetTradeConfirmData(FinancialVoucher_CJReq req) { var result = new FinancialVoucher_CJDto(); var db = new YLContext(); #region 一、交易确认(期末持仓成本) var tradeConfirmPeriod = req.EndDate.ToString("yyyy-MM"); var tradeConfirmAccountingDate = req.EndDate.ToString("yyyy/MM/dd"); var tradeConfirmAccountingDate2 = req.EndDate.ToString("yyMMdd"); var tradeConfirmDetailDate = req.EndDate.ToString("yyyyMMdd"); result.TradeConfirmPeriod = tradeConfirmPeriod; result.TradeConfirmAccountingDate = tradeConfirmAccountingDate; result.TradeConfirmAccountingDate2 = tradeConfirmAccountingDate2; result.TradeConfirmDetailPeriod = tradeConfirmDetailDate; #region 上期 var dayBefore = QdpCalendarHelper.GetNonHolidayDefore(req.StartDate.AddDays(-1)); var reqFin = new FinancialSummaryModelReq() { CurrentPeriodDateStart = req.PreStartDate, CurrentPeriodDateEnd = dayBefore, TradeTypeList = req.SummaryType != "场外期权" ? ConsTrade.NonOptionTradeTypes : ConsTrade.OptionTradeTypes, UserAssets = req.UserAssets, UserClients = req.UserClients }; var priorPeriodList = tradeBLL.SearchOptionTrade(reqFin); //权益 //上期卖出场外期权成本 //卖出 result.DebitOriginalAmt1 = Math.Abs((priorPeriodList.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //买入 result.CreditOriginalAmt1 = Math.Abs((priorPeriodList.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "买入" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //商品 //卖出 result.DebitOriginalAmt10 = Math.Abs((priorPeriodList.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //买入 result.CreditOriginalAmt5 = Math.Abs((priorPeriodList.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "买入" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); #endregion #region 本期 reqFin = new FinancialSummaryModelReq() { CurrentPeriodDateStart = req.StartDate, CurrentPeriodDateEnd = req.EndDate, SummaryType = req.SummaryType, UserAssets = req.UserAssets, UserClients = req.UserClients }; var finalData = FinancialSummary_Option(reqFin); //权益 //卖出 result.CreditOriginalAmt2 = Math.Abs((finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //买入 result.DebitOriginalAmt2 = Math.Abs((finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "买入" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //商品 //卖出 result.CreditOriginalAmt6 = Math.Abs((finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); //买入 result.DebitOriginalAmt11 = Math.Abs((finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "买入" && x.Status == false).Sum(x => x.TradePrice) ?? 0)).ToString("0.00"); #endregion //本期-其他应付款 result.CreditOriginalAmt3 = (Math.Abs(double.Parse(result.DebitOriginalAmt1)) + Math.Abs(double.Parse(result.DebitOriginalAmt2)) - (Math.Abs(double.Parse(result.CreditOriginalAmt1)) + Math.Abs(double.Parse(result.CreditOriginalAmt2)))).ToString("0.00"); result.CreditOriginalAmt7 = (double.Parse(result.DebitOriginalAmt1) + double.Parse(result.DebitOriginalAmt2) + double.Parse(result.DebitOriginalAmt10) + double.Parse(result.DebitOriginalAmt11) - double.Parse(result.CreditOriginalAmt1) - double.Parse(result.CreditOriginalAmt2) - double.Parse(result.CreditOriginalAmt5) - double.Parse(result.CreditOriginalAmt6)).ToString("0.00"); #endregion #region 二、清算(每交易日平仓盈亏) result.ClearPeriod = tradeConfirmPeriod; result.ClearAccountingPeriod = tradeConfirmAccountingDate; result.ClearAccountingPeriod2 = tradeConfirmAccountingDate2; result.ClearDetailPeriod = tradeConfirmDetailDate; ////衍生工具_卖出看跌商品期权_公允价值变动 result.DebitOriginalAmt4 = (finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == true).Sum(x => x.ConfirmPnl) ?? 0).ToString("0.00"); ////衍生工具_买入看跌商品期权_公允价值变动 result.DebitOriginalAmt6 = (finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "买入" && x.Status == true).Sum(x => x.ConfirmPnl) ?? 0).ToString("0.00"); ////衍生工具_卖出看跌商品期权_公允价值变动 result.DebitOriginalAmt14 = (finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "卖出" && x.Status == true).Sum(x => x.ConfirmPnl) ?? 0).ToString("0.00"); ////衍生工具_买入看跌商品期权_公允价值变动 result.DebitOriginalAmt15 = (finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "买入" && x.Status == true).Sum(x => x.ConfirmPnl) ?? 0).ToString("0.00"); //权益 result.DebitOriginalAmt16 = (double.Parse(result.DebitOriginalAmt4) + double.Parse(result.DebitOriginalAmt6)).ToString("0.00"); //商品 result.DebitOriginalAmt17 = (double.Parse(result.DebitOriginalAmt14) + double.Parse(result.DebitOriginalAmt15)).ToString("0.00"); //卖出 result.DebitOriginalAmt22 = (double.Parse(result.DebitOriginalAmt4) + double.Parse(result.DebitOriginalAmt14)).ToString("0.00"); //买入 result.DebitOriginalAmt23 = (double.Parse(result.DebitOriginalAmt6) + double.Parse(result.DebitOriginalAmt15)).ToString("0.00"); ////其他应付款-其他 result.DebitOriginalAmt3 = (double.Parse(result.DebitOriginalAmt4) + double.Parse(result.DebitOriginalAmt6) + double.Parse(result.DebitOriginalAmt14) + double.Parse(result.DebitOriginalAmt15)).ToString("0.00"); #endregion #region 三、每交易日持仓盈亏 result.DailyWinLossPeriod = tradeConfirmPeriod; result.DailyWinLossAccountingPeriod = tradeConfirmAccountingDate; result.DailyWinLossAccountingPeriod2 = tradeConfirmAccountingDate2; result.DailyWinLossDetailPeriod = tradeConfirmDetailDate; //衍生工具_卖出看跌商品期权_公允价值变动 result.DebitOriginalAmt8 = (finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "卖出").Sum(x => x.Pnl) ?? 0).ToString("0.00"); //衍生工具_买入看跌商品期权_公允价值变动 result.DebitOriginalAmt9 = (finalData.rows.Where(x => x.UnderlyingInstrumentType != "CommodityFutures" && x.TradeDirection == "买入").Sum(x => x.Pnl) ?? 0).ToString("0.00"); result.DebitOriginalAmt18 = (finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "卖出").Sum(x => x.Pnl) ?? 0).ToString("0.00"); result.DebitOriginalAmt19 = (finalData.rows.Where(x => x.UnderlyingInstrumentType == "CommodityFutures" && x.TradeDirection == "买入").Sum(x => x.Pnl) ?? 0).ToString("0.00"); result.DebitOriginalAmt20 = (double.Parse(result.DebitOriginalAmt8) + double.Parse(result.DebitOriginalAmt18)).ToString("0.00"); result.DebitOriginalAmt21 = (double.Parse(result.DebitOriginalAmt9) + double.Parse(result.DebitOriginalAmt19)).ToString("0.00"); result.CreditOriginalAmt4 = (double.Parse(result.DebitOriginalAmt20) + double.Parse(result.DebitOriginalAmt21)).ToString("0.00"); #endregion #region 会计科目码 var nv = YieldChain.Helpers.UrlHelper.ParseQueryString(PS.Config.ErpElement.YongYouKeMuCode) ?? new System.Collections.Specialized.NameValueCollection(); if (nv.AllKeys.Any()) { foreach (var key in nv.AllKeys) { result.AccountingSubjectCodeDic.Add(key, nv[key]); } } #endregion return result; } /// /// 出入金 /// /// /// public List GetCashInOutTotal(FinancialVoucher_CJReq req) { var result = new List(); using (var db = new YLContext()) { var states = new List { "已确认", "已结算" }; var directions = new List { "出金", "入金" }; var cashInCashOutQuery = from cico in db.ClientCashInCashOut where directions.Contains(cico.Direction) && cico.ValidState != "InValid" && states.Contains(cico.State) select cico; var start = req.StartDate; var end = req.EndDate; if (req.StartDate != DateTime.MinValue && start != default) { cashInCashOutQuery = cashInCashOutQuery.Where(d => d.HappenDate >= start); } if (req.EndDate != DateTime.MinValue && end != default) { var tmpdate = end.AddDays(1); cashInCashOutQuery = cashInCashOutQuery.Where(d => d.HappenDate < tmpdate); } var cashInCashOutList = cashInCashOutQuery.OrderByDescending(x => x.HappenDate).ToList(); var periodReq = req.EndDate.ToString("yyyy-MM"); var accountDateReq = req.EndDate.ToString("yyyy/MM/dd"); var accountDateReq2 = req.EndDate.ToString("yyMMdd"); var detailDateReq = req.EndDate.ToString("yyyyMMdd"); //////入金 //入金-借方;出金-贷方 var detailNo = 16; var LineNo = 10; var cashinlist = cashInCashOutList.Where(x => x.Direction == "入金").ToList(); var totalcashin = cashinlist.Sum(x => x.Money) ?? 0; foreach (var cash in cashinlist) { var period = cash.HappenDate?.ToString("yyyy-MM"); //获取明细段 代码 var detailSegment = "0"; //从备注去匹配编码 if (!string.IsNullOrWhiteSpace(cash.Comments)) { detailSegment = GetErpDetailId(cash.Comments?.Trim()); } var cashindto = new FinancialVoucherCashInOut_CJDto() { Direction = cash.Direction, LineNo = (LineNo).ToString(), Period = period, AccountingDate = accountDateReq, AccountSegment = "100201", DetailSegment = detailSegment, DebitOriginalAmount = Math.Abs(cash.Money ?? 0).OtcFormatMoney(grouping: false), JournalEntriesBName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesSpec = "出入金", ProjectSegment = "0", JournalEntriesSummary = "出入金", DetailedId = $"tangcheng{detailDateReq}{(detailNo++).ToString().PadLeft(3, '0')}" }; result.Add(cashindto); LineNo = LineNo + 10; } //////出金 var cashoutlist = cashInCashOutList.Where(x => x.Direction == "出金").ToList(); var totalcashout = cashoutlist.Sum(x => x.Money) ?? 00; foreach (var cash in cashoutlist) { var period = cash.HappenDate?.ToString("yyyy-MM"); //获取明细段 代码 var detailSegment = "0"; //从备注去匹配编码 if (!string.IsNullOrWhiteSpace(cash.Comments)) { detailSegment = GetErpDetailId(cash.Comments); } var cashoutdto2 = new FinancialVoucherCashInOut_CJDto() { Direction = cash.Direction, LineNo = (LineNo).ToString(), Period = period, AccountingDate = accountDateReq, ProjectSegment = "0", AccountSegment = "100201", DetailSegment = detailSegment, CreditOriginalAmount = Math.Abs(cash.Money ?? 0).OtcFormatMoney(grouping: false), JournalEntriesBName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesSpec = "出入金", JournalEntriesSummary = "出入金", DetailedId = $"tangcheng{detailDateReq}{(detailNo++).ToString().PadLeft(3, '0')}" }; result.Add(cashoutdto2); LineNo = LineNo + 10; } //汇总 var cashoutdto = new FinancialVoucherCashInOut_CJDto() { LineNo = (LineNo).ToString(), Period = periodReq, AccountingDate = accountDateReq, AccountSegment = "211698",//汇总 ProjectSegment = "207", DetailSegment = "0", CreditOriginalAmount = (totalcashin - totalcashout).OtcFormatMoney(grouping: false), JournalEntriesBName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesName = $"880010tangcheng{accountDateReq2}出入金", JournalEntriesSpec = "出入金", JournalEntriesSummary = "出入金", DetailedId = $"tangcheng{detailDateReq}{(detailNo).ToString().PadLeft(3, '0')}" }; result.Add(cashoutdto); return result; } } public SearchListResult FinancialSummary_Option(FinancialSummaryModelReq req) { //默认值查询场外期权的交易 if (req.TradeTypeList == null || req.TradeTypeList.Count == 0) { switch (req.SummaryType) { case "远期/掉期": req.TradeTypeList = new List { "远期" }; break; case "互换": req.TradeTypeList = new List { "收益互换" }; break; case "场外期权": default: req.SummaryType = "场外期权"; req.TradeTypeList = ConsTrade.OptionTradeTypes; break; } } var contractBLL = new TradeDocumentService(UserInfo); var modelList = new List(); var searchTradeList = tradeBLL.SearchOptionTrade(req); var tradeIds = searchTradeList.rows.Select(O => O.TradeId).ToList(); var parentTradeIds = searchTradeList.rows.Select(x => x.ParentTradeId).ToHashSet(); var parentTrades = DbContext.trade.Where(x => parentTradeIds.Contains(x.id)).ToDictionary(n => n.id); //var cashs = trade_cashBLL.GetTrade_Cashes(tradeIds); var lastDate = QdpCalendarHelper.GetNonHolidayDefore(req.CurrentPeriodDateStart.AddDays(-1)); var currentDate = QdpCalendarHelper.GetNonHolidayDefore(req.CurrentPeriodDateEnd); var positionReq = new EodTradePositionReq { ValueDateStart = lastDate, ValueDateEnd = currentDate, TraderIds = string.Join(",", tradeIds) }; List positions = null; if (PS.Config.Company == CompanyEnum.光大光子) { positions = new EodTradePositionBLL().SearchList_extend(positionReq)?.rows.Select(O => (EodTradePosition)O).ToList(); } else { positions = new EodTradePositionBLL().SearchList(positionReq)?.rows.Select(O => (EodTradePosition)O).ToList(); } var totleDeltaCashDict = new Dictionary(); List position = null; Dictionary riskDict = null; if (PS.Config.Company == CompanyEnum.光大光子 && req.SummaryType == "场外期权") { position = new RiskDailyReportService(UserInfo, currentDate).GetFutureList(currentDate).Select(O => (EodTradePosition)O).ToList(); using (var db = new YLContext()) { if (PS.Config.Company == CompanyEnum.光大光子) { riskDict = (from riskDb in db.eod_trade_risk_extend where tradeIds.Contains(riskDb.TradeId) select riskDb).ToList().GroupBy(O => O.TradeId).ToDictionary(K => K.Key, V => (EodTradeRisk)V.OrderByDescending(O => O.ValueDate).First()); } else { riskDict = (from riskDb in db.eod_trade_risk where tradeIds.Contains(riskDb.TradeId) select riskDb).ToList().GroupBy(O => O.TradeId).ToDictionary(K => K.Key, V => (EodTradeRisk)V.OrderByDescending(O => O.ValueDate).First()); } } foreach (var item in searchTradeList.rows) { if (!totleDeltaCashDict.ContainsKey(item.UnderlyingCode)) { totleDeltaCashDict[item.UnderlyingCode] = 0; } if (riskDict.ContainsKey(item.TradeId)) { totleDeltaCashDict[item.UnderlyingCode] += Math.Abs(riskDict[item.TradeId].DeltaCash); } } } else { position = new List(); riskDict = new Dictionary(); } var futureDict = position.GroupBy(O => O.UnderlyingCode).ToDictionary(K => K.Key, V => (double)V.ToList().Sum(O => O.PositionPnL)); var feeDict = position.GroupBy(O => O.UnderlyingCode).ToDictionary(K => K.Key, V => (double)V.ToList().Sum(O => O.Commission)); Dictionary> clientTagList = null; if (searchTradeList != null && searchTradeList.rows != null && searchTradeList.rows.Any()) { using (var tagService = new TagService(OptUser)) { clientTagList = tagService.GetTagByClientIds(searchTradeList.rows.Select(p => p.ClientId).Distinct().ToList()); } } if (clientTagList == null) { clientTagList = new Dictionary>(); } foreach (var item in searchTradeList.rows) { if (parentTrades.TryGetValue(item.ParentTradeId, out var parentTrade)) { item.TradeNumber = parentTrade.TradeNumber; } double percent = 1; if (riskDict.ContainsKey(item.TradeId) && totleDeltaCashDict.ContainsKey(item.UnderlyingCode)) { var tradePercent = (item.Notional ?? 0) / item.OriginalNotional; tradePercent = tradePercent == 0 ? 1 : tradePercent; var totleDeltaCash = riskDict[item.TradeId].DeltaCash; percent = Math.Abs(totleDeltaCash * tradePercent / totleDeltaCashDict[item.UnderlyingCode]); } double? lastPv = positions.FindAll(O => O.TradeId == item.TradeId && O.ValueDate == lastDate).Sum(O => O.Amount == 0 ? 0 : Convert.ToDouble(O.Pv) / O.Amount); double? lastPnl = positions.FindAll(O => O.TradeId == item.TradeId && O.ValueDate == lastDate).Sum(O => O.Amount == 0 ? 0 : Convert.ToDouble(O.PositionPnL) / O.Amount); double? pv = positions.FindAll(O => O.TradeId == item.TradeId && O.ValueDate == currentDate).Sum(O => O.Amount == 0 ? 0 : Convert.ToDouble(O.Pv) / O.Amount); double? Pnl = positions.FindAll(O => O.TradeId == item.TradeId && O.ValueDate == currentDate).Sum(O => O.Amount == 0 ? 0 : Convert.ToDouble(O.PositionPnL) / O.Amount); //model.ConfirmPnl = model.Status ? clearPrice + tradePrice : null;//我方清算盈亏; item.LastPv = lastPv * item.Notional;//上期期末市值; item.LastTotalPnl = lastPnl * item.Notional;//上期末累计浮动盈亏; item.Pv = pv * item.Notional;//本期期末市值; item.TotalPnl = Pnl * item.Notional;//本期末累计浮动盈亏; if (item.TradeDate >= req.CurrentPeriodDateStart) { item.LastTotalPnl = 0; } if (item.UnderlyingCode != null) { item.FuturePnl = futureDict.ContainsKey(item.UnderlyingCode) ? futureDict[item.UnderlyingCode] * percent : 0;//期货盈亏(结算价); item.ServiceFee = feeDict.ContainsKey(item.UnderlyingCode) ? feeDict[item.UnderlyingCode] * percent : 0;//期货手续费; item.CountRatio = DataCacheProvider.GetUnderlyingDataSource().GetData(item.UnderlyingCode).CountRatio; } else { item.FuturePnl = 0;//期货盈亏(结算价); item.ServiceFee = 0;//期货手续费; item.CountRatio = 1; } item.FinancialEntry = null;//财务入账; var SpotPrice = DbContext.trade.Where(l => l.id == item.TradeId).FirstOrDefault()?.SpotPrice; item.SurvivingNominalPrincipal = item.PositionAmount * SpotPrice; //拼装标签值 if (clientTagList.ContainsKey(item.ClientId)) { item.Tags = clientTagList[item.ClientId]; item.OutputTags = TagService.GetOutputTagsStr(item.Tags); } } return searchTradeList; } } public class FinancialVoucher_CJReq { public DateTime PreStartDate { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public string SummaryType { get; set; } public List UserAssets { get; set; } public List UserClients { get; set; } } public class FinancialVoucher_CJDto { #region 期间 public string TradeConfirmPeriod { get; set; } public string TradeConfirmDetailPeriod { get; set; } public string ClearPeriod { get; set; } public string ClearDetailPeriod { get; set; } public string DailyWinLossPeriod { get; set; } public string DailyWinLossDetailPeriod { get; set; } #endregion #region 记账日期 public string TradeConfirmAccountingDate { get; set; } public string ClearAccountingPeriod { get; set; } public string DailyWinLossAccountingPeriod { get; set; } public string TradeConfirmAccountingDate2 { get; set; } public string ClearAccountingPeriod2 { get; set; } public string DailyWinLossAccountingPeriod2 { get; set; } #endregion #region 借方原币金额 /// /// 上期-卖出-场外期权-权益-成本-未完结 /// public string DebitOriginalAmt1 { get; set; } /// /// 本期-买入-场外期权-权益-成本-未完结 /// public string DebitOriginalAmt2 { get; set; } /// /// 本期-清算盈亏之和 /// public string DebitOriginalAmt3 { get; set; } /// /// 本期-卖出-场外期权-权益-清算盈亏-完结 /// public string DebitOriginalAmt4 { get; set; } public string DebitOriginalAmt5 { get; set; } /// /// 本期-买入-场外期权-权益-清算盈亏-完结 /// public string DebitOriginalAmt6 { get; set; } public string DebitOriginalAmt7 { get; set; } /// /// 本期-卖出-场外期权-权益-持仓盈亏 /// public string DebitOriginalAmt8 { get; set; } /// /// 本期-买入-场外期权-权益-持仓盈亏 /// public string DebitOriginalAmt9 { get; set; } /// /// 上期-卖出-场外期权-商品-成本-未完结 /// public string DebitOriginalAmt10 { get; set; } /// /// 本期-买入-场外期权-商品-成本-未完结 /// public string DebitOriginalAmt11 { get; set; } public string DebitOriginalAmt12 { get; set; } public string DebitOriginalAmt13 { get; set; } /// /// 本期-卖出-场外期权-商品-清算盈亏-完结 /// public string DebitOriginalAmt14 { get; set; } /// /// 本期-买入-场外期权-商品-清算盈亏-完结 /// public string DebitOriginalAmt15 { get; set; } /// /// 本期-(卖出买入之和)-场外期权-权益-清算盈亏-完结 /// public string DebitOriginalAmt16 { get; set; } /// /// 本期-(卖出买入之和)-场外期权-商品-清算盈亏-完结 /// public string DebitOriginalAmt17 { get; set; } /// /// 本期-卖出-场外期权-商品-持仓盈亏 /// public string DebitOriginalAmt18 { get; set; } /// /// 本期-买入-场外期权-商品-持仓盈亏 /// public string DebitOriginalAmt19 { get; set; } /// /// 本期-卖出-场外期权-(权益商品之和)-持仓盈亏 /// public string DebitOriginalAmt20 { get; set; } /// /// 本期-买入-场外期权-(权益商品之和)-持仓盈亏 /// public string DebitOriginalAmt21 { get; set; } /// /// 本期-卖出-场外期权-(权益商品之和)-清算盈亏-完结 /// public string DebitOriginalAmt22 { get; set; } /// /// 本期-买入-场外期权-(权益商品之和)-清算盈亏-完结 /// public string DebitOriginalAmt23 { get; set; } #endregion #region 贷方原币金额 /// /// 上期-买入-场外期权-权益-成本-未完结 /// public string CreditOriginalAmt1 { get; set; } /// /// 本期-卖出-场外期权-权益-成本-未完结 /// public string CreditOriginalAmt2 { get; set; } public string CreditOriginalAmt3 { get; set; } /// /// 本期-持仓盈亏之和 /// public string CreditOriginalAmt4 { get; set; } /// /// 上期-买入-场外期权-商品-成本-未完结 /// public string CreditOriginalAmt5 { get; set; } /// /// 本期-卖出-场外期权-商品-成本-未完结 /// public string CreditOriginalAmt6 { get; set; } /// /// 本期-成本-其他应付款 /// public string CreditOriginalAmt7 { get; set; } #endregion #region 会计科目段 public Dictionary AccountingSubjectCodeDic { get; set; } = new Dictionary(); #endregion #region 出入金 public List CashInOutInfoList { get; set; } #endregion } public class FinancialVoucherCashInOut_CJDto { public string Direction { get; set; } /// /// 行号 /// public string LineNo { get; set; } /// /// 期间(账期) /// public string Period { get; set; } /// /// 记账日期 /// public string AccountingDate { get; set; } /// /// 会计科目段 /// public string AccountSegment { get; set; } /// /// 明细段 /// public string DetailSegment { get; set; } /// /// 项目段 /// public string ProjectSegment { get; set; } /// /// 借方原币金额 /// public string DebitOriginalAmount { get; set; } /// /// 贷方原币金额 /// public string CreditOriginalAmount { get; set; } /// /// 日记账批名 /// public string JournalEntriesBName { get; set; } /// /// 日记账名称 /// public string JournalEntriesName { get; set; } /// /// 日记账说明 /// public string JournalEntriesSpec { get; set; } /// /// 日记账行摘要 /// public string JournalEntriesSummary { get; set; } /// /// 明细行标识 /// public string DetailedId { get; set; } } }