internal static ClientRateComponent CreateClientRateComponent(LineItemQuote lineItemQuote) { return(new ClientRateComponent { ClientRate = lineItemQuote.ClientRate, CostRateComponent = new CostRateComponent { SpotRate = lineItemQuote.SpotRate, ForwardPoints = lineItemQuote.ForwardPoints } }); }
public LineItemQuote GetRepurchaseLineItemQuote(decimal itemRate, ClientRateComponent relatedClientRateComponent) { var lineItemQuote = new LineItemQuote { SpotRate = relatedClientRateComponent.CostRateComponent.SpotRate, ForwardPoints = relatedClientRateComponent.CostRateComponent.ForwardPoints, ClientRate = itemRate != 0 ? CreateRateFromMultipliedValue(relatedClientRateComponent.ClientRate.RateConvention, itemRate, relatedClientRateComponent.ClientRate.UnitCurrency, relatedClientRateComponent.ClientRate.RefCurrency, relatedClientRateComponent.ClientRate.MetaData.MultiplierDirect, relatedClientRateComponent.ClientRate.MetaData.NumberOfDecimalsDirectMultiplied, relatedClientRateComponent.ClientRate.MetaData.NumberOfDecimalsIndirectMultiplied) : relatedClientRateComponent.ClientRate }; return(lineItemQuote); }
private static LineItemQuote GetLineItemQuoteFromDataReader(SqlDataReader reader) { var lineItemQuote = new LineItemQuote(); PopulateQuoteFromDataReader(lineItemQuote, reader); var tradeCurrency = CurrencyCache.Instance.GetById(Convert.ToInt32(reader["Currency_ID"])); var settlementCurrency = CurrencyCache.Instance.GetById(Convert.ToInt32(reader["SettlementCurrency_ID"])); var rateConventionSpotRate = (RateConvention)Convert.ToInt32(reader["SpotRateIsPer"]); var rateConventionClientRate = (RateConvention)Convert.ToInt32(reader["ClientRateIsPer"]); var rateConventionForwardPoints = (RateConvention)Convert.ToInt32(reader["ForwardPointsIsPer"]); if (rateConventionClientRate == RateConvention.Default) { rateConventionClientRate = rateConventionSpotRate; } var nDecIndirect = Convert.ToInt32(reader["SpotRateNDecPer"]); var nDecDirect = Convert.ToInt32(reader["SpotRateNDecIn"]); lineItemQuote.SpotRate = CreateRateFromUnmultipliedValue(rateConventionSpotRate, Convert.ToDecimal(reader["SpotRate"]), settlementCurrency, tradeCurrency, Convert.ToInt32(reader["RateMultiplier"]), nDecDirect, nDecIndirect); lineItemQuote.ClientRate = CreateRateFromMultipliedValue(rateConventionClientRate, Convert.ToDecimal(reader["ClientRate"]), settlementCurrency, tradeCurrency, Convert.ToInt32(reader["RateMultiplier"]), nDecDirect, nDecIndirect); lineItemQuote.ForwardPoints = CalculateForwardPoints(DbReadingUtility.NullableDecimal(reader["ForwardPoints"]), rateConventionSpotRate, rateConventionForwardPoints, lineItemQuote); lineItemQuote.MarkupPct = ConvertCctMarkupInTenthsOfPercentToMarkupInPercent(DbReadingUtility.NullableDecimal(reader["Spread"])); lineItemQuote.StartValueDate = DbReadingUtility.NullableDateTime(reader["ForwardStartDate"]); lineItemQuote.EndValueDate = DbReadingUtility.NullableDateTime(reader["ForwardEndDate"]); return(lineItemQuote); }
private static decimal CalculateForwardPoints(decimal forwardPoints, RateConvention rateConventionSpotRate, RateConvention rateConventionForwardPoints, LineItemQuote lineItem) { return(rateConventionForwardPoints != rateConventionSpotRate ? lineItem.SpotRate.NewValue(1 / lineItem.ClientRate - 1 / (lineItem.ClientRate - forwardPoints)).RoundedValue : forwardPoints); }