protected void OnComboCurrencyModeChanged(object sender, EventArgs e) { currencyMode = (CurrencyMode)comboCurrencyMode.SelectedItem; var priceEditColumn = projectTreeView.Columns.First(x => x.Title == "Цена"); var priceColumn = projectTreeView.Columns.First(x => x.Title == "Цена в валюте"); switch (currencyMode) { case CurrencyMode.Edit: labelCurrencyInfo.LabelProp = String.Empty; priceEditColumn.Visible = true; priceColumn.Visible = false; break; case CurrencyMode.EUR: labelCurrencyInfo.LabelProp = String.Format("1 EUR = {0:N2} USD\n1 EUR = {1:N2} RUB", CurrencyConverter.Convert(1, "EUR", "USD"), CurrencyConverter.Convert(1, "EUR", "RUB") ); priceEditColumn.Visible = false; priceColumn.Visible = true; break; case CurrencyMode.RUB: labelCurrencyInfo.LabelProp = String.Format("100 RUB = {0:N2} USD\n100 RUB = {1:N2} EUR", CurrencyConverter.Convert(100, "RUB", "USD"), CurrencyConverter.Convert(100, "RUB", "EUR") ); priceEditColumn.Visible = false; priceColumn.Visible = true; break; case CurrencyMode.USD: labelCurrencyInfo.LabelProp = String.Format("1 USD = {0:N2} EUR\n1 USD = {1:N2} RUB", CurrencyConverter.Convert(1, "USD", "EUR"), CurrencyConverter.Convert(1, "USD", "RUB") ); priceEditColumn.Visible = false; priceColumn.Visible = true; break; } projectTreeView.QueueDraw(); }
private string NewSpecialCurrencies(int jobKeyCode, string tradeId, string investmentType, string priceDenomination, string counterInvestment, string dcFlag, string dcFxRate, CurrencyMode mode, string tradeFX, string counterTDateFx, string counterSDateFx) { double _tradeFX = double.NaN; double _dcFxRate = double.NaN; double _counterTDateFx = double.NaN; double _counterSDateFx = double.NaN; try { #region Type conversions and checks if (!double.TryParse(tradeFX, out _tradeFX) || double.IsNaN(1.0/_tradeFX)) log.InfoFormat(jobKeyCode, "Trade {0}: Invalid Fx Rate ({1})", tradeId, tradeFX); if (!double.TryParse(dcFxRate, out _dcFxRate) || double.IsNaN(1.0/_dcFxRate)) log.InfoFormat(jobKeyCode, "Trade {0}: Invalid Dual Currency Fx Rate ({1})", tradeId, dcFxRate); if (!double.TryParse(counterTDateFx, out _counterTDateFx) || double.IsNaN(1.0/_counterTDateFx)) log.InfoFormat(jobKeyCode, "Trade {0}: Invalid CounterTDateFx Rate ({1})", tradeId, counterTDateFx); if (!double.TryParse(counterSDateFx, out _counterSDateFx) || double.IsNaN(1.0/_counterSDateFx)) log.InfoFormat(jobKeyCode, "Trade {0}: Invalid CounterSDateFx Rate ({1})", tradeId, counterSDateFx); if (!priceDenomination.Equals(counterInvestment)) log.InfoFormat(jobKeyCode, "Trade {0} is DUAL CURRENCY! PriceDenomination {1} CounterInvestment {2}", tradeId, priceDenomination, counterInvestment); #endregion if (dcFlag.Equals("DC")) { switch (mode) { case CurrencyMode.tradeFX: return priceDenomination.Equals(counterInvestment) ? " " : dcFxRate; case CurrencyMode.CounterTDateFx: return counterTDateFx; case CurrencyMode.CounterSDateFx: return counterSDateFx; } } if (investmentType.Equals("FXO") && mode == CurrencyMode.tradeFX) return tradeFX; if ((SpecialCurrencies.Contains(priceDenomination) && SpecialCurrencies.Contains(counterInvestment)) //Prod1-Prod2 OPTI with AUD && !(investmentType.Equals("OPTI") && priceDenomination.Equals("AUD") && counterInvestment.Equals("AUD"))) { switch (mode) { case CurrencyMode.CounterSDateFx: case CurrencyMode.CounterTDateFx: //return (1.0/_tradeFX).ToString(); return double.IsInfinity(1.0/_tradeFX) ? "" : (1.0/_tradeFX).ToString(); case CurrencyMode.tradeFX: return " "; } } else { switch (mode) { case CurrencyMode.CounterSDateFx: case CurrencyMode.CounterTDateFx: return " "; case CurrencyMode.tradeFX: return "1.0"; } } } #region 1st Version. To be review when DC will come /* if (SwapTypes.Contains(investmentType) && SpecialCurrencies.Contains(priceDenomination) && SpecialCurrencies.Contains(counterInvestment) && priceDenomination == counterInvestment) { switch (mode) { case CurrencyMode.CounterSDateFx: case CurrencyMode.CounterTDateFx: if (dcFlag.Equals("DC")) return (1.0 / _dcFxRate).ToString(); else return (1.0 / _tradeFX).ToString(); case CurrencyMode.tradeFX: if (dcFlag.Equals("DC")) return (_dcFxRate).ToString(); else return ""; //(_tradeFX).ToString(); } } #region priceDenomination != counterInvestment else if (priceDenomination != counterInvestment) { switch (mode) { case CurrencyMode.CounterSDateFx: return (1.0 / _counterSDateFx).ToString(); case CurrencyMode.CounterTDateFx: return (1.0 / _counterTDateFx).ToString(); case CurrencyMode.tradeFX: if (dcFlag.Equals("DC")) return (1.0 / _dcFxRate).ToString(); return (1.0 / _tradeFX).ToString(); } } #endregion else { if (priceDenomination == counterInvestment) { //We are generating another spagettii here... if (NoCounterFXDenominationTypes.Contains(investmentType) && (mode == CurrencyMode.CounterSDateFx || mode == CurrencyMode.CounterTDateFx)) { return ""; } switch (mode) { case CurrencyMode.CounterSDateFx: return (1.0 / _counterSDateFx).ToString(); case CurrencyMode.CounterTDateFx: return (1.0 / _counterTDateFx).ToString(); case CurrencyMode.tradeFX: return "1.0"; } } switch (mode) { case CurrencyMode.CounterSDateFx: case CurrencyMode.CounterTDateFx: return ""; case CurrencyMode.tradeFX: if (dcFlag.Equals("DC")) return (1.0 / _dcFxRate).ToString(); return "1.0"; } */ #endregion catch (Exception ex) { log.ErrorFormat(jobKeyCode, ex.ToString()); } return tradeFX; }