示例#1
0
        // uses DisplaySpec if provided, else uses LocaleSetting
        // applies exchange rate!!
        // input amt is assumed to be in the store's PRIMARY CURRENCY!
        static public String CurrencyStringForDisplayWithExchangeRate(decimal amt, String TargetCurrencyCode)
        {
            String tmpS = String.Empty;

            // apply exchange rate if not outputting in primary store currency:
            amt = Currency.Convert(amt, Localization.GetPrimaryCurrency(), TargetCurrencyCode);
            return(CurrencyStringForDisplayWithoutExchangeRate(amt, TargetCurrencyCode));
        }
示例#2
0
        static public String ValidateCurrencySetting(String Currency)
        {
            String tmp = Localization.GetPrimaryCurrency();

            if (isValidCurrencyCode(Currency))
            {
                tmp = Currency;
            }
            return(Localization.CheckCurrencySettingForProperCase(tmp));
        }
示例#3
0
        private static string CurrencyLocaleRobotsTag(Customer ThisCustomer)
        {
            string tmp = string.Empty;

            if (ThisCustomer.CurrencySetting != Localization.GetPrimaryCurrency() &&
                ThisCustomer.LocaleSetting != Localization.GetDefaultLocale())
            {
                tmp = "<meta name=\"robots\" content=\"noindex,nofollow,noarchive\">";
            }

            return(tmp);
        }
        // no exchange rate is ever applied!
        // input amt is assumed to be in the store's PRIMARY CURRENCY!
        // converted to web.config locale format
        static public String CurrencyStringForDisplayWithoutExchangeRate(decimal amt, bool ShowCurrency)
        {
            String tmpS = amt.ToString("C", new CultureInfo(Localization.GetDefaultLocale()));

            if (tmpS.StartsWith("("))
            {
                tmpS = "-" + tmpS.Replace("(", "").Replace(")", "");
            }
            if (ShowCurrency && Currency.NumPublishedCurrencies() > 1)
            {
                tmpS = String.Format("{0} ({1})", tmpS, Localization.GetPrimaryCurrency());
            }
            return(tmpS);
        }
示例#5
0
文件: Currency.cs 项目: giagiigi/WE
        static public String GetDefaultCurrencySymbol()
        {
            var    currencyAbbreviation = Localization.GetPrimaryCurrency();
            string currencySymbol       = String.Empty;

            foreach (CultureInfo cultureInfo in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
            {
                RegionInfo region = new RegionInfo(cultureInfo.LCID);
                if (region.ISOCurrencySymbol == currencyAbbreviation)
                {
                    currencySymbol = region.CurrencySymbol;
                }
            }
            return(currencySymbol);
        }
示例#6
0
        private static string PageInfoParser(Customer ThisCustomer)
        {
            StringBuilder tmp = new StringBuilder(4096);

            tmp.Append("<!--\n");
            tmp.Append("PAGE INVOCATION: " + HttpContext.Current.Server.HtmlEncode(CommonLogic.PageInvocation()) + "\n");
            tmp.Append("PAGE REFERRER: " + HttpContext.Current.Server.HtmlEncode(CommonLogic.PageReferrer()) + "\n");
            tmp.Append("STORE LOCALE: " + Localization.GetDefaultLocale() + "\n");
            tmp.Append("STORE CURRENCY: " + Localization.GetPrimaryCurrency() + "\n");
            tmp.Append("CUSTOMER ID: " + ThisCustomer.CustomerID.ToString() + "\n");
            tmp.Append("AFFILIATE ID: " + ThisCustomer.AffiliateID.ToString() + "\n");
            tmp.Append("CUSTOMER LOCALE: " + ThisCustomer.LocaleSetting + "\n");
            tmp.Append("CURRENCY SETTING: " + ThisCustomer.CurrencySetting + "\n");
            tmp.Append("CACHE MENUS: " + AppLogic.AppConfigBool("CacheMenus").ToString() + "\n");
            tmp.Append("-->\n");

            return(tmp.ToString());
        }
示例#7
0
        /// <summary>
        /// Attaches the Order Options text as Xml element contained in the OrderInfo Node
        /// </summary>
        /// <param name="nav">The XPathNavigator</param>
        private void AttachOrderOptionsXml(XPathNavigator nav)
        {
            XmlNode orderInfoNode = GetXmlNode(nav.SelectSingleNode("Order/OrderInfo"));

            CultureInfo culture = new CultureInfo(ThisCustomer.LocaleSetting);

            try
            {
                XmlNode orderOptionsNode = orderInfoNode.SelectSingleNode("OrderOptions");
                if (null == orderOptionsNode)
                {
                    return;
                }
                XmlDocument doc = orderInfoNode.OwnerDocument;

                string orderOptions = orderOptionsNode.InnerText;

                XmlNode orderOptionsXml = doc.CreateNode(XmlNodeType.Element, "OrderOptionsXml", string.Empty);

                if (!string.IsNullOrEmpty(orderOptions))
                {
                    string[] orderOptionDelimitedValues = orderOptions.Split('^');
                    foreach (string orderOptionDelimitedValue in orderOptionDelimitedValues)
                    {
                        string[] orderOptionValues = orderOptionDelimitedValue.Split('|');
                        if (orderOptionValues != null && orderOptionValues.Length > 0)
                        {
                            int    id       = int.Parse(orderOptionValues[0]);
                            Guid   uniqueID = new Guid(orderOptionValues[1]);
                            string name     = orderOptionValues[2];

                            string priceFormatted = orderOptionValues[3];
                            // NOTE:
                            // Since the order options are attached to the order as a | delimited string
                            // and the price and tax amounts are already hardcoded as strings together
                            // with their currency symbols, we need to extract only the numeric values
                            decimal price = ParseAmount(priceFormatted, culture);
                            // since the order option is saved as one whole string
                            // the price saved here is already converted into the target curency format
                            // we'll need to revert to the original currency setting so to display properly especially on different currencies
                            price = Currency.Convert(price, ThisCustomer.CurrencySetting, Localization.GetPrimaryCurrency());

                            string extPriceFormatted = priceFormatted;

                            bool    withVat      = orderOptionValues.Length >= 4;
                            string  vatFormatted = string.Empty;
                            decimal vat          = decimal.Zero;
                            if (withVat)
                            {
                                vatFormatted = orderOptionValues[4];
                                vat          = ParseAmount(vatFormatted, culture);
                            }

                            XmlNode orderOptionNode = doc.CreateNode(XmlNodeType.Element, "OrderOption", string.Empty);

                            // the details
                            XmlNode idNode       = doc.CreateNode(XmlNodeType.Element, "ID", string.Empty);
                            XmlNode nameNode     = doc.CreateNode(XmlNodeType.Element, "ProductName", string.Empty);
                            XmlNode priceNode    = doc.CreateNode(XmlNodeType.Element, "Price", string.Empty);
                            XmlNode vatNode      = doc.CreateNode(XmlNodeType.Element, "VAT", string.Empty);
                            XmlNode imageUrlNode = doc.CreateNode(XmlNodeType.Element, "ImageUrl", string.Empty);

                            idNode.InnerText    = XmlCommon.XmlEncode(id.ToString());
                            nameNode.InnerXml   = XmlCommon.XmlEncode(name);                           // NOTE: this value may be localized, make sure to call GetMLValue on the xml package!!!
                            priceNode.InnerText = XmlCommon.XmlEncode(price.ToString());
                            vatNode.InnerText   = XmlCommon.XmlEncode(vat.ToString());

                            // get the image info
                            string imgUrl = orderOptionValues[5];

                            if (!string.IsNullOrEmpty(CommonLogic.ServerVariables("HTTP_HOST")))
                            {
                                imgUrl = "http://" + CommonLogic.ServerVariables("HTTP_HOST") + imgUrl;
                            }

                            imageUrlNode.InnerText = XmlCommon.XmlEncode(imgUrl);

                            orderOptionNode.AppendChild(idNode);
                            orderOptionNode.AppendChild(nameNode);
                            orderOptionNode.AppendChild(priceNode);
                            orderOptionNode.AppendChild(vatNode);
                            orderOptionNode.AppendChild(imageUrlNode);

                            orderOptionsXml.AppendChild(orderOptionNode);
                        }
                    }
                }

                orderInfoNode.InsertAfter(orderOptionsXml, orderInfoNode.LastChild);
            }
            catch { }
        }
示例#8
0
        /// <summary>
        /// Format the currency value into it's localized currency pattern
        /// </summary>
        /// <param name="sCurrencyValue">The currency value</param>
        /// <param name="sTargetCurrency">The target currency to base on</param>
        /// <returns>The formatted currency string</returns>
        public virtual string FormatCurrencyWithoutCurrencyCode(string sCurrencyValue, string sTargetCurrency)
        {
            InputValidator iv             = new InputValidator("FormatCurrencyWithoutCurrencyCode");
            decimal        value          = iv.ValidateDecimal("CurrencyValue", sCurrencyValue);
            string         targetCurrency = iv.ValidateString("TargetCurrency", sTargetCurrency);

            decimal amt = Currency.Convert(value, Localization.GetPrimaryCurrency(), targetCurrency);

            String tmpS = String.Empty;
            // get currency specs for display control:
            String DisplaySpec         = Currency.GetDisplaySpec(targetCurrency);
            String DisplayLocaleFormat = Currency.GetDisplayLocaleFormat(targetCurrency);

            if (DisplaySpec.Length != 0)
            {
                CultureInfo ci = new CultureInfo(DisplayLocaleFormat);

                if (DisplaySpec.LastIndexOf(',') > DisplaySpec.LastIndexOf("."))
                {
                    ci.NumberFormat.CurrencyDecimalSeparator = ",";

                    if (DisplaySpec.LastIndexOf(".") > -1)
                    {
                        ci.NumberFormat.CurrencyGroupSeparator = ".";
                    }
                }

                if (!DisplaySpec.StartsWith("#"))
                {
                    int indexOf = DisplaySpec.IndexOf('#');

                    if (indexOf > -1)
                    {
                        ci.NumberFormat.CurrencySymbol = DisplaySpec.Substring(0, indexOf);
                    }
                }

                tmpS = amt.ToString("C", ci.NumberFormat);
            }
            else if (DisplayLocaleFormat.Length != 0)
            {
                CultureInfo formatter = new CultureInfo(DisplayLocaleFormat);

                // for debugging purposes
                if (CommonLogic.QueryStringUSInt("dec") > 0)
                {
                    int decimalPlaces = CommonLogic.QueryStringUSInt("dec");
                    formatter.NumberFormat.CurrencyDecimalDigits = decimalPlaces;
                }

                tmpS = amt.ToString("C", formatter);
                if (tmpS.StartsWith("("))
                {
                    tmpS = "-" + tmpS.Replace("(", "").Replace(")", "");
                }
            }
            else
            {
                tmpS = Localization.CurrencyStringForDisplayWithoutExchangeRate(amt, false);                 // use some generic default!
            }

            return(tmpS);
        }
示例#9
0
        // these can change on EVERY page request!!
        public void BuildPageDynamicTokens()
        {
            if (m_DynamicTokens == null)
            {
                // page/customer specific items (that may change every page):
                m_DynamicTokens = new Hashtable();

                if (CommonLogic.GetThisPageName(false).ToLowerInvariant().StartsWith("orderconfirmation.aspx"))
                {
                    m_DynamicTokens.Add("(!GOOGLE_ECOM_TRACKING!)", AppLogic.GetGoogleEComTracking(ThisCustomer));
                }
                else
                {
                    m_DynamicTokens.Add("(!GOOGLE_ECOM_TRACKING!)", String.Empty);
                }

                if (CommonLogic.GetThisPageName(false).ToLowerInvariant().StartsWith("orderconfirmation.aspx"))
                {
                    m_DynamicTokens.Add("(!GOOGLE_ECOM_TRACKING_V2!)", String.Empty);
                }
                else
                {
                    m_DynamicTokens.Add("(!GOOGLE_ECOM_TRACKING_V2!)", AppLogic.GetGoogleEComTrackingV2(ThisCustomer, false));
                }

                if (!AppLogic.VATIsEnabled())
                {
                    m_DynamicTokens.Add("(!VATREGISTRATIONID!)", String.Empty);
                }
                else
                {
                    StringBuilder tmpS2 = new StringBuilder(1024);
                    if (ThisCustomer.HasCustomerRecord)
                    {
                        tmpS2.Append("<span class=\"VATRegistrationIDPrompt\">" + AppLogic.GetString("setvatsetting.aspx.8", ThisCustomer.SkinID, ThisCustomer.LocaleSetting) + "</span><input type=\"text\" style=\"VATRegistrationID\" id=\"VATRegistrationID\" value=\"" + ThisCustomer.VATRegistrationID + "\">");
                    }
                    m_DynamicTokens.Add("(!VATREGISTRATIONID!)", tmpS2.ToString());
                }

                if (AppLogic.NumLocaleSettingsInstalled() < 2)
                {
                    m_DynamicTokens.Add("(!COUNTRYDIVVISIBILITY!)", "hidden");
                    m_DynamicTokens.Add("(!COUNTRYDIVDISPLAY!)", "none");
                    m_DynamicTokens.Add("(!COUNTRYSELECTLIST!)", String.Empty);
                }
                else
                {
                    m_DynamicTokens.Add("(!COUNTRYDIVVISIBILITY!)", "visible");
                    m_DynamicTokens.Add("(!COUNTRYDIVDISPLAY!)", "inline");
                    m_DynamicTokens.Add("(!COUNTRYSELECTLIST!)", AppLogic.GetCountrySelectList(ThisCustomer.LocaleSetting));
                }

                if (Currency.NumPublishedCurrencies() < 2)
                {
                    m_DynamicTokens.Add("(!CURRENCYDIVVISIBILITY!)", "hidden");
                    m_DynamicTokens.Add("(!CURRENCYDIVDISPLAY!)", "none");
                    m_DynamicTokens.Add("(!CURRENCYSELECTLIST!)", String.Empty);
                }
                else
                {
                    m_DynamicTokens.Add("(!CURRENCYDIVVISIBILITY!)", "visible");
                    m_DynamicTokens.Add("(!CURRENCYDIVDISPLAY!)", "inline");
                    m_DynamicTokens.Add("(!CURRENCYSELECTLIST!)", AppLogic.GetCurrencySelectList(ThisCustomer));
                }

                if (AppLogic.VATIsEnabled() && AppLogic.AppConfigBool("VAT.AllowCustomerToChooseSetting"))
                {
                    m_DynamicTokens.Add("(!VATDIVVISIBILITY!)", "visible");
                    m_DynamicTokens.Add("(!VATDIVDISPLAY!)", "inline");
                    m_DynamicTokens.Add("(!VATSELECTLIST!)", AppLogic.GetVATSelectList(ThisCustomer));
                }
                else
                {
                    m_DynamicTokens.Add("(!VATDIVVISIBILITY!)", "hidden");
                    m_DynamicTokens.Add("(!VATDIVDISPLAY!)", "none");
                    m_DynamicTokens.Add("(!VATSELECTLIST!)", String.Empty);
                }

                if (!ThisCustomer.IsRegistered)
                {
                    m_DynamicTokens.Add("(!SUBSCRIPTION_EXPIRATION!)", AppLogic.ro_NotApplicable);
                }
                else
                {
                    if (ThisCustomer.SubscriptionExpiresOn.Equals(System.DateTime.MinValue))
                    {
                        m_DynamicTokens.Add("(!SUBSCRIPTION_EXPIRATION!)", "Expired");
                    }
                    else
                    {
                        m_DynamicTokens.Add("(!SUBSCRIPTION_EXPIRATION!)", Localization.ToThreadCultureShortDateString(ThisCustomer.SubscriptionExpiresOn));
                    }
                }

                m_DynamicTokens.Add("(!PAGEURL!)", HttpContext.Current.Server.UrlEncode(CommonLogic.GetThisPageName(false) + "?" + CommonLogic.ServerVariables("QUERY_STRING")));
                m_DynamicTokens.Add("(!RANDOM!)", CommonLogic.GetRandomNumber(1, 7).ToString());
                m_DynamicTokens.Add("(!HDRID!)", CommonLogic.GetRandomNumber(1, 7).ToString());
                m_DynamicTokens.Add("(!INVOCATION!)", HttpContext.Current.Server.HtmlEncode(CommonLogic.PageInvocation()));
                m_DynamicTokens.Add("(!REFERRER!)", HttpContext.Current.Server.HtmlEncode(CommonLogic.PageReferrer()));

                StringBuilder tmp = new StringBuilder(4096);
                tmp.Append("<!--\n");
                tmp.Append("PAGE INVOCATION: " + HttpContext.Current.Server.HtmlEncode(CommonLogic.PageInvocation()) + "\n");
                tmp.Append("PAGE REFERRER: " + HttpContext.Current.Server.HtmlEncode(CommonLogic.PageReferrer()) + "\n");
                tmp.Append("STORE LOCALE: " + Localization.GetDefaultLocale() + "\n");
                tmp.Append("STORE CURRENCY: " + Localization.GetPrimaryCurrency() + "\n");
                tmp.Append("CUSTOMER ID: " + ThisCustomer.CustomerID.ToString() + "\n");
                tmp.Append("AFFILIATE ID: " + ThisCustomer.AffiliateID.ToString() + "\n");
                tmp.Append("CUSTOMER LOCALE: " + ThisCustomer.LocaleSetting + "\n");
                tmp.Append("CURRENCY SETTING: " + ThisCustomer.CurrencySetting + "\n");
                tmp.Append("CACHE MENUS: " + AppLogic.AppConfigBool("CacheMenus").ToString() + "\n");
                tmp.Append("-->\n");
                m_DynamicTokens.Add("(!PAGEINFO!)", tmp.ToString());

                bool IsRegistered = CommonLogic.IIF(ThisCustomer != null, ThisCustomer.IsRegistered, false);

                String tmpS = String.Empty;

                if (IsRegistered)
                {
                    if (!AppLogic.IsAdminSite)
                    {
                        tmpS = AppLogic.GetString("skinbase.cs.1", SkinID, ThisCustomer.LocaleSetting) + " <a class=\"username\" href=\"account.aspx\">" + ThisCustomer.FullName() + "</a>" + CommonLogic.IIF(ThisCustomer.CustomerLevelID != 0, "&nbsp;(" + ThisCustomer.CustomerLevelName + ")", "");
                    }
                    m_DynamicTokens.Add("(!USER_NAME!)", tmpS);
                    m_DynamicTokens.Add("(!USERNAME!)", tmpS);
                }
                else
                {
                    m_DynamicTokens.Add("(!USER_NAME!)", String.Empty);
                    m_DynamicTokens.Add("(!USERNAME!)", String.Empty);
                }

                m_DynamicTokens.Add("(!USER_MENU_NAME!)", CommonLogic.IIF(!IsRegistered, "my account", ThisCustomer.FullName()));
                m_DynamicTokens.Add("(!USER_MENU!)", AppLogic.GetUserMenu(ThisCustomer.IsRegistered, SkinID, ThisCustomer.LocaleSetting));
                if (AppLogic.MicropayIsEnabled())
                {
                    tmpS = "Your " + AppLogic.GetString("account.aspx.11", SkinID, ThisCustomer.LocaleSetting) + " balance is: " + Localization.DecimalStringForDB(ThisCustomer.MicroPayBalance);
                    m_DynamicTokens.Add("(!MICROPAY_BALANCE!)", tmpS);
                    m_DynamicTokens.Add("(!MICROPAY_BALANCE_RAW!)", Localization.DecimalStringForDB(ThisCustomer.MicroPayBalance));
                    m_DynamicTokens.Add("(!MICROPAY_BALANCE_CURRENCY!)", ThisCustomer.CurrencyString(ThisCustomer.MicroPayBalance));
                }
                tmpS = ShoppingCart.NumItems(ThisCustomer.CustomerID, CartTypeEnum.ShoppingCart).ToString();
                m_DynamicTokens.Add("(!NUM_CART_ITEMS!)", tmpS);
                tmpS = AppLogic.GetString("AppConfig.CartPrompt", SkinID, ThisCustomer.LocaleSetting);
                m_DynamicTokens.Add("(!CARTPROMPT!)", tmpS);
                tmpS = ShoppingCart.NumItems(ThisCustomer.CustomerID, CartTypeEnum.WishCart).ToString();
                m_DynamicTokens.Add("(!NUM_WISH_ITEMS!)", tmpS);
                tmpS = ShoppingCart.NumItems(ThisCustomer.CustomerID, CartTypeEnum.GiftRegistryCart).ToString();
                m_DynamicTokens.Add("(!NUM_GIFT_ITEMS!)", tmpS);
                tmpS = CommonLogic.IIF(!IsRegistered, AppLogic.GetString("skinbase.cs.4", SkinID, ThisCustomer.LocaleSetting), AppLogic.GetString("skinbase.cs.5", SkinID, ThisCustomer.LocaleSetting));
                m_DynamicTokens.Add("(!SIGNINOUT_TEXT!)", tmpS);
                m_DynamicTokens.Add("(!SIGNINOUT_LINK!)", CommonLogic.IIF(!IsRegistered, "signin.aspx", "signout.aspx"));
                String PN = CommonLogic.GetThisPageName(false);
                if (AppLogic.AppConfigBool("ShowMiniCart"))
                {
                    if (PN.StartsWith("shoppingcart", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("checkout", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("cardinal", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("addtocart") || PN.IndexOf("_process", StringComparison.InvariantCultureIgnoreCase) != -1 || PN.StartsWith("lat_", StringComparison.InvariantCultureIgnoreCase))
                    {
                        m_DynamicTokens.Add("(!MINICART!)", String.Empty); // don't show on these pages
                    }
                    else
                    {
                        m_DynamicTokens.Add("(!MINICART!)", ShoppingCart.DisplayMiniCart(ThisCustomer, SkinID, true));
                    }
                    if (PN.StartsWith("shoppingcart", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("checkout", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("cardinal", StringComparison.InvariantCultureIgnoreCase) || PN.StartsWith("addtocart", StringComparison.InvariantCultureIgnoreCase) || PN.IndexOf("_process", StringComparison.InvariantCultureIgnoreCase) != -1 || PN.StartsWith("lat_", StringComparison.InvariantCultureIgnoreCase))
                    {
                        m_DynamicTokens.Add("(!MINICART_PLAIN!)", String.Empty); // don't show on these pages
                    }
                    else
                    {
                        m_DynamicTokens.Add("(!MINICART_PLAIN!)", ShoppingCart.DisplayMiniCart(ThisCustomer, SkinID, false));
                    }
                }
                m_DynamicTokens.Add("(!CUSTOMERID!)", ThisCustomer.CustomerID.ToString());
            }
        }
示例#10
0
 static public String GetDefaultCurrency()
 {
     return(Localization.GetPrimaryCurrency());
 }