Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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;
        }