public static object GenerateTrnObject(string strTradeDate, string strCtpy, string strPortfolio, string strCurrencyPair
                                               , string strContractCcy, string strCounterCcy, string strSpotRate
                                               , string strBSNear, string strSetDateNear, string strSwapPointNear
                                               , string strContractAmtNear, string strCounterAmtNear
                                               , string strBSFar, string strSetDateFar, string strSwapPointFar
                                               , string strContractAmtFar, string strCounterAmtFar, string strSpotDate, string strRemark, string strProductId1, bool settleFlag, bool blnIsSubmit)
        {
            try
            {
                DA_TRN TrnInfo1 = DealUIP.GenerateFXSwapTransactionObject1(SessionInfo, strTradeDate, strCtpy, strPortfolio, strCurrencyPair
                                                                           , strContractCcy, strCounterCcy, strSpotRate
                                                                           , strBSNear, strSetDateNear, strSwapPointNear, strContractAmtNear, strCounterAmtNear, strSpotDate, strRemark, settleFlag, strProductId1);
                DA_TRN TrnInfo2 = DealUIP.GenerateFXSwapTransactionObject2(SessionInfo, strTradeDate, strCtpy, strPortfolio, strCurrencyPair
                                                                           , strContractCcy, strCounterCcy, strSpotRate
                                                                           , strBSFar, strSetDateFar, strSwapPointFar
                                                                           , strContractAmtFar, strCounterAmtFar, strSpotDate, strRemark, settleFlag, TrnInfo1.VERSION);

                object PCESCEObject;
                CheckFXSpotLimits(blnIsSubmit, TrnInfo1, TrnInfo2, out PCESCEObject);
                return(new
                {
                    Result = "OK",
                    record = JsonConvert.SerializeObject(TrnInfo1, new IsoDateTimeConverter()),
                    record2 = JsonConvert.SerializeObject(TrnInfo2, new IsoDateTimeConverter()),
                    pcesce = PCESCEObject,
                    Message = ""
                });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
Example #2
0
 public static object GetEditByID(Guid id)
 {
     try
     {
         DA_TRN trn   = DealUIP.GetByID(id);
         var    query = new
         {
             ID           = trn.ID,
             TradeDate    = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             EffectDate   = trn.START_DATE.HasValue ? trn.START_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             Counterparty = trn.CTPY_ID.ToString(),
             Portfolio    = trn.PORTFOLIO_ID.HasValue ? trn.PORTFOLIO_ID.Value.ToString() : "-1",
             Instrument   = trn.PORTFOLIO_ID.HasValue ? trn.INSTRUMENT_ID.Value.ToString() : "-1",
             Notional1    = Math.Abs(trn.FIRST.NOTIONAL.Value),
             Notional2    = Math.Abs(trn.SECOND.NOTIONAL.Value),
             FlagFixed1   = trn.FIRST.FLAG_FIXED.HasValue ? (trn.FIRST.FLAG_FIXED.Value ? "1" : "0") : "0",
             FixAmt1      = trn.FIRST.FIRSTFIXINGAMT,
             Rate1        = trn.FIRST.RATE,
             Feq1         = trn.FIRST.FREQTYPE_ID.HasValue ? trn.FIRST.FREQTYPE_ID.Value.ToString() : string.Empty,
             FlagFixed2   = trn.SECOND.FLAG_FIXED.HasValue ? (trn.SECOND.FLAG_FIXED.Value ? "1" : "0") : "0",
             FixAmt2      = trn.SECOND.FIRSTFIXINGAMT,
             Rate2        = trn.SECOND.RATE,
             Feq2         = trn.SECOND.FREQTYPE_ID.HasValue ? trn.SECOND.FREQTYPE_ID.Value.ToString() : string.Empty,
             CCY1         = trn.FIRST.CCY_ID,
             CCY2         = trn.SECOND.CCY_ID
         };
         return(new { Result = "OK", record = query });
     }
     catch (Exception ex)
     {
         return(new { Result = "ERROR", Message = ex.Message });
     }
 }
Example #3
0
        public static object SubmitFXSwapDeal(SessionInfo sessioninfo
                                              , DA_TRN trn1
                                              , DA_TRN trn2
                                              , string strOverApprover
                                              , string strOverComment
                                              , string strProductId1
                                              , string strProductId2)
        {
            try
            {
                DealBusiness _dealBusiness = new DealBusiness();

                string strDealNO1 = _dealBusiness.SubmitFXDeal(sessioninfo
                                                               , trn1
                                                               , strOverApprover
                                                               , strOverComment
                                                               , strProductId1);
                trn2.INT_DEAL_NO = strDealNO1;
                string strDealNO2 = _dealBusiness.SubmitFXDeal(sessioninfo
                                                               , trn2
                                                               , strOverApprover
                                                               , strOverComment
                                                               , strProductId2
                                                               );
                return(new { Result = "OK", Message = strDealNO1 });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
 public static object GetEditByID(Guid id)
 {
     try
     {
         DA_TRN        trn   = DealUIP.GetByID(id);
         MA_INSTRUMENT ins   = InstrumentUIP.GetByID(SessionInfo, trn.MA_INSRUMENT.ID);
         var           query = new
         {
             ID           = trn.ID,
             TradeDate    = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             SpotDate     = trn.SPOT_DATE.HasValue ? trn.SPOT_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             Counterparty = trn.CTPY_ID.ToString(),
             Portfolio    = trn.PORTFOLIO_ID.ToString(),
             Instrument   = trn.INSTRUMENT_ID.ToString(),
             BuySell      = trn.FLAG_BUYSELL,
             CCY1         = trn.FIRST.CCY_ID.ToString(),
             SpotRate     = trn.FIRST.RATE - (trn.FIRST.SWAP_POINT.HasValue ?  trn.FIRST.SWAP_POINT : 0),
             SwapPoint    = trn.FIRST.SWAP_POINT,
             Remark       = trn.REMARK,
             flag_settle  = trn.FLAG_SETTLE,
             Notional1    = Math.Abs(trn.FIRST.NOTIONAL.Value),
             Notional2    = Math.Abs(trn.SECOND.NOTIONAL.Value)
         };
         return(new { Result = "OK", record = query, CCY = new { CURRENCY1 = ins.MA_CURRENCY.LABEL, CURRENCY2 = ins.MA_CURRENCY2.LABEL, CURRENCYID1 = ins.MA_CURRENCY.ID, CURRENCYID2 = ins.MA_CURRENCY2.ID, FLAG_MULTIPLY = ins.FLAG_MULTIPLY } });
     }
     catch (Exception ex)
     {
         return(new { Result = "ERROR", Message = ex.Message });
     }
 }
        public List <LimitCheckModel> CheckAllSET(DateTime ProcessingDate, DA_TRN trn, Guid ExcludeID1, Guid ExcludeID2)
        {
            CounterpartyBusiness _counterpartyBusiness = new CounterpartyBusiness();

            List <LimitCheckModel> results = GetSCEByCriteria(ProcessingDate, trn.CTPY_ID, trn.PRODUCT_ID.Value, "", ExcludeID1, ExcludeID2);

            //Get group exposure
            MA_COUTERPARTY ctpy = _counterpartyBusiness.GetCounterpartyAll().FirstOrDefault(p => p.ID == trn.CTPY_ID);

            if (ctpy != null && ctpy.GROUP_CTPY_ID != null)
            {
                var group = GetSCEByCriteria(ProcessingDate, ctpy.GROUP_CTPY_ID.Value, trn.PRODUCT_ID.Value, "", ExcludeID1, ExcludeID2);
                results = results.Union(group).ToList();
            }

            //Get temp limit
            //Look for temp limit when all conditions meet
            // 1. Transaction maturity date <= Temp limit maturity date
            foreach (LimitCheckModel result in results)
            {
                MA_TEMP_CTPY_LIMIT temp_limit = _counterpartyBusiness.GetActiveTempByID(ProcessingDate, trn.MATURITY_DATE.Value, result.CTPY_LIMIT_ID);

                if (temp_limit != null)
                {
                    result.TEMP_AMOUNT = temp_limit.AMOUNT;
                }
                //result.AMOUNT = result.AMOUNT + temp_limit.AMOUNT;
            }

            return(results);
        }
Example #6
0
        static void Main(string[] args)
        {
            PCCFConfigBusiness pccfBusiness = new PCCFConfigBusiness();

            DA_TRN record = new DA_TRN();

            record.ID                 = Guid.NewGuid();
            record.ENGINE_DATE        = DateTime.Now;
            record.STATUS_ID          = new Guid("9161ED18-1298-44FA-BA7D-34522CB40D66");
            record.INSTRUMENT_ID      = new Guid("33F88EB3-46C0-4667-BCF6-05426321B71B");
            record.PRODUCT_ID         = new Guid("F85252D1-BC58-4AC6-8B56-2E228FB0A367");
            record.LOG.INSERTBYUSERID = new Guid("F85252D1-BC58-4AC6-8B56-2E228FB0A367");
            record.LOG.INSERTDATE     = DateTime.Now;

            record.FIRST.CCY_ID       = new Guid("825F343B-CAEA-409B-AE92-CCA2DAB3765E");
            record.FIRST.FLAG_PAYREC  = "R";
            record.FIRST.FLAG_FIXED   = false;
            record.SECOND.CCY_ID      = new Guid("825F343B-CAEA-409B-AE92-CCA2DAB3765E");
            record.SECOND.FLAG_PAYREC = "P";
            record.SECOND.FLAG_FIXED  = false;

            var temp = pccfBusiness.ValidatePCCFConfig(null, record);

            if (temp != null)
            {
                Console.WriteLine("PCCF:" + temp.LABEL);
            }
            else
            {
                Console.WriteLine("PCCF is not match");
            }
            Console.WriteLine("End");
            Console.ReadLine();
        }
 public static object GetEditByID(Guid id)
 {
     try
     {
         DA_TRN trn   = DealUIP.GetByID(id);
         var    query = new
         {
             ID            = trn.ID,
             TradeDate     = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             BuySell       = trn.FLAG_BUYSELL,
             MaturityDate  = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             EffectiveDate = trn.START_DATE.HasValue ? trn.START_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             Counterparty  = trn.CTPY_ID.ToString(),
             Portfolio     = trn.PORTFOLIO_ID.ToString(),
             Instrument    = trn.INSTRUMENT_ID.ToString(),
             Notional      = Math.Abs(trn.FIRST.NOTIONAL.Value),
             Remark        = trn.REMARK
         };
         return(new { Result = "OK", record = query });
     }
     catch (Exception ex)
     {
         return(new { Result = "ERROR", Message = ex.Message });
     }
 }
Example #8
0
        public static object GenerateTrnObject(string strTradeDate, string strInstrument, string strCtpy, string strPortfolio
                                               , string strEffDate, string strMatDate
                                               , string strNotional1, string strCCY1, string strFFL1, string strFFix1, string strRate1, string strFreq1
                                               , string strNotional2, string strCCY2, string strFFL2, string strFFix2, string strRate2, string strFreq2
                                               , string strOverApprover, string strOverPCE, string strOverSCE, string strComment, string strRemark, string strProductId, bool blnIsSubmit)
        {
            try
            {
                DA_TRN TrnInfo = DealUIP.GenerateSwapTransactionObject(SessionInfo, strTradeDate, strInstrument, strCtpy, strPortfolio
                                                                       , strEffDate, strMatDate, strNotional1
                                                                       , strCCY1, strFFL1, strFFix1, strRate1, strFreq1
                                                                       , strNotional2, strCCY2, strFFL2, strFFix2, strRate2, strFreq2
                                                                       , Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings[AppSettingName.CASHFLOW_SPAN])
                                                                       , strRemark, strProductId);

                object PCESCEObject;
                CheckSwapLimits(blnIsSubmit, TrnInfo, out PCESCEObject);
                return(new
                {
                    Result = "OK",
                    record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()),
                    pcesce = PCESCEObject,
                    Message = ""
                });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
        public List <LimitCheckModel> CheckAllCountry(DateTime ProcessingDate, DA_TRN trn, Guid ExcludeID1, Guid ExcludeID2)
        {
            CounterpartyBusiness   _counterpartyBusiness = new CounterpartyBusiness();
            CountryBusiness        _countryBusiness      = new CountryBusiness();
            List <LimitCheckModel> results = new List <LimitCheckModel>();
            LimitCheckModel        result;
            LimitCheckModel        temp = new LimitCheckModel();
            LimitCheckModel        pce  = new LimitCheckModel();
            MA_COUTERPARTY         ctpy = _counterpartyBusiness.GetCounterpartyAll().FirstOrDefault(p => p.ID == trn.CTPY_ID);

            List <LimitCheckModel> sets = GetCountrySETByCriteria(ProcessingDate, ctpy.COUNTRY_ID, "", ExcludeID1, ExcludeID2);
            List <LimitCheckModel> pces = GetCountryPCEByCriteria(ProcessingDate, ctpy.COUNTRY_ID, "", ExcludeID1, ExcludeID2);

            if (pces.Count != 1)
            {
                throw new Exception("Invalid country limit data. Please contact administrator");
            }
            else
            {
                pce = pces.FirstOrDefault();
            }

            MA_COUNTRY_LIMIT temp_limit = _countryBusiness.GetActiveTempByCountryID(ProcessingDate, trn.MATURITY_DATE.Value, ctpy.COUNTRY_ID);

            DateTime dateStart = trn.TRADE_DATE.Value;
            DateTime dateEnd   = trn.FLAG_SETTLE.HasValue && trn.FLAG_SETTLE.Value ? trn.DA_TRN_FLOW.Max(p => p.FLOW_DATE).Value : trn.TRADE_DATE.Value;

            while (dateStart <= dateEnd)
            {
                result = new LimitCheckModel();

                temp = sets.FirstOrDefault(p => p.FLOW_DATE == dateStart);

                result.COUNTRY_LABEL = pce.COUNTRY_LABEL;
                result.COUNTRY_ID    = pce.COUNTRY_ID;
                result.FLAG_CONTROL  = pce.FLAG_CONTROL;
                result.GEN_AMOUNT    = pce.GEN_AMOUNT;
                result.TEMP_AMOUNT   = temp_limit != null ? temp_limit.AMOUNT : 0;
                //result.AMOUNT = pce.AMOUNT + (temp_limit != null ? temp_limit.AMOUNT : 0);
                result.PROCESSING_DATE        = pce.PROCESSING_DATE;
                result.EXPIRE_DATE            = pce.EXPIRE_DATE;
                result.FLOW_DATE              = dateStart;
                result.ORIGINAL_KK_CONTRIBUTE = pce.ORIGINAL_KK_CONTRIBUTE;

                if (temp != null)
                {
                    result.ORIGINAL_KK_CONTRIBUTE = result.ORIGINAL_KK_CONTRIBUTE + temp.ORIGINAL_KK_CONTRIBUTE;
                }

                results.Add(result);

                //if (dateStart.DayOfWeek == DayOfWeek.Friday)
                //    dateStart = dateStart.AddDays(3);
                //else
                dateStart = dateStart.AddDays(1);
            }

            return(results);
        }
Example #10
0
        public static object SubmitDeal(string strOverApprover, string strOverComment, string record, string strProductId)
        {
            DA_TRN TrnInfo = JsonConvert.DeserializeObject <DA_TRN>(record);

            return(DealUIP.SubmitFIDeal(SessionInfo
                                        , TrnInfo
                                        , strOverApprover
                                        , strOverComment
                                        , strProductId));
        }
        public static object SubmitDeal(string strOverApprover, string strOverComment, string record1, string record2, string strProductId1, string strProductId2)
        {
            DA_TRN TrnInfo1 = JsonConvert.DeserializeObject <DA_TRN>(record1);
            DA_TRN TrnInfo2 = JsonConvert.DeserializeObject <DA_TRN>(record2);

            return(DealUIP.SubmitFXSwapDeal(SessionInfo
                                            , TrnInfo1
                                            , TrnInfo2
                                            , strOverApprover
                                            , strOverComment
                                            , strProductId1
                                            , strProductId2));
        }
        private static void CheckRepoLimit(Boolean blnIsSubmit, DA_TRN record, out object PCESCEObject)
        {
            try
            {
                LimitDisplayModel PCECheckRecords     = DealUIP.CheckPCE(SessionInfo, record, ProductId);
                LimitDisplayModel CountryCheckRecords = DealUIP.CheckCountryLimit(SessionInfo, record, ProductId);

                PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, null, CountryCheckRecords);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        private static void CheckFXSpotLimits(Boolean blnIsSubmit, DA_TRN record, DA_TRN record2, out object PCESCEObject)
        {
            try
            {
                LimitDisplayModel PCECheckRecords     = DealUIP.CheckFXSwapPCE(SessionInfo, record, record2, ProductId);
                LimitDisplayModel SCECheckRecords     = record.FLAG_SETTLE.Value ?  DealUIP.CheckFXSwapSCE(SessionInfo, record, record2, ProductId) : null;
                LimitDisplayModel CountryCheckRecords = DealUIP.CheckFXSwapCountryLimit(SessionInfo, record, record2, ProductId);

                PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, SCECheckRecords, CountryCheckRecords);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public static object GenerateTrnObject(string strTradeDate
                                               , string strBuySell
                                               , string strInstrument
                                               , string strCtpy
                                               , string strPortfolio
                                               , string strEffectiveDate
                                               , string strMaturityDate
                                               , string strNotional
                                               , string strProductId
                                               , string strRemark
                                               , bool blnIsSubmit)
        {
            try
            {
                DA_TRN TrnInfo = DealUIP.GenerateRepoTransactionObject(SessionInfo
                                                                       , strTradeDate
                                                                       , strBuySell
                                                                       , strInstrument
                                                                       , strCtpy
                                                                       , strPortfolio
                                                                       , strEffectiveDate
                                                                       , strMaturityDate
                                                                       , strNotional
                                                                       , strProductId
                                                                       , strRemark);

                object PCESCEObject;
                CheckRepoLimit(blnIsSubmit, TrnInfo, out PCESCEObject);
                return(new
                {
                    Result = "OK",
                    record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()),
                    pcesce = PCESCEObject,
                    Message = ""
                });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
Example #15
0
        private static void CheckFILimit(Boolean blnIsSubmit, DA_TRN record, out object PCESCEObject)
        {
            try
            {
                LimitDisplayModel PCECheckRecords     = DealUIP.CheckPCE(SessionInfo, record, ProductId);
                LimitDisplayModel SCECheckRecords     = null;
                LimitDisplayModel CountryCheckRecords = DealUIP.CheckCountryLimit(SessionInfo, record, ProductId);

                var flagSettle = record.FLAG_SETTLE.Value && record.NOTIONAL_THB.Value > 0;

                if (flagSettle)
                {
                    SCECheckRecords = DealUIP.CheckSCE(SessionInfo, record, ProductId);
                }

                PCESCEObject = ConsoLimitDisplay(blnIsSubmit, PCECheckRecords, SCECheckRecords, CountryCheckRecords);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public static object GetEditByID(Guid id)
        {
            try
            {
                DA_TRN lastTrn1 = DealUIP.GetByID(id);
                DA_TRN lastTrn2 = DealUIP.GetFXSwapPair(SessionInfo, lastTrn1.INT_DEAL_NO, lastTrn1.VERSION, lastTrn1.ID);

                MA_INSTRUMENT ins     = InstrumentUIP.GetByID(SessionInfo, lastTrn1.MA_INSRUMENT.ID);
                var           NearLeg = lastTrn1.FLAG_NEARFAR == "N" ? lastTrn1 : lastTrn2;
                var           FarLeg  = lastTrn2.FLAG_NEARFAR == "F" ? lastTrn2 : lastTrn1;
                var           query   = new
                {
                    TradeDate    = lastTrn1.TRADE_DATE.HasValue ? lastTrn1.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
                    Counterparty = lastTrn1.CTPY_ID.ToString(),
                    Portfolio    = lastTrn1.PORTFOLIO_ID.ToString(),
                    Instrument   = lastTrn1.INSTRUMENT_ID.ToString(),
                    ContractCcy  = lastTrn1.FIRST.CCY_ID.ToString(),
                    SpotDate     = lastTrn1.SPOT_DATE.HasValue ? lastTrn1.SPOT_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
                    SpotRate     = lastTrn1.FIRST.RATE.Value - lastTrn1.FIRST.SWAP_POINT.Value,
                    BSN          = NearLeg.FLAG_BUYSELL,
                    BSF          = FarLeg.FLAG_BUYSELL,
                    SetDateN     = NearLeg.MATURITY_DATE.HasValue ? NearLeg.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
                    SetDateF     = FarLeg.MATURITY_DATE.HasValue ? FarLeg.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
                    SwapPoitN    = NearLeg.FIRST.SWAP_POINT,
                    SwapPoitF    = FarLeg.FIRST.SWAP_POINT,
                    ContAmtN     = Math.Abs(NearLeg.FIRST.NOTIONAL.Value),
                    CountAmtN    = Math.Abs(NearLeg.SECOND.NOTIONAL.Value),
                    ContAmtF     = Math.Abs(FarLeg.FIRST.NOTIONAL.Value),
                    CountAmtF    = Math.Abs(FarLeg.SECOND.NOTIONAL.Value),
                    flag_settle  = lastTrn1.FLAG_SETTLE,
                };
                return(new { Result = "OK", record = query, productid2 = lastTrn2.ID.ToString(), CCY = new { CURRENCY1 = ins.MA_CURRENCY.LABEL, CURRENCY2 = ins.MA_CURRENCY2.LABEL, CURRENCYID1 = ins.MA_CURRENCY.ID, CURRENCYID2 = ins.MA_CURRENCY2.ID, FLAG_MULTIPLY = ins.FLAG_MULTIPLY } });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
Example #17
0
        public static object SubmitFIDeal(SessionInfo sessioninfo
                                          , DA_TRN trn
                                          , string strOverApprover
                                          , string strOverComment
                                          , string strProductId)
        {
            try
            {
                DealBusiness _dealBusiness = new DealBusiness();

                string strDealNO = _dealBusiness.SubmitFIDeal(sessioninfo
                                                              , trn
                                                              , strOverApprover
                                                              , strOverComment
                                                              , strProductId);

                return(new { Result = "OK", Message = strDealNO });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
Example #18
0
 public static object GetEditByID(Guid id)
 {
     try
     {
         DA_TRN trn   = DealUIP.GetByID(id);
         var    query = new
         {
             ID           = trn.ID,
             TradeDate    = trn.TRADE_DATE.HasValue ? trn.TRADE_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             BuySell      = trn.FLAG_BUYSELL,
             MaturityDate = trn.MATURITY_DATE.HasValue ? trn.MATURITY_DATE.Value.ToString(FormatTemplate.DATE_DMY_LABEL) : string.Empty,
             Counterparty = trn.CTPY_ID.ToString(),
             Portfolio    = trn.PORTFOLIO_ID.ToString(),
             Instrument   = trn.INSTRUMENT_ID.ToString(),
             Notional1    = Math.Abs(trn.FIRST.NOTIONAL.Value),
             SettleFlag   = trn.FLAG_SETTLE.HasValue ? (trn.FLAG_SETTLE.Value ? "1" : "0") : "0",
             Remark       = trn.REMARK,
             Yield        = trn.FIRST.RATE,
             Unit         = trn.DA_TMBA_EXTENSION.UNIT,
             CPrice       = trn.DA_TMBA_EXTENSION.CLEAN_PRICE,
             GPrice       = trn.DA_TMBA_EXTENSION.GROSS_PRICE,
             PMarket      = trn.FLAG_PCE.HasValue ? (trn.FLAG_PCE.Value ? "1" : "0") : "0",
             YType        = trn.DA_TMBA_EXTENSION.YIELD_TYPE,
             Purpose      = trn.DA_TMBA_EXTENSION.PURPOSE,
             ReportBy     = trn.DA_TMBA_EXTENSION.IS_REPORT_CLEAN ? "0" : "1",
             Term         = trn.DA_TMBA_EXTENSION.TERM.HasValue ? trn.DA_TMBA_EXTENSION.TERM.Value.ToString() : "",
             Rate         = trn.DA_TMBA_EXTENSION.RATE.HasValue ? trn.DA_TMBA_EXTENSION.RATE.Value.ToString() : "",
             TBMARemark   = trn.DA_TMBA_EXTENSION.REMARK,
             LotSize      = trn.MA_INSRUMENT.LOT_SIZE
         };
         return(new { Result = "OK", record = query });
     }
     catch (Exception ex)
     {
         return(new { Result = "ERROR", Message = ex.Message });
     }
 }
Example #19
0
        public MA_PCCF ValidatePCCFConfig(SessionInfo sessioninfo, DA_TRN record)
        {
            MA_PCCF val = null;
            bool    blnResult;

            //enter conditions
            LoggingHelper.Debug("Begin validate PCCF from config");
            using (EFUnitOfWork unitOfWork = new EFUnitOfWork())
            {
                var props   = record.GetType().GetProperties();
                var configs = unitOfWork.MA_PCCF_CONFIGRepository.GetAll()
                              .Where(p => p.PRODUCT_ID.Equals(record.PRODUCT_ID))
                              .OrderBy(p => p.PRIORITY);

                //bool isBond = string.Compare(unitOfWork.MA_PRODUCTRepository.GetById(record.PRODUCT_ID.Value).LABEL, ProductCode.BOND.ToString(), true) == 0;

                if (configs != null)
                {
                    List <bool> ismatchs = new List <bool>();
                    object      obj;
                    foreach (MA_PCCF_CONFIG p in configs.ToList())
                    {
                        ismatchs.Clear();
                        blnResult = false;

                        //List<MA_CONFIG_ATTRIBUTE> atts = unitOfWork.MA_CONFIG_ATTRIBUTERepository.All().Where(t => t.PCCF_CONFIG_ID == p.ID && t.ISACTIVE == true).ToList() ;

                        foreach (MA_CONFIG_ATTRIBUTE ca in p.MA_CONFIG_ATTRIBUTE.Where(t => t.ISACTIVE == true).ToList())
                        {
                            //Fix for Tables
                            switch (ca.TABLE)
                            {
                            case "DA_TRN":
                                var sel = props.FirstOrDefault(t => t.Name.Equals(ca.ATTRIBUTE));
                                if (sel != null)
                                {
                                    if (sel.GetValue(record, null).GetType() == typeof(Guid))
                                    {
                                        switch (ca.ATTRIBUTE)
                                        {
                                        //Fix for fields
                                        case "INSTRUMENT_ID":
                                            obj = new MA_INSTRUMENT();
                                            obj = unitOfWork.MA_INSTRUMENTRepository.GetByIDWithOutInclude(new Guid(sel.GetValue(record, null).ToString()));

                                            blnResult = ((MA_INSTRUMENT)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);
                                            //ismatchs.Add(blnResult);

                                            break;

                                        default:
                                            break;
                                        }
                                    }
                                    else if (sel.GetValue(record, null).GetType() == typeof(Boolean))
                                    {
                                        blnResult = sel.GetValue(record, null).Equals(ca.VALUE == "0" ? false : true);    // ismatchs.Add(fsel.GetValue(record.FIRST, null).Equals(ca.VALUE=="0" ? false : true));
                                    }
                                    else
                                    {
                                        blnResult = sel.GetValue(record, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);
                                        //ismatchs.Add(blnResult);
                                    }
                                }
                                break;

                            case "BOND_MARKET":
                                MA_INSTRUMENT insMkt = unitOfWork.MA_INSTRUMENTRepository.GetByIDWithInsMarket(record.INSTRUMENT_ID.Value);

                                if (insMkt.MA_BOND_MARKET != null)
                                {
                                    blnResult = insMkt.MA_BOND_MARKET.LABEL.Equals(ca.VALUE);
                                    //ismatchs.Add(blnResult);
                                }
                                //else
                                //ismatchs.Add(false);

                                break;

                            case "FIRST":
                                var fsel = record.FIRST.GetType().GetProperties().FirstOrDefault(f => f.Name.Equals(ca.ATTRIBUTE));
                                if (fsel != null)
                                {
                                    if (fsel.GetValue(record.FIRST, null) != null)
                                    {
                                        if (fsel.GetValue(record.FIRST, null).GetType() == typeof(Guid))
                                        {
                                            switch (ca.ATTRIBUTE)
                                            {
                                            //Fix for fields
                                            case "CCY_ID":
                                                obj = new MA_CURRENCY();
                                                obj = unitOfWork.MA_CURRENCYRepository.GetByID(new Guid(fsel.GetValue(record.FIRST, null).ToString()));

                                                blnResult = ((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);
                                                //ismatchs.Add();

                                                break;

                                            default:
                                                break;
                                            }
                                        }
                                        else if (fsel.GetValue(record.FIRST, null).GetType() == typeof(Boolean))
                                        {
                                            blnResult = fsel.GetValue(record.FIRST, null).Equals(ca.VALUE == "0" ? false : true);    // ismatchs.Add(fsel.GetValue(record.FIRST, null).Equals(ca.VALUE=="0" ? false : true));
                                        }
                                        else
                                        {
                                            blnResult = fsel.GetValue(record.FIRST, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);     //ismatchs.Add(fsel.GetValue(record.FIRST, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase));
                                        }
                                    }
                                    //else ismatchs.Add(false);
                                }
                                break;

                            case "SECOND":
                                //var secprop = props.FirstOrDefault(f => f.Name.Equals("SECOND"));
                                var ssel = record.SECOND.GetType().GetProperties().FirstOrDefault(f => f.Name.Equals(ca.ATTRIBUTE));
                                if (ssel != null)
                                {
                                    if (ssel.GetValue(record.SECOND, null) != null)
                                    {
                                        if (ssel.GetValue(record.SECOND, null).GetType() == typeof(Guid))
                                        {
                                            switch (ca.ATTRIBUTE)
                                            {
                                            //Fix for fields
                                            case "CCY_ID":
                                                obj = new MA_CURRENCY();
                                                obj = unitOfWork.MA_CURRENCYRepository.GetByID(new Guid(ssel.GetValue(record.SECOND, null).ToString()));

                                                blnResult = ((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);
                                                //ismatchs.Add(((MA_CURRENCY)obj).LABEL.Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase));

                                                break;

                                            default:
                                                break;
                                            }
                                        }
                                        else if (ssel.GetValue(record.SECOND, null).GetType() == typeof(Boolean))
                                        {
                                            blnResult = ssel.GetValue(record.SECOND, null).Equals(ca.VALUE == "0" ? false : true);    // ismatchs.Add(ssel.GetValue(record.SECOND, null).Equals(ca.VALUE == "0" ? false : true));
                                        }
                                        else
                                        {
                                            blnResult = ssel.GetValue(record.SECOND, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase);    // ismatchs.Add(ssel.GetValue(record.SECOND, null).ToString().Equals(ca.VALUE, StringComparison.CurrentCultureIgnoreCase));
                                        }
                                    }
                                    //else ismatchs.Add(false);
                                }
                                break;

                            case "COUNTERPARTY":
                                MA_COUTERPARTY ctpy = unitOfWork.MA_COUTERPARTYRepository.GetAll().FirstOrDefault(z => z.ID == record.CTPY_ID);

                                switch (ca.ATTRIBUTE)
                                {
                                case "SNAME":
                                    blnResult = ctpy.SNAME.ToUpper() == ca.VALUE.ToUpper();

                                    break;

                                case "CSA_TYPE":

                                    MA_CSA_AGREEMENT csa = unitOfWork.MA_CSA_AGREEMENTRepository.GetAll().FirstOrDefault(y => y.ID == record.CTPY_ID);

                                    if (csa != null &&
                                        csa.MA_CSA_TYPE.LABEL.ToUpper() == ca.VALUE.ToUpper() &&
                                        csa.MA_CSA_PRODUCT.FirstOrDefault(y => y.PRODUCT_ID == record.PRODUCT_ID) != null)
                                    {
                                        blnResult = true;
                                    }
                                    //else if (csa == null && ca.VALUE == "")
                                    //    blnResult = true;
                                    else
                                    {
                                        blnResult = false;
                                    }

                                    break;

                                default:
                                    break;
                                }

                                break;
                            }

                            ismatchs.Add(blnResult);

                            //Check result -> if false then go to next config
                            if (!blnResult)
                            {
                                break;
                            }
                        }

                        if (ismatchs.Where(m => m.Equals(false)).Count() == 0)
                        {
                            val = unitOfWork.MA_PCCFRepository.GetByID(p.PCCF_ID);
                            LoggingHelper.Debug("PCCF: " + val.LABEL);
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
                else
                {
                    val = null;
                }
            }
            LoggingHelper.Debug("End validate PCCF from config");
            return(val);
        }
Example #20
0
        public static LimitDisplayModel CheckSwapCountryLimit(SessionInfo sessioninfo, DA_TRN trn, string strExcludeID)
        {
            DealBusiness _dealBusiness = new DealBusiness();

            return(_dealBusiness.CheckSwapCountryLimit(sessioninfo, trn, strExcludeID));
        }
Example #21
0
        public static LimitDisplayModel CheckFXSwapSCE(SessionInfo sessioninfo, DA_TRN trn1, DA_TRN trn2, string strExcludeID)
        {
            DealBusiness _dealBusiness = new DealBusiness();

            return(_dealBusiness.CheckFXSwapSCE(sessioninfo, trn1, trn2, strExcludeID));
        }
        public decimal?GetPCCF(SessionInfo sessioninfo, DA_TRN trn)
        {
            try
            {
                decimal?           decPCCF         = null;
                LookupBusiness     _lookupBusiness = new LookupBusiness();
                PCCFConfigBusiness _pccfBusiness   = new PCCFConfigBusiness();

                MA_PRODUCT  product  = _lookupBusiness.GetProductByID(sessioninfo, trn.PRODUCT_ID.Value);
                ProductCode nProduct = (ProductCode)Enum.Parse(typeof(ProductCode), product.LABEL.Replace(" ", string.Empty));

                MA_PCCF pccf = _pccfBusiness.ValidatePCCFConfig(sessioninfo, trn);

                //if (pccf == null)
                //    throw this.CreateException(new Exception(), "Cannot find PCCF for transaction #" + trn.EXT_DEAL_NO);

                if (nProduct == ProductCode.BOND || nProduct == ProductCode.REPO)
                {
                    InstrumentBusiness _instrumentBusiness = new InstrumentBusiness();

                    //------Check whether seleted bond can be used.---------
                    MA_INSTRUMENT ins = _instrumentBusiness.GetByID(sessioninfo, trn.INSTRUMENT_ID.Value);

                    if (trn.MATURITY_DATE >= ins.MATURITY_DATE)
                    {
                        throw this.CreateException(new Exception(), "Settlement date cannot be equal or after bond maturity date.");
                    }

                    if (pccf == null)
                    {
                        throw this.CreateException(new Exception(), "Selected instrument cannot be used.");
                    }
                    //-------------------------------------------------------

                    decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetYearBucket(trn.START_DATE.Value, ins.MATURITY_DATE.Value));
                }
                else
                {
                    if (pccf == null)
                    {
                        throw this.CreateException(new Exception(), "PCCF is not defined in the system." + "RF");
                    }

                    if (nProduct == ProductCode.SWAP)
                    {
                        decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetYearBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value));
                    }
                    else if (nProduct == ProductCode.FXSPOT)
                    {
                        decPCCF = pccf.DEFAULT;
                    }
                    else if (nProduct == ProductCode.FXFORWARD)
                    {
                        decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetMonthBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value));
                    }
                    else if (nProduct == ProductCode.FXSWAP)
                    {
                        if (trn.TRADE_DATE == trn.MATURITY_DATE)
                        {
                            decPCCF = pccf.C0D;
                        }
                        else if (trn.MATURITY_DATE < trn.SPOT_DATE)
                        {
                            decPCCF = pccf.C1D;
                        }
                        else if (trn.MATURITY_DATE == trn.SPOT_DATE)
                        {
                            decPCCF = pccf.DEFAULT;
                        }
                        else
                        {
                            decPCCF = LimitHelper.GetPCCFValue(pccf, LimitHelper.GetMonthBucket(trn.START_DATE.Value, trn.MATURITY_DATE.Value));
                        }
                    }
                }

                return(decPCCF);
            }
            catch (Exception ex)
            {
                throw this.CreateException(ex, null);
            }
        }
Example #23
0
 public static object CancelDeal(DA_TRN record)
 {
     return(DealViewUIP.CancelDeal(SessionInfo, record));
 }
Example #24
0
        public static object CancelDeal(SessionInfo sessioninfo, DA_TRN trn)
        {
            try
            {
                LookupBusiness _lookupBusiness = new LookupBusiness();
                UserBusiness   _userBusiness   = new UserBusiness();
                DealBusiness   _dealbusiness   = new DealBusiness();
                DA_TRN         t  = _dealbusiness.CancelDeal(sessioninfo, trn);
                DA_TRN         t2 = _dealbusiness.GetDealByDealNo(t.INT_DEAL_NO, t.VERSION).FirstOrDefault(p => p.ID != t.ID);
                if (t2 != null)
                {
                    _dealbusiness.CancelDeal(sessioninfo, t2);
                }
                var inputuser = _userBusiness.GetAll().FirstOrDefault(u => u.ID == t.LOG.INSERTBYUSERID);

                var query = new DealViewModel
                {
                    ID        = t.ID,
                    EntryDate = t.LOG.INSERTDATE,
                    DMK_NO    = t.INT_DEAL_NO
                    ,
                    OPICS_NO  = t.EXT_DEAL_NO,
                    TradeDate = t.TRADE_DATE.Value
                    ,
                    EffectiveDate = t.START_DATE,
                    Instrument    = t.MA_INSRUMENT.LABEL
                    ,
                    MaturityDate = t.MATURITY_DATE,
                    BuySell      = t.FLAG_BUYSELL
                    ,
                    Product   = t.MA_PRODUCT.LABEL,
                    Portfolio = t.MA_PORTFOLIO.LABEL
                    ,
                    Counterparty = t.MA_COUTERPARTY.SNAME,
                    Notional1    = t.FIRST.NOTIONAL
                    ,
                    PayRec1     = t.FIRST.FLAG_PAYREC,
                    FixedFloat1 = !t.FIRST.FLAG_FIXED.HasValue ? null : t.FIRST.FLAG_FIXED.Value ? "FIXED" : "FLOAT"
                    ,
                    Rate1      = t.FIRST.RATE,
                    Fixing1    = t.FIRST.FIRSTFIXINGAMT,
                    SwapPoint1 = t.FIRST.SWAP_POINT,
                    Notional2  = t.SECOND.NOTIONAL
                    ,
                    PayRec2     = t.SECOND.FLAG_PAYREC,
                    FixedFloat2 = !t.SECOND.FLAG_FIXED.HasValue ? null : t.SECOND.FLAG_FIXED == true ? "FIXED" : "FLOAT"
                    ,
                    Rate2      = t.SECOND.RATE,
                    Fixing2    = t.SECOND.FIRSTFIXINGAMT,
                    SwapPoint2 = t.SECOND.SWAP_POINT,
                    Status     = _lookupBusiness.GetStatusAll().FirstOrDefault(p => p.ID == t.STATUS_ID).LABEL
                    ,
                    KKContribute  = t.KK_CONTRIBUTE,
                    BotContribute = t.BOT_CONTRIBUTE
                    ,
                    LimitOverwrite = string.IsNullOrEmpty(t.OVER_APPROVER) ? "No" : t.OVER_AMOUNT > 0 && t.OVER_SETTL_AMOUNT > 0 ? "Yes" : t.OVER_AMOUNT > 0 ? "PCE" : "SET"
                    ,
                    LimitApprover = t.OVER_APPROVER
                    ,
                    Trader = inputuser != null ? inputuser.USERCODE : ""
                    ,
                    Remark = t.REMARK
                };
                return(new { Result = "OK", Record = query, DealPairID = t2 != null?t2.ID.ToString() : string.Empty });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }
Example #25
0
        public static object GenerateTrnObject(string strTradeDate
                                               , string strBuySell
                                               , string strInstrument
                                               , string strCtpy
                                               , string strPortfolio
                                               , string strSettlementDate
                                               , string strYield
                                               , string strUnit
                                               , string strCleanPrice
                                               , string strGrossPrice
                                               , string strNotional
                                               , string strCCY
                                               , string strPceFlag
                                               , string strSettleFlag
                                               , string strYeildType
                                               , string strReportBy
                                               , string strPurpose
                                               , string strTerm
                                               , string strRate
                                               , string strTBMARemark
                                               , string strRemark
                                               , string strProductId
                                               , bool blnIsSubmit)
        {
            try
            {
                DA_TRN TrnInfo = DealUIP.GenerateFITransactionObject(SessionInfo
                                                                     , strTradeDate
                                                                     , strBuySell
                                                                     , strInstrument
                                                                     , strCtpy
                                                                     , strPortfolio
                                                                     , strSettlementDate
                                                                     , strYield
                                                                     , strUnit
                                                                     , strCleanPrice
                                                                     , strGrossPrice
                                                                     , strNotional
                                                                     , strCCY
                                                                     , strPceFlag
                                                                     , strSettleFlag
                                                                     , strYeildType
                                                                     , strReportBy
                                                                     , strPurpose
                                                                     , strTerm
                                                                     , strRate
                                                                     , strTBMARemark
                                                                     , strRemark
                                                                     , strProductId);


                object PCESCEObject;
                CheckFILimit(blnIsSubmit, TrnInfo, out PCESCEObject);
                return(new { Result = "OK",
                             record = JsonConvert.SerializeObject(TrnInfo, new IsoDateTimeConverter()),
                             pcesce = PCESCEObject,
                             Message = "" });
            }
            catch (Exception ex)
            {
                return(new { Result = "ERROR", Message = ex.Message });
            }
        }