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); } }
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); } }