public LimitDisplayModel CheckSCE(SessionInfo sessioninfo, DA_TRN trn, string strExcludeID) { LimitCheckBusiness _limitCheckBusiness = new LimitCheckBusiness(); LimitDisplayModel limitDisplay = new LimitDisplayModel(); Guid guExcludeID = Guid.Empty; List<DA_TRN_CASHFLOW> deal_conts = (from f in trn.DA_TRN_FLOW where f.FLOW_AMOUNT_THB > 0 select new DA_TRN_CASHFLOW { FLOW_DATE = f.FLOW_DATE.Value, FLOW_AMOUNT_THB = f.FLOW_AMOUNT_THB.Value }).ToList(); //Find original deal for exclude it from limit calculation if (strExcludeID != null && Guid.TryParse(strExcludeID.Replace("\"", ""), out guExcludeID)) guExcludeID = Guid.Parse(strExcludeID.Replace("\"", "")); List<LimitCheckModel> ori_conts = _limitCheckBusiness.CheckAllSET(sessioninfo.Process.CurrentDate, trn, guExcludeID, Guid.Empty); limitDisplay.LimitDisplayObject = GenerateSETDisplay(deal_conts, ori_conts, sessioninfo.SETOverwrite , ref limitDisplay); if (limitDisplay.LimitCheckStatus == eLimitCheckStatus.NEEDAPPROVE) trn.OVER_SETTL_AMOUNT = limitDisplay.OverAmount; return limitDisplay; }
public LimitDisplayModel CheckSwapSCE(SessionInfo sessioninfo, DA_TRN trn, string strExcludeID) { LimitCheckBusiness _limitCheckBusiness = new LimitCheckBusiness(); InstrumentBusiness _insBusiness = new InstrumentBusiness(); LimitDisplayModel limitDisplay = new LimitDisplayModel(); Guid guExcludeID = Guid.Empty; List<DA_TRN_CASHFLOW> deal_conts = new List<DA_TRN_CASHFLOW>(); MA_INSTRUMENT ins = _insBusiness.GetByID(sessioninfo, trn.INSTRUMENT_ID.Value); if (ins.LABEL == "CCS") { deal_conts = (from f in trn.DA_TRN_FLOW where f.FLOW_AMOUNT > 0 // Receive cash flows only select new { Flow_Date = f.FLOW_DATE, Flow_Amount_THB = f.FLOW_AMOUNT_THB }).GroupBy(fl => new { fl.Flow_Date }) .Select(p => new DA_TRN_CASHFLOW { FLOW_DATE = p.Key.Flow_Date, FLOW_AMOUNT_THB = p.Sum(x => x.Flow_Amount_THB) }).OrderBy(p => p.FLOW_DATE).ToList(); } else //Net cashflow for IRS { deal_conts = (from f in trn.DA_TRN_FLOW select new { Flow_Date = f.FLOW_DATE, Flow_ccy = f.FLAG_FIRST ? trn.FIRST.CCY_ID : trn.SECOND.CCY_ID, Flow_Amount_THB = f.FLOW_AMOUNT_THB }).GroupBy(fl => new { fl.Flow_Date, fl.Flow_ccy }) .Select(p => new DA_TRN_CASHFLOW { FLOW_DATE = p.Key.Flow_Date, FLOW_AMOUNT_THB = p.Sum(x => x.Flow_Amount_THB) }).Where(t => t.FLOW_AMOUNT_THB > 0).OrderBy(p => p.FLOW_DATE).ToList(); } //Find original deal for exclude it from limit calculation if (strExcludeID != null && Guid.TryParse(strExcludeID.Replace("\"", ""), out guExcludeID)) guExcludeID = Guid.Parse(strExcludeID.Replace("\"", "")); List<LimitCheckModel> ori_conts = _limitCheckBusiness.CheckAllSET(sessioninfo.Process.CurrentDate, trn, guExcludeID, Guid.Empty); limitDisplay.LimitDisplayObject = GenerateSETDisplay(deal_conts, ori_conts, sessioninfo.SETOverwrite, ref limitDisplay); if (limitDisplay.LimitCheckStatus == eLimitCheckStatus.NEEDAPPROVE) trn.OVER_SETTL_AMOUNT = limitDisplay.OverAmount; return limitDisplay; }
public LimitDisplayModel CheckFXSwapSCE(SessionInfo sessioninfo, DA_TRN trn1, DA_TRN trn2, string strExcludeID) { LimitCheckBusiness _limitCheckBusiness = new LimitCheckBusiness(); LimitDisplayModel limitDisplay = new LimitDisplayModel(); DA_TRN oldtrn1 = null; DA_TRN oldtrn2 = null; Guid guExcludeID1 = Guid.Empty; Guid guExcludeID2 = Guid.Empty; List<DA_TRN_CASHFLOW> deal_conts = ((from f in trn1.DA_TRN_FLOW where f.FLOW_AMOUNT_THB > 0 select new DA_TRN_CASHFLOW { FLOW_DATE = f.FLOW_DATE.Value, FLOW_AMOUNT_THB = f.FLOW_AMOUNT_THB.Value }).Union( (from f in trn2.DA_TRN_FLOW where f.FLOW_AMOUNT_THB > 0 select new DA_TRN_CASHFLOW { FLOW_DATE = f.FLOW_DATE.Value, FLOW_AMOUNT_THB = f.FLOW_AMOUNT_THB.Value }) )).ToList(); //Find original deals for exclude them from limit calculation if (strExcludeID != null && Guid.TryParse(strExcludeID.Replace("\"", ""), out guExcludeID1)) { guExcludeID1 = Guid.Parse(strExcludeID.Replace("\"", "")); oldtrn1 = GetByID(guExcludeID1); oldtrn2 = GetDealByProcessDate(sessioninfo.Process.CurrentDate).FirstOrDefault(p => p.INT_DEAL_NO == oldtrn1.INT_DEAL_NO && p.VERSION == oldtrn1.VERSION && p.ID != oldtrn1.ID); if (oldtrn2 == null || oldtrn1 == null) throw this.CreateException(new Exception(), "Cannot find original deals."); guExcludeID1 = oldtrn1.ID; guExcludeID2 = oldtrn2.ID; } List<LimitCheckModel> ori_conts = _limitCheckBusiness.CheckAllSET(sessioninfo.Process.CurrentDate, trn1, guExcludeID1, guExcludeID2); limitDisplay.LimitDisplayObject = GenerateSETDisplay(deal_conts, ori_conts, sessioninfo.SETOverwrite, ref limitDisplay); if (limitDisplay.LimitCheckStatus == eLimitCheckStatus.NEEDAPPROVE) { trn1.OVER_SETTL_AMOUNT = limitDisplay.OverAmount; trn2.OVER_SETTL_AMOUNT = limitDisplay.OverAmount; } return limitDisplay; }