/// <summary>
    /// Generates where condition for uniselector.
    /// </summary>
    protected override string GenerateWhereCondition()
    {
        CurrencyInfo main           = CurrencyInfoProvider.GetMainCurrency(SiteID);
        int          mainCurrencyId = (main != null) ? main.CurrencyID : 0;

        // Prepare where condition
        string where = "";
        if (DisplayOnlyWithExchangeRate)
        {
            ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(SiteID);
            if (tableInfo != null)
            {
                where = "(CurrencyID = " + mainCurrencyId + " OR CurrencyID IN (SELECT ExchangeRateToCurrencyID FROM COM_CurrencyExchangeRate WHERE COM_CurrencyExchangeRate.ExchangeTableID = " + tableInfo.ExchangeTableID + ") AND CurrencyEnabled = 1)";
            }
            else
            {
                where = "(0=1)";
            }
        }

        // Add site main currency when required
        if (AddSiteDefaultCurrency && (main != null))
        {
            where = SqlHelper.AddWhereCondition(where, "CurrencyID = " + mainCurrencyId, "OR");
        }

        // Exclude site main currency when required
        if (ExcludeSiteDefaultCurrency && (main != null))
        {
            where = SqlHelper.AddWhereCondition(where, "(NOT CurrencyID = " + mainCurrencyId + ")");
        }

        // Add base where condition
        return(SqlHelper.AddWhereCondition(where, base.GenerateWhereCondition()));
    }
Exemple #2
0
    /// <summary>
    ///  Copies site-specific exchange rates from last valid global exchange table.
    /// </summary>
    protected void CopyFromGlobal()
    {
        CheckConfigurationModification();

        ExchangeTableInfo globalTable = ExchangeTableInfoProvider.GetLastExchangeTableInfo(0);

        if (globalTable != null)
        {
            ExchangeRateInfoProvider.CopyExchangeRates(globalTable.ExchangeTableID, mExchangeTableId);
        }
    }
Exemple #3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!RequestHelper.IsPostBack())
     {
         ExchangeTableInfo eti = (ExchangeTableInfo)InfoToClone;
         if (eti != null)
         {
             dtValidFrom.SelectedDateTime = eti.ExchangeTableValidFrom;
             dtValidTo.SelectedDateTime   = eti.ExchangeTableValidTo;
         }
     }
 }
    private void FindCurrentTableID()
    {
        mCurrentTableId = 0;

        // Get current table (it will be highlighted in the listing)
        ExchangeTableInfo eti = ExchangeTableInfoProvider.GetLastExchangeTableInfo(SiteID);

        if (eti != null)
        {
            mCurrentTableId = eti.ExchangeTableID;
        }
    }
    /// <summary>
    /// Load data of editing exchangeTable.
    /// </summary>
    /// <param name="exchangeTableObj">ExchangeTable object</param>
    protected void LoadData(ExchangeTableInfo exchangeTableObj)
    {
        editGrid.Columns[0].HeaderText = GetString("ExchangeTable_Edit.ToCurrency");
        editGrid.Columns[1].HeaderText = GetString("ExchangeTable_Edit.RateValue");

        // Get exchange rates and fill the dictionary
        DataSet dsExRates = ExchangeRateInfoProvider.GetExchangeRates(mExchangeTableId);
        if (!DataHelper.DataSourceIsEmpty(dsExRates))
        {
            foreach (DataRow dr in dsExRates.Tables[0].Rows)
            {
                int toCurrencyId = ValidationHelper.GetInteger(dr["ExchangeRateToCurrencyID"], -1);
                if (!mExchangeRates.ContainsKey(toCurrencyId))
                {
                    mExchangeRates.Add(toCurrencyId, dr);
                }
            }
        }

        DataSet dsAllCurrencies = CurrencyInfoProvider.GetCurrencies(ConfiguredSiteID);
        // Row index of main currency
        int mainCurrIndex = -1;
        int i = 0;

        if (!DataHelper.DataSourceIsEmpty(dsAllCurrencies))
        {
            // Find main currency in all currencies dataset
            if (mMainCurrency != null)
            {
                // Prepare site main currency unit label
                string siteCode = mMainCurrency.CurrencyCode;
                lblSiteMainCurrency.Text = siteCode;
                lblMainToSite.Text = string.Format(GetString("ExchangeTable_Edit.FromMainToSite"), HTMLHelper.HTMLEncode(siteCode));

                // Prepare global main currency unit label
                string globalCode = CurrencyInfoProvider.GetMainCurrencyCode(0);
                lblFromGlobalToMain.Text = string.Format(GetString("ExchangeTable_Edit.FromGlobalToMain"), HTMLHelper.HTMLEncode(globalCode));

                foreach (DataRow dr in dsAllCurrencies.Tables[0].Rows)
                {
                    if (ValidationHelper.GetInteger(dr["CurrencyID"], -1) == mMainCurrency.CurrencyID)
                    {
                        mainCurrIndex = i;
                    }
                    i++;
                }
            }

            // Remove found main currency
            if (mainCurrIndex != -1)
            {
                dsAllCurrencies.Tables[0].Rows[mainCurrIndex].Delete();
                dsAllCurrencies.AcceptChanges();
            }
        }

        if (DataHelper.DataSourceIsEmpty(dsAllCurrencies))
        {
            // Site exchange rates section is visible only when more currencies exist
            plcSiteRates.Visible = true;//false;
            lblMainToSite.Visible = true;//false;
            plcNoCurrency.Visible = true;
        }

        // Hide rates part when no grid visible
        plcGrid.Visible = plcSiteRates.Visible || plcRateFromGlobal.Visible;

        // Use currencies in grid
        editGrid.DataSource = dsAllCurrencies;
        editGrid.DataBind();

        // Fill editing form
        if (!RequestHelper.IsPostBack())
        {
            dtPickerExchangeTableValidFrom.SelectedDateTime = exchangeTableObj.ExchangeTableValidFrom;
            txtExchangeTableDisplayName.Text = exchangeTableObj.ExchangeTableDisplayName;
            dtPickerExchangeTableValidTo.SelectedDateTime = exchangeTableObj.ExchangeTableValidTo;
            txtGlobalExchangeRate.Text = Convert.ToString(exchangeTableObj.ExchangeTableRateFromGlobalCurrency);
        }
    }
Exemple #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += editGrid_RowDataBound;
        btnOk.Click           += (s, args) => { Save(); };

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Help image
        imgHelp.ImageUrl           = GetImageUrl("General/HelpSmall.png");
        imgHelp.ToolTip            = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png");
        imgHelpFromGlobal.ToolTip  = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar";
        dtPickerExchangeTableValidTo.SupportFolder   = "~/CMSAdminControls/Calendar";

        string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption");

        // Get exchangeTable id from querystring
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = EditedObject as ExchangeTableInfo;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);
                // Set title
                currentTableTitle = exchangeTableObj.ExchangeTableDisplayName;

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        // Show message
                        ShowChangesSaved();
                    }
                }
            }

            // Init Copy from global link
            InitCopyFromGlobalLink();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;
        }

        // Initializes page title breadcrumbs control
        string[,] breadcrumbs           = new string[2, 3];
        breadcrumbs[0, 0]               = GetString("ExchangeTable_Edit.ItemListLink");
        breadcrumbs[0, 1]               = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID;
        breadcrumbs[0, 2]               = "";
        breadcrumbs[1, 0]               = currentTableTitle;
        breadcrumbs[1, 1]               = "";
        breadcrumbs[1, 2]               = "";
        CurrentMaster.Title.Breadcrumbs = breadcrumbs;

        plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();

        // Check presence of main currency
        string currencyWarning = CheckMainCurrency(ConfiguredSiteID);

        if (!string.IsNullOrEmpty(currencyWarning))
        {
            ShowWarning(currencyWarning, null, null);
            plcGrid.Visible = false;
        }
    }
Exemple #7
0
    /// <summary>
    /// Saves exchange rates.
    /// </summary>
    private void Save()
    {
        // Check permissions
        CheckConfigurationModification();

        string errorMessage = new Validator().NotEmpty(txtExchangeTableDisplayName.Text.Trim(), GetString("general.requiresdisplayname")).Result;

        if ((errorMessage == "") && (plcRateFromGlobal.Visible))
        {
            errorMessage = new Validator().NotEmpty(txtGlobalExchangeRate.Text.Trim(), GetString("ExchangeTable_Edit.DoubleFormatRequired")).Result;
        }

        if ((errorMessage == "") && (plcRateFromGlobal.Visible))
        {
            if (!ValidationHelper.IsPositiveNumber(txtGlobalExchangeRate.Text.Trim()) || (ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0) == 0))
            {
                errorMessage = GetString("ExchangeTable_Edit.errorRate");
            }
        }

        // From/to date validation
        if (errorMessage == "")
        {
            if ((!dtPickerExchangeTableValidFrom.IsValidRange()) || (!dtPickerExchangeTableValidTo.IsValidRange()))
            {
                errorMessage = GetString("general.errorinvaliddatetimerange");
            }

            if ((dtPickerExchangeTableValidFrom.SelectedDateTime != DateTime.MinValue) &&
                (dtPickerExchangeTableValidTo.SelectedDateTime != DateTime.MinValue) &&
                (dtPickerExchangeTableValidFrom.SelectedDateTime >= dtPickerExchangeTableValidTo.SelectedDateTime))
            {
                errorMessage = GetString("General.DateOverlaps");
            }
        }

        // Exchange rates validation
        if (errorMessage == String.Empty)
        {
            foreach (TextBox txt in mTextBoxes.Values)
            {
                string tmp = txt.Text.Trim();
                if (tmp != String.Empty)
                {
                    // Exchange rate mus be double
                    if (!ValidationHelper.IsDouble(tmp))
                    {
                        errorMessage = GetString("ExchangeTable_Edit.DoubleFormatRequired");
                        break;
                    }

                    // Exchange rate must be positive
                    double rate = ValidationHelper.GetDouble(tmp, 1);
                    if (rate <= 0)
                    {
                        errorMessage = GetString("ExchangeTable_Edit.errorRate");
                    }
                }
            }
        }

        // Save changes if no validation error
        if (errorMessage == "")
        {
            ExchangeTableInfo exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(txtExchangeTableDisplayName.Text.Trim(), SiteInfoProvider.GetSiteName(ConfiguredSiteID));

            // If exchangeTableName value is unique
            if ((exchangeTableObj == null) || (exchangeTableObj.ExchangeTableID == mExchangeTableId))
            {
                // Get ExchangeTableInfo object by primary key
                exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId);
                if (exchangeTableObj == null)
                {
                    // Create new item -> insert
                    exchangeTableObj = new ExchangeTableInfo();
                    exchangeTableObj.ExchangeTableSiteID = ConfiguredSiteID;
                }

                exchangeTableObj.ExchangeTableValidFrom              = dtPickerExchangeTableValidFrom.SelectedDateTime;
                exchangeTableObj.ExchangeTableDisplayName            = txtExchangeTableDisplayName.Text.Trim();
                exchangeTableObj.ExchangeTableValidTo                = dtPickerExchangeTableValidTo.SelectedDateTime;
                exchangeTableObj.ExchangeTableRateFromGlobalCurrency = 0;
                if (plcRateFromGlobal.Visible)
                {
                    exchangeTableObj.ExchangeTableRateFromGlobalCurrency = ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0);
                }

                // Save general exchange table information
                ExchangeTableInfoProvider.SetExchangeTableInfo(exchangeTableObj);

                // Save rates on edit
                if (mExchangeTableId > 0)
                {
                    foreach (TextBox txt in mTextBoxes.Values)
                    {
                        if (mData[txt.ClientID] != null)
                        {
                            int  rateCurrencyId = ValidationHelper.GetInteger(((DataRowView)mData[txt.ClientID])["CurrencyID"], 0);
                            bool rateExists     = mExchangeRates.ContainsKey(rateCurrencyId);

                            if (rateExists)
                            {
                                ExchangeRateInfo rate = new ExchangeRateInfo(mExchangeRates[rateCurrencyId]);

                                if (txt.Text.Trim() == String.Empty)
                                {
                                    // Remove exchange rate
                                    ExchangeRateInfoProvider.DeleteExchangeRateInfo(rate);
                                }
                                else
                                {
                                    rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0);
                                    // Update rate
                                    ExchangeRateInfoProvider.SetExchangeRateInfo(rate);
                                }
                            }
                            else
                            {
                                if (txt.Text.Trim() != String.Empty)
                                {
                                    // Insert exchange rate
                                    ExchangeRateInfo rate = new ExchangeRateInfo();
                                    rate.ExchangeRateToCurrencyID = rateCurrencyId;
                                    rate.ExchangeRateValue        = ValidationHelper.GetDouble(txt.Text.Trim(), 0);
                                    rate.ExchangeTableID          = mExchangeTableId;

                                    ExchangeRateInfoProvider.SetExchangeRateInfo(rate);
                                }
                            }
                        }
                    }
                }

                URLHelper.Redirect("ExchangeTable_Edit.aspx?exchangeid=" + exchangeTableObj.ExchangeTableID + "&saved=1&siteId=" + SiteID);
            }
            else
            {
                // Show error message
                ShowError(GetString("ExchangeTable_Edit.CurrencyNameExists"));
            }
        }
        else
        {
            // Show error message
            ShowError(errorMessage);
        }
    }
Exemple #8
0
    /// <summary>
    /// Load data of editing exchangeTable.
    /// </summary>
    /// <param name="exchangeTableObj">ExchangeTable object</param>
    protected void LoadData(ExchangeTableInfo exchangeTableObj)
    {
        editGrid.Columns[0].HeaderText = GetString("ExchangeTable_Edit.ToCurrency");
        editGrid.Columns[1].HeaderText = GetString("ExchangeTable_Edit.RateValue");

        // Get exchange rates and fill the dictionary
        DataSet dsExRates = ExchangeRateInfoProvider.GetExchangeRates(mExchangeTableId);

        if (!DataHelper.DataSourceIsEmpty(dsExRates))
        {
            foreach (DataRow dr in dsExRates.Tables[0].Rows)
            {
                int toCurrencyId = ValidationHelper.GetInteger(dr["ExchangeRateToCurrencyID"], -1);
                if (!mExchangeRates.ContainsKey(toCurrencyId))
                {
                    mExchangeRates.Add(toCurrencyId, dr);
                }
            }
        }

        DataSet dsAllCurrencies = CurrencyInfoProvider.GetCurrencies(ConfiguredSiteID, false);
        // Row index of main currency
        int mainCurrIndex = -1;
        int i             = 0;

        if (!DataHelper.DataSourceIsEmpty(dsAllCurrencies))
        {
            // Find main currency in all currencies dataset
            if (mMainCurrency != null)
            {
                // Prepare site main currency unit label
                string siteCode = mMainCurrency.CurrencyCode;
                lblSiteMainCurrency.Text = siteCode;
                lblMainToSite.Text       = string.Format(GetString("ExchangeTable_Edit.FromMainToSite"), HTMLHelper.HTMLEncode(siteCode));

                // Prepare global main currency unit label
                string globalCode = CurrencyInfoProvider.GetMainCurrencyCode(0);
                lblFromGlobalToMain.Text = string.Format(GetString("ExchangeTable_Edit.FromGlobalToMain"), HTMLHelper.HTMLEncode(globalCode));

                foreach (DataRow dr in dsAllCurrencies.Tables[0].Rows)
                {
                    if (ValidationHelper.GetInteger(dr["CurrencyID"], -1) == mMainCurrency.CurrencyID)
                    {
                        mainCurrIndex = i;
                    }
                    i++;
                }
            }

            // Remove found main currency
            if (mainCurrIndex != -1)
            {
                dsAllCurrencies.Tables[0].Rows[mainCurrIndex].Delete();
                dsAllCurrencies.AcceptChanges();
            }
        }

        if (DataHelper.DataSourceIsEmpty(dsAllCurrencies))
        {
            // Site exchange rates section is visible only when more currencies exist
            plcSiteRates.Visible  = false;
            lblMainToSite.Visible = false;
            plcNoCurrency.Visible = true;
        }

        // Hide rates part when no grid visible
        plcGrid.Visible = plcSiteRates.Visible || plcRateFromGlobal.Visible;

        // Use currencies in grid
        editGrid.DataSource = dsAllCurrencies;
        editGrid.DataBind();

        // Fill editing form
        if (!RequestHelper.IsPostBack())
        {
            dtPickerExchangeTableValidFrom.SelectedDateTime = exchangeTableObj.ExchangeTableValidFrom;
            txtExchangeTableDisplayName.Text = exchangeTableObj.ExchangeTableDisplayName;
            dtPickerExchangeTableValidTo.SelectedDateTime = exchangeTableObj.ExchangeTableValidTo;
            txtGlobalExchangeRate.Text = Convert.ToString(exchangeTableObj.ExchangeTableRateFromGlobalCurrency);
        }
    }
Exemple #9
0
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += new GridViewRowEventHandler(editGrid_RowDataBound);

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(this.ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Control initializations
        lblExchangeTableValidFrom.Text   = GetString("ExchangeTable_Edit.ExchangeTableValidFromLabel");
        lblExchangeTableDisplayName.Text = GetString("ExchangeTable_Edit.ExchangeTableDisplayNameLabel");
        lblExchangeTableValidTo.Text     = GetString("ExchangeTable_Edit.ExchangeTableValidToLabel");

        // Help image
        this.imgHelp.ImageUrl           = GetImageUrl("General/HelpSmall.png");
        this.imgHelp.ToolTip            = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        this.imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png");
        this.imgHelpFromGlobal.ToolTip  = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        lblRates.Text = GetString("ExchangeTable_Edit.ExchangeRates");

        btnOk.Text = GetString("General.OK");
        dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar";
        dtPickerExchangeTableValidTo.SupportFolder   = "~/CMSAdminControls/Calendar";

        string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption");

        // Get exchangeTable id from querystring
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId);
            EditedObject     = exchangeTableObj;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);
                // Set title
                currentTableTitle = exchangeTableObj.ExchangeTableDisplayName;

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        lblInfo.Visible = true;
                        lblInfo.Text    = GetString("General.ChangesSaved");
                    }
                }
            }

            this.CurrentMaster.Title.TitleText  = GetString("ExchangeTable_Edit.HeaderCaption");
            this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/object.png");

            // Init Copy from global link
            InitCopyFromGlobalLink();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(this.ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;

            this.CurrentMaster.Title.TitleText  = GetString("ExchangeTable_New.HeaderCaption");
            this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/new.png");
        }

        // Initializes page title breadcrumbs control
        string[,] breadcrumbs = new string[2, 3];
        breadcrumbs[0, 0]     = GetString("ExchangeTable_Edit.ItemListLink");
        breadcrumbs[0, 1]     = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID;
        breadcrumbs[0, 2]     = "";
        breadcrumbs[1, 0]     = currentTableTitle;
        breadcrumbs[1, 1]     = "";
        breadcrumbs[1, 2]     = "";
        this.CurrentMaster.Title.Breadcrumbs = breadcrumbs;

        this.CurrentMaster.Title.HelpTopicName = "new_rateexchange_rate_edit";
        this.CurrentMaster.Title.HelpName      = "helpTopic";

        plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();

        // Check presence of main currency
        string currencyErr = CheckMainCurrency(ConfiguredSiteID);

        if (!string.IsNullOrEmpty(currencyErr))
        {
            // Show message
            lblNoMainCurrency.Text    = currencyErr;
            plcNoMainCurrency.Visible = true;
            plcRates.Visible          = false;
        }
    }
    /// <summary>
    /// Gets and bulk updates exchange tables. Called when the "Get and bulk update tables" button is pressed.
    /// Expects the CreateExchangeTable method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateExchangeTables()
    {
        // Prepare the parameters
        string where = "ExchangeTableDisplayName LIKE N'My new table%'";
        where = SqlHelperClass.AddWhereCondition(where, "ExchangeTableSiteID = " + CMSContext.CurrentSiteID, "AND");

        // Get the data
        DataSet tables = ExchangeTableInfoProvider.GetExchangeTables(where, null);
        if (!DataHelper.DataSourceIsEmpty(tables))
        {
            // Set the time
            TimeSpan time = TimeSpan.FromDays(14);

            // Loop through the individual items
            foreach (DataRow tableDr in tables.Tables[0].Rows)
            {
                // Create object from DataRow
                ExchangeTableInfo modifyTable = new ExchangeTableInfo(tableDr);

                // Update the properties
                modifyTable.ExchangeTableValidFrom = modifyTable.ExchangeTableValidFrom.Add(time);
                modifyTable.ExchangeTableValidTo = modifyTable.ExchangeTableValidTo.Add(time);

                // Update the exchange table
                ExchangeTableInfoProvider.SetExchangeTableInfo(modifyTable);
            }

            return true;
        }

        return false;
    }
    /// <summary>
    /// Creates exchange table. Called when the "Create table" button is pressed.
    /// </summary>
    private bool CreateExchangeTable()
    {
        // Create new exchange table object
        ExchangeTableInfo newTable = new ExchangeTableInfo();

        // Set the properties
        newTable.ExchangeTableDisplayName = "My new table";
        newTable.ExchangeTableSiteID = CMSContext.CurrentSiteID;
        newTable.ExchangeTableValidFrom = DateTime.Now;
        newTable.ExchangeTableValidTo = DateTime.Now;

        // Create the exchange table
        ExchangeTableInfoProvider.SetExchangeTableInfo(newTable);

        return true;
    }
    /// <summary>
    /// Inits the selector.
    /// </summary>
    protected void InitSelector()
    {
        if (this.RenderInline)
        {
            this.pnlUpdate.RenderMode = UpdatePanelRenderMode.Inline;
        }
        if (this.ShowAllItems)
        {
            this.uniSelector.MaxDisplayedItems = 1000;
        }

        this.uniSelector.EnabledColumnName = "CurrencyEnabled";
        this.uniSelector.IsLiveSite        = this.IsLiveSite;
        this.uniSelector.AllowEmpty        = this.AddNoneRecord;

        if (DoFullPostback)
        {
            ControlsHelper.RegisterPostbackControl(this.uniSelector.DropDownSingleSelect);
        }

        if (AddSelectRecord)
        {
            string[,] fields = new string[1, 2];
            fields[0, 0]     = GetString("currencyselector.select");
            fields[0, 1]     = "-1";
            this.uniSelector.SpecialFields = fields;
        }

        CurrencyInfo main           = CurrencyInfoProvider.GetMainCurrency(this.SiteID);
        int          mainCurrencyId = (main != null) ? main.CurrencyID : 0;

        string where = "";
        if (DisplayOnlyWithExchangeRate)
        {
            ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(this.SiteID);
            if (tableInfo != null)
            {
                where = "(CurrencyID = " + mainCurrencyId + " OR CurrencyID IN (SELECT ExchangeRateToCurrencyID FROM COM_CurrencyExchangeRate WHERE COM_CurrencyExchangeRate.ExchangeTableID = " + tableInfo.ExchangeTableID + ") AND CurrencyEnabled = 1)";
            }
            else
            {
                where = "(0=1)";
            }
        }

        if (this.AddSiteDefaultCurrency && (main != null))
        {
            where = SqlHelperClass.AddWhereCondition(where, "CurrencyID = " + mainCurrencyId, "OR");
        }

        if (this.ExcludeSiteDefaultCurrency && (main != null))
        {
            where = SqlHelperClass.AddWhereCondition(where, "(NOT CurrencyID = " + mainCurrencyId + ")");
        }

        // Select only records by speciffied site
        if (SiteID >= 0)
        {
            // Show global records by default
            int filteredSiteId = 0;

            // Check configuration when site specified
            if (SiteID > 0)
            {
                // Show site specific records when not using global statuses
                filteredSiteId = UsingGlobalObjects ? 0 : SiteID;
            }

            where = SqlHelperClass.AddWhereCondition(where, "(ISNULL(CurrencySiteID, 0) = " + filteredSiteId + ")");
        }

        // Filter out only enabled items
        if (this.DisplayOnlyEnabled)
        {
            where = SqlHelperClass.AddWhereCondition(where, "CurrencyEnabled = 1");
        }

        // Add items which have to be on the list (if any)
        string additionalList = SqlHelperClass.GetSafeQueryString(this.AdditionalItems, false);

        if ((!string.IsNullOrEmpty(where)) && (!string.IsNullOrEmpty(additionalList)))
        {
            where = SqlHelperClass.AddWhereCondition(where, "(CurrencyID IN (" + additionalList + "))", "OR");
        }

        // Selected value (if any) must be on the list
        if ((!string.IsNullOrEmpty(where)) && (CurrencyID > 0) && (IncludeSelected))
        {
            where = SqlHelperClass.AddWhereCondition(where, "(CurrencyID = " + CurrencyID + ")", "OR");
        }

        // Set where condition
        this.uniSelector.WhereCondition = where;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += new GridViewRowEventHandler(editGrid_RowDataBound);

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(this.ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Control initializations
        lblExchangeTableValidFrom.Text = GetString("ExchangeTable_Edit.ExchangeTableValidFromLabel");
        lblExchangeTableDisplayName.Text = GetString("ExchangeTable_Edit.ExchangeTableDisplayNameLabel");
        lblExchangeTableValidTo.Text = GetString("ExchangeTable_Edit.ExchangeTableValidToLabel");

        // Help image
        this.imgHelp.ImageUrl = GetImageUrl("General/HelpSmall.png");
        this.imgHelp.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        this.imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png");
        this.imgHelpFromGlobal.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        lblRates.Text = GetString("ExchangeTable_Edit.ExchangeRates");

        btnOk.Text = GetString("General.OK");
        dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar";
        dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar";

        string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption");

        // Get exchangeTable id from querystring
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId);
            EditedObject = exchangeTableObj;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);
                // Set title
                currentTableTitle = exchangeTableObj.ExchangeTableDisplayName;

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        lblInfo.Visible = true;
                        lblInfo.Text = GetString("General.ChangesSaved");
                    }
                }
            }

            this.CurrentMaster.Title.TitleText = GetString("ExchangeTable_Edit.HeaderCaption");
            this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/object.png");

            // Init Copy from global link
            InitCopyFromGlobalLink();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(this.ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;

            this.CurrentMaster.Title.TitleText = GetString("ExchangeTable_New.HeaderCaption");
            this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/new.png");
        }

        // Initializes page title breadcrumbs control
        string[,] breadcrumbs = new string[2, 3];
        breadcrumbs[0, 0] = GetString("ExchangeTable_Edit.ItemListLink");
        breadcrumbs[0, 1] = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID;
        breadcrumbs[0, 2] = "";
        breadcrumbs[1, 0] = currentTableTitle;
        breadcrumbs[1, 1] = "";
        breadcrumbs[1, 2] = "";
        this.CurrentMaster.Title.Breadcrumbs = breadcrumbs;

        this.CurrentMaster.Title.HelpTopicName = "new_rateexchange_rate_edit";
        this.CurrentMaster.Title.HelpName = "helpTopic";

        plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();

        // Check presence of main currency
        string currencyErr = CheckMainCurrency(ConfiguredSiteID);
        if (!string.IsNullOrEmpty(currencyErr))
        {
            // Show message
            lblNoMainCurrency.Text = currencyErr;
            plcNoMainCurrency.Visible = true;
            plcRates.Visible = false;
        }
    }
Exemple #14
0
    /// <summary>
    /// Checks exchange rates.
    /// </summary>
    private void CheckExchangeRates()
    {
        if (ExchangeRatesCheck)
        {
            int currentSiteID = 0;

            // Check if the site is using global exchange rates
            if (!ECommerceSettings.UseGlobalExchangeRates(SiteContext.CurrentSiteName))
            {
                currentSiteID = SiteContext.CurrentSiteID;
            }

            // Retrieve last valid exchange table
            ExchangeTableInfo et = ExchangeTableInfoProvider.GetLastValidExchangeTableInfo(SiteContext.CurrentSiteID);
            if (et == null)
            {
                DisplayMessage("com.settingschecker.emptyexchangerate");
            }
            else
            {
                DataSet ds = CurrencyInfoProvider.GetCurrencies(currentSiteID, true);

                if (!DataHelper.DataSourceIsEmpty(ds))
                {
                    // Get exchange rate from global currency, if some global checkboxes are checked
                    if (mGlobalUsage)
                    {
                        double exchangeRateFromGlobalCurrency = ExchangeTableInfoProvider.GetLastExchangeRateFromGlobalMainCurrency(SiteContext.CurrentSiteID);
                        if (exchangeRateFromGlobalCurrency <= 0)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }

                    // Prepare where condition
                    var currencyIds = DataHelper.GetIntegerValues(ds.Tables[0], "CurrencyID");

                    // Get all exchange rates for selected table
                    DataSet exchangeDs = ExchangeRateInfoProvider.GetExchangeRates(et.ExchangeTableID)
                                         .WhereIn("ExchangeRateToCurrencyID", currencyIds);

                    if (DataHelper.DataSourceIsEmpty(exchangeDs))
                    {
                        // If there is only one currency in dataset, do not show error message
                        if (ds.Tables[0].Rows.Count > 1)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    // Check if count of currencies is same in exchange table
                    else if ((ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count))
                    {
                        // If we are using global objects, there will be one more currency
                        if (mGlobalUsage)
                        {
                            if (ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count + 1)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                return;
                            }
                        }
                        else
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    else
                    {
                        foreach (DataRow item in exchangeDs.Tables[0].Rows)
                        {
                            if (item["ExchangeRateValue"] == null)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += editGrid_RowDataBound;
        btnOk.Click += (s, args) => Save();

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Help image
        iconHelpGlobalExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        iconHelpMainExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar";
        dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar";
        // Use timezones for DateTimePickers
        CMS.Globalization.TimeZoneInfo tzi = TimeZoneHelper.GetTimeZoneInfo(MembershipContext.AuthenticatedUser, SiteContext.CurrentSite);
        dtPickerExchangeTableValidFrom.TimeZone = TimeZoneTypeEnum.Custom;
        dtPickerExchangeTableValidFrom.CustomTimeZone = tzi;
        dtPickerExchangeTableValidTo.TimeZone = TimeZoneTypeEnum.Custom;
        dtPickerExchangeTableValidTo.CustomTimeZone = tzi;

        // Get exchangeTable id from querystring
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = EditedObject as ExchangeTableInfo;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        // Show message
                        ShowChangesSaved();
                    }
                }
            }

            // Init Copy from global link
            InitCopyFromGlobalLink();

            // Check presence of main currency
            plcGrid.Visible = CheckMainCurrency(ConfiguredSiteID);

            plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;
        }

        // Register bootstrap tooltip over help icons
        ScriptHelper.RegisterBootstrapTooltip(Page, ".info-icon > i");
    }
    /// <summary>
    /// Saves exchange rates.
    /// </summary>
    private void Save()
    {
        // Check permissions
        CheckConfigurationModification();

        string errorMessage = new Validator().NotEmpty(txtExchangeTableDisplayName.Text.Trim(), GetString("general.requiresdisplayname")).Result;

        if ((errorMessage == "") && (plcRateFromGlobal.Visible))
        {
            errorMessage = new Validator().NotEmpty(txtGlobalExchangeRate.Text.Trim(), GetString("ExchangeTable_Edit.DoubleFormatRequired")).Result;
        }

        if ((errorMessage == "") && (plcRateFromGlobal.Visible))
        {
            if (!ValidationHelper.IsPositiveNumber(txtGlobalExchangeRate.Text.Trim()) || (ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0) == 0))
            {
                errorMessage = GetString("ExchangeTable_Edit.errorRate");
            }
        }

        // From/to date validation
        if (errorMessage == "")
        {
            if ((!dtPickerExchangeTableValidFrom.IsValidRange()) || (!dtPickerExchangeTableValidTo.IsValidRange()))
            {
                errorMessage = GetString("general.errorinvaliddatetimerange");
            }

            if ((dtPickerExchangeTableValidFrom.SelectedDateTime != DateTime.MinValue) &&
                (dtPickerExchangeTableValidTo.SelectedDateTime != DateTime.MinValue) &&
                (dtPickerExchangeTableValidFrom.SelectedDateTime >= dtPickerExchangeTableValidTo.SelectedDateTime))
            {
                errorMessage = GetString("General.DateOverlaps");
            }
        }

        // Exchange rates validation
        if (errorMessage == String.Empty)
        {
            foreach (TextBox txt in mTextBoxes.Values)
            {
                string tmp = txt.Text.Trim();
                if (tmp != String.Empty)
                {
                    // Exchange rate mus be double
                    if (!ValidationHelper.IsDouble(tmp))
                    {
                        errorMessage = GetString("ExchangeTable_Edit.DoubleFormatRequired");
                        break;
                    }

                    // Exchange rate must be positive
                    double rate = ValidationHelper.GetDouble(tmp, 1);
                    if (rate <= 0)
                    {
                        errorMessage = GetString("ExchangeTable_Edit.errorRate");
                    }
                }
            }
        }

        // Save changes if no validation error
        if (errorMessage == "")
        {
            // Truncate display name
            string displayName = txtExchangeTableDisplayName.Text.Trim().Truncate(txtExchangeTableDisplayName.MaxLength);

            ExchangeTableInfo exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(displayName, SiteInfoProvider.GetSiteName(ConfiguredSiteID));

            // If exchangeTableName value is unique
            if ((exchangeTableObj == null) || (exchangeTableObj.ExchangeTableID == mExchangeTableId))
            {
                // Get ExchangeTableInfo object by primary key
                exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId);
                if (exchangeTableObj == null)
                {
                    // Create new item -> insert
                    exchangeTableObj = new ExchangeTableInfo();
                    exchangeTableObj.ExchangeTableSiteID = ConfiguredSiteID;
                }

                exchangeTableObj.ExchangeTableValidFrom = dtPickerExchangeTableValidFrom.SelectedDateTime;
                exchangeTableObj.ExchangeTableDisplayName = displayName;
                exchangeTableObj.ExchangeTableValidTo = dtPickerExchangeTableValidTo.SelectedDateTime;
                exchangeTableObj.ExchangeTableRateFromGlobalCurrency = 0;
                if (plcRateFromGlobal.Visible)
                {
                    exchangeTableObj.ExchangeTableRateFromGlobalCurrency = ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0);
                }

                // Save general exchange table information
                ExchangeTableInfoProvider.SetExchangeTableInfo(exchangeTableObj);

                // Save rates on edit
                if (mExchangeTableId > 0)
                {
                    foreach (TextBox txt in mTextBoxes.Values)
                    {
                        if (mData[txt.ClientID] != null)
                        {
                            int rateCurrencyId = ValidationHelper.GetInteger(((DataRowView)mData[txt.ClientID])["CurrencyID"], 0);
                            bool rateExists = mExchangeRates.ContainsKey(rateCurrencyId);

                            if (rateExists)
                            {
                                ExchangeRateInfo rate = new ExchangeRateInfo(mExchangeRates[rateCurrencyId]);

                                if (txt.Text.Trim() == String.Empty)
                                {
                                    // Remove exchange rate
                                    ExchangeRateInfoProvider.DeleteExchangeRateInfo(rate);
                                }
                                else
                                {
                                    rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0);
                                    // Update rate
                                    ExchangeRateInfoProvider.SetExchangeRateInfo(rate);
                                }
                            }
                            else
                            {
                                if (txt.Text.Trim() != String.Empty)
                                {
                                    // Insert exchange rate
                                    ExchangeRateInfo rate = new ExchangeRateInfo();
                                    rate.ExchangeRateToCurrencyID = rateCurrencyId;
                                    rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0);
                                    rate.ExchangeTableID = mExchangeTableId;

                                    ExchangeRateInfoProvider.SetExchangeRateInfo(rate);
                                }
                            }
                        }
                    }
                }

                URLHelper.Redirect("ExchangeTable_Edit.aspx?exchangeid=" + exchangeTableObj.ExchangeTableID + "&saved=1&siteId=" + SiteID);
            }
            else
            {
                // Show error message
                ShowError(GetString("ExchangeTable_Edit.CurrencyNameExists"));
            }
        }
        else
        {
            // Show error message
            ShowError(errorMessage);
        }
    }
    /// <summary>
    /// Checks exchange rates.
    /// </summary>
    private void CheckExchangeRates()
    {
        if (ExchangeRatesCheck)
        {
            int currentSiteID = 0;

            // Check if the site is using global exchage rates
            if (!ECommerceSettings.UseGlobalExchangeRates(CMSContext.CurrentSiteName))
            {
                currentSiteID = CMSContext.CurrentSiteID;
            }

            // Retrieve last valid exchange table
            ExchangeTableInfo et = ExchangeTableInfoProvider.GetLastValidExchangeTableInfo(CMSContext.CurrentSiteID);
            if (et == null)
            {
                DisplayMessage("com.settingschecker.emptyexchangerate");
            }
            else
            {
                DataSet ds = CurrencyInfoProvider.GetCurrencies(currentSiteID, true);

                if (!DataHelper.DataSourceIsEmpty(ds))
                {
                    // Prepare where condition
                    StringBuilder sb = new StringBuilder();
                    foreach (DataRow item in ds.Tables[0].Rows)
                    {
                        sb.Append(item["CurrencyID"] + ",");
                    }
                    sb.Remove(sb.Length - 1, 1);

                    // Get exchange rate from global currency, if some global checkboxes are checked
                    if (mGlobalUsage)
                    {
                        double exchangerateFromGlobalCurrency = ExchangeTableInfoProvider.GetLastExchangeRateFromGlobalMainCurrency(CMSContext.CurrentSiteID);
                        if (exchangerateFromGlobalCurrency <= 0)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }

                    // Get all exchange rates for selected table
                    DataSet exchangeDs = ExchangeRateInfoProvider.GetExchangeRates("(ExchangeTableID = " + et.ExchangeTableID + ") AND (ExchangeRateToCurrencyID IN  (" + sb.ToString() + "))", null);
                    if (DataHelper.DataSourceIsEmpty(exchangeDs))
                    {
                        // If there is only one currency in dataset, do not show error message
                        if (ds.Tables[0].Rows.Count > 1)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    // Check if count of currencies is same in exchangetable
                    else if ((ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count))
                    {
                        // If we are using global objects, there will be one more currency
                        if (mGlobalUsage)
                        {
                            if (ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count + 1)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                return;
                            }
                        }
                        else
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    else
                    {
                        foreach (DataRow item in exchangeDs.Tables[0].Rows)
                        {
                            if (item["ExchangeRateValue"] == null)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += editGrid_RowDataBound;
        btnOk.Click           += (s, args) => Save();

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Help image
        iconHelpGlobalExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        iconHelpMainExchangeRate.ToolTip   = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        // Use time zones for DateTimePickers
        CMS.Globalization.TimeZoneInfo tzi = TimeZoneHelper.GetTimeZoneInfo(MembershipContext.AuthenticatedUser, SiteContext.CurrentSite);
        dtPickerExchangeTableValidFrom.TimeZone       = TimeZoneTypeEnum.Custom;
        dtPickerExchangeTableValidFrom.CustomTimeZone = tzi;
        dtPickerExchangeTableValidTo.TimeZone         = TimeZoneTypeEnum.Custom;
        dtPickerExchangeTableValidTo.CustomTimeZone   = tzi;

        // Get exchangeTable id from query string
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = EditedObject as ExchangeTableInfo;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        // Show message
                        ShowChangesSaved();
                    }
                }
            }

            // Init Copy from global link
            InitCopyFromGlobalLink();

            // Check presence of main currency
            plcGrid.Visible = CheckMainCurrency(ConfiguredSiteID);

            plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;
        }

        // Register bootstrap tooltip over help icons
        ScriptHelper.RegisterBootstrapTooltip(Page, ".info-icon > i");
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        editGrid.RowDataBound += editGrid_RowDataBound;
        btnOk.Click += (s, args) => { Save(); };

        // Get main currency
        mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID);

        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        // Help image
        imgHelp.ImageUrl = GetImageUrl("General/HelpSmall.png");
        imgHelp.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");
        imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png");
        imgHelpFromGlobal.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp");

        dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar";
        dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar";

        string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption");

        // Get exchangeTable id from querystring
        mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0);
        if (mExchangeTableId > 0)
        {
            exchangeTableObj = EditedObject as ExchangeTableInfo;

            if (exchangeTableObj != null)
            {
                // Check tables site id
                CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID);
                // Set title
                currentTableTitle = exchangeTableObj.ExchangeTableDisplayName;

                LoadData(exchangeTableObj);

                // Fill editing form
                if (!RequestHelper.IsPostBack())
                {
                    // Show that the exchangeTable was created or updated successfully
                    if (QueryHelper.GetString("saved", "") == "1")
                    {
                        // Show message
                        ShowChangesSaved();
                    }
                }
            }

            // Init Copy from global link
            InitCopyFromGlobalLink();
        }
        // Creating a new exchange table
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // Preset valid from date
                ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID);
                if (tableInfo != null)
                {
                    dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo;
                }
            }
            // Grids are visible only in edit mode
            plcGrid.Visible = false;
        }

        // Initializes page title breadcrumbs control
        string[,] breadcrumbs = new string[2, 3];
        breadcrumbs[0, 0] = GetString("ExchangeTable_Edit.ItemListLink");
        breadcrumbs[0, 1] = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID;
        breadcrumbs[0, 2] = "";
        breadcrumbs[1, 0] = currentTableTitle;
        breadcrumbs[1, 1] = "";
        breadcrumbs[1, 2] = "";
        CurrentMaster.Title.Breadcrumbs = breadcrumbs;

        plcRateFromGlobal.Visible = IsFromGlobalRateNeeded();

        // Check presence of main currency
        string currencyWarning = CheckMainCurrency(ConfiguredSiteID);
        if (!string.IsNullOrEmpty(currencyWarning))
        {
            ShowWarning(currencyWarning, null, null);
            plcGrid.Visible = false;
        }
    }