diff --git a/server/AyaNova/Controllers/GlobalBizSettingsController.cs b/server/AyaNova/Controllers/GlobalBizSettingsController.cs index ac1b2a79..849ff938 100644 --- a/server/AyaNova/Controllers/GlobalBizSettingsController.cs +++ b/server/AyaNova/Controllers/GlobalBizSettingsController.cs @@ -107,7 +107,9 @@ namespace AyaNova.Api.Controllers var ret = new { + //Actual global settings: SearchCaseSensitiveOnly = AyaNova.Util.ServerGlobalBizSettings.SearchCaseSensitiveOnly, + UseInventory = AyaNova.Util.ServerGlobalBizSettings.UseInventory, //used to drive UI in case of unlicensed or attention required LicenseStatus = AyaNova.Core.License.ActiveKey.Status, MaintenanceExpired = AyaNova.Core.License.ActiveKey.MaintenanceExpired, diff --git a/server/AyaNova/biz/GlobalBizSettingsBiz.cs b/server/AyaNova/biz/GlobalBizSettingsBiz.cs index 69f87784..3ef3e7d0 100644 --- a/server/AyaNova/biz/GlobalBizSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalBizSettingsBiz.cs @@ -57,21 +57,17 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //UPDATE // - - //put - internal async Task PutAsync(GlobalBizSettings updatedObject) + internal async Task PutAsync(GlobalBizSettings putObject) { - var dbObject = await ct.GlobalBizSettings.FirstOrDefaultAsync(m => m.Id == 1); + var dbObject = await GetAsync(false); if (dbObject == null) - throw new System.Exception("GlobalBizSettingsBiz::ReplaceAsync -> Global settings object not found in database!!"); - CopyObject.Copy(updatedObject, dbObject, "Id"); + throw new System.Exception("GlobalBizSettingsBiz::PutAsync -> Global settings object not found in database. Contact support immediately!"); + + Validate(putObject, dbObject); + if (HasErrors) return null; + ct.Replace(dbObject, putObject); - ct.Entry(dbObject).OriginalValues["Concurrency"] = updatedObject.Concurrency; - Validate(dbObject); - if (HasErrors) - return null; - try { await ct.SaveChangesAsync(); @@ -95,9 +91,8 @@ namespace AyaNova.Biz // //Can save or update? - private void Validate(GlobalBizSettings inObj) + private void Validate(GlobalBizSettings proposedObj, GlobalBizSettings currentObj) { - //currently nothing to validate } diff --git a/server/AyaNova/models/GlobalBizSettings.cs b/server/AyaNova/models/GlobalBizSettings.cs index b892ab59..7b1a6135 100644 --- a/server/AyaNova/models/GlobalBizSettings.cs +++ b/server/AyaNova/models/GlobalBizSettings.cs @@ -6,24 +6,71 @@ namespace AyaNova.Models public class GlobalBizSettings { + //This is the replacement for most of the Global object settings in v7 which has been subdivided further in v8 into backup / ops / notification and this general biz + //this object is only interested in Business object related settings and configuration specifically public long Id { get; set; }//this is always 1 as there is only ever one single global biz object public uint Concurrency { get; set; } //Global settings + //############# NOTE: OTHER AREAS THAT MUST MATCH CHANGES HERE ARE: + //GlobalBizSettingsController::GetClientGlobalBizSettings + //ServerGlobalBizSettings + //Picklist and other searches override the normal case insensitive value //this is precautionarily added for non latinate languages where it could be an issue public bool SearchCaseSensitiveOnly { get; set; } + public bool UseInventory { get; set; } + - // public bool NotificationSystemActive { get; set; } public GlobalBizSettings() { Id = 1;//always 1 SearchCaseSensitiveOnly = false; - //NO, notification system is *always* active, if they don't want email delivery that's an OPS setting NotificationSystemActive = true; - //keeping this in case I forget and try to re-implement + UseInventory = true; } } } +/* +CREATE TABLE [dbo].[AGLOBAL]( + [ACREATED] [datetime] NULL, + [AMODIFIED] [datetime] NULL, + [ACREATOR] [uniqueidentifier] NULL, + [AMODIFIER] [uniqueidentifier] NULL, + [ATAXPARTPURCHASEID] [uniqueidentifier] NULL, + [ATAXPARTSALEID] [uniqueidentifier] NULL, + [ATAXRATESALEID] [uniqueidentifier] NULL, + [AALLOWSCHEDULECONFLICTS] [bit] NOT NULL, + [ALANGUAGE] [nvarchar](255) NULL, + [AUSEREGIONS] [bit] NOT NULL, + [AWORKORDERCLOSEDSTATUS] [uniqueidentifier] NULL, + [AWORKORDERSUMMARYTEMPLATE] [nvarchar](500) NOT NULL, + [AUSEINVENTORY] [bit] NOT NULL, + [AUNITNAMEFORMAT] [smallint] NULL, + [ASCHEDULEABLEUSERNAMEFORMAT] [smallint] NULL, + [ACJKINDEX] [bit] NOT NULL, + [APARTFORMAT] [smallint] NULL, + [AWORKORDERCLOSEBYAGE] [int] NOT NULL, + [AUSENOTIFICATION] [bit] NOT NULL, + [ANOTIFYSMTPHOST] [nvarchar](255) NULL, + [ANOTIFYSMTPACCOUNT] [nvarchar](255) NULL, + [ANOTIFYSMTPPASSWORD] [nvarchar](255) NULL, + [ANOTIFYSMTPFROM] [nvarchar](255) NULL, + [ACOORDINATESTYLE] [smallint] NULL, + [ADEFAULTLATITUDE] [smallint] NULL, + [ADEFAULTLONGITUDE] [smallint] NULL, + [ADEFAULTSERVICETEMPLATEID] [uniqueidentifier] NULL, + [AMAXFILESIZEMB] [int] NULL, + [ALABORSCHEDUSERDFLTTIMESPAN] [int] NOT NULL, + [ATRAVELDFLTTIMESPAN] [int] NOT NULL, + [ANOTIFYENCRYPTION] [nvarchar](255) NULL, + [ASMTPRETRY] [bit] NOT NULL, + [AFORMCUSTOM] [ntext] NULL, + [ASIGNATURETITLE] [ntext] NULL, + [ASIGNATUREHEADER] [ntext] NULL, + [ASIGNATUREFOOTER] [ntext] NULL, + [ASCHEDUSERNONTODAYSTARTTIME] [datetime] NULL, + [AMAINGRIDAUTOREFRESH] [bit] NOT NULL +*/ \ No newline at end of file diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 6fb87497..92bd295a 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -22,7 +22,7 @@ namespace AyaNova.Util //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! private const int DESIRED_SCHEMA_LEVEL = 15; - internal const long EXPECTED_COLUMN_COUNT = 699; + internal const long EXPECTED_COLUMN_COUNT = 700; internal const long EXPECTED_INDEX_COUNT = 122; //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! @@ -230,8 +230,10 @@ namespace AyaNova.Util LogUpdateMessage(log); //create global biz settings table - await ExecQueryAsync("CREATE TABLE aglobalbizsettings (id INTEGER NOT NULL PRIMARY KEY, " + - "searchcasesensitiveonly BOOL default false)"); + await ExecQueryAsync("CREATE TABLE aglobalbizsettings (id INTEGER NOT NULL PRIMARY KEY, " + + "searchcasesensitiveonly BOOL default false, " + + "useinventory BOOL default true " + + ")"); //create global ops BACKUP settings table await ExecQueryAsync("CREATE TABLE aglobalopsbackupsettings (id INTEGER NOT NULL PRIMARY KEY, active BOOL NOT NULL, " + diff --git a/server/AyaNova/util/ServerGlobalBizSettings.cs b/server/AyaNova/util/ServerGlobalBizSettings.cs index 934f81dc..1180025a 100644 --- a/server/AyaNova/util/ServerGlobalBizSettings.cs +++ b/server/AyaNova/util/ServerGlobalBizSettings.cs @@ -18,7 +18,9 @@ namespace AyaNova.Util { internal static bool SearchCaseSensitiveOnly { get; set; } - //NO always active, email delivery is a separate setting but app delivery is always there internal static bool NotificationSystemActive { get; set; } + internal static bool UseInventory {get;set;} + + /// /// Populate and / or create the settings @@ -40,7 +42,7 @@ namespace AyaNova.Util //We have the object, now copy the static values here SearchCaseSensitiveOnly = global.SearchCaseSensitiveOnly; - // NotificationSystemActive = global.NotificationSystemActive; + UseInventory = global.UseInventory; }