Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }