/// <summary> /// Returns the valid exchange rate for a given pair of currencies. /// </summary> /// <param name="fromCurrency">From currency.</param> /// <param name="toCurrency">To currency.</param> /// <returns>The exchange rate</returns> /// <remarks></remarks> public decimal GetExchangeRate(string fromCurrency, string toCurrency) { decimal exchangeRate = 0.00M; // Check wheter currency code in parameters are whitespaces or null. if (string.IsNullOrWhiteSpace(fromCurrency)) { throw new ArgumentNullException("fromCurrency"); } if (string.IsNullOrWhiteSpace(toCurrency)) { throw new ArgumentNullException("toCurrency"); } // If from and to currency is the same one return 1.0M if (string.Equals(fromCurrency.Trim(), toCurrency.Trim(), StringComparison.OrdinalIgnoreCase)) { return(1.0M); } //Exchange Rate Data manager ExchangeRateDataManager exchangeRateData = new ExchangeRateDataManager( ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); //Gets valid Exchange Rate Type for POS Int64 exchangeRateType = ApplicationSettings.Terminal.ExchangeRateType; exchangeRate = exchangeRateData.GetExchangeRate(fromCurrency, toCurrency, exchangeRateType); return(exchangeRate / 100); }
protected override void OnLoad(EventArgs e) { if (!this.DesignMode) { LogMessage("Loading frmTenderCount", LSRetailPosis.LogTraceLevel.Trace, this.ToString()); TranslateLabels(); // Check which amounts the POS will expect per tendertype // Start by checking which tender types to count.... TenderData tenderData = new TenderData( ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); LoadFromTenderData(tenderData); LogMessage("Counting " + tendersToCount.Rows.Count + " tenders", LSRetailPosis.LogTraceLevel.Trace, this.ToString()); gridSource = new System.Collections.Generic.List <TenderViewModel>(); denominationDataSources = new Dictionary <int, List <DenominationViewModel> >(); foreach (DataRow row in tendersToCount.Rows) { ITender tmpTender = Dialog.InternalApplication.BusinessLogic.Utility.CreateTender(); tmpTender.TenderID = row["TENDERTYPEID"].ToString(); tmpTender.TenderName = row["NAME"].ToString(); tmpTender.PosisOperation = (PosisOperations)(row["POSOPERATION"]); LSRetailPosis.ApplicationLog.Log(this.ToString(), "Counting: " + tmpTender.TenderID + " " + tmpTender.TenderName + " " + tmpTender.PosisOperation.ToString(), LSRetailPosis.LogTraceLevel.Trace); switch (tmpTender.PosisOperation) { case PosisOperations.PayCash: cashCounted = true; TenderViewModel cashRow = new TenderViewModel() { TenderTypeId = tmpTender.TenderID, TenderOperationType = tmpTender.PosisOperation, TenderName = tmpTender.TenderName, DisplayName = ApplicationLocalizer.Language.Translate(STRING_ID_TENDER_NAME, ApplicationSettings.Terminal.StoreCurrency), Currency = ApplicationSettings.Terminal.StoreCurrency }; gridSource.Insert(0, cashRow); break; case PosisOperations.PayCurrency: foreignCurrencyCounted = true; ExchangeRateDataManager exchangeRateData = new ExchangeRateDataManager(ApplicationSettings.Database.LocalConnection, ApplicationSettings.Database.DATAAREAID); //Initialize with all number of currencies avialable foreach (string currency in exchangeRateData.GetCurrencyPair( ApplicationSettings.Terminal.StoreCurrency, ApplicationSettings.Terminal.ExchangeRateType, ApplicationSettings.Terminal.StorePrimaryId)) { TenderViewModel currencyRow = new TenderViewModel() { TenderTypeId = tmpTender.TenderID, TenderOperationType = tmpTender.PosisOperation, TenderName = tmpTender.TenderName, DisplayName = ApplicationLocalizer.Language.Translate(STRING_ID_TENDER_NAME, currency), Currency = currency }; gridSource.Insert(gridSource.Count > 0 ? 1 : 0, currencyRow); } break; default: otherTendersCounted = true; TenderViewModel otherRow = new TenderViewModel() { TenderTypeId = tmpTender.TenderID, TenderOperationType = tmpTender.PosisOperation, TenderName = tmpTender.TenderName, DisplayName = tmpTender.TenderName }; gridSource.Add(otherRow); break; } } this.gridTenders.DataSource = gridSource; this.Text = lblHeader.Text = formHeadingText; this.gvTenders.Appearance.HeaderPanel.ForeColor = this.ForeColor; this.gvTenders.Appearance.Row.ForeColor = this.ForeColor; UpdateTotalAmount(); } base.OnLoad(e); }