From b9701aff8812c8b775ae22636276c797e0cff54d Mon Sep 17 00:00:00 2001 From: Andy Howard Date: Sun, 2 Mar 2025 21:19:06 +0000 Subject: [PATCH] 3.0.1.4 Fix pre-login crash in GetCurrencyDecimals() --- SaBusMgrStandardBase/Base/App/Sbm-Version.cs | 3 ++- .../Base/App/SbmInternals-ReferenceData.cs | 2 +- .../Portal/Components/SbmModel_Portal.cs | 13 +++++++++++++ .../Views/Shared/_Layout.cshtml | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/SaBusMgrStandardBase/Base/App/Sbm-Version.cs b/SaBusMgrStandardBase/Base/App/Sbm-Version.cs index 510a2e1..326b16e 100644 --- a/SaBusMgrStandardBase/Base/App/Sbm-Version.cs +++ b/SaBusMgrStandardBase/Base/App/Sbm-Version.cs @@ -15,7 +15,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- public static class Version { - private static String version { get; } = "3.0.1.3"; + private static String version { get; } = "3.0.1.4"; // Retrieve version. public static String GetFullVersion() { return version; } public static String GetAppVersion() @@ -41,6 +41,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // 3.0.1.1 19-Feb-25 Portal tidy. // 3.0.1.2 26-Feb-25 Requirements & tidy. // 3.0.1.3 02-Mar-25 Requirements. + // 3.0.1.4 02-Mar-25 Fix pre-login crash on GetCurrencyDecimals(). //------------------------------------------------------------------- // 3.0.0 Jul-2021 Initial demo test version. // 02-Feb-25 Initial live deployment. diff --git a/SaBusMgrStandardBase/Base/App/SbmInternals-ReferenceData.cs b/SaBusMgrStandardBase/Base/App/SbmInternals-ReferenceData.cs index ee5de11..e597828 100644 --- a/SaBusMgrStandardBase/Base/App/SbmInternals-ReferenceData.cs +++ b/SaBusMgrStandardBase/Base/App/SbmInternals-ReferenceData.cs @@ -116,7 +116,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App if (rfd.Currencies != null) return; SaCurrency.Params prmCurrency = new SaCurrency.Params(); prmCurrency.StatusCat = SaCurrency.StatusCat.Any; - rfd.Currencies = ReferenceDataConsole.GetCurrencyList(prmCurrency).ToDictionary(currency => currency.Id, currency => currency); + rfd.Currencies = ReferenceDataConsole?.GetCurrencyList(prmCurrency).ToDictionary(currency => currency.Id, currency => currency) ?? null; } public List GetCurrencies() { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs index e9140f7..602dc2e 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs @@ -89,6 +89,19 @@ namespace Sarand.BusinessMgr.Web.Portal.Components } } public bool HasInternals() { return mbr.internalsSupplied != null || mbr.internals != null; } + /// + /// Get Currency Decimals. + ///
- NB Prior to login, Internals are invalid as no database selected. + ///
- Hence check for Session Data abnd default value if not initialised. + ///
+ /// + public ushort GetCurrentCurrencyDecimals() + { + if (SessionData_Portal == null) + return SbmInternals.CurrencyDecimalsDefault; + return Internals.GetCurrentCurrencyDecimals(); + } + /// Retrieve internals. Public method to avoid access by ModelBinder. public SbmInternals GetInternals() { return Internals; } /// Internals supplied from aother component, eg. the Controller. diff --git a/SaBusinessMgrCoreWebPortal/Views/Shared/_Layout.cshtml b/SaBusinessMgrCoreWebPortal/Views/Shared/_Layout.cshtml index 48585ed..3ea8cfe 100644 --- a/SaBusinessMgrCoreWebPortal/Views/Shared/_Layout.cshtml +++ b/SaBusinessMgrCoreWebPortal/Views/Shared/_Layout.cshtml @@ -89,7 +89,7 @@ sbm.msg.dataNoneFound = '@Localiser.GetJavascriptText("msg.data.noneFound")'; sbm.maxProfileImageSize = 2 * 10 ** 6; sbm.sessionCookieName = '@Model.SessionCookieName'; - sbm.data.decimalsCurrency = @Model.GetInternals().GetCurrentCurrencyDecimals(); + sbm.data.decimalsCurrency = @Model.GetCurrentCurrencyDecimals(); sbm.awaitingLogin = @awaitingLogin; sbm.keepLoggedIn = @keepLoggedIn; sbm.keepLoggedInDelay = @(Sbm.Config.Control.Session.Cookie.KeepLoggedInTimeoutMillis);