diff --git a/SaBusMgrCoreProcs/Procs/Consoles/SbmProcessConsole.cs b/SaBusMgrCoreProcs/Procs/Consoles/SbmProcessConsole.cs index ad792f7..94e659a 100644 --- a/SaBusMgrCoreProcs/Procs/Consoles/SbmProcessConsole.cs +++ b/SaBusMgrCoreProcs/Procs/Consoles/SbmProcessConsole.cs @@ -24,7 +24,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles //------------------------------------------------------------------- // I n t e r f a c e O p t i o n D e f i n i t i o n s //------------------------------------------------------------------- - public static List GetInterfaceItemOptionDfns(ISbmUserOrganisationContext userContext, SaInterfaceCategory interfaceCategory, short interfaceType) + public static List GetInterfaceItemOptionDfns(SbmInternals internals, SaInterfaceCategory interfaceCategory, short interfaceType) { switch (interfaceCategory) { @@ -34,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles } case SaInterfaceCategory.Accounts: { - return new SbmAccountsDfn(userContext).GetInterfaceItemOptionDfns((Sbm.InterfaceType_Accounts)interfaceType); + return internals.AccountsConsole.GetInterfaceItemOptionDfns((Sbm.InterfaceType_Accounts)interfaceType); } case SaInterfaceCategory.System: { @@ -46,7 +46,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles { if (interfaceType == (short)Sbm.InterfaceType_File.CommodityExport) { - SbmInterfaceProcess_Commodity_Export.Config processConfig = new SbmInterfaceProcess_Commodity_Export.Config(userContext); + SbmInterfaceProcess_Commodity_Export.Config processConfig = new SbmInterfaceProcess_Commodity_Export.Config(internals.UserContext); SbmInterfaceProcess_Commodity_Export process = new SbmInterfaceProcess_Commodity_Export(processConfig); return process.GetInterfaceItemOptionDfns(); } @@ -59,7 +59,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles //------------------------------------------------------------------- // P r o c e s s i n g O p t i o n s //------------------------------------------------------------------- - public static List GetProcessingOptions(ISbmUserOrganisationContext userContext, SaInterface interfaceObj) + public static List GetProcessingOptions(SbmInternals internals, SaInterface interfaceObj) { if (interfaceObj == null || !SysId.IsValid(interfaceObj.Id)) return new List(); List optionGroups = null; @@ -80,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles case SaInterfaceCategory.File: { if (interfaceObj.Type == (short)Sbm.InterfaceType_File.CommodityExport) - optionGroups = SbmInterfaceProcess_Commodity_Export.GetProcessingOptions(userContext, interfaceObj); + optionGroups = SbmInterfaceProcess_Commodity_Export.GetProcessingOptions(internals.UserContext, interfaceObj); break; } } @@ -90,7 +90,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles //------------------------------------------------------------------- // C o n f i g u r e P r o c e s s //------------------------------------------------------------------- - public static SbmInterfaceProcess ConfigureProcess(ISbmUserOrganisationContext userContext, SaInterface interfaceObj, SaProcess_Base.GroupData processGroup) + public static SbmInterfaceProcess ConfigureProcess(SbmInternals internals, SaInterface interfaceObj, SaProcess_Base.GroupData processGroup) { if (interfaceObj == null || !SysId.IsValid(interfaceObj.Id)) return null; switch (interfaceObj.Category) @@ -110,7 +110,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles case SaInterfaceCategory.File: { if (interfaceObj.Type == (short)Sbm.InterfaceType_File.CommodityExport) - return SbmInterfaceProcess_Commodity_Export.ConfigureProcess(userContext, interfaceObj, processGroup); + return SbmInterfaceProcess_Commodity_Export.ConfigureProcess(internals.UserContext, interfaceObj, processGroup); break; } } @@ -120,7 +120,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles //------------------------------------------------------------------- // P r o c e s s I n t e r f a c e //------------------------------------------------------------------- - public static bool ProcessInterface(ISbmUserOrganisationContext userContext, SaInterface interfaceObj) + public static bool ProcessInterface(SbmInternals internals, SaInterface interfaceObj) { if (interfaceObj == null || !SysId.IsValid(interfaceObj.Id)) return false; switch (interfaceObj.Category) @@ -149,7 +149,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles // I n v o k e P r o c e s s D e f i n i t i o n //------------------------------------------------------------------- // Invoke process based on definition from command line argument. - public static bool InvokeProcessDefinition(ISbmUserOrganisationContext userContext, SacsProcessDefinition processDfn) + public static bool InvokeProcessDefinition(SbmInternals internals, SacsProcessDefinition processDfn) { //---------------------------------------------------------------- // Log process definition. @@ -160,7 +160,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles if (processDfn.ProcessName.EqualsCI("ApplicationParameterName...")) { String caption = "System Interface ..."; - SaInterface saInterface = GetSystemInterfaceByType(userContext, (short)Sbm.InterfaceType_System.MSOutlook, caption); + SaInterface saInterface = GetSystemInterfaceByType(internals, (short)Sbm.InterfaceType_System.MSOutlook, caption); if (saInterface != null) { /* @@ -186,30 +186,27 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Consoles //------------------------------------------------------------------- // Retrieve interface. - private static SaInterface GetSystemInterfaceByType(ISbmUserOrganisationContext userContext, short interfaceType, String caption) + private static SaInterface GetSystemInterfaceByType(SbmInternals internals, short interfaceType, String caption) { - return GetInterfaceByCategoryType(userContext, SaInterfaceCategory.System, interfaceType, caption); + return GetInterfaceByCategoryType(internals, SaInterfaceCategory.System, interfaceType, caption); } - private static SaInterface GetInterfaceByCategoryType(ISbmUserOrganisationContext userContext, SaInterfaceCategory interfaceCategory, short interfaceType, String caption) + private static SaInterface GetInterfaceByCategoryType(SbmInternals internals, SaInterfaceCategory interfaceCategory, short interfaceType, String caption) { SaInterface saInterface = null; SaInterface.Params prmInterface = new SaInterface.Params(); prmInterface.InterfaceCategory = interfaceCategory; prmInterface.InterfaceTypesIncluded.Add(interfaceType); prmInterface.StatusCat = SaInterface.StatusCat.Any; - using (SaInterfaceConsole interfaceConsole = SbmGlobals.System.CreateInterfaceConsole(userContext)) + saInterface = internals.InterfaceConsole.GetInterface(prmInterface); + if (saInterface == null) { - saInterface = interfaceConsole.GetInterface(prmInterface); - if (saInterface == null) - { - SaLogger.Warn("Unable to run " + caption + " - Interface not found", true); - return null; - } - if (!saInterface.Active) - { - SaLogger.Warn("Unable to run " + caption + " - Interface is not active", true); - return null; - } + SaLogger.Warn("Unable to run " + caption + " - Interface not found", true); + return null; + } + if (!saInterface.Active) + { + SaLogger.Warn("Unable to run " + caption + " - Interface is not active", true); + return null; } return saInterface; } diff --git a/SaBusMgrCoreProcs/Procs/Interfaces/SbmInterfaceProcess_Commodity_Export.cs b/SaBusMgrCoreProcs/Procs/Interfaces/SbmInterfaceProcess_Commodity_Export.cs index 0f649c0..20b460b 100644 --- a/SaBusMgrCoreProcs/Procs/Interfaces/SbmInterfaceProcess_Commodity_Export.cs +++ b/SaBusMgrCoreProcs/Procs/Interfaces/SbmInterfaceProcess_Commodity_Export.cs @@ -141,7 +141,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Interfaces List processComments = new List(); CalculateItemCount(); processComments.Add("Commodities to export: " + Params.CommodityCountTotal); - processComments.AddRange(GetParams().GetDisplayValues(UserContext).Concat("=")); + processComments.AddRange(GetParams().GetDisplayValues(Internals).Concat("=")); processComments.AddRange(base.ProcessComments); return processComments; } diff --git a/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Base.cs b/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Base.cs index 5392c07..5bb6042 100644 --- a/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Base.cs +++ b/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Base.cs @@ -127,7 +127,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Procs return internals; } } - protected SbmAccountsDfn AccountsDfn { get { return Internals.AccountsDfn; } } + protected SbmAccountsConsole AccountsDfn { get { return Internals.AccountsConsole; } } protected new DbUpdateInfo DbUpdateInfo { get { return Internals.DbUpdateInfo; } } // Excel export. public static Color ExcelColumnHeadingColor { get; } = Color.LightYellow; diff --git a/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Commodity_Export.cs b/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Commodity_Export.cs index e4ce225..a9c17e7 100644 --- a/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Commodity_Export.cs +++ b/SaBusMgrCoreProcs/Procs/Procs/SbmProcess_Commodity_Export.cs @@ -137,7 +137,7 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Procs List processComments = new List(); CalculateItemCount(); processComments.Add("Commodities to export: " + Params.CommodityCountTotal); - processComments.AddRange(config.CommodityParams.GetDisplayValues(UserContext).Concat("=")); + processComments.AddRange(config.CommodityParams.GetDisplayValues(Internals).Concat("=")); processComments.AddRange(base.ProcessComments); return processComments; } @@ -296,10 +296,10 @@ namespace Sarand.BusinessMgr.Net.Core.Procs.Procs configHeadings.FirstHeadingRowPos = 1; configHeadings.ForegroundColourRGB = ExcelColumnHeadingColor.ToArgb(); configHeadings.BorderWeight = SaXlBorderWeight.Thin; - configHeadings.FreezeColPos = (uint)(displayColumns.GetPosForId(SbmCommodity.Column.Code) + 1); + configHeadings.FreezeColPos = (uint)(displayColumns.GetPosForId(SbmCommodity.Column.Code) + 1); spreadsheet.SetColumnHeadings(displayColumns, configHeadings); - Params.HomeColumn = configHeadings.FreezeColPos + 1; + Params.HomeColumn = configHeadings.FreezeColPos + 1; Params.HomeRow = Params.FirstDataRow; ExportCommoditiesToExcel(spreadsheet); diff --git a/SaBusMgrCoreWeb/Web/App/SbmAppConfig.cs b/SaBusMgrCoreWeb/Web/App/SbmAppConfig.cs index 9419190..23ac721 100644 --- a/SaBusMgrCoreWeb/Web/App/SbmAppConfig.cs +++ b/SaBusMgrCoreWeb/Web/App/SbmAppConfig.cs @@ -3,7 +3,6 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using System.Text; namespace Sarand.BusinessMgr.Net.Core.Web.App { @@ -43,11 +42,26 @@ namespace Sarand.BusinessMgr.Net.Core.Web.App // Security. public class SecurityConfig { + public class DemoConfig + { + public class AccountConfig + { + public class RegisterConfig + { + public int EmailLinkExpiresMins = Sbm.Config.Security.Demo.Register.EmailLinkExpiresMins_Default; + } + public RegisterConfig Register{ get; } = new RegisterConfig(); + } + public AccountConfig Account { get; } = new AccountConfig(); + } + public DemoConfig Demo{ get; } = new DemoConfig(); + // Password. public class PasswordConfig { public int MinLength { get; set; } } public PasswordConfig Password { get; } = new PasswordConfig(); + // Sign-up. public class SignUpConfig { public class ActivationConfig diff --git a/SaBusMgrCoreWeb/Web/App/SbmInstanceConfig_Control.cs b/SaBusMgrCoreWeb/Web/App/SbmInstanceConfig_Control.cs index a1e00e0..e8fe86c 100644 --- a/SaBusMgrCoreWeb/Web/App/SbmInstanceConfig_Control.cs +++ b/SaBusMgrCoreWeb/Web/App/SbmInstanceConfig_Control.cs @@ -105,7 +105,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.App else ApplicationOptions_Disallowed.Add(option); } - else SaLogger.Warn($"{SysUtil.Fn} Unrecognised application option: {itemParam.Name}."); + else SaLogger.Warn($"{SysUtil.Fn} Unrecognised application 'Option Allowed': {itemParam.Name}."); } else if (itemParam.Context.EqualsCI(ParamContext_AffiliateTypeAllowed)) { diff --git a/SaBusMgrCoreWeb/Web/App/SbmLocaliser.cs b/SaBusMgrCoreWeb/Web/App/SbmLocaliser.cs index ef41f4c..028458e 100644 --- a/SaBusMgrCoreWeb/Web/App/SbmLocaliser.cs +++ b/SaBusMgrCoreWeb/Web/App/SbmLocaliser.cs @@ -5,6 +5,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Net; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; @@ -105,6 +106,15 @@ namespace Sarand.BusinessMgr.Net.Core.Web.App return new HtmlString(value); } + //------------------------------------------------------------------- + /// + /// Encode the text to avoid conflict with HTML document structure. + /// + public String HtmlEncode(string text) + { + return WebUtil.HtmlEncode(text); + } + //------------------------------------------------------------------- /// /// Localised javascript string. diff --git a/SaBusMgrCoreWeb/Web/Components/SbmController_Web.cs b/SaBusMgrCoreWeb/Web/Components/SbmController_Web.cs index e9eac76..497fbfa 100644 --- a/SaBusMgrCoreWeb/Web/Components/SbmController_Web.cs +++ b/SaBusMgrCoreWeb/Web/Components/SbmController_Web.cs @@ -13,6 +13,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; +using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; @@ -44,6 +45,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components { //------------------------------------------------------------------- // Data members. + private SbmInternals_Control internals_Control; //------------------------------------------------------------------- // Protected construction. @@ -58,6 +60,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components { if (disposing) { + if (internals_Control != null) internals_Control.Dispose(); internals_Control = null; } base.Dispose(disposing); } @@ -65,6 +68,11 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components //------------------------------------------------------------------- // Properties. protected override SbmSessionContext SessionContext { get { return SessionData?.SessionContext ?? null; } } + // Control database. + protected SbmInternals_Control Internals_Control { get { if (internals_Control == null) { internals_Control = new SbmInternals_Control(); } return internals_Control; } } + protected SbmcAccountMgr ControlAccountMgr { get { return Internals_Control.ControlAccountMgr; } } + protected SbmcInstanceMgr ControlInstanceMgr { get { return Internals_Control.ControlInstanceMgr; } } + protected SbmcItemMgr ControlItemMgr { get { return Internals_Control.ControlItemMgr; } } //------------------------------------------------------------------- // Action execution events. @@ -134,7 +142,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components // Online encryption parameters. //------------------------------------------------------------------- // Portal Request Password encryption parameters (key & IV) are defined in - // the base Controller so that they can be shared with the Admin application. + // the base Controller so that they can be shared with the Control application. // NB IV value is generated from the key and fixed so that it doesn't change when the application restarts. // IV Must be regenerated if key is changed. protected static string Base64Key_RequestPassword_Portal { get; } = SacsEncryptionHelper.EncodePlainKey("[5Abus1neSSmGR~Request#Password}", SacsEncryptionHelper.KeyLength); diff --git a/SaBusMgrCoreWeb/Web/Components/SbmModel_Base.cs b/SaBusMgrCoreWeb/Web/Components/SbmModel_Base.cs index 3c68423..c47d92b 100644 --- a/SaBusMgrCoreWeb/Web/Components/SbmModel_Base.cs +++ b/SaBusMgrCoreWeb/Web/Components/SbmModel_Base.cs @@ -61,6 +61,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components protected SbmSessionContext SessionContext { get { return SessionData_Web?.SessionContext ?? null; } } protected DbUpdateInfo DbUpdateInfo { get { return SessionData_Web?.DbUpdateInfo ?? new DbUpdateInfo(null, "", Sarand.Net.Standard.Base.App.SacsSystem.ComputerName); } } protected SbmLocaliser Localiser { get; } + protected virtual SbmInstanceSchemaConsole InstanceSchemaConsole { get; } = null; // Request properties. protected SbmController_Web Controller { get; private set; } internal void SetController(SbmController_Web controller) { Controller = controller; } @@ -88,14 +89,16 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components public int PasswordMaxLength { get; } = 32; //------------------------------------------------------------------- + // Control max lengths - based on database tabke column length. + /// /// Form control value max length - Security tables. /// In many cases the database columns allow plenty of extra space for the value, in case they need to be encrypted. /// Hence, several cases where the value entered in the control isn't allowed the full database length. /// - public int GetControlMaxLength(SaSecurityDbDfn.ColumnIdx column) + public virtual int GetControlMaxLength(SaSecurityDbDfn.ColumnIdx column) { - int maxLength = (int)SaSecurityDbDfn.GetColTextLen(column); + int maxLength = (int)(InstanceSchemaConsole?.GetColTextLen(column) ?? SaSecurityDbDfn.GetColTextLen(column)); switch (column) { case SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress: @@ -105,13 +108,13 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components } /// - /// Form control value max length - code type tables. + /// Form control value max length - Code Type tables. /// In many cases the database columns allow plenty of extra space for the value, in case they need to be encrypted. /// Hence, several cases where the value entered in the control isn't allowed the full database length. /// - public int GetControlMaxLength(SaCodeTypeDbDfn.ColumnIdx column) + public virtual int GetControlMaxLength(SaCodeTypeDbDfn.ColumnIdx column) { - int maxLength = (int)SaCodeTypeDbDfn.GetColTextLen(column); + int maxLength = (int)(InstanceSchemaConsole?.GetColTextLen(column) ?? SaCodeTypeDbDfn.GetColTextLen(column)); switch (column) { case SaCodeTypeDbDfn.ColumnIdx.SaCodeType_Name: @@ -121,14 +124,31 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Components return maxLength; } + /// + /// Form control value max length - Item Option tables. + /// In many cases the database columns allow plenty of extra space for the value, in case they need to be encrypted. + /// Hence, several cases where the value entered in the control isn't allowed the full database length. + /// + public virtual int GetControlMaxLength(SaItemOptionDbDfn.ColumnIdx column) + { + int maxLength = (int)(InstanceSchemaConsole?.GetColTextLen(column) ?? SaItemOptionDbDfn.GetColTextLen(column)); + switch (column) + { + case SaItemOptionDbDfn.ColumnIdx.SaItemOption_Name: + case SaItemOptionDbDfn.ColumnIdx.SaItemOption_Context: + return Math.Min(maxLength, 100); + } + return maxLength; + } + /// /// Form control value max length - BusinessMgr tables. /// In many cases the database columns allow plenty of extra space for the value, in case they need to be encrypted. /// Hence, several cases where the value entered in the control isn't allowed the full database length. /// - public int GetControlMaxLength(SbmDbDfn.ColumnIdx column) + public virtual int GetControlMaxLength(SbmDbDfn.ColumnIdx column) { - int maxLength = (int)SbmDbDfn.GetColTextLen(column); + int maxLength = (int)(InstanceSchemaConsole?.GetColTextLen(column) ?? SbmDbDfn.GetColTextLen(column)); switch (column) { case SbmDbDfn.ColumnIdx.Affiliate_Email: diff --git a/SaBusMgrCoreWeb/Web/Consoles/SbmCodeTypeConsole_Web.cs b/SaBusMgrCoreWeb/Web/Consoles/SbmCodeTypeConsole_Web.cs index 1d887ee..0cc71ae 100644 --- a/SaBusMgrCoreWeb/Web/Consoles/SbmCodeTypeConsole_Web.cs +++ b/SaBusMgrCoreWeb/Web/Consoles/SbmCodeTypeConsole_Web.cs @@ -1,4 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; using Sarand.Net.Standard.Base.CodeTypes; @@ -14,7 +15,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Consoles { //------------------------------------------------------------------- // Construction. - public SbmCodeTypeConsole_Web(ISbmUserOrganisationContext userContext) : base(userContext) + public SbmCodeTypeConsole_Web(SbmInternals internals) : base(internals) { } diff --git a/SaBusMgrCoreWeb/Web/Consoles/SbmInterfaceConsole_Web.cs b/SaBusMgrCoreWeb/Web/Consoles/SbmInterfaceConsole_Web.cs index 33c2929..f272f96 100644 --- a/SaBusMgrCoreWeb/Web/Consoles/SbmInterfaceConsole_Web.cs +++ b/SaBusMgrCoreWeb/Web/Consoles/SbmInterfaceConsole_Web.cs @@ -22,7 +22,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Consoles //------------------------------------------------------------------- // Construction. - public SbmInterfaceConsole_Web(ISbmUserOrganisationContext userContext) : base(userContext) + public SbmInterfaceConsole_Web(SbmInternals internals) : base(internals) { } protected override void Dispose(bool disposing) diff --git a/SaBusMgrCoreWeb/Web/Consoles/SbmItemOptionConsole_Web.cs b/SaBusMgrCoreWeb/Web/Consoles/SbmItemOptionConsole_Web.cs index 0e22281..6fd294e 100644 --- a/SaBusMgrCoreWeb/Web/Consoles/SbmItemOptionConsole_Web.cs +++ b/SaBusMgrCoreWeb/Web/Consoles/SbmItemOptionConsole_Web.cs @@ -20,7 +20,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Consoles //------------------------------------------------------------------- // Construction. - public SbmItemOptionConsole_Web(ISbmUserOrganisationContext userContext) : base(userContext) + public SbmItemOptionConsole_Web(SbmInternals internals) : base(internals) { } diff --git a/SaBusMgrCoreWeb/Web/Consoles/SbmSecurityConsole_Web.cs b/SaBusMgrCoreWeb/Web/Consoles/SbmSecurityConsole_Web.cs index 247d0bc..54fe5d4 100644 --- a/SaBusMgrCoreWeb/Web/Consoles/SbmSecurityConsole_Web.cs +++ b/SaBusMgrCoreWeb/Web/Consoles/SbmSecurityConsole_Web.cs @@ -17,7 +17,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Consoles //------------------------------------------------------------------- // Construction. - public SbmSecurityConsole_Web(ISbmUserOrganisationContext userContext) : base(userContext) + public SbmSecurityConsole_Web(SbmInternals internals) : base(internals) { } protected override void Dispose(bool disposing) diff --git a/SaBusMgrCoreWeb/Web/Consoles/SbmUpdateLogConsole_Web.cs b/SaBusMgrCoreWeb/Web/Consoles/SbmUpdateLogConsole_Web.cs index 6931fb9..d31453b 100644 --- a/SaBusMgrCoreWeb/Web/Consoles/SbmUpdateLogConsole_Web.cs +++ b/SaBusMgrCoreWeb/Web/Consoles/SbmUpdateLogConsole_Web.cs @@ -16,7 +16,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Consoles //------------------------------------------------------------------- // Construction. - public SbmUpdateLogConsole_Web(ISbmUserOrganisationContext userContext) : base(userContext) + public SbmUpdateLogConsole_Web(SbmInternals internals) : base(internals) { } protected override void Dispose(bool disposing) diff --git a/SaBusMgrCoreWeb/Web/Middleware/SbmModelBinder.cs b/SaBusMgrCoreWeb/Web/Middleware/SbmModelBinder.cs index 4ff6bec..e3a0ccd 100644 --- a/SaBusMgrCoreWeb/Web/Middleware/SbmModelBinder.cs +++ b/SaBusMgrCoreWeb/Web/Middleware/SbmModelBinder.cs @@ -84,7 +84,7 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Middleware // Email addresses must be lowercase to ensure match to encrypted data. if (modelName.EqualsCI("EmailAddress") || modelName.EqualsCI("AccountEmailAddress")) - value = value.ToLower(); + value = value.ToLowerInvariant(); // Uppercase selected values. if (modelName.EqualsCI("Postcode") || modelName.EqualsCI("AccountPostcode") || modelName.EqualsCI("RegisteredAddressPostcode")) diff --git a/SaBusMgrCoreWeb/Web/Middleware/ValidateAntiForgeryTokenMiddleware.cs b/SaBusMgrCoreWeb/Web/Middleware/ValidateAntiForgeryTokenMiddleware.cs index 462541b..e569fa1 100644 --- a/SaBusMgrCoreWeb/Web/Middleware/ValidateAntiForgeryTokenMiddleware.cs +++ b/SaBusMgrCoreWeb/Web/Middleware/ValidateAntiForgeryTokenMiddleware.cs @@ -43,7 +43,9 @@ namespace Sarand.BusinessMgr.Net.Core.Web.Middleware { // Log action. //String rawTarget = context.Features.Get().RawTarget; - if (SbmSystem.DebugMode) SaLogger.Debug($"{SysUtil.Fn} Action: '" + Regex.Replace(context.Request.Path.ToString(), "^/", "") + "'. Method: " + context.Request.Method); + HashSet pathsToIgnore = new HashSet(StringComparer.InvariantCultureIgnoreCase) { "/Security/Ajax/ScorePassword" }; + if (SbmSystem.DebugMode && !pathsToIgnore.Contains($"{context.Request.Path}")) + SaLogger.Debug($"{SysUtil.Fn} Action: '{Regex.Replace($"{context.Request.Path}", "^/", "")}'. Method: {context.Request.Method}."); // Intercept POST requests and apply anti-forgery test. if (HttpMethods.IsPost(context.Request.Method)) diff --git a/SaBusMgrStandardBase/Base/App/Sbm-Version.cs b/SaBusMgrStandardBase/Base/App/Sbm-Version.cs index bdc4f9c..5a00903 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.0.0"; + private static String version { get; } = "3.0.0.1"; // Retrieve version. public static String GetFullVersion() { return version; } public static String GetAppVersion() @@ -37,8 +37,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Version history. //------------------------------------------------------------------- - // 3.0.0 ?-Jul-2021 Initial demo test version. - // - . + // 3.0.0 Jul-2021 Initial demo test version. + // Initial deployment - Feb-25. //------------------------------------------------------------------- } //======================================================================= diff --git a/SaBusMgrStandardBase/Base/App/Sbm.cs b/SaBusMgrStandardBase/Base/App/Sbm.cs index b63434c..90041d5 100644 --- a/SaBusMgrStandardBase/Base/App/Sbm.cs +++ b/SaBusMgrStandardBase/Base/App/Sbm.cs @@ -17,6 +17,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public static String Context_Defaults { get; } = "Defaults"; public static class Security { + public static class Demo + { + public static class Register + { + public static int EmailLinkExpiresMins_Default { get; } = 60; + public static int EmailLinkExpiresMins_Min { get; } = 30; + public static int EmailLinkExpiresMins_Max { get; } = 60 * 4; + } + } public static class Password { public static int MinLength { get; } = 8; @@ -59,7 +68,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public static class Cookie { /// Default cookie name: '.AspNetCore.Session' - public static String Name { get; } = "BusinessMgr.Portal.Session"; + public static String Name { get; } = "BMPSN"; public static bool HttpOnly { get; } = true; public static TimeSpan IdleTimeout { get; } = SacsSystem.DebugMode ? TimeSpan.FromMinutes(5) : TimeSpan.FromMinutes(60); public static long RememberMeTimeoutMilis { get; } = (long)(SacsSystem.DebugMode ? TimeSpan.FromMinutes(2) : TimeSpan.FromMinutes(10)).TotalMilliseconds; @@ -81,7 +90,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public static class Cookie { /// Default cookie name: '.AspNetCore.Session' - public static String Name { get; } = "BusinessMgr.Control.Session"; + public static String Name { get; } = "BusMgr.Control.Session"; public static bool HttpOnly { get; } = true; public static TimeSpan IdleTimeout { get; } = SacsSystem.DebugMode ? TimeSpan.FromMinutes(5) : TimeSpan.FromMinutes(15); public static long KeepLoggedInTimeoutMillis { get; } = (long)(SacsSystem.DebugMode ? TimeSpan.FromMinutes(2) : TimeSpan.FromMinutes(10)).TotalMilliseconds; @@ -112,6 +121,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App QC, Dev } + public enum Database + { + Unknown, + Control, + Template, + Demo, + } + public const String RepositoryContext_Template = "Template"; + public const String RepositoryContext_Demo= "Demo"; //------------------------------------------------------------------- // Configuration console. diff --git a/SaBusMgrStandardBase/Base/App/SbmConsoleViewDfn.cs b/SaBusMgrStandardBase/Base/App/SbmConsoleViewDfn.cs index 7851695..95e7df9 100644 --- a/SaBusMgrStandardBase/Base/App/SbmConsoleViewDfn.cs +++ b/SaBusMgrStandardBase/Base/App/SbmConsoleViewDfn.cs @@ -101,104 +101,77 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public virtual String LinkSuffix { get { return ""; } } //--------------------------------------------------------------- // Utilities. - public virtual bool Refresh(ISbmUserOrganisationContext userContext) + public virtual bool Refresh(SbmInternals internals) { ItemCount = 0; switch (LinkType) { case Sbm.ConsoleLink.Assoc_Cust_Stats: { - using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext)) - { - SbmAssociation.Params prm = new SbmAssociation.Params(); - prm.AssociationType = Sbm.AssociationType.Customer; - ItemCount = (int)accountMgr.GetAssociationCount(prm); - } + SbmAssociation.Params prm = new SbmAssociation.Params(); + prm.AssociationType = Sbm.AssociationType.Customer; + ItemCount = (int)internals.AccountMgr.GetAssociationCount(prm); break; } case Sbm.ConsoleLink.Assoc_Supp_Stats: { - using (SbmAccountMgr accountMgr = SbmGlobals.System.CreateAccountMgr(userContext)) - { - SbmAssociation.Params prm = new SbmAssociation.Params(); - prm.AssociationType = Sbm.AssociationType.Supplier; - ItemCount = (int)accountMgr.GetAssociationCount(prm); - } + SbmAssociation.Params prm = new SbmAssociation.Params(); + prm.AssociationType = Sbm.AssociationType.Supplier; + ItemCount = (int)internals.AccountMgr.GetAssociationCount(prm); break; } case Sbm.ConsoleLink.Comm_Stats: { - using (SbmCommodityMgr commodityMgr = SbmGlobals.System.CreateCommodityMgr(userContext)) - { - SbmCommodity.Params prm = new SbmCommodity.Params(); - ItemCount = (int)commodityMgr.GetCommodityCount(prm); - } + SbmCommodity.Params prm = new SbmCommodity.Params(); + ItemCount = (int)internals.CommodityMgr.GetCommodityCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesQuotes_Pend_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesQuote; - prm.StatusCat = SbmTransaction.StatusCat.Pending; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesQuote; + prm.StatusCat = SbmTransaction.StatusCat.Pending; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesQuotes_Open_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesQuote; - prm.StatusCat = SbmTransaction.StatusCat.Open; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesQuote; + prm.StatusCat = SbmTransaction.StatusCat.Open; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesOrders_Pend_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesOrder; - prm.StatusCat = SbmTransaction.StatusCat.Pending; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesOrder; + prm.StatusCat = SbmTransaction.StatusCat.Pending; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesOrders_Open_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesOrder; - prm.StatusCat = SbmTransaction.StatusCat.Open; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesOrder; + prm.StatusCat = SbmTransaction.StatusCat.Open; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesDispatches_Pend_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesDispatch; - prm.StatusCat = SbmTransaction.StatusCat.Pending; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesDispatch; + prm.StatusCat = SbmTransaction.StatusCat.Pending; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Trans_SalesInvoices_Pend_Stats: { - using (SbmTransactionMgr transactionMgr = SbmGlobals.System.CreateTransactionMgr(userContext)) - { - SbmTransaction.Params prm = new SbmTransaction.Params(); - prm.TransactionType = Sbm.TransactionType.SalesInvoice; - prm.StatusCat = SbmTransaction.StatusCat.Pending; - ItemCount = (int)transactionMgr.GetTransactionCount(prm); - } + SbmTransaction.Params prm = new SbmTransaction.Params(); + prm.TransactionType = Sbm.TransactionType.SalesInvoice; + prm.StatusCat = SbmTransaction.StatusCat.Pending; + ItemCount = (int)internals.TransactionMgr.GetTransactionCount(prm); break; } case Sbm.ConsoleLink.Util_Codes_Stats: diff --git a/SaBusMgrStandardBase/Base/App/SbmDbDfn.cs b/SaBusMgrStandardBase/Base/App/SbmDbDfn.cs index b0ba0ad..40f44d6 100644 --- a/SaBusMgrStandardBase/Base/App/SbmDbDfn.cs +++ b/SaBusMgrStandardBase/Base/App/SbmDbDfn.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Base.App { @@ -27,7 +27,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App Container, ContainerItem, Currency, - IndexDefragLog, Interface, InterfaceDataItem, InterfaceProcess, @@ -45,10 +44,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaAsset, SaAssetCategory, SaAssetProcess, + SaAttrUpdate, + SaCode, + SaCodeType, SaDiaryEntry, SaDiaryLink, + SaItemData, + SaItemDoc, + SaItemOption, SaPrice, SaPriceSet, + SaSecItem, + SaSecLink, SaVehicle, SaVehicleClass, SaVehicleEvent, @@ -416,18 +423,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App Currency_UpdateOn, Currency_UpdateBy, Currency_UpdateHost, - IndexDefragLog_IndexDefragId, - IndexDefragLog_DatabaseID, - IndexDefragLog_DatabaseName, - IndexDefragLog_ObjectID, - IndexDefragLog_ObjectName, - IndexDefragLog_IndexID, - IndexDefragLog_IndexName, - IndexDefragLog_PartitionNumber, - IndexDefragLog_Fragmentation, - IndexDefragLog_PageCount, - IndexDefragLog_DateTimeStart, - IndexDefragLog_DurationSeconds, Interface_Id, Interface_Context, Interface_Code, @@ -784,6 +779,51 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaAssetProcess_UpdateOn, SaAssetProcess_UpdateBy, SaAssetProcess_UpdateHost, + SaAttrUpdate_ItemType, + SaAttrUpdate_ItemId, + SaAttrUpdate_Logged, + SaAttrUpdate_Attribute, + SaAttrUpdate_DataBefore, + SaAttrUpdate_DataAfter, + SaAttrUpdate_Notes, + SaAttrUpdate_Flags, + SaAttrUpdate_Status, + SaAttrUpdate_CreateOn, + SaAttrUpdate_CreateBy, + SaAttrUpdate_CreateHost, + SaAttrUpdate_UpdateOn, + SaAttrUpdate_UpdateBy, + SaAttrUpdate_UpdateHost, + SaCode_Id, + SaCode_CodeTypeId, + SaCode_Code, + SaCode_Description, + SaCode_Seq, + SaCode_Data, + SaCode_Notes, + SaCode_Flags, + SaCode_Status, + SaCode_CreateOn, + SaCode_CreateBy, + SaCode_CreateHost, + SaCode_UpdateOn, + SaCode_UpdateBy, + SaCode_UpdateHost, + SaCodeType_Id, + SaCodeType_Code, + SaCodeType_Name, + SaCodeType_MaxCodeLen, + SaCodeType_CodeFormat, + SaCodeType_NextCode, + SaCodeType_Notes, + SaCodeType_Flags, + SaCodeType_Status, + SaCodeType_CreateOn, + SaCodeType_CreateBy, + SaCodeType_CreateHost, + SaCodeType_UpdateOn, + SaCodeType_UpdateBy, + SaCodeType_UpdateHost, SaDiaryEntry_Id, SaDiaryEntry_Category, SaDiaryEntry_Type, @@ -812,6 +852,53 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaDiaryLink_UpdateOn, SaDiaryLink_UpdateBy, SaDiaryLink_UpdateHost, + SaItemData_Id, + SaItemData_ItemType, + SaItemData_ItemId, + SaItemData_DataType, + SaItemData_ItemData, + SaItemData_Notes, + SaItemData_Flags, + SaItemData_Status, + SaItemData_CreateOn, + SaItemData_CreateBy, + SaItemData_CreateHost, + SaItemData_UpdateOn, + SaItemData_UpdateBy, + SaItemData_UpdateHost, + SaItemDoc_Id, + SaItemDoc_ItemType, + SaItemDoc_ItemId, + SaItemDoc_Category, + SaItemDoc_Type, + SaItemDoc_DescBrief, + SaItemDoc_Folder, + SaItemDoc_Filename, + SaItemDoc_MimeType, + SaItemDoc_ItemTypeAutoAssign, + SaItemDoc_Notes, + SaItemDoc_Flags, + SaItemDoc_Status, + SaItemDoc_CreateOn, + SaItemDoc_CreateBy, + SaItemDoc_CreateHost, + SaItemDoc_UpdateOn, + SaItemDoc_UpdateBy, + SaItemDoc_UpdateHost, + SaItemOption_ItemType, + SaItemOption_ItemId, + SaItemOption_Name, + SaItemOption_Context, + SaItemOption_Value, + SaItemOption_Notes, + SaItemOption_Flags, + SaItemOption_Status, + SaItemOption_CreateOn, + SaItemOption_CreateBy, + SaItemOption_CreateHost, + SaItemOption_UpdateOn, + SaItemOption_UpdateBy, + SaItemOption_UpdateHost, SaPrice_PriceSetId, SaPrice_CommodityId, SaPrice_Type, @@ -845,6 +932,45 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaPriceSet_UpdateOn, SaPriceSet_UpdateBy, SaPriceSet_UpdateHost, + SaSecItem_Id, + SaSecItem_Code, + SaSecItem_Description, + SaSecItem_Type, + SaSecItem_EmailAddress, + SaSecItem_Location, + SaSecItem_DataItemType, + SaSecItem_EncPword, + SaSecItem_PwordSalt, + SaSecItem_PwordHash, + SaSecItem_PasswordToken, + SaSecItem_PasswordHistory, + SaSecItem_PasswordChangedAt, + SaSecItem_LastLogin, + SaSecItem_LastInvalidLoginAt, + SaSecItem_InvalidLoginCount, + SaSecItem_Notes, + SaSecItem_Flags, + SaSecItem_Status, + SaSecItem_CreateOn, + SaSecItem_CreateBy, + SaSecItem_CreateHost, + SaSecItem_UpdateOn, + SaSecItem_UpdateBy, + SaSecItem_UpdateHost, + SaSecLink_ItemOwner, + SaSecLink_ItemTarget, + SaSecLink_ItemContext, + SaSecLink_DayApplic, + SaSecLink_DateApplicFrom, + SaSecLink_DateApplicTo, + SaSecLink_Flags, + SaSecLink_Status, + SaSecLink_CreateOn, + SaSecLink_CreateBy, + SaSecLink_CreateHost, + SaSecLink_UpdateOn, + SaSecLink_UpdateBy, + SaSecLink_UpdateHost, SaVehicle_Id, SaVehicle_VehicleClassId, SaVehicle_RegNumber, @@ -1145,9 +1271,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Data members. - private static readonly int tableCount = 44; - private static readonly int columnCount = 1073; - private static ulong maxTextLen = 0; + private static readonly int tableCount = 51; + private static readonly int columnCount = 1192; + public static ulong MaxTextLen { get; private set; } //------------------------------------------------------------------- // Retrieve Table details (eg. name: 'Company'). @@ -1268,7 +1394,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App } public static void SetMaxTextLen (ulong maxTextLen) { - SbmDbDfn.maxTextLen = maxTextLen; + SbmDbDfn.MaxTextLen = maxTextLen; } public static bool IsColFmtText (ColumnIdx column) { @@ -1283,7 +1409,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App if (columns[columnIdx].DataType == DbColumnDataType.VarChar) { ulong textLen = columns[columnIdx].DataLen; - if (maxTextLen > 0 && textLen > maxTextLen) textLen = maxTextLen; + if (MaxTextLen > 0 && textLen > MaxTextLen) textLen = MaxTextLen; return textLen; } return 0; @@ -1336,7 +1462,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new TableDfn("dbo","Container"), new TableDfn("dbo","ContainerItem"), new TableDfn("dbo","Currency"), - new TableDfn("dbo","IndexDefragLog"), new TableDfn("dbo","Interface"), new TableDfn("dbo","InterfaceDataItem"), new TableDfn("dbo","InterfaceProcess"), @@ -1354,10 +1479,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new TableDfn("dbo","SaAsset"), new TableDfn("dbo","SaAssetCategory"), new TableDfn("dbo","SaAssetProcess"), + new TableDfn("dbo","SaAttrUpdate"), + new TableDfn("dbo","SaCode"), + new TableDfn("dbo","SaCodeType"), new TableDfn("dbo","SaDiaryEntry"), new TableDfn("dbo","SaDiaryLink"), + new TableDfn("dbo","SaItemData"), + new TableDfn("dbo","SaItemDoc"), + new TableDfn("dbo","SaItemOption"), new TableDfn("dbo","SaPrice"), new TableDfn("dbo","SaPriceSet"), + new TableDfn("dbo","SaSecItem"), + new TableDfn("dbo","SaSecLink"), new TableDfn("dbo","SaVehicle"), new TableDfn("dbo","SaVehicleClass"), new TableDfn("dbo","SaVehicleEvent"), @@ -1742,27 +1875,35 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(10,"UpdateOn",9,93,false,23), new ColumnDfn(10,"UpdateBy",4,4,false,10), new ColumnDfn(10,"UpdateHost",0,-9,false,64), - new ColumnDfn(11,"IndexDefragId",4,4,true,10), - new ColumnDfn(11,"DatabaseID",4,4,false,10), - new ColumnDfn(11,"DatabaseName",0,-9,false,128), - new ColumnDfn(11,"ObjectID",4,4,false,10), - new ColumnDfn(11,"ObjectName",0,-9,false,128), - new ColumnDfn(11,"IndexID",4,4,false,10), - new ColumnDfn(11,"IndexName",0,-9,false,128), - new ColumnDfn(11,"PartitionNumber",3,5,false,5), - new ColumnDfn(11,"Fragmentation",7,6,false,53), - new ColumnDfn(11,"PageCount",4,4,false,10), - new ColumnDfn(11,"DateTimeStart",9,93,false,23), - new ColumnDfn(11,"DurationSeconds",4,4,false,10), + new ColumnDfn(11,"Id",4,4,false,10), + new ColumnDfn(11,"Context",0,-9,false,32), + new ColumnDfn(11,"Code",0,-9,false,32), + new ColumnDfn(11,"Category",3,5,false,5), + new ColumnDfn(11,"Type",3,5,false,5), + new ColumnDfn(11,"Caption",0,-9,false,100), + new ColumnDfn(11,"Notes",0,-9,false,255), + new ColumnDfn(11,"Flags",3,5,false,5), + new ColumnDfn(11,"Status",0,-9,false,3), + new ColumnDfn(11,"CreateOn",9,93,false,23), + new ColumnDfn(11,"CreateBy",4,4,false,10), + new ColumnDfn(11,"CreateHost",0,-9,false,64), + new ColumnDfn(11,"UpdateOn",9,93,false,23), + new ColumnDfn(11,"UpdateBy",4,4,false,10), + new ColumnDfn(11,"UpdateHost",0,-9,false,64), new ColumnDfn(12,"Id",4,4,false,10), - new ColumnDfn(12,"Context",0,-9,false,32), - new ColumnDfn(12,"Code",0,-9,false,32), - new ColumnDfn(12,"Category",3,5,false,5), - new ColumnDfn(12,"Type",3,5,false,5), - new ColumnDfn(12,"Caption",0,-9,false,100), + new ColumnDfn(12,"InterfaceId",4,4,false,10), + new ColumnDfn(12,"Direction",3,5,false,5), + new ColumnDfn(12,"ExternalRef",0,-9,false,64), + new ColumnDfn(12,"ItemType",3,5,false,5), + new ColumnDfn(12,"ItemId",4,4,false,10), + new ColumnDfn(12,"ProcessStatus",0,-9,false,3), + new ColumnDfn(12,"ProcessStatusBy",4,4,false,10), + new ColumnDfn(12,"ProcessStatusOn",4,4,false,10), + new ColumnDfn(12,"ItemStatus",0,-9,false,3), + new ColumnDfn(12,"ItemStatusBy",4,4,false,10), + new ColumnDfn(12,"ItemStatusOn",4,4,false,10), new ColumnDfn(12,"Notes",0,-9,false,255), new ColumnDfn(12,"Flags",3,5,false,5), - new ColumnDfn(12,"Status",0,-9,false,3), new ColumnDfn(12,"CreateOn",9,93,false,23), new ColumnDfn(12,"CreateBy",4,4,false,10), new ColumnDfn(12,"CreateHost",0,-9,false,64), @@ -1772,34 +1913,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(13,"Id",4,4,false,10), new ColumnDfn(13,"InterfaceId",4,4,false,10), new ColumnDfn(13,"Direction",3,5,false,5), - new ColumnDfn(13,"ExternalRef",0,-9,false,64), - new ColumnDfn(13,"ItemType",3,5,false,5), - new ColumnDfn(13,"ItemId",4,4,false,10), - new ColumnDfn(13,"ProcessStatus",0,-9,false,3), - new ColumnDfn(13,"ProcessStatusBy",4,4,false,10), - new ColumnDfn(13,"ProcessStatusOn",4,4,false,10), - new ColumnDfn(13,"ItemStatus",0,-9,false,3), - new ColumnDfn(13,"ItemStatusBy",4,4,false,10), - new ColumnDfn(13,"ItemStatusOn",4,4,false,10), - new ColumnDfn(13,"Notes",0,-9,false,255), + new ColumnDfn(13,"ProcRef",0,-9,false,32), + new ColumnDfn(13,"ProcSeq",4,4,false,10), + new ColumnDfn(13,"ProcDate",4,4,false,10), + new ColumnDfn(13,"ProcTime",4,4,false,10), + new ColumnDfn(13,"BatchDate",4,4,false,10), + new ColumnDfn(13,"BatchTime",4,4,false,10), + new ColumnDfn(13,"ElapseSecs",4,4,false,10), + new ColumnDfn(13,"ItemCount",4,4,false,10), new ColumnDfn(13,"Flags",3,5,false,5), + new ColumnDfn(13,"Status",0,-9,false,3), new ColumnDfn(13,"CreateOn",9,93,false,23), new ColumnDfn(13,"CreateBy",4,4,false,10), new ColumnDfn(13,"CreateHost",0,-9,false,64), new ColumnDfn(13,"UpdateOn",9,93,false,23), new ColumnDfn(13,"UpdateBy",4,4,false,10), new ColumnDfn(13,"UpdateHost",0,-9,false,64), - new ColumnDfn(14,"Id",4,4,false,10), - new ColumnDfn(14,"InterfaceId",4,4,false,10), - new ColumnDfn(14,"Direction",3,5,false,5), - new ColumnDfn(14,"ProcRef",0,-9,false,32), - new ColumnDfn(14,"ProcSeq",4,4,false,10), - new ColumnDfn(14,"ProcDate",4,4,false,10), - new ColumnDfn(14,"ProcTime",4,4,false,10), - new ColumnDfn(14,"BatchDate",4,4,false,10), - new ColumnDfn(14,"BatchTime",4,4,false,10), - new ColumnDfn(14,"ElapseSecs",4,4,false,10), - new ColumnDfn(14,"ItemCount",4,4,false,10), + new ColumnDfn(14,"ProcessId",4,4,false,10), + new ColumnDfn(14,"InterfaceDataItemId",4,4,false,10), + new ColumnDfn(14,"ItemData",0,-9,false,64), new ColumnDfn(14,"Flags",3,5,false,5), new ColumnDfn(14,"Status",0,-9,false,3), new ColumnDfn(14,"CreateOn",9,93,false,23), @@ -1808,39 +1940,45 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(14,"UpdateOn",9,93,false,23), new ColumnDfn(14,"UpdateBy",4,4,false,10), new ColumnDfn(14,"UpdateHost",0,-9,false,64), + new ColumnDfn(15,"Id",4,4,false,10), new ColumnDfn(15,"ProcessId",4,4,false,10), - new ColumnDfn(15,"InterfaceDataItemId",4,4,false,10), - new ColumnDfn(15,"ItemData",0,-9,false,64), + new ColumnDfn(15,"MsgType",0,-9,false,3), + new ColumnDfn(15,"Msg",0,-9,false,4000), + new ColumnDfn(15,"FileName",0,-9,false,64), + new ColumnDfn(15,"LineNumber",4,4,false,10), + new ColumnDfn(15,"ItemType",3,5,false,5), + new ColumnDfn(15,"ItemId",4,4,false,10), new ColumnDfn(15,"Flags",3,5,false,5), - new ColumnDfn(15,"Status",0,-9,false,3), + new ColumnDfn(15,"Status",0,12,false,3), new ColumnDfn(15,"CreateOn",9,93,false,23), new ColumnDfn(15,"CreateBy",4,4,false,10), - new ColumnDfn(15,"CreateHost",0,-9,false,64), + new ColumnDfn(15,"CreateHost",0,12,false,64), new ColumnDfn(15,"UpdateOn",9,93,false,23), new ColumnDfn(15,"UpdateBy",4,4,false,10), - new ColumnDfn(15,"UpdateHost",0,-9,false,64), + new ColumnDfn(15,"UpdateHost",0,12,false,64), new ColumnDfn(16,"Id",4,4,false,10), - new ColumnDfn(16,"ProcessId",4,4,false,10), - new ColumnDfn(16,"MsgType",0,-9,false,3), - new ColumnDfn(16,"Msg",0,-9,false,4000), - new ColumnDfn(16,"FileName",0,-9,false,64), - new ColumnDfn(16,"LineNumber",4,4,false,10), - new ColumnDfn(16,"ItemType",3,5,false,5), - new ColumnDfn(16,"ItemId",4,4,false,10), + new ColumnDfn(16,"AffIdOwner",4,4,false,10), + new ColumnDfn(16,"Type",3,5,false,5), + new ColumnDfn(16,"Ref",0,-9,false,32), + new ColumnDfn(16,"ProcessType",0,-9,false,32), + new ColumnDfn(16,"DescBrief",0,-9,false,255), + new ColumnDfn(16,"Notes",0,-9,false,255), new ColumnDfn(16,"Flags",3,5,false,5), - new ColumnDfn(16,"Status",0,12,false,3), + new ColumnDfn(16,"Status",0,-9,false,3), new ColumnDfn(16,"CreateOn",9,93,false,23), new ColumnDfn(16,"CreateBy",4,4,false,10), - new ColumnDfn(16,"CreateHost",0,12,false,64), + new ColumnDfn(16,"CreateHost",0,-9,false,64), new ColumnDfn(16,"UpdateOn",9,93,false,23), new ColumnDfn(16,"UpdateBy",4,4,false,10), - new ColumnDfn(16,"UpdateHost",0,12,false,64), - new ColumnDfn(17,"Id",4,4,false,10), - new ColumnDfn(17,"AffIdOwner",4,4,false,10), + new ColumnDfn(16,"UpdateHost",0,-9,false,64), new ColumnDfn(17,"Type",3,5,false,5), - new ColumnDfn(17,"Ref",0,-9,false,32), - new ColumnDfn(17,"ProcessType",0,-9,false,32), - new ColumnDfn(17,"DescBrief",0,-9,false,255), + new ColumnDfn(17,"ItemTypeFrom",3,5,false,5), + new ColumnDfn(17,"ItemIdFrom",4,4,false,10), + new ColumnDfn(17,"ItemTypeTo",3,5,false,5), + new ColumnDfn(17,"ItemIdTo",4,4,false,10), + new ColumnDfn(17,"Seq",3,5,false,5), + new ColumnDfn(17,"Completed",9,93,false,23), + new ColumnDfn(17,"DataContent",0,-9,false,255), new ColumnDfn(17,"Notes",0,-9,false,255), new ColumnDfn(17,"Flags",3,5,false,5), new ColumnDfn(17,"Status",0,-9,false,3), @@ -1850,17 +1988,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(17,"UpdateOn",9,93,false,23), new ColumnDfn(17,"UpdateBy",4,4,false,10), new ColumnDfn(17,"UpdateHost",0,-9,false,64), - new ColumnDfn(18,"Type",3,5,false,5), - new ColumnDfn(18,"ItemTypeFrom",3,5,false,5), - new ColumnDfn(18,"ItemIdFrom",4,4,false,10), - new ColumnDfn(18,"ItemTypeTo",3,5,false,5), - new ColumnDfn(18,"ItemIdTo",4,4,false,10), - new ColumnDfn(18,"Seq",3,5,false,5), - new ColumnDfn(18,"Completed",9,93,false,23), - new ColumnDfn(18,"DataContent",0,-9,false,255), - new ColumnDfn(18,"Notes",0,-9,false,255), - new ColumnDfn(18,"Flags",3,5,false,5), - new ColumnDfn(18,"Status",0,-9,false,3), + new ColumnDfn(18,"Id",4,4,false,10), + new ColumnDfn(18,"Code",0,-9,false,4), + new ColumnDfn(18,"Name",0,-9,false,50), + new ColumnDfn(18,"Primary",4,4,false,10), + new ColumnDfn(18,"Unicode",1,-7,false,1), + new ColumnDfn(18,"Translation",1,-7,false,1), new ColumnDfn(18,"CreateOn",9,93,false,23), new ColumnDfn(18,"CreateBy",4,4,false,10), new ColumnDfn(18,"CreateHost",0,-9,false,64), @@ -1868,11 +2001,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(18,"UpdateBy",4,4,false,10), new ColumnDfn(18,"UpdateHost",0,-9,false,64), new ColumnDfn(19,"Id",4,4,false,10), - new ColumnDfn(19,"Code",0,-9,false,4), - new ColumnDfn(19,"Name",0,-9,false,50), - new ColumnDfn(19,"Primary",4,4,false,10), - new ColumnDfn(19,"Unicode",1,-7,false,1), - new ColumnDfn(19,"Translation",1,-7,false,1), + new ColumnDfn(19,"AffIdOwner",4,4,false,10), + new ColumnDfn(19,"Category",3,5,false,5), + new ColumnDfn(19,"Code",0,-9,false,16), + new ColumnDfn(19,"Name",0,-9,false,64), + new ColumnDfn(19,"Notes",0,-9,false,255), + new ColumnDfn(19,"Flags",3,5,false,5), + new ColumnDfn(19,"Status",0,-9,false,3), new ColumnDfn(19,"CreateOn",9,93,false,23), new ColumnDfn(19,"CreateBy",4,4,false,10), new ColumnDfn(19,"CreateHost",0,-9,false,64), @@ -1880,10 +2015,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(19,"UpdateBy",4,4,false,10), new ColumnDfn(19,"UpdateHost",0,-9,false,64), new ColumnDfn(20,"Id",4,4,false,10), - new ColumnDfn(20,"AffIdOwner",4,4,false,10), - new ColumnDfn(20,"Category",3,5,false,5), - new ColumnDfn(20,"Code",0,-9,false,16), - new ColumnDfn(20,"Name",0,-9,false,64), + new ColumnDfn(20,"ItemType",3,5,false,5), + new ColumnDfn(20,"ItemId",4,4,false,10), + new ColumnDfn(20,"Type",3,5,false,5), + new ColumnDfn(20,"Movement",9,93,false,23), + new ColumnDfn(20,"LocationIdFrom",4,4,false,10), + new ColumnDfn(20,"LocationIdTo",4,4,false,10), + new ColumnDfn(20,"Quantity",7,6,false,53), + new ColumnDfn(20,"MovementIdSource",4,4,false,10), + new ColumnDfn(20,"ItemTypeSource",3,5,false,5), + new ColumnDfn(20,"ItemIdSource",4,4,false,10), new ColumnDfn(20,"Notes",0,-9,false,255), new ColumnDfn(20,"Flags",3,5,false,5), new ColumnDfn(20,"Status",0,-9,false,3), @@ -1894,37 +2035,33 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(20,"UpdateBy",4,4,false,10), new ColumnDfn(20,"UpdateHost",0,-9,false,64), new ColumnDfn(21,"Id",4,4,false,10), - new ColumnDfn(21,"ItemType",3,5,false,5), - new ColumnDfn(21,"ItemId",4,4,false,10), + new ColumnDfn(21,"AffIdOwner",4,4,false,10), + new ColumnDfn(21,"ItemIdParent",4,4,false,10), + new ColumnDfn(21,"Seq",3,5,false,5), new ColumnDfn(21,"Type",3,5,false,5), - new ColumnDfn(21,"Movement",9,93,false,23), - new ColumnDfn(21,"LocationIdFrom",4,4,false,10), - new ColumnDfn(21,"LocationIdTo",4,4,false,10), - new ColumnDfn(21,"Quantity",7,6,false,53), - new ColumnDfn(21,"MovementIdSource",4,4,false,10), - new ColumnDfn(21,"ItemTypeSource",3,5,false,5), - new ColumnDfn(21,"ItemIdSource",4,4,false,10), + new ColumnDfn(21,"ItemIdRef",4,4,false,10), + new ColumnDfn(21,"Code",0,-9,false,32), + new ColumnDfn(21,"ShortCut",0,-9,false,32), + new ColumnDfn(21,"Caption",0,-9,false,128), + new ColumnDfn(21,"DescBrief",0,-9,false,255), + new ColumnDfn(21,"DescDetail",0,-9,false,4000), + new ColumnDfn(21,"CommodityId",4,4,false,10), new ColumnDfn(21,"Notes",0,-9,false,255), new ColumnDfn(21,"Flags",3,5,false,5), - new ColumnDfn(21,"Status",0,-9,false,3), + new ColumnDfn(21,"Status",0,12,false,3), new ColumnDfn(21,"CreateOn",9,93,false,23), new ColumnDfn(21,"CreateBy",4,4,false,10), - new ColumnDfn(21,"CreateHost",0,-9,false,64), + new ColumnDfn(21,"CreateHost",0,12,false,64), new ColumnDfn(21,"UpdateOn",9,93,false,23), new ColumnDfn(21,"UpdateBy",4,4,false,10), - new ColumnDfn(21,"UpdateHost",0,-9,false,64), + new ColumnDfn(21,"UpdateHost",0,12,false,64), new ColumnDfn(22,"Id",4,4,false,10), new ColumnDfn(22,"AffIdOwner",4,4,false,10), - new ColumnDfn(22,"ItemIdParent",4,4,false,10), - new ColumnDfn(22,"Seq",3,5,false,5), + new ColumnDfn(22,"Category",3,5,false,5), new ColumnDfn(22,"Type",3,5,false,5), - new ColumnDfn(22,"ItemIdRef",4,4,false,10), - new ColumnDfn(22,"Code",0,-9,false,32), - new ColumnDfn(22,"ShortCut",0,-9,false,32), - new ColumnDfn(22,"Caption",0,-9,false,128), + new ColumnDfn(22,"Seq",3,5,false,5), new ColumnDfn(22,"DescBrief",0,-9,false,255), - new ColumnDfn(22,"DescDetail",0,-9,false,4000), - new ColumnDfn(22,"CommodityId",4,4,false,10), + new ColumnDfn(22,"DescOutline",0,-9,false,4000), new ColumnDfn(22,"Notes",0,-9,false,255), new ColumnDfn(22,"Flags",3,5,false,5), new ColumnDfn(22,"Status",0,12,false,3), @@ -1935,27 +2072,71 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(22,"UpdateBy",4,4,false,10), new ColumnDfn(22,"UpdateHost",0,12,false,64), new ColumnDfn(23,"Id",4,4,false,10), - new ColumnDfn(23,"AffIdOwner",4,4,false,10), - new ColumnDfn(23,"Category",3,5,false,5), - new ColumnDfn(23,"Type",3,5,false,5), - new ColumnDfn(23,"Seq",3,5,false,5), - new ColumnDfn(23,"DescBrief",0,-9,false,255), - new ColumnDfn(23,"DescOutline",0,-9,false,4000), + new ColumnDfn(23,"Type",0,-9,false,3), + new ColumnDfn(23,"Name",0,-9,false,50), + new ColumnDfn(23,"Parent",4,4,false,10), new ColumnDfn(23,"Notes",0,-9,false,255), new ColumnDfn(23,"Flags",3,5,false,5), - new ColumnDfn(23,"Status",0,12,false,3), + new ColumnDfn(23,"Status",0,-9,false,3), new ColumnDfn(23,"CreateOn",9,93,false,23), new ColumnDfn(23,"CreateBy",4,4,false,10), - new ColumnDfn(23,"CreateHost",0,12,false,64), + new ColumnDfn(23,"CreateHost",0,-9,false,64), new ColumnDfn(23,"UpdateOn",9,93,false,23), new ColumnDfn(23,"UpdateBy",4,4,false,10), - new ColumnDfn(23,"UpdateHost",0,12,false,64), + new ColumnDfn(23,"UpdateHost",0,-9,false,64), new ColumnDfn(24,"Id",4,4,false,10), - new ColumnDfn(24,"Type",0,-9,false,3), - new ColumnDfn(24,"Name",0,-9,false,50), - new ColumnDfn(24,"Parent",4,4,false,10), + new ColumnDfn(24,"AffIdOwner",4,4,false,10), + new ColumnDfn(24,"AssocId",4,4,false,10), + new ColumnDfn(24,"TransId",4,4,false,10), + new ColumnDfn(24,"Type",3,5,false,5), + new ColumnDfn(24,"Seq",3,5,false,5), + new ColumnDfn(24,"ReqntIdSource",4,4,false,10), + new ColumnDfn(24,"Required",9,93,false,23), + new ColumnDfn(24,"Started",9,93,false,23), + new ColumnDfn(24,"Completed",9,93,false,23), + new ColumnDfn(24,"JobNumber",0,-9,false,60), + new ColumnDfn(24,"AssIdSubcontract",4,4,false,10), + new ColumnDfn(24,"CommodityId",4,4,false,10), + new ColumnDfn(24,"ProductCode",0,-9,false,30), + new ColumnDfn(24,"AssetId",4,4,false,10), + new ColumnDfn(24,"DescBrief",0,-9,false,255), + new ColumnDfn(24,"DescIntro",0,-9,false,4000), + new ColumnDfn(24,"DescOutline",0,-9,false,4000), + new ColumnDfn(24,"DescDetail",0,-9,false,4000), + new ColumnDfn(24,"PromotionCode",0,12,false,12), + new ColumnDfn(24,"NominalCode",0,-9,false,8), + new ColumnDfn(24,"Quantity",8,3,false,9), + new ColumnDfn(24,"QuantityProd",8,3,false,9), + new ColumnDfn(24,"UomId",4,4,false,10), + new ColumnDfn(24,"Weight",8,3,false,9), + new ColumnDfn(24,"UomIdWeight",4,4,false,10), + new ColumnDfn(24,"MaterialSourceCode",0,-9,false,12), + new ColumnDfn(24,"AmountUnit",8,3,false,9), + new ColumnDfn(24,"AmountAct",8,3,false,9), + new ColumnDfn(24,"AmountDisc",8,3,false,9), + new ColumnDfn(24,"AmountNet",8,3,false,9), + new ColumnDfn(24,"TaxCodeId",4,4,false,10), + new ColumnDfn(24,"TaxRate",8,3,false,9), + new ColumnDfn(24,"AmountTax",8,3,false,9), + new ColumnDfn(24,"AmountTot",8,3,false,9), + new ColumnDfn(24,"TimeEstChunks",0,12,false,1024), + new ColumnDfn(24,"TimeEst",8,3,false,9), + new ColumnDfn(24,"TimeActChunks",0,12,false,1024), + new ColumnDfn(24,"TimeAct",8,3,false,9), + new ColumnDfn(24,"TimeTot",8,3,false,9), + new ColumnDfn(24,"LocationIdStock",4,4,false,10), + new ColumnDfn(24,"CostLabourHours",8,3,false,9), + new ColumnDfn(24,"CostLabourRateHour",8,3,false,9), + new ColumnDfn(24,"CostLabour",8,3,false,9), + new ColumnDfn(24,"CostCommodity",8,3,false,9), + new ColumnDfn(24,"CostPurchase",8,3,false,9), + new ColumnDfn(24,"CostProcess",8,3,false,9), + new ColumnDfn(24,"CostAdditional",8,3,false,9), + new ColumnDfn(24,"CostTotal",8,3,false,9), + new ColumnDfn(24,"CostCalculated",9,93,false,23), new ColumnDfn(24,"Notes",0,-9,false,255), new ColumnDfn(24,"Flags",3,5,false,5), + new ColumnDfn(24,"StatusCat",0,-9,false,3), new ColumnDfn(24,"Status",0,-9,false,3), new ColumnDfn(24,"CreateOn",9,93,false,23), new ColumnDfn(24,"CreateBy",4,4,false,10), @@ -1964,58 +2145,43 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(24,"UpdateBy",4,4,false,10), new ColumnDfn(24,"UpdateHost",0,-9,false,64), new ColumnDfn(25,"Id",4,4,false,10), - new ColumnDfn(25,"AffIdOwner",4,4,false,10), - new ColumnDfn(25,"AssocId",4,4,false,10), - new ColumnDfn(25,"TransId",4,4,false,10), - new ColumnDfn(25,"Type",3,5,false,5), - new ColumnDfn(25,"Seq",3,5,false,5), - new ColumnDfn(25,"ReqntIdSource",4,4,false,10), - new ColumnDfn(25,"Required",9,93,false,23), - new ColumnDfn(25,"Started",9,93,false,23), - new ColumnDfn(25,"Completed",9,93,false,23), - new ColumnDfn(25,"JobNumber",0,-9,false,60), - new ColumnDfn(25,"AssIdSubcontract",4,4,false,10), - new ColumnDfn(25,"CommodityId",4,4,false,10), - new ColumnDfn(25,"ProductCode",0,-9,false,30), - new ColumnDfn(25,"AssetId",4,4,false,10), - new ColumnDfn(25,"DescBrief",0,-9,false,255), - new ColumnDfn(25,"DescIntro",0,-9,false,4000), - new ColumnDfn(25,"DescOutline",0,-9,false,4000), - new ColumnDfn(25,"DescDetail",0,-9,false,4000), - new ColumnDfn(25,"PromotionCode",0,12,false,12), - new ColumnDfn(25,"NominalCode",0,-9,false,8), - new ColumnDfn(25,"Quantity",8,3,false,9), - new ColumnDfn(25,"QuantityProd",8,3,false,9), - new ColumnDfn(25,"UomId",4,4,false,10), - new ColumnDfn(25,"Weight",8,3,false,9), - new ColumnDfn(25,"UomIdWeight",4,4,false,10), - new ColumnDfn(25,"MaterialSourceCode",0,-9,false,12), - new ColumnDfn(25,"AmountUnit",8,3,false,9), - new ColumnDfn(25,"AmountAct",8,3,false,9), - new ColumnDfn(25,"AmountDisc",8,3,false,9), - new ColumnDfn(25,"AmountNet",8,3,false,9), - new ColumnDfn(25,"TaxCodeId",4,4,false,10), - new ColumnDfn(25,"TaxRate",8,3,false,9), - new ColumnDfn(25,"AmountTax",8,3,false,9), - new ColumnDfn(25,"AmountTot",8,3,false,9), - new ColumnDfn(25,"TimeEstChunks",0,12,false,1024), - new ColumnDfn(25,"TimeEst",8,3,false,9), - new ColumnDfn(25,"TimeActChunks",0,12,false,1024), - new ColumnDfn(25,"TimeAct",8,3,false,9), - new ColumnDfn(25,"TimeTot",8,3,false,9), - new ColumnDfn(25,"LocationIdStock",4,4,false,10), - new ColumnDfn(25,"CostLabourHours",8,3,false,9), - new ColumnDfn(25,"CostLabourRateHour",8,3,false,9), - new ColumnDfn(25,"CostLabour",8,3,false,9), - new ColumnDfn(25,"CostCommodity",8,3,false,9), - new ColumnDfn(25,"CostPurchase",8,3,false,9), - new ColumnDfn(25,"CostProcess",8,3,false,9), - new ColumnDfn(25,"CostAdditional",8,3,false,9), - new ColumnDfn(25,"CostTotal",8,3,false,9), - new ColumnDfn(25,"CostCalculated",9,93,false,23), + new ColumnDfn(25,"AssetCategoryId",4,4,false,10), + new ColumnDfn(25,"SerialNumber",0,-9,false,32), + new ColumnDfn(25,"SerialFmt",0,-9,false,32), + new ColumnDfn(25,"RefExt",0,-9,false,32), + new ColumnDfn(25,"DescBrief",0,-9,false,60), + new ColumnDfn(25,"ItemType",3,5,false,5), + new ColumnDfn(25,"ItemId",4,4,false,10), + new ColumnDfn(25,"PurchaseOn",9,93,false,23), + new ColumnDfn(25,"AssocIdSupplier",4,4,false,10), + new ColumnDfn(25,"PurchaseInvoiceRef",0,-9,false,16), + new ColumnDfn(25,"PaymentTerms",3,5,false,5), + new ColumnDfn(25,"AmountPurchase",6,7,false,24), + new ColumnDfn(25,"TaxCodeIdPurchase",4,4,false,10), + new ColumnDfn(25,"AmountPurchaseGross",6,7,false,24), + new ColumnDfn(25,"AmountSettlementGross",6,7,false,24), + new ColumnDfn(25,"AmountEnhancementGross",6,7,false,24), + new ColumnDfn(25,"AssocIdCustomer",4,4,false,10), + new ColumnDfn(25,"SellCategoryCode",0,-9,false,16), + new ColumnDfn(25,"AmountSell",6,7,false,24), + new ColumnDfn(25,"TaxCodeIdSell",4,4,false,10), + new ColumnDfn(25,"AmountSellGross",6,7,false,24), + new ColumnDfn(25,"TaxCodeIdProfit",4,4,false,10), + new ColumnDfn(25,"SoldOn",9,93,false,23), + new ColumnDfn(25,"AmountSold",6,7,false,24), + new ColumnDfn(25,"AmountSoldGross",6,7,false,24), + new ColumnDfn(25,"DisposeCode",0,-9,false,12), + new ColumnDfn(25,"DisposeOn",9,93,false,23), + new ColumnDfn(25,"DueBackOn",9,93,false,23), + new ColumnDfn(25,"AmountRentalCost",6,7,false,24), + new ColumnDfn(25,"UomIdRentalCost",4,4,false,10), + new ColumnDfn(25,"TaxCodeIdRentalCost",4,4,false,10), + new ColumnDfn(25,"AmountRentalPrice",6,7,false,24), + new ColumnDfn(25,"UomIdRentalPrice",4,4,false,10), + new ColumnDfn(25,"TaxCodeIdRentalPrice",4,4,false,10), + new ColumnDfn(25,"ProcessIdNext",4,4,false,10), new ColumnDfn(25,"Notes",0,-9,false,255), new ColumnDfn(25,"Flags",3,5,false,5), - new ColumnDfn(25,"StatusCat",0,-9,false,3), new ColumnDfn(25,"Status",0,-9,false,3), new ColumnDfn(25,"CreateOn",9,93,false,23), new ColumnDfn(25,"CreateBy",4,4,false,10), @@ -2024,41 +2190,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(25,"UpdateBy",4,4,false,10), new ColumnDfn(25,"UpdateHost",0,-9,false,64), new ColumnDfn(26,"Id",4,4,false,10), - new ColumnDfn(26,"AssetCategoryId",4,4,false,10), - new ColumnDfn(26,"SerialNumber",0,-9,false,32), - new ColumnDfn(26,"SerialFmt",0,-9,false,32), - new ColumnDfn(26,"RefExt",0,-9,false,32), + new ColumnDfn(26,"AffIdOwner",4,4,false,10), + new ColumnDfn(26,"AssetType",3,5,false,5), + new ColumnDfn(26,"Code",0,-9,false,12), new ColumnDfn(26,"DescBrief",0,-9,false,60), - new ColumnDfn(26,"ItemType",3,5,false,5), - new ColumnDfn(26,"ItemId",4,4,false,10), - new ColumnDfn(26,"PurchaseOn",9,93,false,23), + new ColumnDfn(26,"IncomeType",3,5,false,5), new ColumnDfn(26,"AssocIdSupplier",4,4,false,10), - new ColumnDfn(26,"PurchaseInvoiceRef",0,-9,false,16), new ColumnDfn(26,"PaymentTerms",3,5,false,5), - new ColumnDfn(26,"AmountPurchase",6,7,false,24), new ColumnDfn(26,"TaxCodeIdPurchase",4,4,false,10), - new ColumnDfn(26,"AmountPurchaseGross",6,7,false,24), - new ColumnDfn(26,"AmountSettlementGross",6,7,false,24), - new ColumnDfn(26,"AmountEnhancementGross",6,7,false,24), new ColumnDfn(26,"AssocIdCustomer",4,4,false,10), - new ColumnDfn(26,"SellCategoryCode",0,-9,false,16), - new ColumnDfn(26,"AmountSell",6,7,false,24), new ColumnDfn(26,"TaxCodeIdSell",4,4,false,10), - new ColumnDfn(26,"AmountSellGross",6,7,false,24), new ColumnDfn(26,"TaxCodeIdProfit",4,4,false,10), - new ColumnDfn(26,"SoldOn",9,93,false,23), - new ColumnDfn(26,"AmountSold",6,7,false,24), - new ColumnDfn(26,"AmountSoldGross",6,7,false,24), - new ColumnDfn(26,"DisposeCode",0,-9,false,12), - new ColumnDfn(26,"DisposeOn",9,93,false,23), - new ColumnDfn(26,"DueBackOn",9,93,false,23), - new ColumnDfn(26,"AmountRentalCost",6,7,false,24), new ColumnDfn(26,"UomIdRentalCost",4,4,false,10), new ColumnDfn(26,"TaxCodeIdRentalCost",4,4,false,10), - new ColumnDfn(26,"AmountRentalPrice",6,7,false,24), new ColumnDfn(26,"UomIdRentalPrice",4,4,false,10), new ColumnDfn(26,"TaxCodeIdRentalPrice",4,4,false,10), - new ColumnDfn(26,"ProcessIdNext",4,4,false,10), + new ColumnDfn(26,"DisposeCode",0,-9,false,12), new ColumnDfn(26,"Notes",0,-9,false,255), new ColumnDfn(26,"Flags",3,5,false,5), new ColumnDfn(26,"Status",0,-9,false,3), @@ -2069,22 +2216,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(26,"UpdateBy",4,4,false,10), new ColumnDfn(26,"UpdateHost",0,-9,false,64), new ColumnDfn(27,"Id",4,4,false,10), - new ColumnDfn(27,"AffIdOwner",4,4,false,10), - new ColumnDfn(27,"AssetType",3,5,false,5), - new ColumnDfn(27,"Code",0,-9,false,12), - new ColumnDfn(27,"DescBrief",0,-9,false,60), - new ColumnDfn(27,"IncomeType",3,5,false,5), - new ColumnDfn(27,"AssocIdSupplier",4,4,false,10), - new ColumnDfn(27,"PaymentTerms",3,5,false,5), - new ColumnDfn(27,"TaxCodeIdPurchase",4,4,false,10), - new ColumnDfn(27,"AssocIdCustomer",4,4,false,10), - new ColumnDfn(27,"TaxCodeIdSell",4,4,false,10), - new ColumnDfn(27,"TaxCodeIdProfit",4,4,false,10), - new ColumnDfn(27,"UomIdRentalCost",4,4,false,10), - new ColumnDfn(27,"TaxCodeIdRentalCost",4,4,false,10), - new ColumnDfn(27,"UomIdRentalPrice",4,4,false,10), - new ColumnDfn(27,"TaxCodeIdRentalPrice",4,4,false,10), - new ColumnDfn(27,"DisposeCode",0,-9,false,12), + new ColumnDfn(27,"AssetId",4,4,false,10), + new ColumnDfn(27,"Seq",3,5,false,5), + new ColumnDfn(27,"ProcessId",4,4,false,10), + new ColumnDfn(27,"RequiredOn",9,93,false,23), + new ColumnDfn(27,"ExpectedOn",9,93,false,23), + new ColumnDfn(27,"ProcessedOn",9,93,false,23), new ColumnDfn(27,"Notes",0,-9,false,255), new ColumnDfn(27,"Flags",3,5,false,5), new ColumnDfn(27,"Status",0,-9,false,3), @@ -2094,29 +2231,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(27,"UpdateOn",9,93,false,23), new ColumnDfn(27,"UpdateBy",4,4,false,10), new ColumnDfn(27,"UpdateHost",0,-9,false,64), - new ColumnDfn(28,"Id",4,4,false,10), - new ColumnDfn(28,"AssetId",4,4,false,10), - new ColumnDfn(28,"Seq",3,5,false,5), - new ColumnDfn(28,"ProcessId",4,4,false,10), - new ColumnDfn(28,"RequiredOn",9,93,false,23), - new ColumnDfn(28,"ExpectedOn",9,93,false,23), - new ColumnDfn(28,"ProcessedOn",9,93,false,23), + new ColumnDfn(28,"ItemType",3,5,false,5), + new ColumnDfn(28,"ItemId",4,4,false,10), + new ColumnDfn(28,"Logged",9,93,false,23), + new ColumnDfn(28,"Attribute",0,12,false,32), + new ColumnDfn(28,"DataBefore",0,-9,false,1024), + new ColumnDfn(28,"DataAfter",0,-9,false,1024), new ColumnDfn(28,"Notes",0,-9,false,255), new ColumnDfn(28,"Flags",3,5,false,5), - new ColumnDfn(28,"Status",0,-9,false,3), + new ColumnDfn(28,"Status",0,12,false,3), new ColumnDfn(28,"CreateOn",9,93,false,23), new ColumnDfn(28,"CreateBy",4,4,false,10), - new ColumnDfn(28,"CreateHost",0,-9,false,64), + new ColumnDfn(28,"CreateHost",0,12,false,64), new ColumnDfn(28,"UpdateOn",9,93,false,23), new ColumnDfn(28,"UpdateBy",4,4,false,10), - new ColumnDfn(28,"UpdateHost",0,-9,false,64), + new ColumnDfn(28,"UpdateHost",0,12,false,64), new ColumnDfn(29,"Id",4,4,false,10), - new ColumnDfn(29,"Category",3,5,false,5), - new ColumnDfn(29,"Type",3,5,false,5), - new ColumnDfn(29,"Start",9,93,false,23), - new ColumnDfn(29,"Finish",9,93,false,23), - new ColumnDfn(29,"Duration",4,4,false,10), - new ColumnDfn(29,"Description",0,-9,false,255), + new ColumnDfn(29,"CodeTypeId",4,4,false,10), + new ColumnDfn(29,"Code",0,-9,false,32), + new ColumnDfn(29,"Description",0,-9,false,128), + new ColumnDfn(29,"Seq",3,5,false,5), + new ColumnDfn(29,"Data",0,-9,false,255), new ColumnDfn(29,"Notes",0,-9,false,255), new ColumnDfn(29,"Flags",3,5,false,5), new ColumnDfn(29,"Status",0,-9,false,3), @@ -2126,9 +2261,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(29,"UpdateOn",9,93,false,23), new ColumnDfn(29,"UpdateBy",4,4,false,10), new ColumnDfn(29,"UpdateHost",0,-9,false,64), - new ColumnDfn(30,"EntryId",4,4,false,10), - new ColumnDfn(30,"ItemType",3,5,false,5), - new ColumnDfn(30,"ItemId",4,4,false,10), + new ColumnDfn(30,"Id",4,4,false,10), + new ColumnDfn(30,"Code",0,-9,false,32), + new ColumnDfn(30,"Name",0,-9,false,128), + new ColumnDfn(30,"MaxCodeLen",2,-6,false,3), + new ColumnDfn(30,"CodeFormat",0,-9,false,32), + new ColumnDfn(30,"NextCode",0,-9,false,32), new ColumnDfn(30,"Notes",0,-9,false,255), new ColumnDfn(30,"Flags",3,5,false,5), new ColumnDfn(30,"Status",0,-9,false,3), @@ -2138,15 +2276,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(30,"UpdateOn",9,93,false,23), new ColumnDfn(30,"UpdateBy",4,4,false,10), new ColumnDfn(30,"UpdateHost",0,-9,false,64), - new ColumnDfn(31,"PriceSetId",4,4,false,10), - new ColumnDfn(31,"CommodityId",4,4,false,10), + new ColumnDfn(31,"Id",4,4,false,10), + new ColumnDfn(31,"Category",3,5,false,5), new ColumnDfn(31,"Type",3,5,false,5), - new ColumnDfn(31,"CalcMethod",3,5,false,5), - new ColumnDfn(31,"CalcValue",7,6,false,53), - new ColumnDfn(31,"RounderMethod",3,5,false,5), - new ColumnDfn(31,"RounderDirection",3,5,false,5), - new ColumnDfn(31,"RounderMultipleOf",7,6,false,53), - new ColumnDfn(31,"RounderAdjustment",7,6,false,53), + new ColumnDfn(31,"Start",9,93,false,23), + new ColumnDfn(31,"Finish",9,93,false,23), + new ColumnDfn(31,"Duration",4,4,false,10), + new ColumnDfn(31,"Description",0,-9,false,255), new ColumnDfn(31,"Notes",0,-9,false,255), new ColumnDfn(31,"Flags",3,5,false,5), new ColumnDfn(31,"Status",0,-9,false,3), @@ -2156,12 +2292,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(31,"UpdateOn",9,93,false,23), new ColumnDfn(31,"UpdateBy",4,4,false,10), new ColumnDfn(31,"UpdateHost",0,-9,false,64), - new ColumnDfn(32,"Id",4,4,false,10), - new ColumnDfn(32,"AffIdOwner",4,4,false,10), - new ColumnDfn(32,"Type",3,5,false,5), - new ColumnDfn(32,"Ref",0,-9,false,8), - new ColumnDfn(32,"Name",0,-9,false,60), - new ColumnDfn(32,"CurrencyId",4,4,false,10), + new ColumnDfn(32,"EntryId",4,4,false,10), + new ColumnDfn(32,"ItemType",3,5,false,5), + new ColumnDfn(32,"ItemId",4,4,false,10), new ColumnDfn(32,"Notes",0,-9,false,255), new ColumnDfn(32,"Flags",3,5,false,5), new ColumnDfn(32,"Status",0,-9,false,3), @@ -2172,33 +2305,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(32,"UpdateBy",4,4,false,10), new ColumnDfn(32,"UpdateHost",0,-9,false,64), new ColumnDfn(33,"Id",4,4,false,10), - new ColumnDfn(33,"VehicleClassId",4,4,false,10), - new ColumnDfn(33,"RegNumber",0,-9,false,12), - new ColumnDfn(33,"VIN",0,-9,false,24), - new ColumnDfn(33,"CapCode",0,-9,false,32), - new ColumnDfn(33,"KeyNumber",0,-9,false,16), - new ColumnDfn(33,"KeyLocation",0,-9,false,16), - new ColumnDfn(33,"EngineNumber",0,-9,false,24), - new ColumnDfn(33,"EngineCapacity",3,5,false,5), - new ColumnDfn(33,"Seats",3,5,false,5), - new ColumnDfn(33,"Weight",3,5,false,5), - new ColumnDfn(33,"ManufactureYear",3,5,false,5), - new ColumnDfn(33,"BuildOn",9,93,false,23), - new ColumnDfn(33,"FirstRegisterOn",9,93,false,23), - new ColumnDfn(33,"RegisterOn",9,93,false,23), - new ColumnDfn(33,"RegNumberPrev",0,-9,false,12), - new ColumnDfn(33,"PurchaseOdo",4,4,false,10), - new ColumnDfn(33,"TachoCode",0,-9,false,3), - new ColumnDfn(33,"TachoId",0,-9,false,32), - new ColumnDfn(33,"LastServiceOdo",4,4,false,10), - new ColumnDfn(33,"LastServiceOn",9,93,false,23), - new ColumnDfn(33,"NextServiceOdo",4,4,false,10), - new ColumnDfn(33,"NextServiceOn",9,93,false,23), - new ColumnDfn(33,"MotOn",9,93,false,23), - new ColumnDfn(33,"MotNo",0,-9,false,24), - new ColumnDfn(33,"NextTaxOn",9,93,false,23), - new ColumnDfn(33,"LatestOdo",4,4,false,10), - new ColumnDfn(33,"LatestOdoOn",9,93,false,23), + new ColumnDfn(33,"ItemType",3,5,false,5), + new ColumnDfn(33,"ItemId",4,4,false,10), + new ColumnDfn(33,"DataType",0,-9,false,50), + new ColumnDfn(33,"ItemData",0,-9,false,0), new ColumnDfn(33,"Notes",0,-9,false,255), new ColumnDfn(33,"Flags",3,5,false,5), new ColumnDfn(33,"Status",0,-9,false,3), @@ -2209,24 +2319,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(33,"UpdateBy",4,4,false,10), new ColumnDfn(33,"UpdateHost",0,-9,false,64), new ColumnDfn(34,"Id",4,4,false,10), - new ColumnDfn(34,"MakeCode",0,-9,false,8), - new ColumnDfn(34,"Model",0,-9,false,60), - new ColumnDfn(34,"Derivative",0,-9,false,120), - new ColumnDfn(34,"DescBrief",0,-9,false,120), - new ColumnDfn(34,"VehicleType",3,5,false,5), - new ColumnDfn(34,"VehicleCategoryCode",0,-9,false,3), - new ColumnDfn(34,"FuelType",3,5,false,5), - new ColumnDfn(34,"OdometerUnits",3,5,false,5), - new ColumnDfn(34,"Seats",3,5,false,5), - new ColumnDfn(34,"Weight",6,7,false,24), - new ColumnDfn(34,"InsuranceCode",0,-9,false,6), - new ColumnDfn(34,"FirstServiceOdo",4,4,false,10), - new ColumnDfn(34,"ServiceOdo",4,4,false,10), - new ColumnDfn(34,"ServiceWeeks",3,5,false,5), - new ColumnDfn(34,"AmountRentalCost",6,7,false,24), - new ColumnDfn(34,"UomIdRentalCost",4,4,false,10), - new ColumnDfn(34,"AmountRentalPrice",6,7,false,24), - new ColumnDfn(34,"UomIdRentalPrice",4,4,false,10), + new ColumnDfn(34,"ItemType",3,5,false,5), + new ColumnDfn(34,"ItemId",4,4,false,10), + new ColumnDfn(34,"Category",3,5,false,5), + new ColumnDfn(34,"Type",0,-9,false,16), + new ColumnDfn(34,"DescBrief",0,-9,false,64), + new ColumnDfn(34,"Folder",0,-9,false,255), + new ColumnDfn(34,"Filename",0,-9,false,255), + new ColumnDfn(34,"MimeType",0,-9,false,32), + new ColumnDfn(34,"ItemTypeAutoAssign",3,5,false,5), new ColumnDfn(34,"Notes",0,-9,false,255), new ColumnDfn(34,"Flags",3,5,false,5), new ColumnDfn(34,"Status",0,-9,false,3), @@ -2236,19 +2337,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(34,"UpdateOn",9,93,false,23), new ColumnDfn(34,"UpdateBy",4,4,false,10), new ColumnDfn(34,"UpdateHost",0,-9,false,64), - new ColumnDfn(35,"Id",4,4,false,10), - new ColumnDfn(35,"VehicleId",4,4,false,10), - new ColumnDfn(35,"EventType",3,5,false,5), - new ColumnDfn(35,"StartOn",9,93,false,23), - new ColumnDfn(35,"FinishOn",9,93,false,23), - new ColumnDfn(35,"Odometer",4,4,false,10), - new ColumnDfn(35,"DescBrief",0,-9,false,120), - new ColumnDfn(35,"DescDetail",0,-9,false,0), - new ColumnDfn(35,"AmountNet",6,7,false,24), - new ColumnDfn(35,"TaxCodeId",4,4,false,10), - new ColumnDfn(35,"TaxRate",6,7,false,24), - new ColumnDfn(35,"AmountTax",6,7,false,24), - new ColumnDfn(35,"AmountTot",6,7,false,24), + new ColumnDfn(35,"ItemType",3,5,false,5), + new ColumnDfn(35,"ItemId",4,4,false,10), + new ColumnDfn(35,"Name",0,-9,false,64), + new ColumnDfn(35,"Context",0,-9,false,64), + new ColumnDfn(35,"Value",0,-9,false,255), new ColumnDfn(35,"Notes",0,-9,false,255), new ColumnDfn(35,"Flags",3,5,false,5), new ColumnDfn(35,"Status",0,-9,false,3), @@ -2258,13 +2351,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(35,"UpdateOn",9,93,false,23), new ColumnDfn(35,"UpdateBy",4,4,false,10), new ColumnDfn(35,"UpdateHost",0,-9,false,64), - new ColumnDfn(36,"VehicleId",4,4,false,10), - new ColumnDfn(36,"Source",3,5,false,5), + new ColumnDfn(36,"PriceSetId",4,4,false,10), + new ColumnDfn(36,"CommodityId",4,4,false,10), new ColumnDfn(36,"Type",3,5,false,5), - new ColumnDfn(36,"CategoryCode",0,-9,false,32), - new ColumnDfn(36,"CategoryDesc",0,-9,false,128), - new ColumnDfn(36,"FeatureCode",0,-9,false,32), - new ColumnDfn(36,"FeatureDesc",0,-9,false,128), + new ColumnDfn(36,"CalcMethod",3,5,false,5), + new ColumnDfn(36,"CalcValue",7,6,false,53), + new ColumnDfn(36,"RounderMethod",3,5,false,5), + new ColumnDfn(36,"RounderDirection",3,5,false,5), + new ColumnDfn(36,"RounderMultipleOf",7,6,false,53), + new ColumnDfn(36,"RounderAdjustment",7,6,false,53), new ColumnDfn(36,"Notes",0,-9,false,255), new ColumnDfn(36,"Flags",3,5,false,5), new ColumnDfn(36,"Status",0,-9,false,3), @@ -2275,15 +2370,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(36,"UpdateBy",4,4,false,10), new ColumnDfn(36,"UpdateHost",0,-9,false,64), new ColumnDfn(37,"Id",4,4,false,10), - new ColumnDfn(37,"CommodityId",4,4,false,10), - new ColumnDfn(37,"LocationId",4,4,false,10), + new ColumnDfn(37,"AffIdOwner",4,4,false,10), new ColumnDfn(37,"Type",3,5,false,5), - new ColumnDfn(37,"Source",3,5,false,5), - new ColumnDfn(37,"Recorded",9,93,false,23), - new ColumnDfn(37,"Quantity",7,6,false,53), - new ColumnDfn(37,"Bay1",0,-9,false,16), - new ColumnDfn(37,"Bay2",0,-9,false,16), - new ColumnDfn(37,"Bay3",0,-9,false,16), + new ColumnDfn(37,"Ref",0,-9,false,8), + new ColumnDfn(37,"Name",0,-9,false,60), + new ColumnDfn(37,"CurrencyId",4,4,false,10), new ColumnDfn(37,"Notes",0,-9,false,255), new ColumnDfn(37,"Flags",3,5,false,5), new ColumnDfn(37,"Status",0,-9,false,3), @@ -2294,29 +2385,36 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(37,"UpdateBy",4,4,false,10), new ColumnDfn(37,"UpdateHost",0,-9,false,64), new ColumnDfn(38,"Id",4,4,false,10), - new ColumnDfn(38,"Cat",3,5,false,5), - new ColumnDfn(38,"Name",0,-9,false,50), - new ColumnDfn(38,"Value",0,-9,false,50), - new ColumnDfn(38,"AffIdOwner",4,4,false,10), - new ColumnDfn(38,"AffIdTarget",4,4,false,10), - new ColumnDfn(38,"AssocId",4,4,false,10), + new ColumnDfn(38,"Code",0,-9,false,128), + new ColumnDfn(38,"Description",0,-9,false,100), + new ColumnDfn(38,"Type",2,-6,false,3), + new ColumnDfn(38,"EmailAddress",0,-9,false,128), + new ColumnDfn(38,"Location",0,-9,false,50), + new ColumnDfn(38,"DataItemType",3,5,false,5), + new ColumnDfn(38,"EncPword",0,-9,false,128), + new ColumnDfn(38,"PwordSalt",0,-9,false,16), + new ColumnDfn(38,"PwordHash",0,-9,false,200), + new ColumnDfn(38,"PasswordToken",0,12,false,32), + new ColumnDfn(38,"PasswordHistory",0,-9,false,0), + new ColumnDfn(38,"PasswordChangedAt",9,93,false,16), + new ColumnDfn(38,"LastLogin",9,93,false,23), + new ColumnDfn(38,"LastInvalidLoginAt",9,93,false,16), + new ColumnDfn(38,"InvalidLoginCount",3,5,false,5), + new ColumnDfn(38,"Notes",0,-9,false,255), new ColumnDfn(38,"Flags",3,5,false,5), - new ColumnDfn(38,"Status",0,-9,false,3), + new ColumnDfn(38,"Status",0,12,false,3), new ColumnDfn(38,"CreateOn",9,93,false,23), new ColumnDfn(38,"CreateBy",4,4,false,10), - new ColumnDfn(38,"CreateHost",0,-9,false,64), + new ColumnDfn(38,"CreateHost",0,12,false,64), new ColumnDfn(38,"UpdateOn",9,93,false,23), new ColumnDfn(38,"UpdateBy",4,4,false,10), - new ColumnDfn(38,"UpdateHost",0,-9,false,64), - new ColumnDfn(39,"Id",4,4,false,10), - new ColumnDfn(39,"AffIdOwner",4,4,false,10), - new ColumnDfn(39,"Type",3,5,false,5), - new ColumnDfn(39,"InterfaceId",4,4,false,10), - new ColumnDfn(39,"AssocId",4,4,false,10), - new ColumnDfn(39,"Code",0,-9,false,32), - new ColumnDfn(39,"Name",0,-9,false,64), - new ColumnDfn(39,"AuthCodeEnc",0,-9,false,64), - new ColumnDfn(39,"Notes",0,-9,false,255), + new ColumnDfn(38,"UpdateHost",0,12,false,64), + new ColumnDfn(39,"ItemOwner",4,4,false,10), + new ColumnDfn(39,"ItemTarget",4,4,false,10), + new ColumnDfn(39,"ItemContext",4,4,false,10), + new ColumnDfn(39,"DayApplic",0,-9,false,50), + new ColumnDfn(39,"DateApplicFrom",4,4,false,10), + new ColumnDfn(39,"DateApplicTo",4,4,false,10), new ColumnDfn(39,"Flags",3,5,false,5), new ColumnDfn(39,"Status",0,-9,false,3), new ColumnDfn(39,"CreateOn",9,93,false,23), @@ -2325,8 +2423,34 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(39,"UpdateOn",9,93,false,23), new ColumnDfn(39,"UpdateBy",4,4,false,10), new ColumnDfn(39,"UpdateHost",0,-9,false,64), - new ColumnDfn(40,"AccountId",4,4,false,10), - new ColumnDfn(40,"UserId",4,4,false,10), + new ColumnDfn(40,"Id",4,4,false,10), + new ColumnDfn(40,"VehicleClassId",4,4,false,10), + new ColumnDfn(40,"RegNumber",0,-9,false,12), + new ColumnDfn(40,"VIN",0,-9,false,24), + new ColumnDfn(40,"CapCode",0,-9,false,32), + new ColumnDfn(40,"KeyNumber",0,-9,false,16), + new ColumnDfn(40,"KeyLocation",0,-9,false,16), + new ColumnDfn(40,"EngineNumber",0,-9,false,24), + new ColumnDfn(40,"EngineCapacity",3,5,false,5), + new ColumnDfn(40,"Seats",3,5,false,5), + new ColumnDfn(40,"Weight",3,5,false,5), + new ColumnDfn(40,"ManufactureYear",3,5,false,5), + new ColumnDfn(40,"BuildOn",9,93,false,23), + new ColumnDfn(40,"FirstRegisterOn",9,93,false,23), + new ColumnDfn(40,"RegisterOn",9,93,false,23), + new ColumnDfn(40,"RegNumberPrev",0,-9,false,12), + new ColumnDfn(40,"PurchaseOdo",4,4,false,10), + new ColumnDfn(40,"TachoCode",0,-9,false,3), + new ColumnDfn(40,"TachoId",0,-9,false,32), + new ColumnDfn(40,"LastServiceOdo",4,4,false,10), + new ColumnDfn(40,"LastServiceOn",9,93,false,23), + new ColumnDfn(40,"NextServiceOdo",4,4,false,10), + new ColumnDfn(40,"NextServiceOn",9,93,false,23), + new ColumnDfn(40,"MotOn",9,93,false,23), + new ColumnDfn(40,"MotNo",0,-9,false,24), + new ColumnDfn(40,"NextTaxOn",9,93,false,23), + new ColumnDfn(40,"LatestOdo",4,4,false,10), + new ColumnDfn(40,"LatestOdoOn",9,93,false,23), new ColumnDfn(40,"Notes",0,-9,false,255), new ColumnDfn(40,"Flags",3,5,false,5), new ColumnDfn(40,"Status",0,-9,false,3), @@ -2337,11 +2461,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(40,"UpdateBy",4,4,false,10), new ColumnDfn(40,"UpdateHost",0,-9,false,64), new ColumnDfn(41,"Id",4,4,false,10), - new ColumnDfn(41,"AffIdOwner",4,4,false,10), - new ColumnDfn(41,"InterfaceId",4,4,false,10), - new ColumnDfn(41,"AffiliateId",4,4,false,10), - new ColumnDfn(41,"Code",0,-9,false,64), - new ColumnDfn(41,"AuthCodeEnc",0,-9,false,64), + new ColumnDfn(41,"MakeCode",0,-9,false,8), + new ColumnDfn(41,"Model",0,-9,false,60), + new ColumnDfn(41,"Derivative",0,-9,false,120), + new ColumnDfn(41,"DescBrief",0,-9,false,120), + new ColumnDfn(41,"VehicleType",3,5,false,5), + new ColumnDfn(41,"VehicleCategoryCode",0,-9,false,3), + new ColumnDfn(41,"FuelType",3,5,false,5), + new ColumnDfn(41,"OdometerUnits",3,5,false,5), + new ColumnDfn(41,"Seats",3,5,false,5), + new ColumnDfn(41,"Weight",6,7,false,24), + new ColumnDfn(41,"InsuranceCode",0,-9,false,6), + new ColumnDfn(41,"FirstServiceOdo",4,4,false,10), + new ColumnDfn(41,"ServiceOdo",4,4,false,10), + new ColumnDfn(41,"ServiceWeeks",3,5,false,5), + new ColumnDfn(41,"AmountRentalCost",6,7,false,24), + new ColumnDfn(41,"UomIdRentalCost",4,4,false,10), + new ColumnDfn(41,"AmountRentalPrice",6,7,false,24), + new ColumnDfn(41,"UomIdRentalPrice",4,4,false,10), new ColumnDfn(41,"Notes",0,-9,false,255), new ColumnDfn(41,"Flags",3,5,false,5), new ColumnDfn(41,"Status",0,-9,false,3), @@ -2352,16 +2489,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(41,"UpdateBy",4,4,false,10), new ColumnDfn(41,"UpdateHost",0,-9,false,64), new ColumnDfn(42,"Id",4,4,false,10), - new ColumnDfn(42,"Code",0,-9,false,12), - new ColumnDfn(42,"CodeAlt1",0,-9,false,12), - new ColumnDfn(42,"CodeAlt2",0,-9,false,12), - new ColumnDfn(42,"Description",0,-9,false,50), - new ColumnDfn(42,"RegionId",4,4,false,10), - new ColumnDfn(42,"EffectFrom",9,93,false,23), - new ColumnDfn(42,"EffectTo",9,93,false,23), - new ColumnDfn(42,"TaxRate",7,6,false,53), - new ColumnDfn(42,"TaxRatePrev",7,6,false,53), - new ColumnDfn(42,"TaxCodeIdLink",4,4,false,10), + new ColumnDfn(42,"VehicleId",4,4,false,10), + new ColumnDfn(42,"EventType",3,5,false,5), + new ColumnDfn(42,"StartOn",9,93,false,23), + new ColumnDfn(42,"FinishOn",9,93,false,23), + new ColumnDfn(42,"Odometer",4,4,false,10), + new ColumnDfn(42,"DescBrief",0,-9,false,120), + new ColumnDfn(42,"DescDetail",0,-9,false,0), + new ColumnDfn(42,"AmountNet",6,7,false,24), + new ColumnDfn(42,"TaxCodeId",4,4,false,10), + new ColumnDfn(42,"TaxRate",6,7,false,24), + new ColumnDfn(42,"AmountTax",6,7,false,24), + new ColumnDfn(42,"AmountTot",6,7,false,24), new ColumnDfn(42,"Notes",0,-9,false,255), new ColumnDfn(42,"Flags",3,5,false,5), new ColumnDfn(42,"Status",0,-9,false,3), @@ -2371,93 +2510,32 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(42,"UpdateOn",9,93,false,23), new ColumnDfn(42,"UpdateBy",4,4,false,10), new ColumnDfn(42,"UpdateHost",0,-9,false,64), - new ColumnDfn(43,"Id",4,4,false,10), - new ColumnDfn(43,"AffIdOwner",4,4,false,10), - new ColumnDfn(43,"AssocId",4,4,false,10), + new ColumnDfn(43,"VehicleId",4,4,false,10), + new ColumnDfn(43,"Source",3,5,false,5), new ColumnDfn(43,"Type",3,5,false,5), - new ColumnDfn(43,"Ref",0,-9,false,16), - new ColumnDfn(43,"RefInt",4,4,false,10), - new ColumnDfn(43,"RefExt",0,-9,false,32), - new ColumnDfn(43,"RaisedBy",0,-9,false,60), - new ColumnDfn(43,"AffIdRaise",4,4,false,10), - new ColumnDfn(43,"AssocIdOffice",4,4,false,10), - new ColumnDfn(43,"ContactName",0,12,false,60), - new ColumnDfn(43,"Likelihood",0,-9,false,12), - new ColumnDfn(43,"TransIdSource",4,4,false,10), - new ColumnDfn(43,"ReferCode",0,-9,false,12), - new ColumnDfn(43,"ReferSource",0,-9,false,60), - new ColumnDfn(43,"AffIdRefer",4,4,false,10), - new ColumnDfn(43,"AssocIdContract",4,4,false,10), - new ColumnDfn(43,"AssIdDeliver",4,4,false,10), - new ColumnDfn(43,"Raised",9,93,false,23), - new ColumnDfn(43,"Required",9,93,false,23), - new ColumnDfn(43,"InProgress",9,93,false,23), - new ColumnDfn(43,"DeliveredEst",9,93,false,23), - new ColumnDfn(43,"DeliveredAct",9,93,false,23), - new ColumnDfn(43,"Closed",9,93,false,23), - new ColumnDfn(43,"Department",0,-9,false,12), - new ColumnDfn(43,"DescBrief",0,-9,false,255), - new ColumnDfn(43,"DescIntro",0,-9,false,4000), - new ColumnDfn(43,"DescOutline",0,-9,false,4000), - new ColumnDfn(43,"DescDetail",0,-9,false,4000), - new ColumnDfn(43,"ResponseCode",0,-9,false,12), - new ColumnDfn(43,"ContactAreaCode",0,-9,false,12), - new ColumnDfn(43,"Postcode",0,-9,false,12), - new ColumnDfn(43,"CurrencyId",4,4,false,10), - new ColumnDfn(43,"TaxCodeId",4,4,false,10), - new ColumnDfn(43,"AmountEst",8,3,false,9), - new ColumnDfn(43,"AmountMax",8,3,false,9), - new ColumnDfn(43,"AmountNet",8,3,false,9), - new ColumnDfn(43,"AmountTax",8,3,false,9), - new ColumnDfn(43,"AmountTot",8,3,false,9), - new ColumnDfn(43,"TimeEstChunks",0,12,false,1024), - new ColumnDfn(43,"TimeEst",8,3,false,9), - new ColumnDfn(43,"TimeActChunks",0,12,false,1024), - new ColumnDfn(43,"TimeAct",8,3,false,9), - new ColumnDfn(43,"TimeTot",8,3,false,9), - new ColumnDfn(43,"LocationIdStock",4,4,false,10), - new ColumnDfn(43,"Weight",8,3,false,9), - new ColumnDfn(43,"UomIdWeight",4,4,false,10), - new ColumnDfn(43,"BoxCount",0,-9,false,16), - new ColumnDfn(43,"DeliveryStatusCode",0,-9,false,3), - new ColumnDfn(43,"DeliveryTypeCode",0,-9,false,12), - new ColumnDfn(43,"DeliveryMethodCode",0,-9,false,12), - new ColumnDfn(43,"DeliveryCourierCode",0,-9,false,12), - new ColumnDfn(43,"DeliveryBookInCode",0,-9,false,12), - new ColumnDfn(43,"StockPickerCode",0,-9,false,12), - new ColumnDfn(43,"DeliveryRef",0,-9,false,32), - new ColumnDfn(43,"DeliveryComment",0,-9,false,255), - new ColumnDfn(43,"DeliveryAmountNet",8,3,false,9), - new ColumnDfn(43,"TaxCodeIdDelivery",4,4,false,10), - new ColumnDfn(43,"DeliveryAmountTax",8,3,false,9), - new ColumnDfn(43,"DeliveryAmountTot",8,3,false,9), - new ColumnDfn(43,"DeliveryDepartment",0,12,false,12), - new ColumnDfn(43,"DeliveryNominalCode",0,12,false,12), - new ColumnDfn(43,"CostLabourRateHour",8,3,false,9), - new ColumnDfn(43,"Notes",0,-9,false,1024), + new ColumnDfn(43,"CategoryCode",0,-9,false,32), + new ColumnDfn(43,"CategoryDesc",0,-9,false,128), + new ColumnDfn(43,"FeatureCode",0,-9,false,32), + new ColumnDfn(43,"FeatureDesc",0,-9,false,128), + new ColumnDfn(43,"Notes",0,-9,false,255), new ColumnDfn(43,"Flags",3,5,false,5), - new ColumnDfn(43,"StatusCat",0,12,false,3), - new ColumnDfn(43,"Status",0,12,false,3), + new ColumnDfn(43,"Status",0,-9,false,3), new ColumnDfn(43,"CreateOn",9,93,false,23), new ColumnDfn(43,"CreateBy",4,4,false,10), - new ColumnDfn(43,"CreateHost",0,12,false,64), + new ColumnDfn(43,"CreateHost",0,-9,false,64), new ColumnDfn(43,"UpdateOn",9,93,false,23), new ColumnDfn(43,"UpdateBy",4,4,false,10), - new ColumnDfn(43,"UpdateHost",0,12,false,64), + new ColumnDfn(43,"UpdateHost",0,-9,false,64), new ColumnDfn(44,"Id",4,4,false,10), - new ColumnDfn(44,"Category",3,5,false,5), + new ColumnDfn(44,"CommodityId",4,4,false,10), + new ColumnDfn(44,"LocationId",4,4,false,10), new ColumnDfn(44,"Type",3,5,false,5), - new ColumnDfn(44,"UnitType",3,5,false,5), - new ColumnDfn(44,"Code",0,-9,false,12), - new ColumnDfn(44,"Abbr",0,-9,false,12), - new ColumnDfn(44,"Single",0,-9,false,50), - new ColumnDfn(44,"Multiple",0,-9,false,50), - new ColumnDfn(44,"EquValue",7,6,false,53), - new ColumnDfn(44,"UomIdEqu",4,4,false,10), - new ColumnDfn(44,"EquAlgorythm",4,4,false,10), - new ColumnDfn(44,"UomIdRef1",4,4,false,10), - new ColumnDfn(44,"UomIdRef2",4,4,false,10), - new ColumnDfn(44,"UomIdRef3",4,4,false,10), + new ColumnDfn(44,"Source",3,5,false,5), + new ColumnDfn(44,"Recorded",9,93,false,23), + new ColumnDfn(44,"Quantity",7,6,false,53), + new ColumnDfn(44,"Bay1",0,-9,false,16), + new ColumnDfn(44,"Bay2",0,-9,false,16), + new ColumnDfn(44,"Bay3",0,-9,false,16), new ColumnDfn(44,"Notes",0,-9,false,255), new ColumnDfn(44,"Flags",3,5,false,5), new ColumnDfn(44,"Status",0,-9,false,3), @@ -2467,11 +2545,185 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(44,"UpdateOn",9,93,false,23), new ColumnDfn(44,"UpdateBy",4,4,false,10), new ColumnDfn(44,"UpdateHost",0,-9,false,64), + new ColumnDfn(45,"Id",4,4,false,10), + new ColumnDfn(45,"Cat",3,5,false,5), + new ColumnDfn(45,"Name",0,-9,false,50), + new ColumnDfn(45,"Value",0,-9,false,50), + new ColumnDfn(45,"AffIdOwner",4,4,false,10), + new ColumnDfn(45,"AffIdTarget",4,4,false,10), + new ColumnDfn(45,"AssocId",4,4,false,10), + new ColumnDfn(45,"Flags",3,5,false,5), + new ColumnDfn(45,"Status",0,-9,false,3), + new ColumnDfn(45,"CreateOn",9,93,false,23), + new ColumnDfn(45,"CreateBy",4,4,false,10), + new ColumnDfn(45,"CreateHost",0,-9,false,64), + new ColumnDfn(45,"UpdateOn",9,93,false,23), + new ColumnDfn(45,"UpdateBy",4,4,false,10), + new ColumnDfn(45,"UpdateHost",0,-9,false,64), + new ColumnDfn(46,"Id",4,4,false,10), + new ColumnDfn(46,"AffIdOwner",4,4,false,10), + new ColumnDfn(46,"Type",3,5,false,5), + new ColumnDfn(46,"InterfaceId",4,4,false,10), + new ColumnDfn(46,"AssocId",4,4,false,10), + new ColumnDfn(46,"Code",0,-9,false,32), + new ColumnDfn(46,"Name",0,-9,false,64), + new ColumnDfn(46,"AuthCodeEnc",0,-9,false,64), + new ColumnDfn(46,"Notes",0,-9,false,255), + new ColumnDfn(46,"Flags",3,5,false,5), + new ColumnDfn(46,"Status",0,-9,false,3), + new ColumnDfn(46,"CreateOn",9,93,false,23), + new ColumnDfn(46,"CreateBy",4,4,false,10), + new ColumnDfn(46,"CreateHost",0,-9,false,64), + new ColumnDfn(46,"UpdateOn",9,93,false,23), + new ColumnDfn(46,"UpdateBy",4,4,false,10), + new ColumnDfn(46,"UpdateHost",0,-9,false,64), + new ColumnDfn(47,"AccountId",4,4,false,10), + new ColumnDfn(47,"UserId",4,4,false,10), + new ColumnDfn(47,"Notes",0,-9,false,255), + new ColumnDfn(47,"Flags",3,5,false,5), + new ColumnDfn(47,"Status",0,-9,false,3), + new ColumnDfn(47,"CreateOn",9,93,false,23), + new ColumnDfn(47,"CreateBy",4,4,false,10), + new ColumnDfn(47,"CreateHost",0,-9,false,64), + new ColumnDfn(47,"UpdateOn",9,93,false,23), + new ColumnDfn(47,"UpdateBy",4,4,false,10), + new ColumnDfn(47,"UpdateHost",0,-9,false,64), + new ColumnDfn(48,"Id",4,4,false,10), + new ColumnDfn(48,"AffIdOwner",4,4,false,10), + new ColumnDfn(48,"InterfaceId",4,4,false,10), + new ColumnDfn(48,"AffiliateId",4,4,false,10), + new ColumnDfn(48,"Code",0,-9,false,64), + new ColumnDfn(48,"AuthCodeEnc",0,-9,false,64), + new ColumnDfn(48,"Notes",0,-9,false,255), + new ColumnDfn(48,"Flags",3,5,false,5), + new ColumnDfn(48,"Status",0,-9,false,3), + new ColumnDfn(48,"CreateOn",9,93,false,23), + new ColumnDfn(48,"CreateBy",4,4,false,10), + new ColumnDfn(48,"CreateHost",0,-9,false,64), + new ColumnDfn(48,"UpdateOn",9,93,false,23), + new ColumnDfn(48,"UpdateBy",4,4,false,10), + new ColumnDfn(48,"UpdateHost",0,-9,false,64), + new ColumnDfn(49,"Id",4,4,false,10), + new ColumnDfn(49,"Code",0,-9,false,12), + new ColumnDfn(49,"CodeAlt1",0,-9,false,12), + new ColumnDfn(49,"CodeAlt2",0,-9,false,12), + new ColumnDfn(49,"Description",0,-9,false,50), + new ColumnDfn(49,"RegionId",4,4,false,10), + new ColumnDfn(49,"EffectFrom",9,93,false,23), + new ColumnDfn(49,"EffectTo",9,93,false,23), + new ColumnDfn(49,"TaxRate",7,6,false,53), + new ColumnDfn(49,"TaxRatePrev",7,6,false,53), + new ColumnDfn(49,"TaxCodeIdLink",4,4,false,10), + new ColumnDfn(49,"Notes",0,-9,false,255), + new ColumnDfn(49,"Flags",3,5,false,5), + new ColumnDfn(49,"Status",0,-9,false,3), + new ColumnDfn(49,"CreateOn",9,93,false,23), + new ColumnDfn(49,"CreateBy",4,4,false,10), + new ColumnDfn(49,"CreateHost",0,-9,false,64), + new ColumnDfn(49,"UpdateOn",9,93,false,23), + new ColumnDfn(49,"UpdateBy",4,4,false,10), + new ColumnDfn(49,"UpdateHost",0,-9,false,64), + new ColumnDfn(50,"Id",4,4,false,10), + new ColumnDfn(50,"AffIdOwner",4,4,false,10), + new ColumnDfn(50,"AssocId",4,4,false,10), + new ColumnDfn(50,"Type",3,5,false,5), + new ColumnDfn(50,"Ref",0,-9,false,16), + new ColumnDfn(50,"RefInt",4,4,false,10), + new ColumnDfn(50,"RefExt",0,-9,false,32), + new ColumnDfn(50,"RaisedBy",0,-9,false,60), + new ColumnDfn(50,"AffIdRaise",4,4,false,10), + new ColumnDfn(50,"AssocIdOffice",4,4,false,10), + new ColumnDfn(50,"ContactName",0,12,false,60), + new ColumnDfn(50,"Likelihood",0,-9,false,12), + new ColumnDfn(50,"TransIdSource",4,4,false,10), + new ColumnDfn(50,"ReferCode",0,-9,false,12), + new ColumnDfn(50,"ReferSource",0,-9,false,60), + new ColumnDfn(50,"AffIdRefer",4,4,false,10), + new ColumnDfn(50,"AssocIdContract",4,4,false,10), + new ColumnDfn(50,"AssIdDeliver",4,4,false,10), + new ColumnDfn(50,"Raised",9,93,false,23), + new ColumnDfn(50,"Required",9,93,false,23), + new ColumnDfn(50,"InProgress",9,93,false,23), + new ColumnDfn(50,"DeliveredEst",9,93,false,23), + new ColumnDfn(50,"DeliveredAct",9,93,false,23), + new ColumnDfn(50,"Closed",9,93,false,23), + new ColumnDfn(50,"Department",0,-9,false,12), + new ColumnDfn(50,"DescBrief",0,-9,false,255), + new ColumnDfn(50,"DescIntro",0,-9,false,4000), + new ColumnDfn(50,"DescOutline",0,-9,false,4000), + new ColumnDfn(50,"DescDetail",0,-9,false,4000), + new ColumnDfn(50,"ResponseCode",0,-9,false,12), + new ColumnDfn(50,"ContactAreaCode",0,-9,false,12), + new ColumnDfn(50,"Postcode",0,-9,false,12), + new ColumnDfn(50,"CurrencyId",4,4,false,10), + new ColumnDfn(50,"TaxCodeId",4,4,false,10), + new ColumnDfn(50,"AmountEst",8,3,false,9), + new ColumnDfn(50,"AmountMax",8,3,false,9), + new ColumnDfn(50,"AmountNet",8,3,false,9), + new ColumnDfn(50,"AmountTax",8,3,false,9), + new ColumnDfn(50,"AmountTot",8,3,false,9), + new ColumnDfn(50,"TimeEstChunks",0,12,false,1024), + new ColumnDfn(50,"TimeEst",8,3,false,9), + new ColumnDfn(50,"TimeActChunks",0,12,false,1024), + new ColumnDfn(50,"TimeAct",8,3,false,9), + new ColumnDfn(50,"TimeTot",8,3,false,9), + new ColumnDfn(50,"LocationIdStock",4,4,false,10), + new ColumnDfn(50,"Weight",8,3,false,9), + new ColumnDfn(50,"UomIdWeight",4,4,false,10), + new ColumnDfn(50,"BoxCount",0,-9,false,16), + new ColumnDfn(50,"DeliveryStatusCode",0,-9,false,3), + new ColumnDfn(50,"DeliveryTypeCode",0,-9,false,12), + new ColumnDfn(50,"DeliveryMethodCode",0,-9,false,12), + new ColumnDfn(50,"DeliveryCourierCode",0,-9,false,12), + new ColumnDfn(50,"DeliveryBookInCode",0,-9,false,12), + new ColumnDfn(50,"StockPickerCode",0,-9,false,12), + new ColumnDfn(50,"DeliveryRef",0,-9,false,32), + new ColumnDfn(50,"DeliveryComment",0,-9,false,255), + new ColumnDfn(50,"DeliveryAmountNet",8,3,false,9), + new ColumnDfn(50,"TaxCodeIdDelivery",4,4,false,10), + new ColumnDfn(50,"DeliveryAmountTax",8,3,false,9), + new ColumnDfn(50,"DeliveryAmountTot",8,3,false,9), + new ColumnDfn(50,"DeliveryDepartment",0,12,false,12), + new ColumnDfn(50,"DeliveryNominalCode",0,12,false,12), + new ColumnDfn(50,"CostLabourRateHour",8,3,false,9), + new ColumnDfn(50,"Notes",0,-9,false,1024), + new ColumnDfn(50,"Flags",3,5,false,5), + new ColumnDfn(50,"StatusCat",0,12,false,3), + new ColumnDfn(50,"Status",0,12,false,3), + new ColumnDfn(50,"CreateOn",9,93,false,23), + new ColumnDfn(50,"CreateBy",4,4,false,10), + new ColumnDfn(50,"CreateHost",0,12,false,64), + new ColumnDfn(50,"UpdateOn",9,93,false,23), + new ColumnDfn(50,"UpdateBy",4,4,false,10), + new ColumnDfn(50,"UpdateHost",0,12,false,64), + new ColumnDfn(51,"Id",4,4,false,10), + new ColumnDfn(51,"Category",3,5,false,5), + new ColumnDfn(51,"Type",3,5,false,5), + new ColumnDfn(51,"UnitType",3,5,false,5), + new ColumnDfn(51,"Code",0,-9,false,12), + new ColumnDfn(51,"Abbr",0,-9,false,12), + new ColumnDfn(51,"Single",0,-9,false,50), + new ColumnDfn(51,"Multiple",0,-9,false,50), + new ColumnDfn(51,"EquValue",7,6,false,53), + new ColumnDfn(51,"UomIdEqu",4,4,false,10), + new ColumnDfn(51,"EquAlgorythm",4,4,false,10), + new ColumnDfn(51,"UomIdRef1",4,4,false,10), + new ColumnDfn(51,"UomIdRef2",4,4,false,10), + new ColumnDfn(51,"UomIdRef3",4,4,false,10), + new ColumnDfn(51,"Notes",0,-9,false,255), + new ColumnDfn(51,"Flags",3,5,false,5), + new ColumnDfn(51,"Status",0,-9,false,3), + new ColumnDfn(51,"CreateOn",9,93,false,23), + new ColumnDfn(51,"CreateBy",4,4,false,10), + new ColumnDfn(51,"CreateHost",0,-9,false,64), + new ColumnDfn(51,"UpdateOn",9,93,false,23), + new ColumnDfn(51,"UpdateBy",4,4,false,10), + new ColumnDfn(51,"UpdateHost",0,-9,false,64), }; //------------------------------------------------------------------- // Reserved words. - private static readonly List reservedWords = new List() + private static readonly HashSet reservedWords = new HashSet() { "ADD", "ALL", diff --git a/SaBusMgrStandardBase/Base/App/SbmDbDfn_Control.cs b/SaBusMgrStandardBase/Base/App/SbmDbDfn_Control.cs index 2a31f36..c0d5f57 100644 --- a/SaBusMgrStandardBase/Base/App/SbmDbDfn_Control.cs +++ b/SaBusMgrStandardBase/Base/App/SbmDbDfn_Control.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Wed 4-Dec-2024 12:38:20 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Base.App { @@ -17,6 +17,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public enum TableIdx { Unknown = 0, + AccountRegistration, ItemParam, Owner, Repository, @@ -28,6 +29,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public enum ColumnIdx { Unknown = 0, + AccountRegistration_Id, + AccountRegistration_EmailAddress, + AccountRegistration_FirstName, + AccountRegistration_LastName, + AccountRegistration_PhoneMain, + AccountRegistration_PhoneAlt, + AccountRegistration_InstanceContext, + AccountRegistration_RequestAccountAt, + AccountRegistration_RegisterAccountToken, + AccountRegistration_RegisterAccountAt, + AccountRegistration_AccountPasswordSalt, + AccountRegistration_AccountPasswordHash, + AccountRegistration_Notes, + AccountRegistration_Flags, + AccountRegistration_Status, + AccountRegistration_CreateOn, + AccountRegistration_CreateBy, + AccountRegistration_CreateHost, + AccountRegistration_UpdateOn, + AccountRegistration_UpdateBy, + AccountRegistration_UpdateHost, ItemParam_Id, ItemParam_ItemType, ItemParam_ItemId, @@ -104,9 +126,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Data members. - private static readonly int tableCount = 4; - private static readonly int columnCount = 72; - private static ulong maxTextLen = 0; + private static readonly int tableCount = 5; + private static readonly int columnCount = 93; + public static ulong MaxTextLen { get; private set; } //------------------------------------------------------------------- // Retrieve Table details (eg. name: 'Company'). @@ -227,7 +249,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App } public static void SetMaxTextLen (ulong maxTextLen) { - SbmDbDfn_Control.maxTextLen = maxTextLen; + SbmDbDfn_Control.MaxTextLen = maxTextLen; } public static bool IsColFmtText (ColumnIdx column) { @@ -242,7 +264,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App if (columns[columnIdx].DataType == DbColumnDataType.VarChar) { ulong textLen = columns[columnIdx].DataLen; - if (maxTextLen > 0 && textLen > maxTextLen) textLen = maxTextLen; + if (MaxTextLen > 0 && textLen > MaxTextLen) textLen = MaxTextLen; return textLen; } return 0; @@ -285,6 +307,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App } private static readonly TableDfn[] tables = { + new TableDfn("dbo","AccountRegistration"), new TableDfn("dbo","ItemParam"), new TableDfn("dbo","Owner"), new TableDfn("dbo","Repository"), @@ -314,11 +337,17 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App private static readonly ColumnDfn[] columns = { new ColumnDfn(1,"Id",4,4,true,10), - new ColumnDfn(1,"ItemType",3,5,false,5), - new ColumnDfn(1,"ItemId",5,-5,false,19), - new ColumnDfn(1,"Context",0,-9,false,200), - new ColumnDfn(1,"Name",0,-9,false,200), - new ColumnDfn(1,"Value",0,-9,false,0), + new ColumnDfn(1,"EmailAddress",0,-9,false,200), + new ColumnDfn(1,"FirstName",0,-9,false,100), + new ColumnDfn(1,"LastName",0,-9,false,100), + new ColumnDfn(1,"PhoneMain",0,-9,false,100), + new ColumnDfn(1,"PhoneAlt",0,-9,false,100), + new ColumnDfn(1,"InstanceContext",0,-9,false,100), + new ColumnDfn(1,"RequestAccountAt",9,93,false,23), + new ColumnDfn(1,"RegisterAccountToken",10,-11,false,36), + new ColumnDfn(1,"RegisterAccountAt",9,93,false,23), + new ColumnDfn(1,"AccountPasswordSalt",0,-9,false,100), + new ColumnDfn(1,"AccountPasswordHash",0,-9,false,100), new ColumnDfn(1,"Notes",0,-9,false,4000), new ColumnDfn(1,"Flags",3,5,false,5), new ColumnDfn(1,"Status",0,12,false,3), @@ -329,11 +358,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(1,"UpdateBy",4,4,false,10), new ColumnDfn(1,"UpdateHost",0,12,false,100), new ColumnDfn(2,"Id",4,4,true,10), + new ColumnDfn(2,"ItemType",3,5,false,5), + new ColumnDfn(2,"ItemId",5,-5,false,19), + new ColumnDfn(2,"Context",0,-9,false,200), new ColumnDfn(2,"Name",0,-9,false,200), - new ColumnDfn(2,"ContactName",0,-9,false,200), - new ColumnDfn(2,"ContactEmailAddress",0,-9,false,200), - new ColumnDfn(2,"ContactPhoneMain",0,-9,false,100), - new ColumnDfn(2,"ContactPhoneAlt",0,-9,false,100), + new ColumnDfn(2,"Value",0,-9,false,0), new ColumnDfn(2,"Notes",0,-9,false,4000), new ColumnDfn(2,"Flags",3,5,false,5), new ColumnDfn(2,"Status",0,12,false,3), @@ -344,13 +373,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(2,"UpdateBy",4,4,false,10), new ColumnDfn(2,"UpdateHost",0,12,false,100), new ColumnDfn(3,"Id",4,4,true,10), - new ColumnDfn(3,"OwnerId",4,4,false,10), - new ColumnDfn(3,"Context",0,-9,false,100), - new ColumnDfn(3,"ServerName",0,-9,false,200), - new ColumnDfn(3,"InstanceName",0,-9,false,200), - new ColumnDfn(3,"DatabaseName",0,-9,false,200), - new ColumnDfn(3,"UserName",0,-9,false,100), - new ColumnDfn(3,"Password",0,-9,false,100), + new ColumnDfn(3,"Name",0,-9,false,200), + new ColumnDfn(3,"ContactName",0,-9,false,200), + new ColumnDfn(3,"ContactEmailAddress",0,-9,false,200), + new ColumnDfn(3,"ContactPhoneMain",0,-9,false,100), + new ColumnDfn(3,"ContactPhoneAlt",0,-9,false,100), new ColumnDfn(3,"Notes",0,-9,false,4000), new ColumnDfn(3,"Flags",3,5,false,5), new ColumnDfn(3,"Status",0,12,false,3), @@ -361,22 +388,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(3,"UpdateBy",4,4,false,10), new ColumnDfn(3,"UpdateHost",0,12,false,100), new ColumnDfn(4,"Id",4,4,true,10), - new ColumnDfn(4,"EmailAddress",0,-9,false,200), - new ColumnDfn(4,"Title",0,-9,false,20), - new ColumnDfn(4,"FirstName",0,-9,false,100), - new ColumnDfn(4,"Initials",0,-9,false,10), - new ColumnDfn(4,"LastName",0,-9,false,100), - new ColumnDfn(4,"PhoneMain",0,-9,false,50), - new ColumnDfn(4,"PhoneMobile",0,-9,false,50), - new ColumnDfn(4,"PhoneAlt",0,-9,false,50), - new ColumnDfn(4,"PasswordToken",0,12,false,32), - new ColumnDfn(4,"PasswordHashed",0,-9,false,100), - new ColumnDfn(4,"PasswordHistory",0,-9,false,0), - new ColumnDfn(4,"PasswordChangedAt",9,93,false,16), - new ColumnDfn(4,"LastLoginAt",9,93,false,16), - new ColumnDfn(4,"LastInvalidLoginAt",9,93,false,16), - new ColumnDfn(4,"InvalidLoginCount",3,5,false,5), - new ColumnDfn(4,"Notes",0,-9,false,2000), + new ColumnDfn(4,"OwnerId",4,4,false,10), + new ColumnDfn(4,"Context",0,-9,false,100), + new ColumnDfn(4,"ServerName",0,-9,false,200), + new ColumnDfn(4,"InstanceName",0,-9,false,200), + new ColumnDfn(4,"DatabaseName",0,-9,false,200), + new ColumnDfn(4,"UserName",0,-9,false,100), + new ColumnDfn(4,"Password",0,-9,false,100), + new ColumnDfn(4,"Notes",0,-9,false,4000), new ColumnDfn(4,"Flags",3,5,false,5), new ColumnDfn(4,"Status",0,12,false,3), new ColumnDfn(4,"CreateOn",9,93,false,23), @@ -385,11 +404,36 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App new ColumnDfn(4,"UpdateOn",9,93,false,23), new ColumnDfn(4,"UpdateBy",4,4,false,10), new ColumnDfn(4,"UpdateHost",0,12,false,100), + new ColumnDfn(5,"Id",4,4,true,10), + new ColumnDfn(5,"EmailAddress",0,-9,false,200), + new ColumnDfn(5,"Title",0,-9,false,20), + new ColumnDfn(5,"FirstName",0,-9,false,100), + new ColumnDfn(5,"Initials",0,-9,false,10), + new ColumnDfn(5,"LastName",0,-9,false,100), + new ColumnDfn(5,"PhoneMain",0,-9,false,50), + new ColumnDfn(5,"PhoneMobile",0,-9,false,50), + new ColumnDfn(5,"PhoneAlt",0,-9,false,50), + new ColumnDfn(5,"PasswordToken",0,12,false,32), + new ColumnDfn(5,"PasswordHashed",0,-9,false,100), + new ColumnDfn(5,"PasswordHistory",0,-9,false,0), + new ColumnDfn(5,"PasswordChangedAt",9,93,false,16), + new ColumnDfn(5,"LastLoginAt",9,93,false,16), + new ColumnDfn(5,"LastInvalidLoginAt",9,93,false,16), + new ColumnDfn(5,"InvalidLoginCount",3,5,false,5), + new ColumnDfn(5,"Notes",0,-9,false,2000), + new ColumnDfn(5,"Flags",3,5,false,5), + new ColumnDfn(5,"Status",0,12,false,3), + new ColumnDfn(5,"CreateOn",9,93,false,23), + new ColumnDfn(5,"CreateBy",4,4,false,10), + new ColumnDfn(5,"CreateHost",0,12,false,100), + new ColumnDfn(5,"UpdateOn",9,93,false,23), + new ColumnDfn(5,"UpdateBy",4,4,false,10), + new ColumnDfn(5,"UpdateHost",0,12,false,100), }; //------------------------------------------------------------------- // Reserved words. - private static readonly List reservedWords = new List() + private static readonly HashSet reservedWords = new HashSet() { "ADD", "ALL", diff --git a/SaBusMgrStandardBase/Base/App/SbmInternals.cs b/SaBusMgrStandardBase/Base/App/SbmInternals.cs index 5acdfec..c8f5454 100644 --- a/SaBusMgrStandardBase/Base/App/SbmInternals.cs +++ b/SaBusMgrStandardBase/Base/App/SbmInternals.cs @@ -60,7 +60,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Data members. private readonly SbmSystem system = SbmGlobals.System; - private SbmAccountsDfn accountsDfn; // Managers. private class Managers { @@ -77,7 +76,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // Consoles. private class Consoles { + public SbmInstanceSchemaConsole instanceSchemaConsole; public SbmSessionConsole sessionConsole; + public SbmAccountsConsole accountsConsole; public SaDiaryConsole diaryConsole; public SaSecurityConsole securityConsole; public SaCodeTypeConsole codeTypeConsole; @@ -137,6 +138,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App if (taxCodes != null) taxCodes.Values.ToList().ClearAndDispose(); if (unitsOfMeasure != null) unitsOfMeasure.Values.ToList().ClearAndDispose(); // Consoles. + // Database console doesn't require disposal. if (con.sessionConsole != null) con.sessionConsole.Dispose(); if (con.diaryConsole != null) con.diaryConsole.Dispose(); if (con.securityConsole != null) con.securityConsole.Dispose(); @@ -156,12 +158,46 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public SbmApplication Application { get { return SbmGlobals.Application; } } public bool ReadOnly { get; } public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } + public SbmSessionContext SessionContext { get { return UserContext?.SessionContext; } } public ISbmSecurityProfile_Core SecurityProfile { get { return UserContext.SecurityProfile; } } - public SbmAccountsDfn AccountsDfn { get { if (accountsDfn == null) accountsDfn = new SbmAccountsDfn(UserContext); { return accountsDfn; } } } + public SbmAccountsConsole AccountsConsole { get { if (con.accountsConsole == null) con.accountsConsole = new SbmAccountsConsole(this); { return con.accountsConsole; } } } + + //------------------------------------------------------------------- // Database. public ISacsDatabase BusMgrDatabase { get { return Application.GetBusMgrDatabase(SessionContext); } } public DbUpdateInfo DbUpdateInfo { get { return UserContext.DbUpdateInfo; } } + // Schema. + public bool TableExists(String tableName) + { + return BusMgrDatabase.TableExists(tableName); + } + public bool ColumnExists(String tableName, String columnName) + { + return BusMgrDatabase.ColumnExists(tableName, columnName); + } + + //------------------------------------------------------------------- + // Database Column lengths - taking into account current database schema for selected columns. + // BusMgr tables. + public ulong GetColTextLen(SbmDbDfn.ColumnIdx column) + { + return InstanceSchemaConsole.GetColTextLen(column); + } + // Security tables. + public ulong GetColTextLen(SaSecurityDbDfn.ColumnIdx column) + { + return InstanceSchemaConsole.GetColTextLen(column); + } + // Code Type tables. + public ulong GetColTextLen(SaCodeTypeDbDfn.ColumnIdx column) + { + return InstanceSchemaConsole.GetColTextLen(column); + } + // Item Option tables. + public ulong GetColTextLen(SaItemOptionDbDfn.ColumnIdx column) + { + return InstanceSchemaConsole.GetColTextLen(column); + } //------------------------------------------------------------------- // System codes. @@ -328,12 +364,19 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Consoles. + public SbmInstanceSchemaConsole InstanceSchemaConsole + { + get + { + if (con.instanceSchemaConsole == null) { con.instanceSchemaConsole = new SbmInstanceSchemaConsole(BusMgrDatabase); } + return con.instanceSchemaConsole; + } + } public SbmSessionConsole SessionConsole { get { - if (con.sessionConsole == null) - con.sessionConsole = SbmGlobals.System.CreateSessionConsole(UserContext); + if (con.sessionConsole == null) { con.sessionConsole = SbmGlobals.System.CreateSessionConsole(this); } return con.sessionConsole; } } @@ -341,8 +384,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.diaryConsole == null) - con.diaryConsole = SbmGlobals.System.CreateDiaryConsole(UserContext); + if (con.diaryConsole == null) { con.diaryConsole = SbmGlobals.System.CreateDiaryConsole(this); } return con.diaryConsole; } } @@ -350,8 +392,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.securityConsole == null) - con.securityConsole = SbmGlobals.System.CreateSecurityConsole(UserContext); + if (con.securityConsole == null) { con.securityConsole = SbmGlobals.System.CreateSecurityConsole(this); } return con.securityConsole; } } @@ -359,8 +400,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.codeTypeConsole == null) - con.codeTypeConsole = SbmGlobals.System.CreateCodeTypeConsole(UserContext); + if (con.codeTypeConsole == null) { con.codeTypeConsole = SbmGlobals.System.CreateCodeTypeConsole(this); } return con.codeTypeConsole; } } @@ -368,8 +408,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.referenceDataConsole == null) - con.referenceDataConsole = SbmGlobals.System.CreateReferenceDataConsole(UserContext); + if (con.referenceDataConsole == null) { con.referenceDataConsole = SbmGlobals.System.CreateReferenceDataConsole(this); } return con.referenceDataConsole; } } @@ -377,8 +416,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.updateLogConsole == null) - con.updateLogConsole = SbmGlobals.System.CreateUpdateLogConsole(UserContext); + if (con.updateLogConsole == null) { con.updateLogConsole = SbmGlobals.System.CreateUpdateLogConsole(this); } return con.updateLogConsole; } } @@ -386,8 +424,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.interfaceConsole == null) - con.interfaceConsole = SbmGlobals.System.CreateInterfaceConsole(UserContext); + if (con.interfaceConsole == null) { con.interfaceConsole = SbmGlobals.System.CreateInterfaceConsole(this); } return con.interfaceConsole; } } @@ -395,8 +432,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.itemDocConsole == null) - con.itemDocConsole = SbmGlobals.System.CreateItemDocConsole(UserContext); + if (con.itemDocConsole == null) { con.itemDocConsole = SbmGlobals.System.CreateItemDocConsole(this); } return con.itemDocConsole; } } @@ -405,7 +441,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App get { if (con.itemOptionConsole == null) - con.itemOptionConsole = SbmGlobals.System.CreateItemOptionConsole(UserContext); + con.itemOptionConsole = SbmGlobals.System.CreateItemOptionConsole(this); return con.itemOptionConsole; } } @@ -413,8 +449,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.itemDataConsole == null) - con.itemDataConsole = SbmGlobals.System.CreateItemDataConsole(UserContext); + if (con.itemDataConsole == null) { con.itemDataConsole = SbmGlobals.System.CreateItemDataConsole(this); } return con.itemDataConsole; } } @@ -426,8 +461,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App { get { - if (con.emailConsole == null) - con.emailConsole = SbmGlobals.System.CreateEmailConsole(UserContext, EmailConfig); + if (con.emailConsole == null) { con.emailConsole = SbmGlobals.System.CreateEmailConsole(EmailConfig); } return con.emailConsole; } } diff --git a/SaBusMgrStandardBase/Base/App/SbmSysParamCache.cs b/SaBusMgrStandardBase/Base/App/SbmSysParamCache.cs index c29fdc6..0721268 100644 --- a/SaBusMgrStandardBase/Base/App/SbmSysParamCache.cs +++ b/SaBusMgrStandardBase/Base/App/SbmSysParamCache.cs @@ -45,13 +45,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Data members. - protected readonly List userSysParams = new List(); + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + public List UserSysParams { get; } = new List(); + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. - public SbmSysParamCache(ISbmUserOrganisationContext userContext, SysId affiliateIdUser) + public SbmSysParamCache(SbmInternals internals, SysId affiliateIdUser) { - this.UserContext = userContext; + mbr = new DataMembers(internals); this.AffiliateIdUser = affiliateIdUser; } @@ -64,7 +73,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } + protected SbmInternals Internals { get { return mbr.InternalsSupplied; } } + protected ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + protected SbmSessionContext SessionContext { get { return Internals.SessionContext; } } public SysId AffiliateIdUser { get; } public bool Modified { get; private set; } @@ -144,7 +155,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App /// Extract parameter from the cache list. private SbmSysParam FindParam(String name, SysId affiliateIdTarget = null, SysId associationId = null) { - return userSysParams.Find + return mbr.UserSysParams.Find (item => item.Category == Sbm.SysParamCategory.UserParam && item.Name.EqualsCI(name) && item.AffiliateIdOwner.Equals(AffiliateIdUser) && @@ -157,27 +168,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SbmSysParam sysParam = FindParam(name, affiliateIdTarget, associationId); if (sysParam == null) { - using (SbmAccountMgr accountMgr = CreateAccountMgr()) + // Retrieve a matching parameter from the database. + sysParam = Internals.AccountMgr.GetSysParam(Sbm.SysParamCategory.UserParam, name, AffiliateIdUser, affiliateIdTarget, associationId); + if (sysParam == null) { - // Retrieve a matching parameter from the database. - sysParam = accountMgr.GetSysParam(Sbm.SysParamCategory.UserParam, name, AffiliateIdUser, affiliateIdTarget, associationId); - if (sysParam == null) - { - // Parameter not found - create a new one. - sysParam = accountMgr.CreateSysParam(Sbm.SysParamCategory.UserParam, name); - if (sysParam != null) - { - sysParam.AffiliateIdOwner = AffiliateIdUser; - sysParam.AffiliateIdTarget = affiliateIdTarget; - sysParam.AssociationId = associationId; - } - } + // Parameter not found - create a new one. + sysParam = Internals.AccountMgr.CreateSysParam(Sbm.SysParamCategory.UserParam, name); if (sysParam != null) { - // Store parameter in the cache list. - userSysParams.Add(sysParam); + sysParam.AffiliateIdOwner = AffiliateIdUser; + sysParam.AffiliateIdTarget = affiliateIdTarget; + sysParam.AssociationId = associationId; } } + if (sysParam != null) + { + // Store parameter in the cache list. + mbr.UserSysParams.Add(sysParam); + } } return sysParam; } @@ -187,27 +195,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App public bool Store() { bool success = true; - using (SbmAccountMgr accountMgr = CreateAccountMgr()) + foreach (SbmSysParam sysParam in mbr.UserSysParams) { - foreach (SbmSysParam sysParam in userSysParams) + if (!SysId.IsValid(sysParam.Id)) { - if (!SysId.IsValid(sysParam.Id)) + // Parameter doesn't yet have a valid Id - create a new one. + if (!Internals.AccountMgr.InsertSysParam(sysParam, UserContext.DbUpdateInfo)) { - // Parameter doesn't yet have a valid Id - create a new one. - if (!accountMgr.InsertSysParam(sysParam, UserContext.DbUpdateInfo)) - { - success = false; - SaLogger.Warn($"{SysUtil.Fn} Failed to add parameter - {accountMgr.ErrorStateMessage}"); - } + success = false; + SaLogger.Warn($"{SysUtil.Fn} Failed to add parameter - {Internals.AccountMgr.ErrorStateMessage}"); } - else + } + else + { + // Parameter already has a valid Id - update it. + if (!Internals.AccountMgr.UpdateSysParam(sysParam, UserContext.DbUpdateInfo)) { - // Parameter already has a valid Id - update it. - if (!accountMgr.UpdateSysParam(sysParam, UserContext.DbUpdateInfo)) - { - success = false; - SaLogger.Warn($"{SysUtil.Fn} Failed to update parameter - {accountMgr.ErrorStateMessage}"); - } + success = false; + SaLogger.Warn($"{SysUtil.Fn} Failed to update parameter - {Internals.AccountMgr.ErrorStateMessage}"); } } } @@ -219,17 +224,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App /// Clear the params cached for the current user. public void Clear() { - ListUtil.ClearAndDispose(userSysParams); + ListUtil.ClearAndDispose(mbr.UserSysParams); Modified = false; } - //------------------------------------------------------------------- - // Data managers. - protected SbmAccountMgr CreateAccountMgr() - { - return SbmGlobals.System.CreateAccountMgr(UserContext); - } - //------------------------------------------------------------------- } //======================================================================= diff --git a/SaBusMgrStandardBase/Base/App/SbmSystem-CodeTypes.cs b/SaBusMgrStandardBase/Base/App/SbmSystem-CodeTypes.cs index 7a4ae82..d7a79e1 100644 --- a/SaBusMgrStandardBase/Base/App/SbmSystem-CodeTypes.cs +++ b/SaBusMgrStandardBase/Base/App/SbmSystem-CodeTypes.cs @@ -5,6 +5,7 @@ using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Utils; using System; +using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Base.App { @@ -35,7 +36,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // Commodity category. SaCodeTypeDfn codeTypeCommodityCategory = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CommodityCategory), codeTypes.GetDescForType(Sbm.ApplCodeType.CommodityCategory), 12); codeTypeConsole.RegisterCodeType(codeTypeCommodityCategory); - codeTypeConsole.RegisterCodesOfType(codeTypeCommodityCategory.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityCategory)); + codeTypeConsole.RegisterCodesOfType(codeTypeCommodityCategory.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityCategory)); // Commodity range. SaCodeTypeDfn codeTypeCommodityRange = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CommodityRange), codeTypes.GetDescForType(Sbm.ApplCodeType.CommodityRange), 12); @@ -66,21 +67,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App if (!commodityMaterialLabel.ContainsCI("Commodity")) commodityMaterialLabel = "Commodity " + commodityMaterialLabel; SaCodeTypeDfn codeTypeCommodityMaterial = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CommodityMaterial), commodityMaterialLabel, 12); codeTypeConsole.RegisterCodeType(codeTypeCommodityMaterial); - codeTypeConsole.RegisterCodesOfType(codeTypeCommodityMaterial.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityMaterial)); + codeTypeConsole.RegisterCodesOfType(codeTypeCommodityMaterial.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityMaterial)); // Commodity finish. String commodityFinishLabel = sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish"); if (!commodityFinishLabel.ContainsCI("Commodity")) commodityFinishLabel = "Commodity " + commodityFinishLabel; SaCodeTypeDfn codeTypeCommodityFinish = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CommodityFinish), commodityFinishLabel, 12); codeTypeConsole.RegisterCodeType(codeTypeCommodityFinish); - codeTypeConsole.RegisterCodesOfType(codeTypeCommodityFinish.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityFinish)); + codeTypeConsole.RegisterCodesOfType(codeTypeCommodityFinish.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityFinish)); // Commodity promotion. String commodityPromotionLabel = sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion"); if (!commodityPromotionLabel.ContainsCI("Commodity")) commodityPromotionLabel = "Commodity " + commodityPromotionLabel; SaCodeTypeDfn codeTypeCommodityPromotion = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CommodityPromotion), commodityPromotionLabel, 12); codeTypeConsole.RegisterCodeType(codeTypeCommodityPromotion); - codeTypeConsole.RegisterCodesOfType(codeTypeCommodityPromotion.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityPromotion)); + codeTypeConsole.RegisterCodesOfType(codeTypeCommodityPromotion.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CommodityPromotion)); } //--------------------------------------------------------------- @@ -91,7 +92,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // Process type. SaCodeTypeDfn codeTypeProcessType = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.ProcessType), codeTypes.GetDescForType(Sbm.ApplCodeType.ProcessType), 12); codeTypeConsole.RegisterCodeType(codeTypeProcessType); - codeTypeConsole.RegisterCodesOfType(codeTypeProcessType.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.ProcessType)); + codeTypeConsole.RegisterCodesOfType(codeTypeProcessType.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.ProcessType)); } //--------------------------------------------------------------- @@ -103,7 +104,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaCodeTypeDfn codeTypeReferType = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.ReferType), codeTypes.GetDescForType(Sbm.ApplCodeType.ReferType), 12); codeTypeReferType.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeReferType); - codeTypeConsole.RegisterCodesOfType(codeTypeReferType.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.ReferType)); + codeTypeConsole.RegisterCodesOfType(codeTypeReferType.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.ReferType)); } //--------------------------------------------------------------- @@ -115,7 +116,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaCodeTypeDfn codeTypeTaskCategory = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.TaskCategory), codeTypes.GetDescForType(Sbm.ApplCodeType.TaskCategory), 12); codeTypeTaskCategory.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeTaskCategory); - codeTypeConsole.RegisterCodesOfType(codeTypeTaskCategory.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.TaskCategory)); + codeTypeConsole.RegisterCodesOfType(codeTypeTaskCategory.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.TaskCategory)); } //--------------------------------------------------------------- @@ -126,7 +127,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // Asset sell category. SaCodeTypeDfn codeTypeAssetSellCategory = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.AssetSellCategory), codeTypes.GetDescForType(Sbm.ApplCodeType.AssetSellCategory), 8); codeTypeConsole.RegisterCodeType(codeTypeAssetSellCategory); - codeTypeConsole.RegisterCodesOfType(codeTypeAssetSellCategory.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.AssetSellCategory)); + codeTypeConsole.RegisterCodesOfType(codeTypeAssetSellCategory.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.AssetSellCategory)); } //--------------------------------------------------------------- @@ -137,22 +138,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // Vehicle category. SaCodeTypeDfn codeTypeVehicleCategory = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.VehicleCategory), codeTypes.GetDescForType(Sbm.ApplCodeType.VehicleCategory), 8); codeTypeConsole.RegisterCodeType(codeTypeVehicleCategory); - codeTypeConsole.RegisterCodesOfType(codeTypeVehicleCategory.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleCategory)); + codeTypeConsole.RegisterCodesOfType(codeTypeVehicleCategory.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleCategory)); // Vehicle make. SaCodeTypeDfn codeTypeVehicleMake = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.VehicleMake), codeTypes.GetDescForType(Sbm.ApplCodeType.VehicleMake), 8); codeTypeConsole.RegisterCodeType(codeTypeVehicleMake); - codeTypeConsole.RegisterCodesOfType(codeTypeVehicleMake.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleMake)); + codeTypeConsole.RegisterCodesOfType(codeTypeVehicleMake.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleMake)); // Vehicle service history. SaCodeTypeDfn codeTypeVehicleServiceHistory = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.VehicleServiceHistory), codeTypes.GetDescForType(Sbm.ApplCodeType.VehicleServiceHistory), 12); codeTypeConsole.RegisterCodeType(codeTypeVehicleServiceHistory); - codeTypeConsole.RegisterCodesOfType(codeTypeVehicleServiceHistory.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleServiceHistory)); + codeTypeConsole.RegisterCodesOfType(codeTypeVehicleServiceHistory.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleServiceHistory)); // Vehicle insurance. SaCodeTypeDfn codeTypeVehicleInsurance = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.VehicleInsurance), codeTypes.GetDescForType(Sbm.ApplCodeType.VehicleInsurance), 3); codeTypeConsole.RegisterCodeType(codeTypeVehicleInsurance); - codeTypeConsole.RegisterCodesOfType(codeTypeVehicleInsurance.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleInsurance)); + codeTypeConsole.RegisterCodesOfType(codeTypeVehicleInsurance.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.VehicleInsurance)); // Vehicle tacho. SaCodeTypeDfn codeTypeVehicleTacho = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.VehicleTacho), codeTypes.GetDescForType(Sbm.ApplCodeType.VehicleTacho), 8); @@ -168,27 +169,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // HPI vehicle make. SaCodeTypeDfn codeTypeHpiVehicleMake = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.HpiVehicleMake), codeTypes.GetDescForType(Sbm.ApplCodeType.HpiVehicleMake), 12); codeTypeConsole.RegisterCodeType(codeTypeHpiVehicleMake); - codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleMake.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleMake)); + codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleMake.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleMake)); // HPI vehicle model. SaCodeTypeDfn codeTypeHpiVehicleModel = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.HpiVehicleModel), codeTypes.GetDescForType(Sbm.ApplCodeType.HpiVehicleModel), 12); codeTypeConsole.RegisterCodeType(codeTypeHpiVehicleModel); - codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleModel.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleModel)); + codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleModel.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleModel)); // HPI vehicle colour. SaCodeTypeDfn codeTypeHpiVehicleColour = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.HpiVehicleColour), codeTypes.GetDescForType(Sbm.ApplCodeType.HpiVehicleColour), 12); codeTypeConsole.RegisterCodeType(codeTypeHpiVehicleColour); - codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleColour.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleColour)); + codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleColour.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleColour)); // HPI vehicle fuel. SaCodeTypeDfn codeTypeHpiVehicleFuel = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.HpiVehicleFuel), codeTypes.GetDescForType(Sbm.ApplCodeType.HpiVehicleFuel), 12); codeTypeConsole.RegisterCodeType(codeTypeHpiVehicleFuel); - codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleFuel.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleFuel)); + codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleFuel.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleFuel)); // HPI vehicle transmission. SaCodeTypeDfn codeTypeHpiVehicleTrans = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.HpiVehicleTrans), codeTypes.GetDescForType(Sbm.ApplCodeType.HpiVehicleTrans), 12); codeTypeConsole.RegisterCodeType(codeTypeHpiVehicleTrans); - codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleTrans.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleTrans)); + codeTypeConsole.RegisterCodesOfType(codeTypeHpiVehicleTrans.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.HpiVehicleTrans)); } //--------------------------------------------------------------- @@ -221,7 +222,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaCodeTypeDfn codeTypeContactTitle = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.ContactTitle), contactTitleLabel, 12); codeTypeContactTitle.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeContactTitle); - codeTypeConsole.RegisterCodesOfType(codeTypeContactTitle.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.ContactTitle)); + codeTypeConsole.RegisterCodesOfType(codeTypeContactTitle.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.ContactTitle)); // Contact area. String contactAreaLabel = sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); @@ -264,14 +265,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App codeTypeCostPerUnit.FlagDefinitions.Add(new FlagDfn(4, "Flag 4", "#4")); #endif codeTypeConsole.RegisterCodeType(codeTypeCostPerUnit); - codeTypeConsole.RegisterCodesOfType(codeTypeCostPerUnit.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CostPerUnit)); + codeTypeConsole.RegisterCodesOfType(codeTypeCostPerUnit.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CostPerUnit)); // Cost per job. SaCodeTypeDfn codeTypeCostPerJob = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.CostPerJob), codeTypes.GetDescForType(Sbm.ApplCodeType.CostPerJob), 12); codeTypeCostPerJob.AllowSequence = true; codeTypeCostPerJob.FlagDefinitions.Add(estimateDefaultFlag); codeTypeConsole.RegisterCodeType(codeTypeCostPerJob); - codeTypeConsole.RegisterCodesOfType(codeTypeCostPerJob.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.CostPerJob)); + codeTypeConsole.RegisterCodesOfType(codeTypeCostPerJob.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.CostPerJob)); } if (sessionConsole != null && sessionConsole.AllowOption(Sbm.ConfigOption.EstimateLabourByMinutes)) @@ -281,14 +282,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App codeTypeLabourPerUnit.AllowSequence = true; codeTypeLabourPerUnit.FlagDefinitions.Add(estimateDefaultFlag); codeTypeConsole.RegisterCodeType(codeTypeLabourPerUnit); - codeTypeConsole.RegisterCodesOfType(codeTypeLabourPerUnit.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.LabourPerUnit)); + codeTypeConsole.RegisterCodesOfType(codeTypeLabourPerUnit.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.LabourPerUnit)); // Labour cost per job. SaCodeTypeDfn codeTypeLabourPerJob = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.LabourPerJob), codeTypes.GetDescForType(Sbm.ApplCodeType.LabourPerJob), 12); codeTypeLabourPerJob.AllowSequence = true; codeTypeLabourPerJob.FlagDefinitions.Add(estimateDefaultFlag); codeTypeConsole.RegisterCodeType(codeTypeLabourPerJob); - codeTypeConsole.RegisterCodesOfType(codeTypeLabourPerJob.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.LabourPerJob)); + codeTypeConsole.RegisterCodesOfType(codeTypeLabourPerJob.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.LabourPerJob)); } //--------------------------------------------------------------- @@ -300,25 +301,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaCodeTypeDfn codeTypeDeliveryStatus = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DeliveryStatus), codeTypes.GetDescForType(Sbm.ApplCodeType.DeliveryStatus), 3); codeTypeDeliveryStatus.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeDeliveryStatus); - codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryStatus.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryStatus)); + codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryStatus.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryStatus)); // Delivery type. SaCodeTypeDfn codeTypeDeliveryType = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DeliveryType), codeTypes.GetDescForType(Sbm.ApplCodeType.DeliveryType), 12); codeTypeDeliveryType.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeDeliveryType); - codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryType.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryType)); + codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryType.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryType)); // Delivery method. SaCodeTypeDfn codeTypeDeliveryMethod = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DeliveryMethod), codeTypes.GetDescForType(Sbm.ApplCodeType.DeliveryMethod), 12); codeTypeDeliveryMethod.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeDeliveryMethod); - codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryMethod.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryMethod)); + codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryMethod.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryMethod)); // Delivery courier. SaCodeTypeDfn codeTypeDeliveryCourier = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DeliveryCourier), codeTypes.GetDescForType(Sbm.ApplCodeType.DeliveryCourier), 12); codeTypeDeliveryCourier.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeDeliveryCourier); - codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryCourier.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryCourier)); + codeTypeConsole.RegisterCodesOfType(codeTypeDeliveryCourier.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DeliveryCourier)); // Delivery book-in. SaCodeTypeDfn codeTypeDeliveryBookIn = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DeliveryBookIn), codeTypes.GetDescForType(Sbm.ApplCodeType.DeliveryBookIn), 12); @@ -336,7 +337,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App SaCodeTypeDfn codeTypeStockPicker = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.StockPicker), codeTypes.GetDescForType(Sbm.ApplCodeType.StockPicker), 12); codeTypeStockPicker.AllowSequence = true; codeTypeConsole.RegisterCodeType(codeTypeStockPicker); - codeTypeConsole.RegisterCodesOfType(codeTypeStockPicker.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.StockPicker)); + codeTypeConsole.RegisterCodesOfType(codeTypeStockPicker.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.StockPicker)); } //--------------------------------------------------------------- @@ -350,7 +351,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App codeTypeDocType_Pdf.AllowMixedCode = true; codeTypeDocType_Pdf.FlagDefinitions.Add(new FlagDfn((Byte)Sbm.ApplCodeFlag.DocType_Pdf_WebPublish, "WebPublish", "Publish to Web")); codeTypeConsole.RegisterCodeType(codeTypeDocType_Pdf); - codeTypeConsole.RegisterCodesOfType(codeTypeDocType_Pdf.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DocType_Pdf)); + codeTypeConsole.RegisterCodesOfType(codeTypeDocType_Pdf.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DocType_Pdf)); // Image document types. SaCodeTypeDfn codeTypeDocType_Image = new SaCodeTypeDfn(codeTypes.GetCodeForType(Sbm.ApplCodeType.DocType_Image), codeTypes.GetDescForType(Sbm.ApplCodeType.DocType_Image), 12); @@ -358,12 +359,126 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App codeTypeDocType_Image.AllowMixedCode = true; codeTypeDocType_Image.FlagDefinitions.Add(new FlagDfn((Byte)Sbm.ApplCodeFlag.DocType_Image_WebPublish, "WebPublish", "Publish to Web")); codeTypeConsole.RegisterCodeType(codeTypeDocType_Image); - codeTypeConsole.RegisterCodesOfType(codeTypeDocType_Image.Code, sessionConsole.GetDefaultCodesOfType(Sbm.ApplCodeType.DocType_Image)); + codeTypeConsole.RegisterCodesOfType(codeTypeDocType_Image.Code, GetDefaultCodesOfType(Sbm.ApplCodeType.DocType_Image)); } //--------------------------------------------------------------- } + //------------------------------------------------------------------- + // C o d e T y p e s + //------------------------------------------------------------------- + // Application Code Types. + public static List GetDefaultCodesOfType(Sbm.ApplCodeType type) + { + List codes = new List(); + switch (type) + { + case Sbm.ApplCodeType.ContactTitle: + codes.Add("Mr", "Mr"); + codes.Add("Mrs", "Mrs"); + codes.Add("Ms", "Ms"); + codes.Add("Miss", "Miss"); + codes.Add("Mx", "Mx"); + codes.Add("Dr", "Dr"); + break; + case Sbm.ApplCodeType.VehicleCategory: + /* + codes.Add("10", "Mini"); + codes.Add("11", "Economy"); + codes.Add("12", "Compact"); + codes.Add("20", "Hatchback"); + codes.Add("21", "Saloon"); + codes.Add("22", "Estate"); + codes.Add("30", "Executive"); + codes.Add("50", "Intermediate"); + codes.Add("51", "Standard"); + codes.Add("52", "Full Size"); + */ + break; + case Sbm.ApplCodeType.VehicleMake: + /* + codes.Add("ACUR", "Acura"); + codes.Add("ALFA", "Alfa Romeo"); + codes.Add("ASTO", "Aston Martin"); + codes.Add("AUDI", "Audi"); + codes.Add("BMW", "BMW"); + codes.Add("BENT", "Bentley"); + codes.Add("BUIC", "Buick"); + codes.Add("CADI", "Cadillac"); + codes.Add("CATE", "Caterham"); + codes.Add("CHEV", "Chevrolet"); + codes.Add("CHRY", "Chrysler"); + codes.Add("CITR", "Citroen"); + codes.Add("DAEW", "Daewoo"); + codes.Add("DAF", "DAF"); + codes.Add("DAIH", "Daihatsu"); + codes.Add("DODG", "Dodge"); + codes.Add("FERR", "Ferrari"); + codes.Add("FIAT", "Fiat"); + codes.Add("FORD", "Ford"); + codes.Add("GENE", "General Motors"); + codes.Add("GEO", "Geo"); + codes.Add("GIBB", "Gibbs"); + codes.Add("HOND", "Honda"); + codes.Add("HYUN", "Hyundai"); + codes.Add("INFI", "Infiniti"); + codes.Add("ISUZ", "Isuzu"); + codes.Add("JAGU", "Jaguar"); + codes.Add("JEEP", "Jeep"); + codes.Add("JENS", "Jensen"); + codes.Add("KIA", "Kia"); + codes.Add("LDV", "LDV"); + codes.Add("LAND", "Land Rover"); + codes.Add("LEXU", "Lexus"); + codes.Add("LINC", "Lincoln"); + codes.Add("LOTU", "Lotus"); + codes.Add("MG R", "MG Rover"); + codes.Add("MAZD", "Mazda"); + codes.Add("MERB", "Mercedes"); + codes.Add("MERC", "Mercury"); + codes.Add("MINI", "Mini"); + codes.Add("MITS", "Mitsubishi"); + codes.Add("MORG", "Morgan"); + codes.Add("NISS", "Nissan"); + codes.Add("OLDS", "Oldsmobile"); + codes.Add("OPEL", "Opel"); + codes.Add("PEUG", "Peugeot"); + codes.Add("PLYM", "Plymouth"); + codes.Add("PONT", "Pontiac"); + codes.Add("PORS", "Porsche"); + codes.Add("RENA", "Renault"); + codes.Add("ROLL", "Rolls Royce"); + codes.Add("ROVE", "Rover"); + codes.Add("SAAB", "Saab"); + codes.Add("SATU", "Saturn"); + codes.Add("SEAT", "Seat"); + codes.Add("SKOD", "Skoda"); + codes.Add("SMAR", "Smart"); + codes.Add("SMIT", "Smith Electric Vehicles"); + codes.Add("SSAN", "SsangYong (Syuk Cars)"); + codes.Add("SUBA", "Subaru"); + codes.Add("SUZU", "Suzuki"); + codes.Add("TVR", "TVR"); + codes.Add("TATA", "Tata"); + codes.Add("TOYO", "Toyota"); + codes.Add("VAUX", "Vauxhall"); + codes.Add("VOLK", "Volkswagen"); + codes.Add("VOLV", "Volvo"); + */ + break; + case Sbm.ApplCodeType.VehicleServiceHistory: + /* + codes.Add("FMDSH", "Full main dealer service history"); + codes.Add("FSH", "Full service history"); + */ + break; + case Sbm.ApplCodeType.VehicleInsurance: + break; + } + return codes; + } + //------------------------------------------------------------------- } //======================================================================= diff --git a/SaBusMgrStandardBase/Base/App/SbmSystem.cs b/SaBusMgrStandardBase/Base/App/SbmSystem.cs index f04acf5..3a4ac2a 100644 --- a/SaBusMgrStandardBase/Base/App/SbmSystem.cs +++ b/SaBusMgrStandardBase/Base/App/SbmSystem.cs @@ -99,21 +99,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App // D a t a M a n a g e r s //------------------------------------------------------------------- public abstract SbmAccountMgr CreateAccountMgr(SbmInternals internals); - public abstract SbmAccountMgr CreateAccountMgr(ISbmUserOrganisationContext userContext); public abstract SbmAssetMgr CreateAssetMgr(SbmInternals internals); - public abstract SbmAssetMgr CreateAssetMgr(ISbmUserOrganisationContext userContext); public abstract SbmCommodityMgr CreateCommodityMgr(SbmInternals internals); - public abstract SbmCommodityMgr CreateCommodityMgr(ISbmUserOrganisationContext userContext); public abstract SbmPriceMgr CreatePriceMgr(SbmInternals internals); - public abstract SbmPriceMgr CreatePriceMgr(ISbmUserOrganisationContext userContext); public abstract SbmDataItemMgr CreateDataItemMgr(SbmInternals internals); - public abstract SbmDataItemMgr CreateDataItemMgr(ISbmUserOrganisationContext userContext); public abstract SbmProcessMgr CreateProcessMgr(SbmInternals internals); - public abstract SbmProcessMgr CreateProcessMgr(ISbmUserOrganisationContext userContext); public abstract SbmStockMgr CreateStockMgr(SbmInternals internals); - public abstract SbmStockMgr CreateStockMgr(ISbmUserOrganisationContext userContext); public abstract SbmTransactionMgr CreateTransactionMgr(SbmInternals internals); - public abstract SbmTransactionMgr CreateTransactionMgr(ISbmUserOrganisationContext userContext); // Control. public abstract SbmcAccountMgr CreateControlAccountMgr(); public abstract SbmcInstanceMgr CreateControlInstanceMgr(); @@ -121,17 +113,17 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App //------------------------------------------------------------------- // Consoles. - public abstract SbmSessionConsole CreateSessionConsole(ISbmUserOrganisationContext userContext); - public abstract SaDiaryConsole CreateDiaryConsole(ISbmUserOrganisationContext userContext); - public abstract SaSecurityConsole CreateSecurityConsole(ISbmUserOrganisationContext userContext); - public abstract SaCodeTypeConsole CreateCodeTypeConsole(ISbmUserOrganisationContext userContext); - public abstract SaReferenceDataConsole CreateReferenceDataConsole(ISbmUserOrganisationContext userContext); - public abstract SaItemDataConsole CreateItemDataConsole(ISbmUserOrganisationContext userContext); - public abstract SaItemDocConsole CreateItemDocConsole(ISbmUserOrganisationContext userContext); - public abstract SaItemOptionConsole CreateItemOptionConsole(ISbmUserOrganisationContext userContext); - public abstract SaInterfaceConsole CreateInterfaceConsole(ISbmUserOrganisationContext userContext); - public abstract SaUpdateLogConsole CreateUpdateLogConsole(ISbmUserOrganisationContext userContext); - public abstract SbmEmailConsole CreateEmailConsole(ISbmUserOrganisationContext userContext, SbmEmailConfig emailConfig); + public abstract SbmSessionConsole CreateSessionConsole(SbmInternals internals); + public abstract SaDiaryConsole CreateDiaryConsole(SbmInternals internals); + public abstract SaSecurityConsole CreateSecurityConsole(SbmInternals internals); + public abstract SaCodeTypeConsole CreateCodeTypeConsole(SbmInternals internals); + public abstract SaReferenceDataConsole CreateReferenceDataConsole(SbmInternals internals); + public abstract SaItemDataConsole CreateItemDataConsole(SbmInternals internals); + public abstract SaItemDocConsole CreateItemDocConsole(SbmInternals internals); + public abstract SaItemOptionConsole CreateItemOptionConsole(SbmInternals internals); + public abstract SaInterfaceConsole CreateInterfaceConsole(SbmInternals internals); + public abstract SaUpdateLogConsole CreateUpdateLogConsole(SbmInternals internals); + public abstract SbmEmailConsole CreateEmailConsole(SbmEmailConfig emailConfig); //------------------------------------------------------------------- // A p p l i c a t i o n P r o p e r t i e s diff --git a/SaBusMgrStandardBase/Base/Bus/Control/SbmcAccountRegistration.cs b/SaBusMgrStandardBase/Base/Bus/Control/SbmcAccountRegistration.cs new file mode 100644 index 0000000..11f9a5e --- /dev/null +++ b/SaBusMgrStandardBase/Base/Bus/Control/SbmcAccountRegistration.cs @@ -0,0 +1,359 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control +{ + //======================================================================= + public class SbmcAccountRegistration : SbmcHierarchyItem + { + //------------------------------------------------------------------- + // Columns. + public enum Column + { + Hidden, + Pos, + // Account Registration. + Id, + EmailAddress, + DisplayName, + FirstName, + LastName, + PhoneMain, + PhoneAlt, + InstanceContext, + RequestAccountAt, + RegisterAccountToken, + RegisterAccountAt, + // Common. + Notes, + Flag, + Status, + Status_Ind, + Status_Desc, + CreateOn_Date, + UpdateOn_Date, + } + + //------------------------------------------------------------------- + /// Properties other than common. + public class DataProperties + { + public String EmailAddress { get; set; } = ""; + public String FirstName { get; set; } = ""; + public String LastName { get; set; } = ""; + public String PhoneMain { get; set; } = ""; + public String PhoneAlt { get; set; } = ""; + public String InstanceContext { get; set; } = ""; + public DateTime RequestAccountAt { get; set; } + public Guid RegisterAccountToken { get; set; } + public DateTime? RegisterAccountAt { get; set; } + public String AccountPasswordSalt { get; set; } = ""; + public String AccountPasswordHash { get; set; } = ""; + } + + //------------------------------------------------------------------- + // Data. + public new class Data : SacsHierarchyItem.Data + { + // Data members. + private readonly DataProperties data = new DataProperties(); + // Construction. + public Data() + { + //Status = SbmAccountMgr.AffiliateStatusDefault; + } + public String EmailAddress + { + get { return data.EmailAddress; } + set { CheckChanged(data.EmailAddress, value); data.EmailAddress = value; } + } + public String FirstName + { + get { return data.FirstName; } + set { CheckChanged(data.FirstName, value); data.FirstName = value; } + } + public String LastName + { + get { return data.LastName; } + set { CheckChanged(data.LastName, value); data.LastName = value; } + } + public String PhoneMain + { + get { return data.PhoneMain; } + set { CheckChanged(data.PhoneMain, value); data.PhoneMain = value; } + } + public String PhoneAlt + { + get { return data.PhoneAlt; } + set { CheckChanged(data.PhoneAlt, value); data.PhoneAlt = value; } + } + public String InstanceContext + { + get { return data.InstanceContext; } + set { CheckChanged(data.InstanceContext, value); data.InstanceContext = value; } + } + public DateTime RequestAccountAt + { + get { return data.RequestAccountAt; } + set { CheckChanged(data.RequestAccountAt, value); data.RequestAccountAt = value; } + } + public Guid RegisterAccountToken + { + get { return data.RegisterAccountToken; } + set { CheckChanged(data.RegisterAccountToken, value); data.RegisterAccountToken = value; } + } + public DateTime? RegisterAccountAt + { + get { return data.RegisterAccountAt; } + set { CheckChangedNullable(data.RegisterAccountAt, value); data.RegisterAccountAt = value; } + } + public String AccountPasswordSalt + { + get { return data.AccountPasswordSalt; } + set { CheckChanged(data.AccountPasswordSalt, value); data.AccountPasswordSalt = value; } + } + public String AccountPasswordHash + { + get { return data.AccountPasswordHash; } + set { CheckChanged(data.AccountPasswordHash, value); data.AccountPasswordHash = value; } + } + + internal void PopulateFrom(Data data) + { + EmailAddress = data.EmailAddress; + LastName = data.LastName; + FirstName = data.FirstName; + PhoneMain = data.PhoneMain; + PhoneAlt = data.PhoneAlt; + InstanceContext = data.InstanceContext; + RequestAccountAt = data.RequestAccountAt; + RegisterAccountToken = data.RegisterAccountToken; + RegisterAccountAt = data.RegisterAccountAt; + AccountPasswordSalt = data.AccountPasswordSalt; + AccountPasswordHash = data.AccountPasswordHash; + base.PopulateFrom(data); + } + public Data Clone() + { + Data data = new Data(); + data.PopulateFrom(this); + return data; + } + } + public new class ErrField : SacsHierarchyItem.ErrField + { + // Identifies the field that has invalid data. + public ValidValue EmailAddress { get; set; } = ValidValue.Valid; + public ValidValue FirstName { get; set; } = ValidValue.Valid; + public ValidValue LastName { get; set; } = ValidValue.Valid; + public ValidValue PhoneMain { get; set; } = ValidValue.Valid; + public ValidValue PhoneAlt { get; set; } = ValidValue.Valid; + public ValidValue InstanceContext { get; set; } = ValidValue.Valid; + public ValidValue RequestAccountAt { get; set; } = ValidValue.Valid; + public ValidValue RegisterAccountToken { get; set; } = ValidValue.Valid; + public ValidValue RegisterAccountAt { get; set; } = ValidValue.Valid; + public ValidValue AccountPasswordSalt { get; set; } = ValidValue.Valid; + public ValidValue AccountPasswordHash { get; set; } = ValidValue.Valid; + } + + //------------------------------------------------------------------- + // Data members. + private readonly Data data = new Data(); + public static readonly Byte Flag_KeepPreviousPassword = 0x01; + + //------------------------------------------------------------------- + // Construction. + protected SbmcAccountRegistration(SysId id, String emailAddress, Guid registerAccountToken) : base(id) + { + base.SetData(data); + this.EmailAddress = emailAddress; + this.RegisterAccountToken = registerAccountToken; + this.RequestAccountAt = DateTime.Now; + this.Status = DefaultStatus; + } + + //------------------------------------------------------------------- + // Affiliate status. + private static readonly List accountRegistrationStatuses = new List() + { + SaStatus.Awaiting, + SaStatus.Completed, + SaStatus.Cancelled, + SaStatus.Deleted, + }; + public static SaStatus DefaultStatus { get { return SaStatus.Awaiting; } } + public static List ValidStatuses { get { return new List(accountRegistrationStatuses); } } + public static DataValue.TriStateType GetStatusTriState(SaStatus status) + { + switch (status) + { + case SaStatus.Active: + case SaStatus.Completed: + return DataValue.TriStateType.Green; + case SaStatus.Inactive: + case SaStatus.Cancelled: + return DataValue.TriStateType.Red; + case SaStatus.Deleted: + return DataValue.TriStateType.Purple; + } + return DataValue.TriStateType.Unknown; + } + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // Properties. + public Data GetData() { return data.Clone(); } + public void SetData(Data data) + { + // Properties that cannot be changed if previously specified. + if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id)) + throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed"); + if (!StringUtil.IsEmpty(EmailAddress) && !EmailAddress.EqualsCI(data.EmailAddress)) + throw new NotSupportedException($"{SysUtil.Fn} Email address cannot be changed"); + // Populate individual properties to ensure that 'Changed' indicator is kept up to date. + this.data.PopulateFrom(data); + } + + //------------------------------------------------------------------- + // Properties. + + public String EmailAddress + { + get { return data.EmailAddress; } + protected set { data.EmailAddress = value; } + } + + // Name. + + public String FirstName + { + get { return data.FirstName; } + set { data.FirstName = value; } + } + public String LastName + { + get { return data.LastName; } + set { data.LastName = value; } + } + + public static String GetDisplayName(String firstName, String lastName) + { + // , . + List Names = new List(); + Names.Add(lastName); + Names.Add(firstName); + Names.RemoveBlanks(); + return Names.Concat(", "); + } + public String GetDisplayName() + { + return GetDisplayName(FirstName, LastName); + } + + // Phone numbers. + + public String PhoneMain + { + get { return data.PhoneMain; } + set { data.PhoneMain = value; } + } + public String PhoneAlt + { + get { return data.PhoneAlt; } + set { data.PhoneAlt = value; } + } + + // Registration. + + public String InstanceContext + { + get { return data.InstanceContext; } + set { data.InstanceContext = value; } + } + public DateTime RequestAccountAt + { + get { return data.RequestAccountAt; } + set { data.RequestAccountAt = value; } + } + public Guid RegisterAccountToken + { + get { return data.RegisterAccountToken; } + protected set { data.RegisterAccountToken = value; } + } + public DateTime? RegisterAccountAt + { + get { return data.RegisterAccountAt; } + set { data.RegisterAccountAt = value; } + } + + // Security. + + public String AccountPasswordSalt + { + get { return data.AccountPasswordSalt; } + set { data.AccountPasswordSalt = value; } + } + public String AccountPasswordHash + { + get { return data.AccountPasswordHash; } + set { data.AccountPasswordHash = value; } + } + + //------------------------------------------------------------------- + // Flags. + public bool KeepPreviousPassword + { + get { return GetFlag(Flag_KeepPreviousPassword); } + set { SetFlag(Flag_KeepPreviousPassword, value); } + } + + //------------------------------------------------------------------- + // Associated data. + + //------------------------------------------------------------------- + // List parameters. + + /// Status filter options. + public enum StatusCat + { + Any, + AwaitingOnly, + CompletedOnly, + CancelledOnly, + NotDeleted, + DeletedOnly, + } + + /// Parameters - used to define the filters that should be applied to a list of items. + public new class Params : SacsHierarchyItem.Params + { + // List filtering. + public HashSet IdsIncluded { get; } = new HashSet(); + public HashSet IdsExcluded { get; } = new HashSet(); + /// Generic search value - email, name, phone etc. + public String Search { get; set; } + public String EmailAddress { get; set; } + public Guid RegisterAccountToken { get; set; } + public String NotesPartial { get; set; } + /// Contact status. + public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; + } + } + //======================================================================= + // Item list. + public static class SbmcAccountRegistrationList + { + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Bus/Control/SbmcOwner.cs b/SaBusMgrStandardBase/Base/Bus/Control/SbmcOwner.cs index 55b19fc..6d9bd72 100644 --- a/SaBusMgrStandardBase/Base/Bus/Control/SbmcOwner.cs +++ b/SaBusMgrStandardBase/Base/Bus/Control/SbmcOwner.cs @@ -9,229 +9,229 @@ using System.Threading.Tasks; namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control { - //======================================================================= - public class SbmcOwner : SbmcHierarchyItem - { - //------------------------------------------------------------------- - // Columns. - public enum Column - { - Hidden, - Pos, - // Owner. - Id, - Name, - ContactName, - ContactEmailAddress, - ContactPhoneMain, - ContactPhoneAlt, - // Repositories. - RepositoryCount, - // Common. - Notes, - Flag, - Status, - Status_Ind, - Status_Desc, - CreateOn_Date, - UpdateOn_Date, - } + //======================================================================= + public class SbmcOwner : SbmcHierarchyItem + { + //------------------------------------------------------------------- + // Columns. + public enum Column + { + Hidden, + Pos, + // Owner. + Id, + Name, + ContactName, + ContactEmailAddress, + ContactPhoneMain, + ContactPhoneAlt, + // Repositories. + RepositoryCount, + // Common. + Notes, + Flag, + Status, + Status_Ind, + Status_Desc, + CreateOn_Date, + UpdateOn_Date, + } - //------------------------------------------------------------------- - /// Properties other than common. - public class DataProperties - { - public String Name { get; set; } = ""; - public String ContactName { get; set; } = ""; - public String ContactEmailAddress { get; set; } = ""; - public String ContactPhoneMain { get; set; } = ""; - public String ContactPhoneAlt { get; set; } = ""; - } + //------------------------------------------------------------------- + /// Properties other than common. + public class DataProperties + { + public String Name { get; set; } = ""; + public String ContactName { get; set; } = ""; + public String ContactEmailAddress { get; set; } = ""; + public String ContactPhoneMain { get; set; } = ""; + public String ContactPhoneAlt { get; set; } = ""; + } - //------------------------------------------------------------------- - // Data. - public new class Data : SacsHierarchyItem.Data - { - // Data members. - private readonly DataProperties data = new DataProperties(); - // Construction. - public Data() - { - Status = SbmcOwner.DefaultStatus; - } - public String Name - { - get { return data.Name; } - set { CheckChanged(data.Name, value); data.Name = value; } - } - public String ContactName - { - get { return data.ContactName; } - set { CheckChanged(data.ContactName, value); data.ContactName = value; } - } - public String ContactEmailAddress - { - get { return data.ContactEmailAddress; } - set { CheckChanged(data.ContactEmailAddress, value); data.ContactEmailAddress = value; } - } - public String ContactPhoneMain - { - get { return data.ContactPhoneMain; } - set { CheckChanged(data.ContactPhoneMain, value); data.ContactPhoneMain = value; } - } - public String ContactPhoneAlt - { - get { return data.ContactPhoneAlt; } - set { CheckChanged(data.ContactPhoneAlt, value); data.ContactPhoneAlt = value; } - } + //------------------------------------------------------------------- + // Data. + public new class Data : SacsHierarchyItem.Data + { + // Data members. + private readonly DataProperties data = new DataProperties(); + // Construction. + public Data() + { + Status = SbmcOwner.DefaultStatus; + } + public String Name + { + get { return data.Name; } + set { CheckChanged(data.Name, value); data.Name = value; } + } + public String ContactName + { + get { return data.ContactName; } + set { CheckChanged(data.ContactName, value); data.ContactName = value; } + } + public String ContactEmailAddress + { + get { return data.ContactEmailAddress; } + set { CheckChanged(data.ContactEmailAddress, value); data.ContactEmailAddress = value; } + } + public String ContactPhoneMain + { + get { return data.ContactPhoneMain; } + set { CheckChanged(data.ContactPhoneMain, value); data.ContactPhoneMain = value; } + } + public String ContactPhoneAlt + { + get { return data.ContactPhoneAlt; } + set { CheckChanged(data.ContactPhoneAlt, value); data.ContactPhoneAlt = value; } + } - internal void PopulateFrom(Data data) - { - Name = data.Name; - ContactName = data.ContactName; - ContactEmailAddress = data.ContactEmailAddress; - ContactPhoneMain = data.ContactPhoneMain; - ContactPhoneAlt = data.ContactPhoneAlt; - base.PopulateFrom(data); - } - public Data Clone() - { - Data data = new Data(); - data.PopulateFrom(this); - return data; - } - } - public new class ErrField : SacsHierarchyItem.ErrField - { - // Identifies the field that has invalid data. - public ValidValue Name { get; set; } = ValidValue.Valid; - public ValidValue ContactName { get; set; } = ValidValue.Valid; - public ValidValue ContactEmailAddress { get; set; } = ValidValue.Valid; - public ValidValue ContactPhoneMain { get; set; } = ValidValue.Valid; - public ValidValue ContactPhoneAlt { get; set; } = ValidValue.Valid; - } + internal void PopulateFrom(Data data) + { + Name = data.Name; + ContactName = data.ContactName; + ContactEmailAddress = data.ContactEmailAddress; + ContactPhoneMain = data.ContactPhoneMain; + ContactPhoneAlt = data.ContactPhoneAlt; + base.PopulateFrom(data); + } + public Data Clone() + { + Data data = new Data(); + data.PopulateFrom(this); + return data; + } + } + public new class ErrField : SacsHierarchyItem.ErrField + { + // Identifies the field that has invalid data. + public ValidValue Name { get; set; } = ValidValue.Valid; + public ValidValue ContactName { get; set; } = ValidValue.Valid; + public ValidValue ContactEmailAddress { get; set; } = ValidValue.Valid; + public ValidValue ContactPhoneMain { get; set; } = ValidValue.Valid; + public ValidValue ContactPhoneAlt { get; set; } = ValidValue.Valid; + } - //------------------------------------------------------------------- - // Data members. - private readonly Data data = new Data(); + //------------------------------------------------------------------- + // Data members. + private readonly Data data = new Data(); - //------------------------------------------------------------------- - // Construction. - protected SbmcOwner(SysId id) : base(id) - { - base.SetData(data); - } + //------------------------------------------------------------------- + // Construction. + protected SbmcOwner(SysId id) : base(id) + { + base.SetData(data); + } - //------------------------------------------------------------------- - // Owner status. - private static readonly List ownerStatuses = new List() - { - SaStatus.Active, - SaStatus.OnHold, - SaStatus.Inactive, - SaStatus.Deleted, - }; - public static SaStatus DefaultStatus { get { return SaStatus.Active; } } - public static List ValidStatuses { get { return new List(ownerStatuses); } } - public static DataValue.TriStateType GetStatusTriState(SaStatus status) - { - switch (status) - { - case SaStatus.Active: - return DataValue.TriStateType.Green; - case SaStatus.OnHold: - return DataValue.TriStateType.Amber; - case SaStatus.Inactive: - return DataValue.TriStateType.Red; - case SaStatus.Deleted: - return DataValue.TriStateType.Purple; - } - return DataValue.TriStateType.Unknown; - } + //------------------------------------------------------------------- + // Owner status. + private static readonly List ownerStatuses = new List() + { + SaStatus.Active, + SaStatus.OnHold, + SaStatus.Inactive, + SaStatus.Deleted, + }; + public static SaStatus DefaultStatus { get { return SaStatus.Active; } } + public static List ValidStatuses { get { return new List(ownerStatuses); } } + public static DataValue.TriStateType GetStatusTriState(SaStatus status) + { + switch (status) + { + case SaStatus.Active: + return DataValue.TriStateType.Green; + case SaStatus.OnHold: + return DataValue.TriStateType.Amber; + case SaStatus.Inactive: + return DataValue.TriStateType.Red; + case SaStatus.Deleted: + return DataValue.TriStateType.Purple; + } + return DataValue.TriStateType.Unknown; + } - //------------------------------------------------------------------- - // Utilities. + //------------------------------------------------------------------- + // Utilities. - //------------------------------------------------------------------- - // Properties. - public Data GetData() { return data.Clone(); } - public void SetData(Data data) - { - // Properties that cannot be changed if previously specified. - if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id)) - throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed"); - // Populate individual properties to ensure that 'Changed' indicator is kept up to date. - this.data.PopulateFrom(data); - } + //------------------------------------------------------------------- + // Properties. + public Data GetData() { return data.Clone(); } + public void SetData(Data data) + { + // Properties that cannot be changed if previously specified. + if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id)) + throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed"); + // Populate individual properties to ensure that 'Changed' indicator is kept up to date. + this.data.PopulateFrom(data); + } - //------------------------------------------------------------------- - // Properties. + //------------------------------------------------------------------- + // Properties. - // Owner. + // Owner. - public String Name - { - get { return data.Name; } - set { data.Name = value; } - } - public String ContactName - { - get { return data.ContactName; } - set { data.ContactName = value; } - } - public String ContactEmailAddress - { - get { return data.ContactEmailAddress; } - set { data.ContactEmailAddress = value; } - } - public String ContactPhoneMain - { - get { return data.ContactPhoneMain; } - set { data.ContactPhoneMain = value; } - } - public String ContactPhoneAlt - { - get { return data.ContactPhoneAlt; } - set { data.ContactPhoneAlt = value; } - } + public String Name + { + get { return data.Name; } + set { data.Name = value; } + } + public String ContactName + { + get { return data.ContactName; } + set { data.ContactName = value; } + } + public String ContactEmailAddress + { + get { return data.ContactEmailAddress; } + set { data.ContactEmailAddress = value; } + } + public String ContactPhoneMain + { + get { return data.ContactPhoneMain; } + set { data.ContactPhoneMain = value; } + } + public String ContactPhoneAlt + { + get { return data.ContactPhoneAlt; } + set { data.ContactPhoneAlt = value; } + } - //------------------------------------------------------------------- - // Flags. + //------------------------------------------------------------------- + // Flags. - //------------------------------------------------------------------- - // Associated data. + //------------------------------------------------------------------- + // Associated data. - //------------------------------------------------------------------- - // List parameters. + //------------------------------------------------------------------- + // List parameters. - /// Status filter options. - public enum StatusCat - { - Any, - ActiveOnly, + /// Status filter options. + public enum StatusCat + { + Any, + ActiveOnly, OnHoldOnly, InactiveOnly, - NotDeleted, - DeletedOnly, - } + NotDeleted, + DeletedOnly, + } - /// Parameters - used to define the filters that should be applied to a list of items. - public new class Params : SacsHierarchyItem.Params - { - // List filtering. - public HashSet IdsIncluded { get; } = new HashSet(); - public HashSet IdsExcluded { get; } = new HashSet(); + /// Parameters - used to define the filters that should be applied to a list of items. + public new class Params : SacsHierarchyItem.Params + { + // List filtering. + public HashSet IdsIncluded { get; } = new HashSet(); + public HashSet IdsExcluded { get; } = new HashSet(); /// Generic search value - name, contact, email, phone etc. public String Search { get; set; } - public String NotesPartial { get; set; } - /// Contact status. - public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; - } - } - //======================================================================= - // Item list. - public static class SbmcOwnerList - { - } - //======================================================================= + public String NotesPartial { get; set; } + /// Contact status. + public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; + } + } + //======================================================================= + // Item list. + public static class SbmcOwnerList + { + } + //======================================================================= } diff --git a/SaBusMgrStandardBase/Base/Bus/Control/SbmcRepository.cs b/SaBusMgrStandardBase/Base/Bus/Control/SbmcRepository.cs index 49a4aac..f4dcfa1 100644 --- a/SaBusMgrStandardBase/Base/Bus/Control/SbmcRepository.cs +++ b/SaBusMgrStandardBase/Base/Bus/Control/SbmcRepository.cs @@ -9,63 +9,63 @@ using System.Threading.Tasks; namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control { - //======================================================================= - public class SbmcRepository : SbmcHierarchyItem - { - //------------------------------------------------------------------- - // Columns. - public enum Column - { - Hidden, - Pos, - // Repository. - Id, - Context, - ServerName, - InstanceName, - DatabaseName, - UserName, - // Owner. - OwnerId, - OwnerName, - ContactName, - ContactEmailAddress, - ContactPhoneMain, - ContactPhoneAlt, - // Common properties. - Notes, - Flag, - Status, - Status_Ind, - Status_Desc, - CreateOn_Date, - UpdateOn_Date, - } + //======================================================================= + public class SbmcRepository : SbmcHierarchyItem + { + //------------------------------------------------------------------- + // Columns. + public enum Column + { + Hidden, + Pos, + // Repository. + Id, + Context, + ServerName, + InstanceName, + DatabaseName, + UserName, + // Owner. + OwnerId, + OwnerName, + ContactName, + ContactEmailAddress, + ContactPhoneMain, + ContactPhoneAlt, + // Common properties. + Notes, + Flag, + Status, + Status_Ind, + Status_Desc, + CreateOn_Date, + UpdateOn_Date, + } - //------------------------------------------------------------------- - /// Properties other than common. - public class DataProperties - { + //------------------------------------------------------------------- + /// Properties other than common. + public class DataProperties + { public SysId OwnerId { get; set; } public String Context { get; set; } = ""; public String ServerName { get; set; } = ""; - public String InstanceName { get; set; } = ""; - public String DatabaseName { get; set; } - public String UserName { get; set; } = ""; - public String Password { get; set; } = ""; - } + public String InstanceName { get; set; } = ""; + public String DatabaseName { get; set; } + public String UserName { get; set; } = ""; + public String Password { get; set; } = ""; + } - //------------------------------------------------------------------- - // Data. - public new class Data : SacsHierarchyItem.Data - { - // Data members. - private readonly DataProperties data = new DataProperties(); - // Construction. - public Data() - { - Status = SbmcRepository.DefaultStatus; - } + //------------------------------------------------------------------- + // Data. + public new class Data : SacsHierarchyItem.Data + { + // Data members. + private readonly DataProperties data = new DataProperties(); + // Construction. + public Data() + { + Status = SbmcRepository.DefaultStatus; + } public SysId OwnerId { get { return data.OwnerId; } @@ -77,113 +77,113 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control set { CheckChanged(data.Context, value); data.Context = value; } } public String ServerName - { - get { return data.ServerName; } - set { CheckChanged(data.ServerName, value); data.ServerName = value; } - } - public String InstanceName - { - get { return data.InstanceName; } - set { CheckChanged(data.InstanceName, value); data.InstanceName = value; } - } - public String DatabaseName - { - get { return data.DatabaseName; } - set { CheckChanged(data.DatabaseName, value); data.DatabaseName = value; } - } - public String UserName - { - get { return data.UserName; } - set { CheckChanged(data.UserName, value); data.UserName = value; } - } - public String Password - { - get { return data.Password; } - set { CheckChanged(data.Password, value); data.Password = value; } - } + { + get { return data.ServerName; } + set { CheckChanged(data.ServerName, value); data.ServerName = value; } + } + public String InstanceName + { + get { return data.InstanceName; } + set { CheckChanged(data.InstanceName, value); data.InstanceName = value; } + } + public String DatabaseName + { + get { return data.DatabaseName; } + set { CheckChanged(data.DatabaseName, value); data.DatabaseName = value; } + } + public String UserName + { + get { return data.UserName; } + set { CheckChanged(data.UserName, value); data.UserName = value; } + } + public String Password + { + get { return data.Password; } + set { CheckChanged(data.Password, value); data.Password = value; } + } - internal void PopulateFrom(Data data) - { + internal void PopulateFrom(Data data) + { OwnerId = data.OwnerId; Context = data.Context; ServerName = data.ServerName; - InstanceName = data.InstanceName; - DatabaseName = data.DatabaseName; - UserName = data.UserName; - Password = data.Password; - base.PopulateFrom(data); - } - public Data Clone() - { - Data data = new Data(); - data.PopulateFrom(this); - return data; - } - } - public new class ErrField : SacsHierarchyItem.ErrField - { + InstanceName = data.InstanceName; + DatabaseName = data.DatabaseName; + UserName = data.UserName; + Password = data.Password; + base.PopulateFrom(data); + } + public Data Clone() + { + Data data = new Data(); + data.PopulateFrom(this); + return data; + } + } + public new class ErrField : SacsHierarchyItem.ErrField + { // Identifies the field that has invalid data. public ValidValue OwnerId { get; set; } = ValidValue.Valid; public ValidValue Context { get; set; } = ValidValue.Valid; public ValidValue ServerName { get; set; } = ValidValue.Valid; - public ValidValue InstanceName { get; set; } = ValidValue.Valid; - public ValidValue DatabaseName { get; set; } = ValidValue.Valid; - public ValidValue UserName { get; set; } = ValidValue.Valid; - public ValidValue Password { get; set; } = ValidValue.Valid; - } + public ValidValue InstanceName { get; set; } = ValidValue.Valid; + public ValidValue DatabaseName { get; set; } = ValidValue.Valid; + public ValidValue UserName { get; set; } = ValidValue.Valid; + public ValidValue Password { get; set; } = ValidValue.Valid; + } - //------------------------------------------------------------------- - // Data members. - private readonly Data data = new Data(); + //------------------------------------------------------------------- + // Data members. + private readonly Data data = new Data(); - //------------------------------------------------------------------- - // Construction. - protected SbmcRepository(SysId id) : base(id) - { - base.SetData(data); - } + //------------------------------------------------------------------- + // Construction. + protected SbmcRepository(SysId id) : base(id) + { + base.SetData(data); + } - //------------------------------------------------------------------- - // Repository status. - private static readonly List repositoryStatuses = new List() - { - SaStatus.Active, - SaStatus.OnHold, - SaStatus.Inactive, - SaStatus.Deleted, - }; - public static SaStatus DefaultStatus { get { return SaStatus.Active; } } - public static List ValidStatuses { get { return new List(repositoryStatuses); } } - public static DataValue.TriStateType GetStatusTriState(SaStatus status) - { - switch (status) - { - case SaStatus.Active: - return DataValue.TriStateType.Green; - case SaStatus.OnHold: - return DataValue.TriStateType.Amber; - case SaStatus.Inactive: - return DataValue.TriStateType.Red; - case SaStatus.Deleted: - return DataValue.TriStateType.Purple; - } - return DataValue.TriStateType.Unknown; - } + //------------------------------------------------------------------- + // Repository status. + private static readonly List repositoryStatuses = new List() + { + SaStatus.Active, + SaStatus.OnHold, + SaStatus.Inactive, + SaStatus.Deleted, + }; + public static SaStatus DefaultStatus { get { return SaStatus.Active; } } + public static List ValidStatuses { get { return new List(repositoryStatuses); } } + public static DataValue.TriStateType GetStatusTriState(SaStatus status) + { + switch (status) + { + case SaStatus.Active: + return DataValue.TriStateType.Green; + case SaStatus.OnHold: + return DataValue.TriStateType.Amber; + case SaStatus.Inactive: + return DataValue.TriStateType.Red; + case SaStatus.Deleted: + return DataValue.TriStateType.Purple; + } + return DataValue.TriStateType.Unknown; + } - //------------------------------------------------------------------- - // Utilities. + //------------------------------------------------------------------- + // Utilities. - //------------------------------------------------------------------- - // Properties. - public Data GetData() { return data.Clone(); } - public void SetData(Data data) - { - // Properties that cannot be changed if previously specified. - if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id)) - throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed"); - // Populate individual properties to ensure that 'Changed' indicator is kept up to date. - this.data.PopulateFrom(data); - } + //------------------------------------------------------------------- + // Properties. + public Data GetData() { return data.Clone(); } + public void SetData(Data data) + { + // Properties that cannot be changed if previously specified. + if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id)) + throw new NotSupportedException($"{SysUtil.Fn} Id cannot be changed"); + // Populate individual properties to ensure that 'Changed' indicator is kept up to date. + this.data.PopulateFrom(data); + } //------------------------------------------------------------------- // Properties. @@ -204,77 +204,77 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control set { data.Context = value; } } public String ServerName - { - get { return data.ServerName; } - set { data.ServerName = value; } - } - public String InstanceName - { - get { return data.InstanceName; } - set { data.InstanceName = value; } - } - public String DatabaseName - { - get { return data.DatabaseName; } - set { data.DatabaseName = value; } - } + { + get { return data.ServerName; } + set { data.ServerName = value; } + } + public String InstanceName + { + get { return data.InstanceName; } + set { data.InstanceName = value; } + } + public String DatabaseName + { + get { return data.DatabaseName; } + set { data.DatabaseName = value; } + } - // Credentials. + // Credentials. - public String UserName - { - get { return data.UserName; } - set { data.UserName = value; } - } - public String Password - { - get { return data.Password; } - set { data.Password = value; } - } + public String UserName + { + get { return data.UserName; } + set { data.UserName = value; } + } + public String Password + { + get { return data.Password; } + set { data.Password = value; } + } - //------------------------------------------------------------------- - // Flags. + //------------------------------------------------------------------- + // Flags. - //------------------------------------------------------------------- - // Associated data. + //------------------------------------------------------------------- + // Associated data. - //------------------------------------------------------------------- - // List parameters. + //------------------------------------------------------------------- + // List parameters. - /// Status filter options. - public enum StatusCat - { - Any, - ActiveOnly, + /// Status filter options. + public enum StatusCat + { + Any, + ActiveOnly, OnHoldOnly, InactiveOnly, - NotDeleted, - DeletedOnly, - } + NotDeleted, + DeletedOnly, + } - /// Parameters - used to define the filters that should be applied to a list of items. - public new class Params : SacsHierarchyItem.Params - { - // List filtering. - public HashSet IdsIncluded { get; } = new HashSet(); - public HashSet IdsExcluded { get; } = new HashSet(); - /// Repository owners. + /// Parameters - used to define the filters that should be applied to a list of items. + public new class Params : SacsHierarchyItem.Params + { + // List filtering. + public HashSet IdsIncluded { get; } = new HashSet(); + public HashSet IdsExcluded { get; } = new HashSet(); + /// Repository owners. public HashSet OwnerIdsIncluded { get; } = new HashSet(); /// Repository contexts. public HashSet ContextsIncluded { get; set; } = new HashSet(); - /// Generic search value - context, server, instance, database etc. - public String Search { get; set; } - public String NotesPartial { get; set; } - /// Contact status. - public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; - // Table alises. - public String Alias_Owner { get; set; } + /// Generic search value - context, server, instance, database etc. + public String Search { get; set; } + public String NotesPartial { get; set; } + /// Contact status. + public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; + // Table alises. + public String Alias_Owner { get; set; } } - } - //======================================================================= - // Item list. - public static class SbmcRepositoryList - { - } - //======================================================================= + } + //======================================================================= + // Item list. + public static class SbmcRepositoryList + { + } + //======================================================================= } diff --git a/SaBusMgrStandardBase/Base/Bus/Control/SbmcUserAccount.cs b/SaBusMgrStandardBase/Base/Bus/Control/SbmcUserAccount.cs index ccec51b..594ed42 100644 --- a/SaBusMgrStandardBase/Base/Bus/Control/SbmcUserAccount.cs +++ b/SaBusMgrStandardBase/Base/Bus/Control/SbmcUserAccount.cs @@ -78,7 +78,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control // Construction. public Data() { - //Status = SbmAccountMgr.AffiliateStatusDefault; } public String EmailAddress { @@ -223,14 +222,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus.Control //------------------------------------------------------------------- // Affiliate status. - private static readonly List affiliateStatuses = new List() + private static readonly List userAccountStatuses = new List() { SaStatus.Active, SaStatus.Inactive, SaStatus.Deleted, }; public static SaStatus DefaultStatus { get { return SaStatus.Active; } } - public static List ValidStatuses { get { return new List(affiliateStatuses); } } + public static List ValidStatuses { get { return new List(userAccountStatuses); } } public static DataValue.TriStateType GetStatusTriState(SaStatus status) { switch (status) diff --git a/SaBusMgrStandardBase/Base/Bus/SbmAffiliate.cs b/SaBusMgrStandardBase/Base/Bus/SbmAffiliate.cs index 1d51d3f..1c2dc66 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmAffiliate.cs +++ b/SaBusMgrStandardBase/Base/Bus/SbmAffiliate.cs @@ -596,26 +596,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus get { return data.Name; } set { data.Name = value; } } - public void SetName(String name) - { - if (IsIndividual()) - { - name = name.ReplaceAll(",,", ",").ReplaceAll(" ", " "); - if (name.IndexOf(",", 0) >= 0) - { - String[] nameParts = name.Split(','); - LastName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); - FirstName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)); - } - else if (name.IndexOf(" ", 0) >= 0) - { - String[] nameParts = name.Split(' '); - FirstName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)); - LastName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); - } - else LastName = name.TrimAll().CapitaliseFirst().Left((int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); - } - } public String Abbr { get { return data.Abbr; } diff --git a/SaBusMgrStandardBase/Base/Bus/SbmAssociation.cs b/SaBusMgrStandardBase/Base/Bus/SbmAssociation.cs index 9fbf1d3..52f48e7 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmAssociation.cs +++ b/SaBusMgrStandardBase/Base/Bus/SbmAssociation.cs @@ -851,12 +851,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus public enum StatusCat { Any = 0, - NotDeleted, - Current, - OnHold, + CurrentOnly, + OnHoldOnly, /// Current or On-hold Active, - Disabled, + DisabledOnly, + NotDeleted, + DeletedOnly, } /// Parameters - used to define the filters that should be applied to a List of Association public new class Params : SacsHierarchyItem.Params diff --git a/SaBusMgrStandardBase/Base/Bus/SbmCommodity.cs b/SaBusMgrStandardBase/Base/Bus/SbmCommodity.cs index 77e042b..fb9b857 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmCommodity.cs +++ b/SaBusMgrStandardBase/Base/Bus/SbmCommodity.cs @@ -1858,95 +1858,82 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus /// Commodity status. public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted; // Utilities. - public List GetDisplayValues(ISbmUserOrganisationContext userContext) + public List GetDisplayValues(SbmInternals internals) { - SbmAccountMgr accountMgr = null; - List lValue = new List(); - using (SbmSessionConsole sessionConsole = SbmGlobals.System.CreateSessionConsole(userContext)) - { - // Commodities to exclude. - if (IdsIncluded.Count > 0) lValue.Add("Included commodities", IdsIncluded.Count.ToString()); - if (IdsExcluded.Count > 0) lValue.Add("Excluded commodities", IdsExcluded.Count.ToString()); - // Commodity type. - if (CommodityType > 0) lValue.Add("Type", SbmSystem.GetSystemCodes(Sbm.SystemCode.CommodityType).GetDescForType(CommodityType, CommodityType.ToString())); - else if (CommodityType == Sbm.CommodityType.AnyProduct) lValue.Add("Type", "Any product"); - if (StockItemsOnly) lValue.Add("Stock items only", "True"); - // Commodity code. - if (!StringUtil.IsEmpty(CodeFull)) lValue.Add("Code", CodeFull); - else if (!StringUtil.IsEmpty(CodePartial)) lValue.Add("Code contains", CodePartial); - // Drawing number. - if (!StringUtil.IsEmpty(DrawingNoFull)) lValue.Add("Drawing no", DrawingNoFull); - else if (!StringUtil.IsEmpty(DrawingNoPartial)) lValue.Add("Drawing no starts", DrawingNoPartial); - if (!StringUtil.IsEmpty(DrawingIssueFull)) lValue.Add("Drawing issue", DrawingIssueFull); - else if (!StringUtil.IsEmpty(DrawingIssuePartial)) lValue.Add("Drawing issue starts", DrawingIssuePartial); - // Commodity description. - if (!StringUtil.IsEmpty(DescBriefFull)) lValue.Add("Description", DescBriefFull); - if (!StringUtil.IsEmpty(DescBriefPartial)) lValue.Add("Description starts", DescBriefPartial); - // Category. - if (Categories.Count > 0) lValue.Add("Categories", Categories.Concat(",")); - // Catalog reference. - if (!StringUtil.IsEmpty(CatalogRefPartial)) lValue.Add("Catalog ref start", CatalogRefPartial); - // Codings. - if (!StringUtil.IsEmpty(RangeCode)) lValue.Add("Range code", RangeCode); - if (!StringUtil.IsEmpty(ColourCode)) lValue.Add("Colour code", ColourCode); - if (!StringUtil.IsEmpty(SourceCode)) lValue.Add("Source code", SourceCode); - if (!StringUtil.IsEmpty(SupplyMethodCode)) lValue.Add("SupplyMethod code", SupplyMethodCode); - if (!StringUtil.IsEmpty(HandlingCode)) lValue.Add("Handling code", HandlingCode); - if (!StringUtil.IsEmpty(DeliveryCode)) lValue.Add("Delivery code", DeliveryCode); - if (!StringUtil.IsEmpty(MaterialCode)) lValue.Add(sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material") + " code", MaterialCode); - if (!StringUtil.IsEmpty(FinishCode)) lValue.Add(sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish") + " code", FinishCode); - if (!StringUtil.IsEmpty(PromotionCode)) lValue.Add(sessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion") + " code", PromotionCode); - // Price sets. - if (PriceSetIdsIncluded.Count > 0) lValue.Add("Included in price sets", PriceSetIdsIncluded.Count.ToString()); - if (PriceSetIdsExcluded.Count > 0) lValue.Add("Excluded from price sets", PriceSetIdsExcluded.Count.ToString()); - // Customer. - if (SysId.IsValid(AssociationIdCustomer)) - { - if (accountMgr == null) accountMgr = SbmGlobals.System.CreateAccountMgr(userContext); - lValue.Add("Customer", accountMgr.GetAssociationTargetName(AssociationIdCustomer)); - } - if (!StringUtil.IsEmpty(CustomerName)) lValue.Add("Customer name starts", CustomerName); - if (!StringUtil.IsEmpty(SupplierName)) lValue.Add("Supplier name starts", SupplierName); - if (!StringUtil.IsEmpty(SalesOrderRef)) lValue.Add("SO reference starts", SalesOrderRef); - if (!StringUtil.IsEmpty(PurchaseOrderRef)) lValue.Add("PO reference starts", PurchaseOrderRef); + List values = new List(); + // Commodities to exclude. + if (IdsIncluded.Count > 0) values.Add("Included commodities", IdsIncluded.Count.ToString()); + if (IdsExcluded.Count > 0) values.Add("Excluded commodities", IdsExcluded.Count.ToString()); + // Commodity type. + if (CommodityType > 0) values.Add("Type", SbmSystem.GetSystemCodes(Sbm.SystemCode.CommodityType).GetDescForType(CommodityType, CommodityType.ToString())); + else if (CommodityType == Sbm.CommodityType.AnyProduct) values.Add("Type", "Any product"); + if (StockItemsOnly) values.Add("Stock items only", "True"); + // Commodity code. + if (!StringUtil.IsEmpty(CodeFull)) values.Add("Code", CodeFull); + else if (!StringUtil.IsEmpty(CodePartial)) values.Add("Code contains", CodePartial); + // Drawing number. + if (!StringUtil.IsEmpty(DrawingNoFull)) values.Add("Drawing no", DrawingNoFull); + else if (!StringUtil.IsEmpty(DrawingNoPartial)) values.Add("Drawing no starts", DrawingNoPartial); + if (!StringUtil.IsEmpty(DrawingIssueFull)) values.Add("Drawing issue", DrawingIssueFull); + else if (!StringUtil.IsEmpty(DrawingIssuePartial)) values.Add("Drawing issue starts", DrawingIssuePartial); + // Commodity description. + if (!StringUtil.IsEmpty(DescBriefFull)) values.Add("Description", DescBriefFull); + if (!StringUtil.IsEmpty(DescBriefPartial)) values.Add("Description starts", DescBriefPartial); + // Category. + if (Categories.Count > 0) values.Add("Categories", Categories.Concat(",")); + // Catalog reference. + if (!StringUtil.IsEmpty(CatalogRefPartial)) values.Add("Catalog ref start", CatalogRefPartial); + // Codings. + if (!StringUtil.IsEmpty(RangeCode)) values.Add("Range code", RangeCode); + if (!StringUtil.IsEmpty(ColourCode)) values.Add("Colour code", ColourCode); + if (!StringUtil.IsEmpty(SourceCode)) values.Add("Source code", SourceCode); + if (!StringUtil.IsEmpty(SupplyMethodCode)) values.Add("SupplyMethod code", SupplyMethodCode); + if (!StringUtil.IsEmpty(HandlingCode)) values.Add("Handling code", HandlingCode); + if (!StringUtil.IsEmpty(DeliveryCode)) values.Add("Delivery code", DeliveryCode); + if (!StringUtil.IsEmpty(MaterialCode)) values.Add(internals.SessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "Material") + " code", MaterialCode); + if (!StringUtil.IsEmpty(FinishCode)) values.Add(internals.SessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "Finish") + " code", FinishCode); + if (!StringUtil.IsEmpty(PromotionCode)) values.Add(internals.SessionConsole.GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "Promotion") + " code", PromotionCode); + // Price sets. + if (PriceSetIdsIncluded.Count > 0) values.Add("Included in price sets", PriceSetIdsIncluded.Count.ToString()); + if (PriceSetIdsExcluded.Count > 0) values.Add("Excluded from price sets", PriceSetIdsExcluded.Count.ToString()); + // Customer. + if (SysId.IsValid(AssociationIdCustomer)) + values.Add("Customer", internals.AccountMgr.GetAssociationTargetName(AssociationIdCustomer)); + if (!StringUtil.IsEmpty(CustomerName)) values.Add("Customer name starts", CustomerName); + if (!StringUtil.IsEmpty(SupplierName)) values.Add("Supplier name starts", SupplierName); + if (!StringUtil.IsEmpty(SalesOrderRef)) values.Add("SO reference starts", SalesOrderRef); + if (!StringUtil.IsEmpty(PurchaseOrderRef)) values.Add("PO reference starts", PurchaseOrderRef); - // Transaction. - if (!StringUtil.IsEmpty(OrderRef)) lValue.Add("Transaction reference", OrderRef); + // Transaction. + if (!StringUtil.IsEmpty(OrderRef)) values.Add("Transaction reference", OrderRef); - // Stock: - if (StockLocationFilter == Sbm.LocationFilter.Sales) lValue.Add("Stock location", "Sales locations only"); - else if (StockLocationFilter == Sbm.LocationFilter.Calc) lValue.Add("Stock location", "Calculated locations only"); - else if (StockLocationFilter == Sbm.LocationFilter.All) lValue.Add("Stock location", "All locations"); - if (SysId.IsValid(LocationIdStock)) lValue.Add("Stock location", SysId.ToString(LocationIdStock)); - if (DateUtil.IsValid(StockSoldFrom)) lValue.Add("Stock sold from", DateUtil.Format(StockSoldFrom, "d-MMM-yyyy")); - if (DateUtil.IsValid(StockSoldTo)) lValue.Add("Stock sold to", DateUtil.Format(StockSoldTo, "d-MMM-yyyy")); - if (DateUtil.IsValid(ProjectedSalesFrom)) lValue.Add("Proj sales from", DateUtil.Format(ProjectedSalesFrom, "d-MMM-yyyy")); - if (DateUtil.IsValid(ProjectedSalesTo)) lValue.Add("Proj sales to", DateUtil.Format(ProjectedSalesTo, "d-MMM-yyyy")); + // Stock: + if (StockLocationFilter == Sbm.LocationFilter.Sales) values.Add("Stock location", "Sales locations only"); + else if (StockLocationFilter == Sbm.LocationFilter.Calc) values.Add("Stock location", "Calculated locations only"); + else if (StockLocationFilter == Sbm.LocationFilter.All) values.Add("Stock location", "All locations"); + if (SysId.IsValid(LocationIdStock)) values.Add("Stock location", SysId.ToString(LocationIdStock)); + if (DateUtil.IsValid(StockSoldFrom)) values.Add("Stock sold from", DateUtil.Format(StockSoldFrom, "d-MMM-yyyy")); + if (DateUtil.IsValid(StockSoldTo)) values.Add("Stock sold to", DateUtil.Format(StockSoldTo, "d-MMM-yyyy")); + if (DateUtil.IsValid(ProjectedSalesFrom)) values.Add("Proj sales from", DateUtil.Format(ProjectedSalesFrom, "d-MMM-yyyy")); + if (DateUtil.IsValid(ProjectedSalesTo)) values.Add("Proj sales to", DateUtil.Format(ProjectedSalesTo, "d-MMM-yyyy")); - if (StockLevelMin > decimal.MinValue) lValue.Add("Stock level >= ", StockLevelMin.ToString("N2")); - if (StockLevelMax > decimal.MinValue) lValue.Add("Stock level <= ", StockLevelMax.ToString("N2")); + if (StockLevelMin > decimal.MinValue) values.Add("Stock level >= ", StockLevelMin.ToString("N2")); + if (StockLevelMax > decimal.MinValue) values.Add("Stock level <= ", StockLevelMax.ToString("N2")); - // Commodities with definitions for Customer. - if (SysId.IsValid(AssociationIdCommodityCustomer)) - { - if (accountMgr == null) accountMgr = SbmGlobals.System.CreateAccountMgr(userContext); - lValue.Add("Commodity definitions for customer", accountMgr.GetAssociationTargetName(AssociationIdCommodityCustomer)); - } - if (!StringUtil.IsEmpty(AccountCodeCommodityCustomer)) - lValue.Add("Commodity definitions for customer", AccountCodeCommodityCustomer); + // Commodities with definitions for Customer. + if (SysId.IsValid(AssociationIdCommodityCustomer)) + values.Add("Commodity definitions for customer", internals.AccountMgr.GetAssociationTargetName(AssociationIdCommodityCustomer)); + if (!StringUtil.IsEmpty(AccountCodeCommodityCustomer)) + values.Add("Commodity definitions for customer", AccountCodeCommodityCustomer); - // Commodity status category. - if (StatusCat == StatusCat.Current) - lValue.Add("Status", "Current"); - } + // Commodity status category. + if (StatusCat == StatusCat.Current) + values.Add("Status", "Current"); // Portfolio: //PortfolioIdInclude; //PortfolioIdExclude; - - // Clean-up. - if (accountMgr != null) accountMgr.Dispose(); - return lValue; + return values; } } } diff --git a/SaBusMgrStandardBase/Base/Bus/SbmRequirementCosts.cs b/SaBusMgrStandardBase/Base/Bus/SbmRequirementCosts.cs index 7279ee2..03cd26f 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmRequirementCosts.cs +++ b/SaBusMgrStandardBase/Base/Bus/SbmRequirementCosts.cs @@ -98,8 +98,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus { //------------------------------------------------------------------- // Data members. - private SbmTransactionMgr transMgr = null; - private SbmDataItemMgr itemMgr = null; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Properties. @@ -140,14 +147,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus //------------------------------------------------------------------- // Construction. - public SbmRequirementCosts(ISbmUserOrganisationContext userContext) + public SbmRequirementCosts(SbmInternals internals) { - UserContext = userContext; + mbr = new DataMembers(internals); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } + protected SbmInternals Internals { get { return mbr.InternalsSupplied; } } + private ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } //------------------------------------------------------------------- // Calculation. @@ -251,7 +259,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus if (SysId.IsValid(RequirementId)) { // Refresh purchase costs from db. - if (itemMgr != null) itemMgr = SbmGlobals.System.CreateDataItemMgr(UserContext); // Configure Item Links for this requirement as the 'child' ('To') item. SbmItemLink.Params prmItemLink = new SbmItemLink.Params(); @@ -260,7 +267,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus prmItemLink.ItemIdTo = RequirementId; // Retrieve links to this requirement as a 'child' - itemLinks = itemMgr.GetItemLinkList(prmItemLink); + itemLinks = Internals.DataItemMgr.GetItemLinkList(prmItemLink); } PopulatePurchaseCosts(itemLinks); if (itemLinks == null) @@ -271,8 +278,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus public void PopulatePurchaseCosts(List itemLinks) { // SbmRequirementCosts > PopulatePurchaseCosts(itemLinks) - require database in the CreateTransactionMgr & CreateDataItemMgr? - //if (transMgr != null) transMgr = SbmGlobals.System.CreateTransactionMgr; - if (itemMgr != null) itemMgr = SbmGlobals.System.CreateDataItemMgr(UserContext); // Clear previous purchase costs. PurchaseCosts.Clear(); @@ -289,7 +294,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus if (itemLink.ItemTypeFrom != Sbm.ItemType.Requirement) continue; // Retrieve the 'Parent' requirement. - SbmRequirement requirement = transMgr.GetRequirementById(itemLink.ItemIdFrom); + SbmRequirement requirement = Internals.TransactionMgr.GetRequirementById(itemLink.ItemIdFrom); if (requirement == null) { // Calculate 'proportion' of cost to apply to this item. @@ -301,7 +306,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus prmLinkPurchase.ItemLinkType = Sbm.ItemLinkType.Requirement_AssociatedItem; prmLinkPurchase.ItemTypeFrom = Sbm.ItemType.Requirement; prmLinkPurchase.ItemIdFrom = requirement.Id; - List LinkPurchases = itemMgr.GetItemLinkList(prmLinkPurchase); + List LinkPurchases = Internals.DataItemMgr.GetItemLinkList(prmLinkPurchase); if (LinkPurchases != null && LinkPurchases.Count > 0) { // Split cost equally between the associated items. diff --git a/SaBusMgrStandardBase/Base/Bus/SbmTransaction.cs b/SaBusMgrStandardBase/Base/Bus/SbmTransaction.cs index 350c18f..f984b8f 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmTransaction.cs +++ b/SaBusMgrStandardBase/Base/Bus/SbmTransaction.cs @@ -8,6 +8,7 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Linq; +using System.Transactions; namespace Sarand.BusinessMgr.Net.Standard.Base.Bus { @@ -1000,31 +1001,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus return false; } - //------------------------------------------------------------------- - public DateTime GetTaxEffectiveDate() - { - return GetTaxEffectiveDate(UserContext, TransactionType, Status, Raised, InProgress, Closed); - } - public static DateTime GetTaxEffectiveDate(ISbmUserOrganisationContext userContext, Sbm.TransactionType transactionType, SaStatus status, DateTime raised, DateTime inProgress, DateTime closed) - { - // Original thinking was that the status would have an effect on the tax point. - SbmTransaction.StatusCat transactionStatusCat = GetCategoryForStatus(status); - - // Nov-08 Current thinking is that the only differences is whether the 'In Progress' date has been specified and whether that should be used in preference to the 'Raised' date. - if (DateUtil.IsValid(inProgress) && (transactionStatusCat == SbmTransaction.StatusCat.Open || transactionStatusCat == SbmTransaction.StatusCat.Closed)) - { - using (SbmSessionConsole sessionConsole = SbmGlobals.System.CreateSessionConsole(userContext)) - { - if (sessionConsole != null && sessionConsole.UseInProgressTaxDateAsTaxPoint(transactionType)) - return inProgress; - } - } - // Otherwise, use 'Raised' date. - if (DateUtil.IsValid(raised)) - return raised; - return DateTime.Today; - } - //------------------------------------------------------------------- public bool RefreshTotals(List requirements) { @@ -1070,7 +1046,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus TimeEst = newTimeEst; TimeAct = newTimeAct; } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -1111,7 +1087,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -1148,7 +1124,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -1167,7 +1143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus if (!DateUtil.IsValid(Closed)) Closed = DateTime.Today; } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-QuickBooks.cs b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-QuickBooks.cs similarity index 98% rename from SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-QuickBooks.cs rename to SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-QuickBooks.cs index b385733..664e557 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-QuickBooks.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-QuickBooks.cs @@ -1,4 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.Net.Standard.Accounts.QuickBooks.App; using Sarand.Net.Standard.Base.Bus; @@ -9,12 +10,12 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -namespace Sarand.BusinessMgr.Net.Standard.Base.Bus +namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { //======================================================================= // A c c o u n t s - Q u i c k B o o k s //======================================================================= - partial class SbmAccountsDfn + partial class SbmAccountsConsole { //------------------------------------------------------------------- /// QuickBooks Interface Item Options. @@ -155,9 +156,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } private class QBooksParams { - public QBooksParams(ISbmUserOrganisationContext userContext) + public QBooksParams(SbmInternals internals) { + this.Internals = internals; } + private SbmInternals Internals { get; } // QuickBooks interface definitions. public SaInterface.Data dfnInt_QBooks { get; set; } = new SaInterface.Data(); public SysId InterfaceId { get { return dfnInt_QBooks != null ? dfnInt_QBooks.Id : new SysId(); } } @@ -324,7 +327,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus itemOption.DisplayOptions.Group = OptionGroup_Data; itemOption.Name = sageStatics.InterfaceOptions.GetCodeForType(QuickBooksInterfaceOption.TaxCodeColumn); itemOption.DisplayOptions.Caption = sageStatics.InterfaceOptions.GetDescForType(QuickBooksInterfaceOption.TaxCodeColumn); - itemOption.DisplayOptions.Values.AddRange(internals.GetSystemCodes(Sbm.SystemCode.OrgOption_TaxCodeColumn)); + itemOption.DisplayOptions.Values.AddRange(Internals.GetSystemCodes(Sbm.SystemCode.OrgOption_TaxCodeColumn)); //itemOption.DefaultValue = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_CodeAlt1); interfaceItemOptionDfns.Add(itemOption); diff --git a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-Sage.cs b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-Sage.cs similarity index 92% rename from SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-Sage.cs rename to SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-Sage.cs index dd9b92e..c58d3b1 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn-Sage.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole-Sage.cs @@ -1,4 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.Net.Standard.Accounts.Sage.App; using Sarand.Net.Standard.Base.Bus; @@ -10,12 +11,12 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -namespace Sarand.BusinessMgr.Net.Standard.Base.Bus +namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { //======================================================================= // A c c o u n t s - S a g e //======================================================================= - partial class SbmAccountsDfn + partial class SbmAccountsConsole { //------------------------------------------------------------------- /// Sage Interface Item Options. @@ -175,31 +176,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } private class SageParams { - public SageParams(ISbmUserOrganisationContext userContext, SbmInternals internals) + public SageParams(SbmInternals internals) { - UserContext = userContext; - this.internals = internals; + this.Internals = internals; // Data types. - // NB Don't change the codes - these are used on the database: - DataTypes.Add(Sage.ItemType.Customer, "CUST", "Customers"); - DataTypes.Add(Sage.ItemType.Supplier, "SUPP", "Suppliers"); - DataTypes.Add(Sage.ItemType.Product, "PROD", "Products"); - DataTypes.Add(Sage.ItemType.PriceList, "PRCLST", "Pricing"); - DataTypes.Add(Sage.ItemType.StockLevel, "STKLVL", "Stock levels"); - DataTypes.Add(Sage.ItemType.StockTake, "STKTAK", "Stock takes"); - DataTypes.Add(Sage.ItemType.StockBom, "STKBOM", "Stock BOM"); - DataTypes.Add(Sage.ItemType.StockCategory, "STKCAT", "Stock categories"); - DataTypes.Add(Sage.ItemType.StockTransfer, "STKTRA", "Stock transfers"); - DataTypes.Add(Sage.ItemType.PurchaseOrder, "PURO", "Purchase orders"); - DataTypes.Add(Sage.ItemType.PopItemAllocation, "PURALL", "POP allocations"); - DataTypes.Add(Sage.ItemType.SalesOrder, "SALO", "Sales orders"); - DataTypes.Add(Sage.ItemType.SopItemAllocation, "SALALL", "SOP allocations"); - DataTypes.Add(Sage.ItemType.Invoice_Product, "INVPRD", "Product invoice"); - DataTypes.Add(Sage.ItemType.Invoice_Product_Allocation, "PRIALL", "Product invoice allocation"); - DataTypes.Add(Sage.ItemType.Invoice_SalesOrder, "INVSAL", "Sales order invoice"); - DataTypes.Add(Sage.ItemType.Invoice_Service, "INVSRV", "Service invoice"); - DataTypes.Add(Sage.ItemType.Invoice_Service_Allocation, "SRIALL", "Service invoice allocation"); - DataTypes.Add(Sage.ItemType.InvoiceItem, "INVITM", "Invoice item"); + DataTypes.AddRange(SageConsole.ItemTypeCodes); // Item types - import. Contexts_ImportItemType.Add(DataTypes.GetCodeDescForType(Sage.ItemType.Customer)); Contexts_ImportItemType.Add(DataTypes.GetCodeDescForType(Sage.ItemType.Supplier)); @@ -249,8 +230,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus SalesOrderColumnSources.Add(SageDbDfn.GetColumnName(SageDbDfn.ColumnIdx.SalesOrder_Notes1), "Notes line 1"); } //--------------------------------------------------------------- - private ISbmUserOrganisationContext UserContext { get; } - private readonly SbmInternals internals; + private SbmInternals Internals { get; } // Sage interface definitions. public SaInterface.Data dfnInt_Sage { get; set; } = new SaInterface.Data(); public SysId InterfaceId { get { return dfnInt_Sage != null ? dfnInt_Sage.Id : new SysId(); } } @@ -281,9 +261,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus { // Only populated when needed as reads Code Types from db. contexts_StockCategoryAction = new List(); - using (SaCodeTypeConsole codeTypeConsole = SbmGlobals.System.CreateCodeTypeConsole(UserContext)) - { - codes_StockCategoryAction = codeTypeConsole.GetCodeDescsForCodeType(SbmSystem.GetCodeTypeCode(Sbm.ApplCodeType.CommodityCategory)); + codes_StockCategoryAction = Internals.CodeTypeConsole.GetCodeDescsForCodeType(SbmSystem.GetCodeTypeCode(Sbm.ApplCodeType.CommodityCategory)); foreach (CodeDesc commodityCategory in codes_StockCategoryAction) { // Ignore categories where code is same as description. @@ -291,7 +269,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus if (commodityCategory.Code.EqualsCI(commodityCategory.Desc)) continue; contexts_StockCategoryAction.Add(commodityCategory); } - } } return new List(contexts_StockCategoryAction); } @@ -314,7 +291,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus prmLocation.LocationCategory = Sbm.LocationCategory.Stock; prmLocation.RestrictToSalesStock = true; prmLocation.StatusCat = SbmLocation.StatusCat.ActiveOnly; - foreach (SbmLocation location in internals.StockMgr.GetLocationList(prmLocation)) + foreach (SbmLocation location in Internals.StockMgr.GetLocationList(prmLocation)) salesLocations.Add(SysId.ToString(location.Id), location.Name); } return new List(salesLocations); @@ -329,8 +306,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus // Data members. // Interfce item option contexts. private static readonly SageStatics sageStatics = new SageStatics(); - private readonly SageParams sageParams; - // ToDo Duplicate of SageParams.DataTypes + private SageParams sageParams { get; } + // Sage data types. private static List DataTypes_Sage { get; } = new List(); //------------------------------------------------------------------- @@ -360,11 +337,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } public bool GetSageImportOption(Sage.ItemType itemType) { - return StringUtil.ToBool(GetSageOptionValue(SageInterfaceOption.ImportProcessItemType, SbmAccountsDfn.GetCodeForSageItemType(itemType))); + return StringUtil.ToBool(GetSageOptionValue(SageInterfaceOption.ImportProcessItemType, SbmAccountsConsole.GetCodeForSageItemType(itemType))); } public bool GetSageExportOption(Sage.ItemType itemType) { - return StringUtil.ToBool(GetSageOptionValue(SageInterfaceOption.ExportProcessItemType, SbmAccountsDfn.GetCodeForSageItemType(itemType))); + return StringUtil.ToBool(GetSageOptionValue(SageInterfaceOption.ExportProcessItemType, SbmAccountsConsole.GetCodeForSageItemType(itemType))); } //------------------------------------------------------------------- @@ -579,7 +556,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus itemOption.DisplayOptions.Group = OptionGroup_Stock; itemOption.Name = sageStatics.InterfaceOptions.GetCodeForType(SageInterfaceOption.TaxCodeColumn); itemOption.DisplayOptions.Caption = sageStatics.InterfaceOptions.GetDescForType(SageInterfaceOption.TaxCodeColumn); - itemOption.DisplayOptions.Values.AddRange(internals.GetSystemCodes(Sbm.SystemCode.OrgOption_TaxCodeColumn)); + itemOption.DisplayOptions.Values.AddRange(Internals.GetSystemCodes(Sbm.SystemCode.OrgOption_TaxCodeColumn)); //itemOption.DefaultValue = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.TaxCode_CodeAlt1); interfaceItemOptionDfns.Add(itemOption); diff --git a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn.cs b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole.cs similarity index 92% rename from SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn.cs rename to SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole.cs index eed3056..b9bd4a0 100644 --- a/SaBusMgrStandardBase/Base/Bus/SbmAccountsDfn.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmAccountsConsole.cs @@ -13,10 +13,10 @@ using System; using System.Collections.Generic; using System.IO; -namespace Sarand.BusinessMgr.Net.Standard.Base.Bus +namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { //======================================================================= - public partial class SbmAccountsDfn : SacsHierarchyItem + public partial class SbmAccountsConsole : SacsHierarchyItem { //------------------------------------------------------------------- // Configuration. @@ -48,13 +48,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus private static String OptionGroup_Data { get; } = "Data"; private static String OptionGroup_Stock { get; } = "Stock"; private static String OptionGroup_Process { get; } = "Process"; - private readonly SbmInternals internals; - private readonly List interfaceOptions = new List(); - private readonly SaInterfaceItemCache itemCache = new SaInterfaceItemCache(); + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; set; } + public List InterfaceOptions { get; } = new List(); + public SaInterfaceItemCache ItemCache { get; } = new SaInterfaceItemCache(); + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Static initialisation. - static SbmAccountsDfn() + static SbmAccountsConsole() { InitialiseStatics_SageLine50(); InitialiseStatics_QuickBooks(); @@ -62,29 +70,28 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus //------------------------------------------------------------------- // Construction. - public SbmAccountsDfn(ISbmUserOrganisationContext userContext) + public SbmAccountsConsole(SbmInternals internalsSupplied) { - UserContext = userContext; - internals = new SbmInternals(userContext); - sageParams = new SageParams(userContext, internals); - qbkParams = new QBooksParams(userContext); - interfaceOptions = internals.GetSystemCodes(Sbm.SystemCode.InterfaceOption); + mbr = new DataMembers(internalsSupplied); + sageParams = new SageParams(Internals); + qbkParams = new QBooksParams(Internals); + mbr.InterfaceOptions.AddRange(Internals.GetSystemCodes(Sbm.SystemCode.InterfaceOption)); Reset(); } protected override void Dispose(bool disposing) { if (disposing) { - internals.Dispose(); } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } - protected SaInterfaceConsole InterfaceConsole { get { return internals.InterfaceConsole; } } - protected SaItemOptionConsole ItemOptionConsole { get { return internals.ItemOptionConsole; } } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } + public ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + protected SaInterfaceConsole InterfaceConsole { get { return Internals.InterfaceConsole; } } + protected SaItemOptionConsole ItemOptionConsole { get { return Internals.ItemOptionConsole; } } //------------------------------------------------------------------- // I n t e r f a c e I t e m O p t i o n s @@ -158,7 +165,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } else if (accountsType == Sbm.InterfaceType_Accounts.QuickBooks) { - String hostPcs = GetOptionValue(accountsType, interfaceOptions.GetCodeForType(Sbm.InterfaceOption.HostPc), ""); + String hostPcs = GetOptionValue(accountsType, mbr.InterfaceOptions.GetCodeForType(Sbm.InterfaceOption.HostPc), ""); if (StringUtil.IsEmpty(hostPcs) || new List(hostPcs.Split(',')).ContainsCI(computerName)) return true; } @@ -209,14 +216,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus public void PopulateItemCache(ItemId itemId, bool force = false) { if (!ItemId.IsValid(itemId)) return; - if (force || (short)itemCache.itemType != itemId.Type || itemCache.idItem != itemId.Id) + if (force || (short)mbr.ItemCache.itemType != itemId.Type || mbr.ItemCache.idItem != itemId.Id) { - itemCache.itemType = (Sbm.ItemType)itemId.Type; - itemCache.idItem = itemId.Id; - itemCache.importedFromSage = false; - itemCache.importedFromQBooks = false; - itemCache.exportedFromSage = false; - itemCache.exportedFromQBooks = false; + mbr.ItemCache.itemType = (Sbm.ItemType)itemId.Type; + mbr.ItemCache.idItem = itemId.Id; + mbr.ItemCache.importedFromSage = false; + mbr.ItemCache.importedFromQBooks = false; + mbr.ItemCache.exportedFromSage = false; + mbr.ItemCache.exportedFromQBooks = false; if (InterfaceConsole != null) { // Retrieve the 'Sage' interface data item for this item. @@ -226,8 +233,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus List plIntItm = InterfaceConsole.GetInterfaceDataItemsByItem(sageParams.InterfaceId, SaInterfaceProcessDirection.Unknown, itemId); foreach (SaInterfaceDataItem pIntItm in plIntItm) { - if (pIntItm.Direction == SaInterfaceProcessDirection.Inbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) itemCache.importedFromSage = true; - else if (pIntItm.Direction == SaInterfaceProcessDirection.Outbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) itemCache.exportedFromSage = true; + if (pIntItm.Direction == SaInterfaceProcessDirection.Inbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) mbr.ItemCache.importedFromSage = true; + else if (pIntItm.Direction == SaInterfaceProcessDirection.Outbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) mbr.ItemCache.exportedFromSage = true; } } // Retrieve the 'QuickBooks' interface data item for this item. @@ -237,8 +244,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus List plIntItm = InterfaceConsole.GetInterfaceDataItemsByItem(qbkParams.InterfaceId, SaInterfaceProcessDirection.Unknown, itemId); foreach (SaInterfaceDataItem pIntItm in plIntItm) { - if (pIntItm.Direction == SaInterfaceProcessDirection.Inbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) itemCache.importedFromQBooks = true; - else if (pIntItm.Direction == SaInterfaceProcessDirection.Outbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) itemCache.exportedFromQBooks = true; + if (pIntItm.Direction == SaInterfaceProcessDirection.Inbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) mbr.ItemCache.importedFromQBooks = true; + else if (pIntItm.Direction == SaInterfaceProcessDirection.Outbound || pIntItm.Direction == SaInterfaceProcessDirection.Both) mbr.ItemCache.exportedFromQBooks = true; } } } @@ -250,16 +257,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus if (!ItemId.IsValid(itemId)) return false; PopulateItemCache(itemId); - if ((short)itemCache.itemType == itemId.Type && itemCache.idItem == itemId.Id) + if ((short)mbr.ItemCache.itemType == itemId.Type && mbr.ItemCache.idItem == itemId.Id) { switch (accounts) { case Sbm.InterfaceType_Accounts.Unknown: - return (itemCache.importedFromSage || itemCache.importedFromQBooks); + return (mbr.ItemCache.importedFromSage || mbr.ItemCache.importedFromQBooks); case Sbm.InterfaceType_Accounts.SageLine50: - return itemCache.importedFromSage; + return mbr.ItemCache.importedFromSage; case Sbm.InterfaceType_Accounts.QuickBooks: - return itemCache.importedFromQBooks; + return mbr.ItemCache.importedFromQBooks; } } return false; @@ -279,16 +286,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus { if (!ItemId.IsValid(itemId)) return false; PopulateItemCache(itemId); - if ((short)itemCache.itemType == itemId.Type && itemCache.idItem == itemId.Id) + if ((short)mbr.ItemCache.itemType == itemId.Type && mbr.ItemCache.idItem == itemId.Id) { switch (accounts) { case Sbm.InterfaceType_Accounts.Unknown: - return (itemCache.exportedFromSage || itemCache.exportedFromQBooks); + return (mbr.ItemCache.exportedFromSage || mbr.ItemCache.exportedFromQBooks); case Sbm.InterfaceType_Accounts.SageLine50: - return itemCache.exportedFromSage; + return mbr.ItemCache.exportedFromSage; case Sbm.InterfaceType_Accounts.QuickBooks: - return itemCache.exportedFromQBooks; + return mbr.ItemCache.exportedFromQBooks; } } return false; @@ -496,7 +503,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } if (IsUsingQBooksInterface()) { - String flag = interfaceOptions.GetCodeForType(Sbm.InterfaceOption.Flag); + String flag = mbr.InterfaceOptions.GetCodeForType(Sbm.InterfaceOption.Flag); return GetOptionValue(Sbm.InterfaceType_Accounts.QuickBooks, flag, qbkStatics.OptionContexts_Flag.GetCodeForType(QBooksFlag.UseLocalCustomerPricing)).ToBool(); } return true; @@ -511,7 +518,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus } if (IsUsingQBooksInterface()) { - String flag = interfaceOptions.GetCodeForType(Sbm.InterfaceOption.Flag); + String flag = mbr.InterfaceOptions.GetCodeForType(Sbm.InterfaceOption.Flag); return GetOptionValue(Sbm.InterfaceType_Accounts.QuickBooks, flag, qbkStatics.OptionContexts_Flag.GetCodeForType(QBooksFlag.UseLocalSupplierPricing)).ToBool(); } return true; diff --git a/SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole_Base.cs b/SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole.cs similarity index 54% rename from SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole_Base.cs rename to SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole.cs index 8f8076b..17f099e 100644 --- a/SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole_Base.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmCoreInstanceConsole.cs @@ -1,8 +1,11 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.BusinessMgr.Net.Standard.Base.Data; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Security; @@ -12,16 +15,19 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData; namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { + //======================================================================= /// - /// Utilitiy function relating to a core BusinessMgr database instance. + /// Utilitiy functions relating to a core BusinessMgr database instance. /// For instance: + /// - Verifying repository status. /// - Initialisation of new repository. /// - Bringing static (tax codes etc) and reference data up to date. /// - public abstract class SbmCoreInstanceConsole_Base : SaErrorStateItem + public abstract class SbmCoreInstanceConsole : SaErrorStateItem, ISbmCoreInstanceConsole { //------------------------------------------------------------------- // Definitions. @@ -38,43 +44,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles public const String col_UserId = "UserId"; public const String col_UserCode = "UserCode"; - /// - /// Organisation and User info for Repository initialisation. - /// - public class RepositoryInitialisationData - { - public class UserData - { - public SysId AffiliateId { get; set; } - public String FirstName { get; set; } - public String LastName { get; set; } - public String Email { get; set; } - public SysId SecurityItemId { get; set; } - public String Code { get; set; } - public String Password { get; set; } - public bool PasswordSet { get; set; } - } - public UserData User { get; private set; } = new UserData(); - public void ClearUser() { User = new UserData(); } - public class OrganisationData - { - public String Name { get; set; } - public String VatReg { get; set; } - public String CompanyNo { get; set; } - public String Website { get; set; } - public SysId AffiliateId { get; set; } - public SysId AssociationId { get; set; } - } - public OrganisationData Organisation { get; private set; } = new OrganisationData(); - public void ClearOrganisation() { Organisation = new OrganisationData(); } - } - //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- // Construction. - protected SbmCoreInstanceConsole_Base() + protected SbmCoreInstanceConsole() { } protected override void Dispose(bool disposing) @@ -89,9 +64,10 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles // Properties. public String SecurityGroupCode_Super { get; } = SaSecurityConsole.GroupCode_Super; // Core instance. - public abstract ISacsDatabase Database_Core { get; } - public abstract SbmInternals Internals_Core { get; } - public abstract DbUpdateInfo DbUpdateInfo_Core { get; } + public abstract SbmInternals Internals { get; } + public SaSecurityConsole SecurityConsole { get { return Internals.SecurityConsole; } } + public ISacsDatabase Database { get { return Internals.BusMgrDatabase; } } + public DbUpdateInfo DbUpdateInfo { get { return Internals.DbUpdateInfo; } } //------------------------------------------------------------------- // Utilities. @@ -101,8 +77,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles /// Is repository database valid. /// - Contains core tables (Affiliate, Association, Commodity etc). /// - /// - /// public bool IsRepositoryValid() { ClearErrorState(); @@ -110,21 +84,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles String sql = $"Select {col_Name} From sys.tables"; try { - using (DbResultSet resultSet = Database_Core.ExecuteQuery(sql)) + HashSet tablesFound = new HashSet(); + using (DbResultSet resultSet = Database.ExecuteQuery(sql)) { if (resultSet != null) { - HashSet tablesFound = new HashSet(); + // Check for query error. + if (resultSet.HasErrorState()) + return SetErrorState($"{resultSet.ErrorStateMessage.TrimEnd('.')}."); + // Extract list of tables found. while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { NamedValue.Map values = resultSet.GetRecordValues(); tablesFound.Add(values.GetString(col_Name)); } - HashSet tablesNotFound = new HashSet(tablesExpected.Where(item => !tablesFound.ContainsCI(item))); - if (tablesNotFound.Any()) - return SetErrorState($"Core tables not found: {String.Join(", ", tablesNotFound)}."); } } + HashSet tablesNotFound = new HashSet(tablesExpected.Where(item => !tablesFound.ContainsCI(item))); + if (tablesNotFound.Any()) + return SetErrorState($"Core tables not found: {String.Join(", ", tablesNotFound)}."); } catch (Exception exc) { @@ -144,7 +122,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles public bool IsRepositoryInitialised() { ClearErrorState(); - RepositoryInitialisationData initData = new RepositoryInitialisationData(); + SbmRepositoryInitialisationData initData = new SbmRepositoryInitialisationData(); try { // Query first internal association. @@ -155,7 +133,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles $"Left Join Affiliate aff On aff.Id=ass.AffIdOwner And aff.Id=ass.AffIdTarget And aff.Type<>{(int)Sbm.AffiliateType.Individual}", $"Where ass.Type={(int)Sbm.AssociationType.Internal};" }; - using (DbResultSet resultSet = Database_Core.ExecuteQuery(String.Join(" ", sql))) + using (DbResultSet resultSet = Database.ExecuteQuery(String.Join(" ", sql))) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { @@ -185,7 +163,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles $"Left Join SaSecItem seci On seci.Id=aff.UserId", $"Where ass.AffIdOwner={SysId.ToLong(initData.Organisation.AffiliateId)} And ass.Type={(int)Sbm.AssociationType.Member};" }; - using (DbResultSet resultSet = Database_Core.ExecuteQuery(String.Join(" ", sql))) + using (DbResultSet resultSet = Database.ExecuteQuery(String.Join(" ", sql))) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { @@ -206,7 +184,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles return SetErrorState("User security item not found."); } - if (Internals_Core.SecurityConsole.RequiresPopulation()) + if (SecurityConsole.RequiresPopulation()) return SetErrorState("Security Database requires population."); } catch (Exception exc) @@ -221,51 +199,54 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles //------------------------------------------------------------------- /// /// Validate repository initialisation data. + /// - Organisation properties. + /// - User properties. + /// - User security properties. /// - public bool ValidateRepositoryInitialisionData(RepositoryInitialisationData initData) + public bool ValidateRepositoryInitialisionData(SbmRepositoryInitialisationData initData) { ClearErrorState(); // Organisation name. if (StringUtil.IsBlank(initData.Organisation.Name)) return SetErrorState("Organisation name must be supplied."); - if ((ulong)StringUtil.GetLength(initData.Organisation.Name) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Name)) + if ((ulong)StringUtil.GetLength(initData.Organisation.Name) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Name)) return SetErrorState("Organisation name exceeds max chars."); // Organisation VAT reg. - if ((ulong)StringUtil.GetLength(initData.Organisation.VatReg) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_VatReg)) + if ((ulong)StringUtil.GetLength(initData.Organisation.VatReg) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_VatReg)) return SetErrorState("Company VAT reg exceeds max chars."); // Organisation Company Number. - if ((ulong)StringUtil.GetLength(initData.Organisation.CompanyNo) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo)) + if ((ulong)StringUtil.GetLength(initData.Organisation.CompanyNo) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo)) return SetErrorState("Company number exceeds max chars."); // Organisation Company Number. - if ((ulong)StringUtil.GetLength(initData.Organisation.Website) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Website)) + if ((ulong)StringUtil.GetLength(initData.Organisation.Website) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Website)) return SetErrorState("Company website address exceeds max chars."); // User first name. if (StringUtil.IsBlank(initData.User.FirstName)) return SetErrorState("User first name must be supplied."); - if ((ulong)StringUtil.GetLength(initData.User.FirstName) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)) + if ((ulong)StringUtil.GetLength(initData.User.FirstName) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)) return SetErrorState("User first name exceeds max chars."); // User last name. if (StringUtil.IsBlank(initData.User.LastName)) return SetErrorState("User last name must be supplied."); - if ((ulong)StringUtil.GetLength(initData.User.LastName) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)) + if ((ulong)StringUtil.GetLength(initData.User.LastName) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)) return SetErrorState("User last name exceeds max chars."); // User email. if (StringUtil.IsBlank(initData.User.Email)) return SetErrorState("User email must be supplied."); - if ((ulong)StringUtil.GetLength(initData.User.Email) > SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Email) || (ulong)StringUtil.GetLength(initData.User.Email) > SaSecurityDbDfn.GetColTextLen(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress)) + if ((ulong)StringUtil.GetLength(initData.User.Email) > Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Email) || (ulong)StringUtil.GetLength(initData.User.Email) > Internals.GetColTextLen(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress)) return SetErrorState("User email exceeds max chars."); // User code. if (StringUtil.IsBlank(initData.User.Code)) return SetErrorState("User code must be supplied."); - if ((ulong)StringUtil.GetLength(initData.User.Code) > SaSecurityDbDfn.GetColTextLen(SaSecurityDbDfn.ColumnIdx.SaSecItem_Code)) + if ((ulong)StringUtil.GetLength(initData.User.Code) > Internals.GetColTextLen(SaSecurityDbDfn.ColumnIdx.SaSecItem_Code)) return SetErrorState("User code exceeds max chars."); // 'Super' security group. @@ -278,8 +259,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles //------------------------------------------------------------------- /// /// Initialise repository. + /// - Organisation contact. + /// - Internal association. + /// - Security item and 'Super' group. + /// - User contact. + /// - User member association. /// - public bool InitialiseRepository(RepositoryInitialisationData initData) + public bool InitialiseRepository(SbmRepositoryInitialisationData initData) { ClearErrorState(); if (!ValidateRepositoryInitialisionData(initData)) return false; @@ -290,17 +276,17 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles // Organisation Contact. // Retrieve existing Organisation. - SbmAffiliate affiliateOrganisation = Internals_Core.AccountMgr.GetAffiliateById(initData.Organisation.AffiliateId); + SbmAffiliate affiliateOrganisation = Internals.AccountMgr.GetAffiliateById(initData.Organisation.AffiliateId); if (affiliateOrganisation == null && SysId.IsValid(initData.Organisation.AffiliateId)) return SetErrorState("Identified Organisation Contact not found."); if (affiliateOrganisation != null && !affiliateOrganisation.IsOrganisation()) return SetErrorState("Identified Contact is not an organisation."); if (affiliateOrganisation == null) - affiliateOrganisation = Internals_Core.AccountMgr.GetAffiliateByTypeName(Sbm.AffiliateType.AnyOrganisation, initData.Organisation.Name); + affiliateOrganisation = Internals.AccountMgr.GetAffiliateByTypeName(Sbm.AffiliateType.AnyOrganisation, initData.Organisation.Name); if (affiliateOrganisation == null) { // Create new organisation. - affiliateOrganisation = Internals_Core.AccountMgr.CreateAffiliate(Sbm.AffiliateType.Commercial); + affiliateOrganisation = Internals.AccountMgr.CreateAffiliate(Sbm.AffiliateType.Commercial); } disposables.Add(affiliateOrganisation); @@ -316,20 +302,20 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles // Store Organisation Contact. if (!SysId.IsValid(affiliateOrganisation.Id)) { - if (!Internals_Core.AccountMgr.InsertAffiliate(affiliateOrganisation, DbUpdateInfo_Core)) - return SetErrorState($"Failed to insert Organisation contact - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.InsertAffiliate(affiliateOrganisation, DbUpdateInfo)) + return SetErrorState($"Failed to insert Organisation contact - {Internals.AccountMgr.ErrorStateMessage}"); } else { - if (!Internals_Core.AccountMgr.UpdateAffiliate(affiliateOrganisation, DbUpdateInfo_Core)) - return SetErrorState($"Failed to update Organisation contact - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.UpdateAffiliate(affiliateOrganisation, DbUpdateInfo)) + return SetErrorState($"Failed to update Organisation contact - {Internals.AccountMgr.ErrorStateMessage}"); } //----------------------------------------------------------- // Organisation Internal association. // Retrieve existing Internal Association for Organisation. - SbmAssociation associationInternal = Internals_Core.AccountMgr.GetAssociationByOwnerTypeTarget(affiliateOrganisation.Id, Sbm.AssociationType.Internal, affiliateOrganisation.Id); + SbmAssociation associationInternal = Internals.AccountMgr.GetInternalAssociation(affiliateOrganisation.Id); disposables.Add(associationInternal); if (associationInternal != null && SysId.IsValid(initData.Organisation.AssociationId) && !associationInternal.Id.Equals(initData.Organisation.AssociationId)) // Failed to validate existing Internal Association against supplied Association Id. @@ -337,7 +323,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles if (associationInternal == null && SysId.IsValid(initData.Organisation.AssociationId)) { // No existing Internal Association found for Organisation - retrieve specified Association. - associationInternal = Internals_Core.AccountMgr.GetAssociationById(initData.Organisation.AssociationId); + associationInternal = Internals.AccountMgr.GetAssociationById(initData.Organisation.AssociationId); if (associationInternal == null) return SetErrorState($"Failed to retrieve supplied Internal Association. Id: {initData.Organisation.AssociationId}."); disposables.Add(associationInternal); @@ -347,37 +333,34 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles return SetErrorState($"Supplied Internal Association has different Target ({associationInternal.AffiliateIdTarget}) to Organisation ({affiliateOrganisation.Id})."); } if (associationInternal == null) - associationInternal = Internals_Core.AccountMgr.CreateAssociation(affiliateOrganisation.Id, Sbm.AssociationType.Internal, affiliateOrganisation.Id); + associationInternal = Internals.AccountMgr.CreateAssociation(affiliateOrganisation.Id, Sbm.AssociationType.Internal, affiliateOrganisation.Id); disposables.Add(associationInternal); // Store Internal Association. if (!SysId.IsValid(associationInternal.Id)) { - if (!Internals_Core.AccountMgr.InsertAssociation(associationInternal, DbUpdateInfo_Core)) - return SetErrorState($"Failed to insert Internal Association for Organisation - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.InsertAssociation(associationInternal, DbUpdateInfo)) + return SetErrorState($"Failed to insert Internal Association for Organisation - {Internals.AccountMgr.ErrorStateMessage}"); } else { - if (!Internals_Core.AccountMgr.UpdateAssociation(associationInternal, DbUpdateInfo_Core)) - return SetErrorState($"Failed to update Internal Association for Organisation - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.UpdateAssociation(associationInternal, DbUpdateInfo)) + return SetErrorState($"Failed to update Internal Association for Organisation - {Internals.AccountMgr.ErrorStateMessage}"); } //----------------------------------------------------------- // Security. - // Core security console. - SaSecurityConsole securityConsole = Internals_Core.SecurityConsole; - // Initialise security data if required. - if (securityConsole.RequiresPopulation() && !securityConsole.PopulateSecurityRights(DbUpdateInfo_Core)) - return SetErrorState(securityConsole.ErrorStateMessage); + if (SecurityConsole.RequiresPopulation() && !SecurityConsole.PopulateSecurityRights(DbUpdateInfo)) + return SetErrorState(SecurityConsole.ErrorStateMessage); // User Security Item. SaSecurityItem securityItemUser = null; // Retrieve supplied Security Item. if (SysId.IsValid(initData.User.SecurityItemId)) { - securityItemUser = securityConsole.GetSecurityItemById(SaSecurity.ItemType.User, initData.User.SecurityItemId); + securityItemUser = SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, initData.User.SecurityItemId); if (securityItemUser == null) return SetErrorState($"Failed to retrieve supplied User Security Item. Id: {initData.User.SecurityItemId}."); disposables.Add(securityItemUser); @@ -387,15 +370,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles if (securityItemUser == null) { // Retrieve Security Item by code. - securityItemUser = securityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, initData.User.Code); + securityItemUser = SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, initData.User.Code); disposables.Add(securityItemUser); } if (securityItemUser == null) { // Create User Security Item. - if (!securityConsole.CreateUser(initData.User.Code, $"{initData.User.LastName}, {initData.User.FirstName}", DbUpdateInfo_Core)) - return SetErrorState($"Failed to create User Security Item - {securityConsole.ErrorStateMessage}."); - securityItemUser = securityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, initData.User.Code); + if (!SecurityConsole.CreateUser(StringUtil.OnBlank(initData.User.Code, initData.User.Email), $"{initData.User.LastName}, {initData.User.FirstName}", DbUpdateInfo)) + return SetErrorState($"Failed to create User Security Item - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); + securityItemUser = SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, initData.User.Code); if (securityItemUser == null) return SetErrorState($"Failed to retrieve User Security Item after creation. Code: {initData.User.Code}."); disposables.Add(securityItemUser); @@ -403,17 +386,17 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles // Populate User Security Item properties. securityItemUser.EmailAddress = initData.User.Email; - if (initData.User.PasswordSet) - securityConsole.SetPassword(securityItemUser, initData.User.Password); - if (!securityConsole.UpdateSecurityItem(securityItemUser, DbUpdateInfo_Core)) - return SetErrorState($"Failed to update User Security Item - {securityConsole.ErrorStateMessage}."); + if (initData.User.PasswordSet || SecurityConsole.PasswordIsBlank(securityItemUser)) + SecurityConsole.SetPassword(securityItemUser, initData.User.Password); + if (!SecurityConsole.UpdateSecurityItem(securityItemUser, DbUpdateInfo)) + return SetErrorState($"Failed to update User Security Item - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); // Assign to 'Super' Group. - SysId securityGroupIdSuper = securityConsole.GetIdForItemCode(SaSecurity.ItemType.Group, SecurityGroupCode_Super); + SysId securityGroupIdSuper = SecurityConsole.GetIdForItemCode(SaSecurity.ItemType.Group, SecurityGroupCode_Super); if (!SysId.IsValid(securityGroupIdSuper)) return SetErrorState($"Failed to identify 'Super' security group. Code: '{SecurityGroupCode_Super}'."); - if (!securityConsole.ItemsAreLinked(securityItemUser.Id, securityGroupIdSuper) && !securityConsole.AssignUserToGroup(securityItemUser.Code, SecurityGroupCode_Super, DbUpdateInfo_Core)) - return SetErrorState($"Failed to assign User Security Item to Super Group - {securityConsole.ErrorStateMessage}."); + if (!SecurityConsole.ItemsAreLinked(securityItemUser.Id, securityGroupIdSuper) && !SecurityConsole.AssignUserToGroup(securityItemUser.Code, SecurityGroupCode_Super, DbUpdateInfo)) + return SetErrorState($"Failed to assign User Security Item to Super Group - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); //----------------------------------------------------------- // User Contact. @@ -422,7 +405,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles if (SysId.IsValid(initData.User.AffiliateId)) { // Retrieve supplied User Contact. - affiliateUser = Internals_Core.AccountMgr.GetAffiliateById(initData.User.AffiliateId); + affiliateUser = Internals.AccountMgr.GetAffiliateById(initData.User.AffiliateId); if (affiliateUser == null) return SetErrorState($"Failed to retrieve User Contact. Id: {initData.User.AffiliateId}."); disposables.Add(affiliateUser); @@ -431,21 +414,21 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles if (affiliateUser == null) { // Retrieve User Contact by User Code. - affiliateUser = Internals_Core.AccountMgr.GetAffiliateByUserId(securityItemUser.Id); + affiliateUser = Internals.AccountMgr.GetAffiliateByUserId(securityItemUser.Id); disposables.Add(affiliateUser); } if (affiliateUser == null) { // Retrieve User Contact by name. - affiliateUser = Internals_Core.AccountMgr.GetIndividualByName(initData.User.FirstName, initData.User.LastName); + affiliateUser = Internals.AccountMgr.GetIndividualByName(initData.User.FirstName, initData.User.LastName); disposables.Add(affiliateUser); } if (affiliateUser == null) { // Create User Contact. - affiliateUser = Internals_Core.AccountMgr.CreateAffiliate(Sbm.AffiliateType.Individual); + affiliateUser = Internals.AccountMgr.CreateAffiliate(Sbm.AffiliateType.Individual); disposables.Add(affiliateUser); } @@ -458,37 +441,50 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles // Store User Contact. if (!SysId.IsValid(affiliateUser.Id)) { - if (!Internals_Core.AccountMgr.InsertAffiliate(affiliateUser, DbUpdateInfo_Core)) - return SetErrorState($"Failed to insert User contact - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.InsertAffiliate(affiliateUser, DbUpdateInfo)) + return SetErrorState($"Failed to insert User contact - {Internals.AccountMgr.ErrorStateMessage}"); } else { - if (!Internals_Core.AccountMgr.UpdateAffiliate(affiliateUser, DbUpdateInfo_Core)) - return SetErrorState($"Failed to update User contact - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.UpdateAffiliate(affiliateUser, DbUpdateInfo)) + return SetErrorState($"Failed to update User contact - {Internals.AccountMgr.ErrorStateMessage}"); } //----------------------------------------------------------- // User Member Association. // Attempt to retrieve existing Member Association. - SbmAssociation associationMember = Internals_Core.AccountMgr.GetAssociationByOwnerTypeTarget(affiliateOrganisation.Id, Sbm.AssociationType.Member, affiliateUser.Id); + SbmAssociation associationMember = Internals.AccountMgr.GetAssociationByOwnerTypeTarget(affiliateOrganisation.Id, Sbm.AssociationType.Member, affiliateUser.Id); if (associationMember == null) // Create Member Association. - associationMember = Internals_Core.AccountMgr.CreateAssociation(affiliateOrganisation.Id, Sbm.AssociationType.Member, affiliateUser.Id); + associationMember = Internals.AccountMgr.CreateAssociation(affiliateOrganisation.Id, Sbm.AssociationType.Member, affiliateUser.Id); disposables.Add(associationMember); + associationMember.Supervised = true; // Store User Association. if (!SysId.IsValid(associationMember.Id)) { - if (!Internals_Core.AccountMgr.InsertAssociation(associationMember, DbUpdateInfo_Core)) - return SetErrorState($"Failed to insert Member Association for User - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.InsertAssociation(associationMember, DbUpdateInfo)) + return SetErrorState($"Failed to insert Member Association for User - {Internals.AccountMgr.ErrorStateMessage}"); } else { - if (!Internals_Core.AccountMgr.UpdateAssociation(associationMember, DbUpdateInfo_Core)) - return SetErrorState($"Failed to update Member Association for User - {Internals_Core.AccountMgr.ErrorStateMessage}"); + if (!Internals.AccountMgr.UpdateAssociation(associationMember, DbUpdateInfo)) + return SetErrorState($"Failed to update Member Association for User - {Internals.AccountMgr.ErrorStateMessage}"); } + //----------------------------------------------------------- + // Populate reference data. + PopulateReferenceData(); + + //----------------------------------------------------------- + // Populate initialisation data Identifiers. + + initData.Organisation.AffiliateId = affiliateOrganisation.Id; + initData.Organisation.AssociationId = associationInternal.Id; + initData.User.AffiliateId = affiliateUser.Id; + initData.User.SecurityItemId = securityItemUser.Id; + //----------------------------------------------------------- } @@ -496,5 +492,136 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles } //------------------------------------------------------------------- + + /// + /// Add User Account. + /// + public bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount) + { + // Logic is similar to setting up User Account during repository initialisation above, except: + // - Owner must exist before user is populated. + // - User Security Item must not exist. + // - User is assigned to Security group by code rather than specifically to 'Super' group. + // - User Affiliate and Member Association must not exist. + ClearErrorState(); + + //----------------------------------------------------------- + // Owner. + if (!SysId.IsValid(userAccount.AffiliateIdOwner)) + return SetErrorState("Owner affiliate must be identified."); + SbmAffiliate affiliateOwner = Internals.AccountMgr.GetAffiliateById(userAccount.AffiliateIdOwner); + if (affiliateOwner == null) + return SetErrorState("Owner affiliate not found."); + if (affiliateOwner.Status != SaStatus.Current) + return SetErrorState("Owner affiliate is not active."); + + // Internal association. + SbmAssociation associationOwner = Internals.AccountMgr.GetInternalAssociation(userAccount.AffiliateIdOwner); + if (associationOwner == null) + return SetErrorState("Internal Association not found."); + if (associationOwner.Status != SaStatus.Current) + return SetErrorState("Internal Association is not active."); + + //----------------------------------------------------------- + // User Security Item. + String userCode = StringUtil.OnBlank(userAccount.UserCode, userAccount.Email); + + // Retrieve Security Item by code. + SaSecurityItem securityItemUser = SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, userCode); + if (securityItemUser != null) + return SetErrorState("User Security Item already exists."); + + // Create User Security Item. + if (!SecurityConsole.CreateUser(StringUtil.OnBlank(userCode), $"{userAccount.LastName}, {userAccount.FirstName}", DbUpdateInfo)) + return SetErrorState($"Failed to create User Security Item - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); + securityItemUser = SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.User, userCode); + if (securityItemUser == null) + return SetErrorState($"Failed to retrieve User Security Item after creation. Code: {userCode}."); + + // Populate User Security Item properties. + securityItemUser.EmailAddress = userAccount.Email; + SecurityConsole.SetPassword(securityItemUser, userAccount.Password); + if (!SecurityConsole.UpdateSecurityItem(securityItemUser, DbUpdateInfo)) + return SetErrorState($"Failed to update User Security Item - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); + + // Assign to Security Group. + if (!StringUtil.IsBlank(userAccount.SecurityGroupCode)) + { + SysId securityGroupId = SecurityConsole.GetIdForItemCode(SaSecurity.ItemType.Group, userAccount.SecurityGroupCode); + if (!SysId.IsValid(securityGroupId)) + return SetErrorState($"Failed to identify security group. Code: '{userAccount.SecurityGroupCode}'."); + if (!SecurityConsole.ItemsAreLinked(securityItemUser.Id, securityGroupId) && !SecurityConsole.AssignUserToGroup(securityItemUser.Code, SecurityGroupCode_Super, DbUpdateInfo)) + return SetErrorState($"Failed to assign User Security Item to Group '{userAccount.SecurityGroupCode}' - {SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); + } + + //----------------------------------------------------------- + // User Contact. + + // Retrieve User Contact by User Code. + SbmAffiliate affiliateUser = Internals.AccountMgr.GetAffiliateByUserId(securityItemUser.Id); + if (affiliateUser != null) + return SetErrorState($"User Affiliate already exists for the Security User."); + + // Retrieve User Contact by name. + affiliateUser = Internals.AccountMgr.GetIndividualByName(userAccount.FirstName, userAccount.LastName); + if (affiliateUser != null) + return SetErrorState($"User Affiliate already exists for the Security User."); + + // Create User Contact. + affiliateUser = Internals.AccountMgr.CreateAffiliate(Sbm.AffiliateType.Individual); + affiliateUser.FirstName = userAccount.FirstName; + affiliateUser.LastName = userAccount.LastName; + affiliateUser.Email = userAccount.Email; + affiliateUser.UserId = securityItemUser.Id; + + // Store User Contact. + if (!Internals.AccountMgr.InsertAffiliate(affiliateUser, DbUpdateInfo)) + return SetErrorState($"Failed to insert User contact - {Internals.AccountMgr.ErrorStateMessage}"); + + //----------------------------------------------------------- + // User Member Association. + + // Attempt to retrieve existing Member Association. + SbmAssociation associationMember = Internals.AccountMgr.GetAssociationByOwnerTypeTarget(userAccount.AffiliateIdOwner, Sbm.AssociationType.Member, affiliateUser.Id); + if (associationMember != null) + return SetErrorState($"User Member Association already exists."); + + // Create Member Association. + associationMember = Internals.AccountMgr.CreateAssociation(userAccount.AffiliateIdOwner, Sbm.AssociationType.Member, affiliateUser.Id); + associationMember.Code = userAccount.MemberCode; + associationMember.Supervised = true; + + // Store Member Association. + if (!Internals.AccountMgr.InsertAssociation(associationMember, DbUpdateInfo)) + return SetErrorState($"Failed to insert Member Association for User - {Internals.AccountMgr.ErrorStateMessage}"); + + return true; + } + + //------------------------------------------------------------------- + /// + /// POpulate reference data. + ///
- Code Types. + ///
+ public bool PopulateReferenceData() + { + ClearErrorState(); + + // Code types. + List codeTypeDfns = Internals.CodeTypeConsole.CodeTypeDefinitions; + foreach (SaCodeTypeDfn codeTypeDfn in codeTypeDfns) + { + if (Internals.CodeTypeConsole.PopulateCodeType(codeTypeDfn.Code, DbUpdateInfo)) + { + //foreach (var code in codeTypeDfn.Codes) + // Internals.CodeTypeConsole.PopulateCode(codeTypeDfn.sCode, code.Code, code.Desc); + } + } + + return OK; + } + + //------------------------------------------------------------------- } + //======================================================================= } diff --git a/SaBusMgrStandardBase/Base/Consoles/SbmDemoInstanceConsole.cs b/SaBusMgrStandardBase/Base/Consoles/SbmDemoInstanceConsole.cs new file mode 100644 index 0000000..7615702 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Consoles/SbmDemoInstanceConsole.cs @@ -0,0 +1,135 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.BusinessMgr.Net.Standard.Base.Data; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static Sarand.BusinessMgr.Net.Standard.Base.Core.ISbmDemoInstanceConsole; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles +{ + //======================================================================= + /// + /// Utilitiy functions relating to the Demo BusinessMgr database instance. + /// For instance: + /// - Database initialisation. + /// - Populate example data. + /// - Populate Demo Account User. + /// + public abstract class SbmDemoInstanceConsole : SaErrorStateItem, ISbmDemoInstanceConsole + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmDemoInstanceConsole() + { + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + protected abstract SbmInternals Internals { get; } + protected DbUpdateInfo DbUpdateInfo { get { return Internals?.DbUpdateInfo ?? new DbUpdateInfo(null, "", ""); } } + protected abstract SbmCoreInstanceConsole InstanceConsole { get; } + + //------------------------------------------------------------------- + // Utilities. + + /// + /// Security Group codes - as set up during initialisation. + /// + public String GetSecurityGroupCode(SecurityGroup group) + { + switch (group) + { + case SecurityGroup.Standard: return "Standard"; + case SecurityGroup.Super: return SaSecurityConsole.GroupCode_Super; + } + return ""; + } + + //------------------------------------------------------------------- + // Verify Repository. + + /// + /// Is repository database valid. + /// - Contains core tables (Affiliate, Association, Commodity etc). + /// + public bool IsRepositoryValid() + { + ClearErrorState(); + if (InstanceConsole == null) + return SetErrorState("InstanceConsole not available."); + if (!InstanceConsole.IsRepositoryValid()) + return SetErrorState(InstanceConsole.ErrorStateMessage); + return true; + } + + //------------------------------------------------------------------- + // Repository population data preparation. + + /// + /// Prepare a suitable batch of data to populate the demo database. + /// + public abstract SbmRepositoryPopulationData PrepareDemoPopulationData(); + + //------------------------------------------------------------------- + // Populate Repository. + + /// + /// Populate repository. + ///
- Initialise repository: Organisation contact, Internal association, Security item and 'Super' group, User contact, User member association. + ///
- Demo specific security. + ///
- Populate demo data, including Repository configuration. + ///
+ public abstract bool PopulateRepository(SbmRepositoryPopulationData data); + + //------------------------------------------------------------------- + /// + /// Get Affiliate Owner Ids for Internal Associations. + /// + public HashSet GetInternalAssociationAffiliateIdsOwner() + { + return Internals.AccountMgr.GetInternalAssociationAffiliateIdsOwner(); + } + + //------------------------------------------------------------------- + // User Accounts. + + /// + /// Add User Account. + /// + public bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount) + { + ClearErrorState(); + if (!InstanceConsole.AddUserAccount(userAccount)) + return SetErrorState(InstanceConsole.ErrorStateMessage); + return OK; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} +; \ No newline at end of file diff --git a/SaBusMgrStandardBase/Base/Consoles/SbmInstanceSchemaConsole.cs b/SaBusMgrStandardBase/Base/Consoles/SbmInstanceSchemaConsole.cs new file mode 100644 index 0000000..51b5a37 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Consoles/SbmInstanceSchemaConsole.cs @@ -0,0 +1,163 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.CodeTypes; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.ItemOptions; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles +{ + //======================================================================= + /// + /// Determine the correct length to use for text columns in the current database. + ///
- Primarily determined by the relevant database definition. + ///
- For selected columns, use the db schema length instead. + ///
- Allows for certain column lengths to be adjusted in the database. + ///
+ public class SbmInstanceSchemaConsole + { + //------------------------------------------------------------------- + private readonly ISacsDatabase db; + + //------------------------------------------------------------------- + // Construction. + public SbmInstanceSchemaConsole(ISacsDatabase db) + { + this.db = db; + } + + //------------------------------------------------------------------- + // BusMgr Column lengths - taking into account current database schema for selected columns. + public ulong GetColTextLen(SbmDbDfn.ColumnIdx column) + { + // Intercept columns that may have different lengths on the database. + if (db != null && BusMgrColumnLengths.ContainsKey(column)) + { + if (BusMgrColumnLengths[column] == 0) + BusMgrColumnLengths[column] = GetDbColTextLen(column); + return BusMgrColumnLengths[column]; + } + return SbmDbDfn.GetColTextLen(column); + } + // BusMgr columns that may differ in length on the db. + private readonly Dictionary BusMgrColumnLengths = new Dictionary() + { + { SbmDbDfn.ColumnIdx.Address_Name, 0}, + { SbmDbDfn.ColumnIdx.Commodity_Code, 0}, + { SbmDbDfn.ColumnIdx.Commodity_DrawingNo, 0}, + { SbmDbDfn.ColumnIdx.Commodity_DescBrief, 0}, + { SbmDbDfn.ColumnIdx.Commodity_Notes, 0}, + { SbmDbDfn.ColumnIdx.CommoditySupplier_ProductCode, 0}, + { SbmDbDfn.ColumnIdx.PortfolioItem_Code, 0}, + { SbmDbDfn.ColumnIdx.Transaction_Notes, 0}, + { SbmDbDfn.ColumnIdx.Requirement_ProductCode, 0}, + { SbmDbDfn.ColumnIdx.Requirement_Notes, 0}, + { SbmDbDfn.ColumnIdx.Constituent_Notes, 0}, + }; + public ulong GetDbColTextLen(SbmDbDfn.ColumnIdx column) + { + // Get the column's length from the currently open database: + if (SbmDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0; + DbDfnTable dfnTable = db.GetTableDfn(SbmDbDfn.GetTableName(SbmDbDfn.GetTableForColumn(column), false)); + ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SbmDbDfn.GetColumnName(column, false)))?.Size ?? 0); + return (SbmDbDfn.MaxTextLen > 1 ? Math.Min(SbmDbDfn.MaxTextLen, columnLength) : columnLength); + } + + //------------------------------------------------------------------- + // Security Column lengths - taking into account current database schema for selected columns. + public ulong GetColTextLen(SaSecurityDbDfn.ColumnIdx column) + { + // Intercept columns that may have different lengths on the database. + if (db != null && SecurityColumnLengths.ContainsKey(column)) + { + if (SecurityColumnLengths[column] == 0) + SecurityColumnLengths[column] = GetDbColTextLen(column); + return SecurityColumnLengths[column]; + } + return SaSecurityDbDfn.GetColTextLen(column); + } + // Security columns that may differ in length on the db. + private readonly Dictionary SecurityColumnLengths = new Dictionary() + { + { SaSecurityDbDfn.ColumnIdx.SaSecItem_Code, 0}, + { SaSecurityDbDfn.ColumnIdx.SaSecItem_Description, 0}, + { SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress, 0} + }; + public ulong GetDbColTextLen(SaSecurityDbDfn.ColumnIdx column) + { + // Get the column's length from the currently open database: + if (SaSecurityDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0; + DbDfnTable dfnTable = db.GetTableDfn(SaSecurityDbDfn.GetTableName(SaSecurityDbDfn.GetTableForColumn(column), false)); + ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaSecurityDbDfn.GetColumnName(column, false)))?.Size ?? 0); + return (SaSecurityDbDfn.MaxTextLen > 1 ? Math.Min(SaSecurityDbDfn.MaxTextLen, columnLength) : columnLength); + } + + //------------------------------------------------------------------- + // CodeType Column lengths - taking into account current database schema for selected columns. + public ulong GetColTextLen(SaCodeTypeDbDfn.ColumnIdx column) + { + // Intercept columns that may have different lengths on the database. + if (db != null && CodeTypeColumnLengths.ContainsKey(column)) + { + if (CodeTypeColumnLengths[column] == 0) + CodeTypeColumnLengths[column] = GetDbColTextLen(column); + return CodeTypeColumnLengths[column]; + } + return SaCodeTypeDbDfn.GetColTextLen(column); + } + // CodeType columns that may differ in length on the db. + private readonly Dictionary CodeTypeColumnLengths = new Dictionary() + { + { SaCodeTypeDbDfn.ColumnIdx.SaCodeType_Code, 0}, + { SaCodeTypeDbDfn.ColumnIdx.SaCode_Code, 0}, + { SaCodeTypeDbDfn.ColumnIdx.SaCode_Data, 0}, + { SaCodeTypeDbDfn.ColumnIdx.SaCode_Description, 0} + }; + public ulong GetDbColTextLen(SaCodeTypeDbDfn.ColumnIdx column) + { + // Get the column's length from the currently open database: + if (SaCodeTypeDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0; + DbDfnTable dfnTable = db.GetTableDfn(SaCodeTypeDbDfn.GetTableName(SaCodeTypeDbDfn.GetTableForColumn(column), false)); + ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaCodeTypeDbDfn.GetColumnName(column, false)))?.Size ?? 0); + return 0;// (SaCodeTypeDbDfn.MaxTextLen > 1 ? Math.Min(SaCodeTypeDbDfn.MaxTextLen, columnLength) : columnLength); + } + + //------------------------------------------------------------------- + // ItemOption Column lengths - taking into account current database schema for selected columns. + public ulong GetColTextLen(SaItemOptionDbDfn.ColumnIdx column) + { + // Intercept columns that may have different lengths on the database. + if (db != null && ItemOptionColumnLengths.ContainsKey(column)) + { + if (ItemOptionColumnLengths[column] == 0) + ItemOptionColumnLengths[column] = GetDbColTextLen(column); + return ItemOptionColumnLengths[column]; + } + return SaItemOptionDbDfn.GetColTextLen(column); + } + // ItemOption columns that may differ in length on the db. + private readonly Dictionary ItemOptionColumnLengths = new Dictionary() + { + { SaItemOptionDbDfn.ColumnIdx.SaItemOption_Name, 0}, + { SaItemOptionDbDfn.ColumnIdx.SaItemOption_Context, 0}, + { SaItemOptionDbDfn.ColumnIdx.SaItemOption_Value, 0}, + { SaItemOptionDbDfn.ColumnIdx.SaItemOption_Notes, 0} + }; + public ulong GetDbColTextLen(SaItemOptionDbDfn.ColumnIdx column) + { + // Get the column's length from the currently open database: + if (SaItemOptionDbDfn.GetColDataType(column) != DbColumnDataType.VarChar) return 0; + DbDfnTable dfnTable = db.GetTableDfn(SaItemOptionDbDfn.GetTableName(SaItemOptionDbDfn.GetTableForColumn(column), false)); + ulong columnLength = (ulong)(dfnTable.Columns.Find(col => col.Name.EqualsCI(SaItemOptionDbDfn.GetColumnName(column, false)))?.Size ?? 0); + return 0;// (SaItemOptionDbDfn.MaxTextLen > 1 ? Math.Min(SaItemOptionDbDfn.MaxTextLen, columnLength) : columnLength); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole-Transactions.cs b/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole-Transactions.cs index 91b6bbd..4bf097e 100644 --- a/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole-Transactions.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole-Transactions.cs @@ -56,36 +56,36 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles dfnQBooksInt.ClearConfig(); dfnQBooksInt.AffiliateId_Owner = UserContext.OrganisationAffiliateId; // Identify the interfaces. - dfnSageInt.InterfaceId = Internals.AccountsDfn.GetAccountInterfaceId(Sbm.InterfaceType_Accounts.SageLine50); - dfnQBooksInt.InterfaceId = Internals.AccountsDfn.GetAccountInterfaceId(Sbm.InterfaceType_Accounts.QuickBooks); + dfnSageInt.InterfaceId = Internals.AccountsConsole.GetAccountInterfaceId(Sbm.InterfaceType_Accounts.SageLine50); + dfnQBooksInt.InterfaceId = Internals.AccountsConsole.GetAccountInterfaceId(Sbm.InterfaceType_Accounts.QuickBooks); // Sales and purchase orders/invoices can only be created locally if they are not imported from one of these interfaces. if (SysId.IsValid(dfnSageInt.InterfaceId)) { // Interpret interface options. - dfnSageInt.importPurchaseOrder = Internals.AccountsDfn.GetSageImportOption(Sage.ItemType.PurchaseOrder); - dfnSageInt.importSalesOrder = Internals.AccountsDfn.GetSageImportOption(Sage.ItemType.SalesOrder); - dfnSageInt.importProductInvoice = Internals.AccountsDfn.GetSageImportOption(Sage.ItemType.Invoice_Product); - dfnSageInt.importServiceInvoice = Internals.AccountsDfn.GetSageImportOption(Sage.ItemType.Invoice_Service); - dfnSageInt.importSalesOrderInvoice = Internals.AccountsDfn.GetSageImportOption(Sage.ItemType.Invoice_SalesOrder); - dfnSageInt.exportPurchaseOrder = Internals.AccountsDfn.GetSageExportOption(Sage.ItemType.PurchaseOrder); - dfnSageInt.exportSalesOrder = Internals.AccountsDfn.GetSageExportOption(Sage.ItemType.SalesOrder); - dfnSageInt.exportProductInvoice = Internals.AccountsDfn.GetSageExportOption(Sage.ItemType.Invoice_Product); - dfnSageInt.exportServiceInvoice = Internals.AccountsDfn.GetSageExportOption(Sage.ItemType.Invoice_Service); - dfnSageInt.exportSalesOrder = Internals.AccountsDfn.GetSageExportOption(Sage.ItemType.Invoice_SalesOrder); + dfnSageInt.importPurchaseOrder = Internals.AccountsConsole.GetSageImportOption(Sage.ItemType.PurchaseOrder); + dfnSageInt.importSalesOrder = Internals.AccountsConsole.GetSageImportOption(Sage.ItemType.SalesOrder); + dfnSageInt.importProductInvoice = Internals.AccountsConsole.GetSageImportOption(Sage.ItemType.Invoice_Product); + dfnSageInt.importServiceInvoice = Internals.AccountsConsole.GetSageImportOption(Sage.ItemType.Invoice_Service); + dfnSageInt.importSalesOrderInvoice = Internals.AccountsConsole.GetSageImportOption(Sage.ItemType.Invoice_SalesOrder); + dfnSageInt.exportPurchaseOrder = Internals.AccountsConsole.GetSageExportOption(Sage.ItemType.PurchaseOrder); + dfnSageInt.exportSalesOrder = Internals.AccountsConsole.GetSageExportOption(Sage.ItemType.SalesOrder); + dfnSageInt.exportProductInvoice = Internals.AccountsConsole.GetSageExportOption(Sage.ItemType.Invoice_Product); + dfnSageInt.exportServiceInvoice = Internals.AccountsConsole.GetSageExportOption(Sage.ItemType.Invoice_Service); + dfnSageInt.exportSalesOrder = Internals.AccountsConsole.GetSageExportOption(Sage.ItemType.Invoice_SalesOrder); } if (SysId.IsValid(dfnQBooksInt.InterfaceId)) { // Interpret interface options. - dfnQBooksInt.importPurchaseOrder = Internals.AccountsDfn.GetQuickBooksImportOption(Qbk.EntityType.PurchaseOrder); - dfnQBooksInt.importSalesOrder = Internals.AccountsDfn.GetQuickBooksImportOption(Qbk.EntityType.SalesOrder); - dfnQBooksInt.importProductInvoice = Internals.AccountsDfn.GetQuickBooksImportOption(Qbk.EntityType.Invoice_Product); - dfnQBooksInt.importServiceInvoice = Internals.AccountsDfn.GetQuickBooksImportOption(Qbk.EntityType.Invoice_Service); + dfnQBooksInt.importPurchaseOrder = Internals.AccountsConsole.GetQuickBooksImportOption(Qbk.EntityType.PurchaseOrder); + dfnQBooksInt.importSalesOrder = Internals.AccountsConsole.GetQuickBooksImportOption(Qbk.EntityType.SalesOrder); + dfnQBooksInt.importProductInvoice = Internals.AccountsConsole.GetQuickBooksImportOption(Qbk.EntityType.Invoice_Product); + dfnQBooksInt.importServiceInvoice = Internals.AccountsConsole.GetQuickBooksImportOption(Qbk.EntityType.Invoice_Service); dfnQBooksInt.importSalesOrderInvoice = false; - dfnQBooksInt.exportPurchaseOrder = Internals.AccountsDfn.GetQuickBooksExportOption(Qbk.EntityType.PurchaseOrder); - dfnQBooksInt.exportSalesOrder = Internals.AccountsDfn.GetQuickBooksExportOption(Qbk.EntityType.SalesOrder); - dfnQBooksInt.exportProductInvoice = Internals.AccountsDfn.GetQuickBooksExportOption(Qbk.EntityType.Invoice_Product); - dfnQBooksInt.exportServiceInvoice = Internals.AccountsDfn.GetQuickBooksExportOption(Qbk.EntityType.Invoice_Service); + dfnQBooksInt.exportPurchaseOrder = Internals.AccountsConsole.GetQuickBooksExportOption(Qbk.EntityType.PurchaseOrder); + dfnQBooksInt.exportSalesOrder = Internals.AccountsConsole.GetQuickBooksExportOption(Qbk.EntityType.SalesOrder); + dfnQBooksInt.exportProductInvoice = Internals.AccountsConsole.GetQuickBooksExportOption(Qbk.EntityType.Invoice_Product); + dfnQBooksInt.exportServiceInvoice = Internals.AccountsConsole.GetQuickBooksExportOption(Qbk.EntityType.Invoice_Service); dfnQBooksInt.bexport_SalesOrderInvoice = false; } @@ -319,7 +319,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { // Build the list of transaction types that are allowed to be raised from the specified type. List transTypes = new List(); - if (transactionTypes_Full.Count == 0) transactionTypes_Full = internals.GetSystemCodes(Sbm.SystemCode.TransactionType); + if (transactionTypes_Full.Count == 0) transactionTypes_Full = Internals.GetSystemCodes(Sbm.SystemCode.TransactionType); foreach (TypeCodeDesc transTypeTo in transactionTypes_Full) { //if ((Sbm.TransactionType)typeTo.iType == typeFrom) continue; @@ -334,7 +334,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { // Build the list of transaction types that are allowed to be raised to the specified type. List transTypes = new List(); - if (transactionTypes_Full.Count == 0) transactionTypes_Full = internals.GetSystemCodes(Sbm.SystemCode.TransactionType); + if (transactionTypes_Full.Count == 0) transactionTypes_Full = Internals.GetSystemCodes(Sbm.SystemCode.TransactionType); //transTypes_Full.GotoStart(); foreach (TypeCodeDesc transTypeTo in transactionTypes_Full) { diff --git a/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole.cs b/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole.cs index a3fe9cb..8d58f4e 100644 --- a/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole.cs +++ b/SaBusMgrStandardBase/Base/Consoles/SbmSessionConsole.cs @@ -71,7 +71,15 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles //------------------------------------------------------------------- // Data members. - private SbmInternals internals; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } private List transactionTypes_Full = new List(); private SbmInstanceConfig instanceConfig; private SbmOrganisationConfig organisationConfig; @@ -82,40 +90,39 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles //------------------------------------------------------------------- // Construction. - protected SbmSessionConsole(Sbm.SessionConfig sessionConfig, SbmVersion consoleVersion, ISbmUserOrganisationContext userContext) + protected SbmSessionConsole(Sbm.SessionConfig sessionConfig, SbmVersion consoleVersion, SbmInternals internals) { + mbr = new DataMembers(internals); this.SessionConfig = sessionConfig; this.AppVersion = new SbmVersion("BusinessMgr", Sbm.Version.GetFullVersion(), SacsSystem.AssemblyBuildAt); this.ConsoleVersion = consoleVersion; - this.UserContext = userContext; } protected override void Dispose(bool disposing) { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } } //------------------------------------------------------------------- // Properties. public Sbm.SessionConfig SessionConfig { get; } - public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } public SbmVersion AppVersion { get; } public SbmVersion ConsoleVersion { get; } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } + public ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + public SbmSessionContext SessionContext { get { return Internals.SessionContext; } } public SbmInstanceConfig InstanceConfig { get { if (instanceConfig == null) instanceConfig = SbmGlobals.Application.GetInstanceConfig(SessionContext); return instanceConfig; } } public SbmOrganisationConfig OrganisationConfig { get { if (organisationConfig == null) organisationConfig = SbmGlobals.Application.GetOrganisationConfig(UserContext); return organisationConfig; } } - private SbmInternals Internals { get { if (internals == null) internals = new SbmInternals(UserContext); return internals; } } //------------------------------------------------------------------- // C r e a t e C o n s o l e //------------------------------------------------------------------- - public static SbmSessionConsole CreateConsole(ISbmUserOrganisationContext userContext) + public static SbmSessionConsole CreateConsole(SbmInternals internals) { // Initialise console. SbmVersion consoleVersion = new SbmVersion("Standard", Sbm.Version.GetFullVersion(), SacsSystem.AssemblyBuildAt); - return new SbmSessionConsole(Sbm.SessionConfig.Generic, consoleVersion, userContext); + return new SbmSessionConsole(Sbm.SessionConfig.Generic, consoleVersion, internals); } //------------------------------------------------------------------- @@ -247,14 +254,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles { if (InstanceConfig.AllowApplicationOption(option, false)) return true; - return Internals.AccountsDfn.IsUsingSageInterface() && Internals.AccountsDfn.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Customer) && !Internals.AccountsDfn.UseLocalCustomerPricing(); + return Internals.AccountsConsole.IsUsingSageInterface() && Internals.AccountsConsole.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Customer) && !Internals.AccountsConsole.UseLocalCustomerPricing(); } case Sbm.ConfigOption.SupplierPriceSet: case Sbm.ConfigOption.SupplierDiscount: { if (InstanceConfig.AllowApplicationOption(option, false)) return true; - return Internals.AccountsDfn.IsUsingSageInterface() && Internals.AccountsDfn.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Supplier) && !Internals.AccountsDfn.UseLocalSupplierPricing(); + return Internals.AccountsConsole.IsUsingSageInterface() && Internals.AccountsConsole.IsAssociationTypeManagedByAccounts(Sbm.AssociationType.Supplier) && !Internals.AccountsConsole.UseLocalSupplierPricing(); } default: // Other options are not allowed by default. @@ -285,120 +292,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Consoles return new List(); } - //------------------------------------------------------------------- - // C o d e T y p e s - //------------------------------------------------------------------- - // Application Code Types. - public virtual List GetDefaultCodesOfType(Sbm.ApplCodeType type) - { - List codes = new List(); - switch (type) - { - case Sbm.ApplCodeType.ContactTitle: - codes.Add("Mr", "Mr"); - codes.Add("Mrs", "Mrs"); - codes.Add("Ms", "Ms"); - codes.Add("Miss", "Miss"); - codes.Add("Mx", "Mx"); - codes.Add("Dr", "Dr"); - break; - case Sbm.ApplCodeType.VehicleCategory: - /* - codes.Add("10", "Mini"); - codes.Add("11", "Economy"); - codes.Add("12", "Compact"); - codes.Add("20", "Hatchback"); - codes.Add("21", "Saloon"); - codes.Add("22", "Estate"); - codes.Add("30", "Executive"); - codes.Add("50", "Intermediate"); - codes.Add("51", "Standard"); - codes.Add("52", "Full Size"); - */ - break; - case Sbm.ApplCodeType.VehicleMake: - /* - codes.Add("ACUR", "Acura"); - codes.Add("ALFA", "Alfa Romeo"); - codes.Add("ASTO", "Aston Martin"); - codes.Add("AUDI", "Audi"); - codes.Add("BMW", "BMW"); - codes.Add("BENT", "Bentley"); - codes.Add("BUIC", "Buick"); - codes.Add("CADI", "Cadillac"); - codes.Add("CATE", "Caterham"); - codes.Add("CHEV", "Chevrolet"); - codes.Add("CHRY", "Chrysler"); - codes.Add("CITR", "Citroen"); - codes.Add("DAEW", "Daewoo"); - codes.Add("DAF", "DAF"); - codes.Add("DAIH", "Daihatsu"); - codes.Add("DODG", "Dodge"); - codes.Add("FERR", "Ferrari"); - codes.Add("FIAT", "Fiat"); - codes.Add("FORD", "Ford"); - codes.Add("GENE", "General Motors"); - codes.Add("GEO", "Geo"); - codes.Add("GIBB", "Gibbs"); - codes.Add("HOND", "Honda"); - codes.Add("HYUN", "Hyundai"); - codes.Add("INFI", "Infiniti"); - codes.Add("ISUZ", "Isuzu"); - codes.Add("JAGU", "Jaguar"); - codes.Add("JEEP", "Jeep"); - codes.Add("JENS", "Jensen"); - codes.Add("KIA", "Kia"); - codes.Add("LDV", "LDV"); - codes.Add("LAND", "Land Rover"); - codes.Add("LEXU", "Lexus"); - codes.Add("LINC", "Lincoln"); - codes.Add("LOTU", "Lotus"); - codes.Add("MG R", "MG Rover"); - codes.Add("MAZD", "Mazda"); - codes.Add("MERB", "Mercedes"); - codes.Add("MERC", "Mercury"); - codes.Add("MINI", "Mini"); - codes.Add("MITS", "Mitsubishi"); - codes.Add("MORG", "Morgan"); - codes.Add("NISS", "Nissan"); - codes.Add("OLDS", "Oldsmobile"); - codes.Add("OPEL", "Opel"); - codes.Add("PEUG", "Peugeot"); - codes.Add("PLYM", "Plymouth"); - codes.Add("PONT", "Pontiac"); - codes.Add("PORS", "Porsche"); - codes.Add("RENA", "Renault"); - codes.Add("ROLL", "Rolls Royce"); - codes.Add("ROVE", "Rover"); - codes.Add("SAAB", "Saab"); - codes.Add("SATU", "Saturn"); - codes.Add("SEAT", "Seat"); - codes.Add("SKOD", "Skoda"); - codes.Add("SMAR", "Smart"); - codes.Add("SMIT", "Smith Electric Vehicles"); - codes.Add("SSAN", "SsangYong (Syuk Cars)"); - codes.Add("SUBA", "Subaru"); - codes.Add("SUZU", "Suzuki"); - codes.Add("TVR", "TVR"); - codes.Add("TATA", "Tata"); - codes.Add("TOYO", "Toyota"); - codes.Add("VAUX", "Vauxhall"); - codes.Add("VOLK", "Volkswagen"); - codes.Add("VOLV", "Volvo"); - */ - break; - case Sbm.ApplCodeType.VehicleServiceHistory: - /* - codes.Add("FMDSH", "Full main dealer service history"); - codes.Add("FSH", "Full service history"); - */ - break; - case Sbm.ApplCodeType.VehicleInsurance: - break; - } - return codes; - } - //------------------------------------------------------------------- // I t e m s //------------------------------------------------------------------- diff --git a/SaBusMgrStandardBase/Base/Core/ISbmCoreInstanceConsole.cs b/SaBusMgrStandardBase/Base/Core/ISbmCoreInstanceConsole.cs new file mode 100644 index 0000000..11108f2 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Core/ISbmCoreInstanceConsole.cs @@ -0,0 +1,58 @@ +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Data; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Core +{ + //======================================================================= + /// + /// Utilitiy functions relating to a core BusinessMgr database instance. + /// For instance: + /// - Verifying repository status. + /// - Initialisation of new repository. + /// - Bringing static (tax codes etc) and reference data up to date. + /// + public interface ISbmCoreInstanceConsole + { + //------------------------------------------------------------------- + // Methods. + + /// + /// Is repository database valid. + /// - Contains core tables (Affiliate, Association, Commodity etc). + /// + bool IsRepositoryValid(); + + /// + /// Is repository database initialised. + /// - Has a valid internal association. + /// - Has at least one user. + /// + bool IsRepositoryInitialised(); + + /// + /// Validate repository initialisation data. + /// - Organisation properties. + /// - User properties. + /// - User security properties. + /// + bool ValidateRepositoryInitialisionData(SbmRepositoryInitialisationData initData); + + /// + /// Initialise repository. + /// - Organisation contact. + /// - Internal association. + /// - Security item and 'Super' group. + /// - User contact. + /// - User member association. + /// + bool InitialiseRepository(SbmRepositoryInitialisationData initData); + + /// + /// Add User Account. + /// + bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Core/ISbmDemoInstanceConsole.cs b/SaBusMgrStandardBase/Base/Core/ISbmDemoInstanceConsole.cs new file mode 100644 index 0000000..594226c --- /dev/null +++ b/SaBusMgrStandardBase/Base/Core/ISbmDemoInstanceConsole.cs @@ -0,0 +1,64 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Data; +using Sarand.Net.Standard.Base.Bus; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Core +{ + //======================================================================= + /// + /// Utilitiy functions relating to the Demo BusinessMgr database instance. + /// For instance: + /// - Database initialisation. + /// - Populate example data. + /// - Populate Demo Account User. + /// + public interface ISbmDemoInstanceConsole + { + //------------------------------------------------------------------- + + /// + /// Is repository database valid. + /// - Contains core tables (Affiliate, Association, Commodity etc). + /// + abstract bool IsRepositoryValid(); + + /// + /// Prepare a suitable batch of data to populate the demo database. + ///
- Randomly crafted. + ///
- Selected from data stored on the Control database. + ///
+ abstract SbmRepositoryPopulationData PrepareDemoPopulationData(); + + /// + /// Populate repository. + ///
- Initialise repository: Organisation contact, Internal association, Security item and 'Super' group, User contact, User member association. + ///
- Demo specific security. + ///
- Populate demo data, including Repository configuration. + ///
+ abstract bool PopulateRepository(SbmRepositoryPopulationData data); + + public enum SecurityGroup { Standard, Super } + /// + /// Security Group codes - as set up during initialisation. + /// + abstract String GetSecurityGroupCode(SecurityGroup group); + + /// + /// Get Affiliate Owner Ids for Internal Associations. + /// + abstract HashSet GetInternalAssociationAffiliateIdsOwner(); + + /// + /// Add User Account. + /// + abstract bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Data/SbmRepositoryInitialisationData.cs b/SaBusMgrStandardBase/Base/Data/SbmRepositoryInitialisationData.cs new file mode 100644 index 0000000..ed7d7ec --- /dev/null +++ b/SaBusMgrStandardBase/Base/Data/SbmRepositoryInitialisationData.cs @@ -0,0 +1,45 @@ +using Sarand.Net.Standard.Base.Bus; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Data +{ + //======================================================================= + /// + /// Organisation and User info for Repository initialisation. + /// + public class SbmRepositoryInitialisationData + { + // Organisation. + public class OrganisationData + { + public String Name { get; set; } + public String VatReg { get; set; } + public String CompanyNo { get; set; } + public String Website { get; set; } + public SysId AffiliateId { get; set; } + public SysId AssociationId { get; set; } + } + public OrganisationData Organisation { get; private set; } = new OrganisationData(); + public void ClearOrganisation() { Organisation = new OrganisationData(); } + + // User. + public class UserData + { + public SysId AffiliateId { get; set; } + public String FirstName { get; set; } + public String LastName { get; set; } + public String Email { get; set; } + public SysId SecurityItemId { get; set; } + public String Code { get; set; } + public String Password { get; set; } + public bool PasswordSet { get; set; } + } + public UserData User { get; private set; } = new UserData(); + public void ClearUser() { User = new UserData(); } + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Data/SbmRepositoryPopulationData.cs b/SaBusMgrStandardBase/Base/Data/SbmRepositoryPopulationData.cs new file mode 100644 index 0000000..eb86462 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Data/SbmRepositoryPopulationData.cs @@ -0,0 +1,208 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Data +{ + //======================================================================= + /// + /// Organisation and User info for Repository initialisation. + /// + public class SbmRepositoryPopulationData + { + //------------------------------------------------------------------- + public SbmRepositoryPopulationData() { } + + //------------------------------------------------------------------- + // Definitions. + + // Repository configuration + public class RepositoryConfigurationData + { + } + + // Owner Organisation configuration + public class OwnerConfigurationData + { + } + + // User Account. + public class UserAccount + { + public SysId AffiliateIdOwner { get; set; } + public String FirstName { get; set; } + public String LastName { get; set; } + public String Email { get; set; } + public String MemberCode { get; set; } + /// + /// User (security) code defaults to Email if not specified. + /// + public String UserCode { get; set; } + public String Password { get; set; } + public String SecurityGroupCode { get; set; } + } + + // Contacts. + public class AffiliateData + { + protected AffiliateData(Sbm.AffiliateType type) { this.Type = type; } + public Sbm.AffiliateType Type { get; } + + // Addresses. + public List Addresses { get; } = new List(); + + // Associations - Customer. + public CustomerData Customer { get; private set; } + public void SetCustomer(String code) + { + Customer = new CustomerData() { Code = code }; + } + public void ClearCustomer() { Customer = null; } + + // Associations - Supplier. + public SupplierData Supplier { get; private set; } + public void SetSupplier(String code) + { + Supplier = new SupplierData() { Code = code }; + } + public void ClearSupplier() { Supplier = null; } + + // Associations - Member. + public MemberData Member { get; private set; } + public void SetMember(String code, String role) + { + Member = new MemberData() { Code = code, Role = role }; + } + public void ClearMember() { Member = null; } + } + public class IndividualData : AffiliateData + { + public IndividualData() : base(Sbm.AffiliateType.Individual) { } + public String Title { get; set; } + public String Initials { get; set; } + public String FirstName { get; set; } + public String LastName { get; set; } + public String Email { get; set; } + public String PhoneMain { get; set; } + public String PhoneMobile { get; set; } + } + public class OrganisationData : AffiliateData + { + protected OrganisationData(Sbm.AffiliateType type) : base(type) { } + public String Name { get; set; } + public String Abbr { get; set; } + public String Nature { get; set; } + public String Contact { get; set; } + public String PhoneMain { get; set; } + public String PhoneAlt { get; set; } + public String VatReg { get; set; } + public String CompanyNo { get; set; } + public String Website { get; set; } + } + public class CommercialOrganisationData : OrganisationData + { + public CommercialOrganisationData() : base(Sbm.AffiliateType.Commercial) { } + } + public class CharityOrganisationData : OrganisationData + { + public CharityOrganisationData() : base(Sbm.AffiliateType.Charity) { } + } + + // Addresses. + public class AddressData + { + protected AddressData(Sbm.AddressType type) + { + this.Type = type; + } + public Sbm.AddressType Type { get; } + public String Line1 { get; set; } + public String Line2 { get; set; } + public String Line3 { get; set; } + public String City { get; set; } + public String Province { get; set; } + public String Postcode { get; set; } + public String Country { get; set; } + } + + // Associations. + public class AssociationData + { + protected AssociationData(Sbm.AssociationType type) + { + this.Type = type; + } + public Sbm.AssociationType Type { get; } + public String Code { get; set; } + public String Location { get; set; } + public String Role { get; set; } + public String PhoneMain { get; set; } + } + public class CustomerData : AssociationData + { + public CustomerData() : base(Sbm.AssociationType.Customer) { } + } + public class SupplierData : AssociationData + { + public SupplierData() : base(Sbm.AssociationType.Supplier) { } + } + public class MemberData : AssociationData + { + public MemberData() : base(Sbm.AssociationType.Member) { } + } + + // Commodities. + public class CommodityData + { + protected CommodityData(Sbm.CommodityType type) + { + this.Type = type; + } + public Sbm.CommodityType Type { get; } + public String Code { get; set; } + public String Caption { get; set; } + public decimal SalePrice { get; set; } + } + public class StockCommodityData : CommodityData + { + public StockCommodityData() : base(Sbm.CommodityType.Stock) { } + } + public class NonStockCommodityData : CommodityData + { + public NonStockCommodityData() : base(Sbm.CommodityType.NonStock) { } + } + public class ServiceCommodityData : CommodityData + { + public ServiceCommodityData() : base(Sbm.CommodityType.Service) { } + } + + //------------------------------------------------------------------- + // Properties. + + /// Repository initialisation data. + public SbmRepositoryInitialisationData InitData { get; } = new SbmRepositoryInitialisationData(); + public SysId AffiliateIdOrganisation { get { return InitData.Organisation.AffiliateId; } } + + /// Repository congiruation options. + public RepositoryConfigurationData RepositoryConfiguration { get; } = new RepositoryConfigurationData(); + + /// Owner configuration options. + public OwnerConfigurationData OwnerConfiguration { get; } = new OwnerConfigurationData(); + + /// Individuals. + public List Individuals { get; } = new List(); + + /// Organisations. + public List Organisations { get; } = new List(); + + /// Commodities. + public List Commodities { get; } = new List(); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Helpers/SbmResourceHelper.cs b/SaBusMgrStandardBase/Base/Helpers/SbmResourceHelper.cs index 5f9293a..3ada96f 100644 --- a/SaBusMgrStandardBase/Base/Helpers/SbmResourceHelper.cs +++ b/SaBusMgrStandardBase/Base/Helpers/SbmResourceHelper.cs @@ -28,6 +28,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Helpers Email_Header_Html, Email_Footer_Html, // Email templates. + Email_DemoAccountRequest_Html, + Email_DemoAccountRegister_Html, Email_RequestPassword_Html, // Data - CSV files etc. } @@ -48,7 +50,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Helpers //------------------------------------------------------------------- // Properties. - public static Assembly Assembly { get { return typeof(SacsResourceHelper).GetTypeInfo().Assembly; } } + public static Assembly Assembly { get { return typeof(SbmResourceHelper).GetTypeInfo().Assembly; } } //------------------------------------------------------------------- // Text resources. @@ -76,20 +78,32 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Helpers // Email stylesheet. case TextResource.Email_Main_Css: + partialPath = "Email.Style"; resourceFilename = "sbm-email-main.css"; break; // Email partial content. case TextResource.Email_Header_Html: + partialPath = "Email.Shared"; resourceFilename = "sbm-email-header.html"; break; case TextResource.Email_Footer_Html: + partialPath = "Email.Shared"; resourceFilename = "sbm-email-footer.html"; break; // Email templates. + case TextResource.Email_DemoAccountRequest_Html: + partialPath = "Email.Security"; + resourceFilename = "sbm-email-demo-account-request.html"; + break; + case TextResource.Email_DemoAccountRegister_Html: + partialPath = "Email.Security"; + resourceFilename = "sbm-email-demo-account-register.html"; + break; case TextResource.Email_RequestPassword_Html: + partialPath = "Email.Security"; resourceFilename = "sbm-email-request-password.html"; break; - // Data. + // Data. } if (!StringUtil.IsEmpty(resourceFilename)) { diff --git a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_AccountRegistration.cs b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_AccountRegistration.cs new file mode 100644 index 0000000..e919ea1 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_AccountRegistration.cs @@ -0,0 +1,232 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mail; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control +{ + //======================================================================= + // Control Account manager - Account Registrations. + //======================================================================= + partial class SbmcAccountMgr + { + //------------------------------------------------------------------- + // Retrieve individual items. + //------------------------------------------------------------------- + // Item exists. + public bool AccountRegistrationExistsById(SysId accountRegistrationId) + { + ClearErrorState(); + if (!SysId.IsValid(accountRegistrationId)) return false; + SbmcAccountRegistration.Params prmAccountRegistration = new SbmcAccountRegistration.Params(); + prmAccountRegistration.IdsIncluded.Add(accountRegistrationId); + prmAccountRegistration.StatusCat = SbmcAccountRegistration.StatusCat.Any; + return GetAccountRegistrationCount(prmAccountRegistration) == 1; + } + public bool AccountRegistrationExistsByRegisterAccountToken(Guid registerAccountToken) + { + ClearErrorState(); + if (registerAccountToken == Guid.Empty) return false; + SbmcAccountRegistration.Params prmAccountRegistration = new SbmcAccountRegistration.Params(); + prmAccountRegistration.RegisterAccountToken = registerAccountToken; + prmAccountRegistration.StatusCat = SbmcAccountRegistration.StatusCat.NotDeleted; + return GetAccountRegistrationCount(prmAccountRegistration) == 1; + } + + //------------------------------------------------------------------- + // Get Item. + public abstract SbmcAccountRegistration GetAccountRegistration(SbmcAccountRegistration.Params prm); + public SbmcAccountRegistration GetAccountRegistrationById(SysId accountRegistrationId) + { + ClearErrorState(); + if (!SysId.IsValid(accountRegistrationId)) return null; + SbmcAccountRegistration.Params prmAccountRegistration = new SbmcAccountRegistration.Params(); + prmAccountRegistration.IdsIncluded.Add(accountRegistrationId); + prmAccountRegistration.StatusCat = SbmcAccountRegistration.StatusCat.Any; + return GetAccountRegistration(prmAccountRegistration); + } + /// + /// Retrieve the most recent registration details for the email address with the specified status. + /// - Awaiting: registration is incomplete and can potentially be reused. + /// + public SbmcAccountRegistration GetAccountRegistrationByEmailStatus(String emailAddress, SbmcAccountRegistration.StatusCat statusCat = SbmcAccountRegistration.StatusCat.AwaitingOnly) + { + ClearErrorState(); + if (StringUtil.IsBlank(emailAddress)) return null; + SbmcAccountRegistration.Params prmAccountRegistration = new SbmcAccountRegistration.Params(); + prmAccountRegistration.EmailAddress = emailAddress; + prmAccountRegistration.StatusCat = statusCat; + prmAccountRegistration.SortColumns.Add(GetAccountRegistrationColumnDfn(SbmcAccountRegistration.Column.Id)); + prmAccountRegistration.SortColumns.First().SortAscending = false; + prmAccountRegistration.ResultsPaging.Set(1, 1); + return GetAccountRegistrationList(prmAccountRegistration).FirstOrDefault(); + } + public SbmcAccountRegistration GetAccountRegistrationByRegisterAccountToken(Guid registerAccountToken) + { + ClearErrorState(); + if (registerAccountToken == Guid.Empty) return null; + SbmcAccountRegistration.Params prmAccountRegistration = new SbmcAccountRegistration.Params(); + prmAccountRegistration.RegisterAccountToken = registerAccountToken; + prmAccountRegistration.StatusCat = SbmcAccountRegistration.StatusCat.NotDeleted; + return GetAccountRegistration(prmAccountRegistration); + } + + //------------------------------------------------------------------- + // Create Item. + public abstract SbmcAccountRegistration CreateAccountRegistration(String emailAddress, Guid registerAccountToken); + + //------------------------------------------------------------------- + // Validate Item data. + public bool IsValidAccountRegistration(SbmcAccountRegistration accountRegistration) + { + ClearErrorState(); + if (accountRegistration == null) return SetErrorState(ErrorMessage.ItemNotSpecified); + return IsValidAccountRegistrationData(accountRegistration.GetData(), new SbmcAccountRegistration.ErrField()); + } + public virtual bool IsValidAccountRegistrationData(SbmcAccountRegistration.Data data, SbmcAccountRegistration.ErrField errField) + { + // Item properties. + ClearErrorState(); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); + + // Name. + if (errField.FirstName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FirstName, "first name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_FirstName))) + { + errField.FirstName = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + if (errField.LastName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.LastName, "last name", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_LastName))) + { + errField.LastName = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + + // Phone numbers. + if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone number", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneMain))) + { + errField.PhoneMain = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + if (errField.PhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneAlt, "alt number", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneAlt))) + { + errField.PhoneAlt = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + + // Registration. + if (errField.RequestAccountAt != SacsHierarchyItem.ValidValue.Ignore && !DateUtil.IsValid(data.RequestAccountAt)) + { + errField.AccountPasswordSalt = SacsHierarchyItem.ValidValue.Invalid; + return SetErrorState("request account time missing"); + } + if (errField.RegisterAccountToken != SacsHierarchyItem.ValidValue.Ignore && data.RegisterAccountToken == Guid.Empty) + { + errField.AccountPasswordSalt = SacsHierarchyItem.ValidValue.Invalid; + return SetErrorState("register account token missing"); + } + + // Security. + if (errField.AccountPasswordSalt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountPasswordSalt, "account password salt", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_AccountPasswordSalt))) + { + errField.AccountPasswordSalt = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + if (errField.AccountPasswordHash != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountPasswordHash, "account password hash", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_AccountPasswordHash))) + { + errField.AccountPasswordHash = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + + // Common properties. + if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Notes))) + { + errField.Notes = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) + { + if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status), true, true)) + { + errField.Status = SacsHierarchyItem.ValidValue.Invalid; + return false; + } + if (!SbmcAccountRegistration.ValidStatuses.Contains(data.Status)) + { + errField.Status = SacsHierarchyItem.ValidValue.Invalid; + return SetErrorState(ErrorMessage.InvalidStatus); + } + } + return true; + } + + //------------------------------------------------------------------- + // Item database interface. + public abstract bool InsertAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo); + public abstract bool UpdateAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo); + public virtual bool AccountRegistrationCanBeDeleted(SbmcAccountRegistration accountRegistration) + { + if (accountRegistration == null) return SetErrorState(Msg_ItemNotSpecified); + //ClearErrorState(); + return true; + } + public abstract bool DeleteAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo); + + //------------------------------------------------------------------- + // Item list. + public abstract ColumnDfn GetAccountRegistrationColumnDfn(SbmcAccountRegistration.Column columnId, String caption = "", int width = 0); + public abstract List GetAccountRegistrationQueryFilter(SbmcAccountRegistration.Params prm); + public abstract long GetAccountRegistrationCount(SbmcAccountRegistration.Params prm); + public abstract List GetAccountRegistrationList(SbmcAccountRegistration.Params prm); + public abstract DbResultSet ExecuteAccountRegistrationQuery(List columns, SbmcAccountRegistration.Params prm); + + //------------------------------------------------------------------- + // Data values. + //------------------------------------------------------------------- + /// + /// Extract and format result set data value where specific handling is required. + /// Where response is an invalid data value, format value using column.FormatValue(values). + /// + public DataValue GetAccountRegistrationDataValue(ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SbmcAccountRegistration.Column)column.Id) + { + //----------------------------------------------------------- + // Notes. + case SbmcAccountRegistration.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + // Status. + case SbmcAccountRegistration.Column.Status_Desc: + case SbmcAccountRegistration.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SbmcAccountRegistration.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); + else if (column.Id == (int)SbmcAccountRegistration.Column.Status_Ind) + value = new DataValue(SbmcAccountRegistration.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + default: + value = values.GetValue(column.DataName); + break; + + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_UserAccount.cs b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_UserAccount.cs index 1921810..6df24fc 100644 --- a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_UserAccount.cs +++ b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcAccountMgr_UserAccount.cs @@ -11,13 +11,15 @@ using System.Net.Mail; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control { + //======================================================================= + // Control Account manager - User Accounts. //======================================================================= partial class SbmcAccountMgr { //------------------------------------------------------------------- - // Retrieve individual userAccounts. + // Retrieve individual items. //------------------------------------------------------------------- - // UserAccount exists. + // Item exists. public bool UserAccountExistsById(SysId userAccountId) { ClearErrorState(); @@ -27,39 +29,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any; return GetUserAccountCount(prmUserAccount) == 1; } - public bool UserAccountExistsByUserId(SysId userAccountIdOwner) + public bool UserAccountExistsByEmailAddress(String emailAddress) { ClearErrorState(); - if (!SysId.IsValid(userAccountIdOwner)) return false; + if (StringUtil.IsBlank(emailAddress)) return false; SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params(); - prmUserAccount.IdsIncluded.Add(userAccountIdOwner); - prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any; - return GetUserAccountCount(prmUserAccount) == 1; - } - public bool OrganisationExistsByName(String organisationName, SysId userAccountIdExclude) - { - ClearErrorState(); - if (!StringUtil.IsEmpty(organisationName) || !SysId.IsValid(userAccountIdExclude)) return false; - SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params(); - prmUserAccount.Name = organisationName; - prmUserAccount.IdsExcluded.Add(userAccountIdExclude); - prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any; - return GetUserAccountCount(prmUserAccount) == 1; - } - public bool IndividualExistsByName(String firstName, String lastName, SysId userAccountIdExclude) - { - ClearErrorState(); - if (!StringUtil.IsEmpty(firstName) || !StringUtil.IsEmpty(lastName) || !SysId.IsValid(userAccountIdExclude)) return false; - SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params(); - prmUserAccount.Name = firstName; - prmUserAccount.Name = lastName; - prmUserAccount.IdsExcluded.Add(userAccountIdExclude); - prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any; + prmUserAccount.EmailAddress = emailAddress; + prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.NotDeleted; return GetUserAccountCount(prmUserAccount) == 1; } //------------------------------------------------------------------- - // Get UserAccount. + // Get Item. public abstract SbmcUserAccount GetUserAccount(SbmcUserAccount.Params prm); public SbmcUserAccount GetUserAccountById(SysId userAccountId) { @@ -76,16 +57,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control if (StringUtil.IsBlank(emailAddress)) return null; SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params(); prmUserAccount.EmailAddress = emailAddress; - prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any; + prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.NotDeleted; return GetUserAccount(prmUserAccount); } //------------------------------------------------------------------- - // Create UserAccount. + // Create Item. public abstract SbmcUserAccount CreateUserAccount(); //------------------------------------------------------------------- - // Validate UserAccount data. + // Validate Item data. public bool IsValidUserAccount(SbmcUserAccount userAccount) { ClearErrorState(); @@ -94,9 +75,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } public virtual bool IsValidUserAccountData(SbmcUserAccount.Data data, SbmcUserAccount.ErrField errField) { - // UserAccount properties. + // Item properties. ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Name. if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)SbmDbDfn_Control.GetColTextLen(SbmDbDfn_Control.ColumnIdx.UserAccount_Title))) @@ -160,19 +141,19 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } //------------------------------------------------------------------- - // UserAccount database interface. + // Item database interface. public abstract bool InsertUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo); public virtual bool UserAccountCanBeDeleted(SbmcUserAccount userAccount) { - if (userAccount == null) return SetErrorState("item not specified"); + if (userAccount == null) return SetErrorState(Msg_ItemNotSpecified); //ClearErrorState(); return true; } public abstract bool DeleteUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- - // UserAccount list. + // Item list. public abstract ColumnDfn GetUserAccountColumnDfn(SbmcUserAccount.Column columnId, String caption = "", int width = 0); public abstract List GetUserAccountQueryFilter(SbmcUserAccount.Params prm); public abstract long GetUserAccountCount(SbmcUserAccount.Params prm); @@ -180,7 +161,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control public abstract DbResultSet ExecuteUserAccountQuery(List columns, SbmcUserAccount.Params prm); //------------------------------------------------------------------- - // D a t a V a l u e s + // Data values. //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. diff --git a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Owner.cs b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Owner.cs index c073f47..dd74af2 100644 --- a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Owner.cs +++ b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Owner.cs @@ -12,13 +12,13 @@ using System.Net.Mail; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control { //======================================================================= - // Control Instance Manager - Owners. + // Control Instance manager - Owners. //======================================================================= partial class SbmcInstanceMgr { - //------------------------------------------------------------------- - // Owner exists. - public bool OwnerExistsById(SysId ownerId) + //------------------------------------------------------------------- + // Item exists. + public bool OwnerExistsById(SysId ownerId) { ClearErrorState(); if (!SysId.IsValid(ownerId)) return false; @@ -28,9 +28,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return GetOwnerCount(prmOwner) == 1; } - //------------------------------------------------------------------- - // Get Owner. - public abstract SbmcOwner GetOwner(SbmcOwner.Params prm); + //------------------------------------------------------------------- + // Get Item. + public abstract SbmcOwner GetOwner(SbmcOwner.Params prm); public SbmcOwner GetOwnerById(SysId ownerId) { ClearErrorState(); @@ -41,13 +41,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return GetOwner(prmOwner); } - //------------------------------------------------------------------- - // Create Owner. - public abstract SbmcOwner CreateOwner(); + //------------------------------------------------------------------- + // Create Item. + public abstract SbmcOwner CreateOwner(); - //------------------------------------------------------------------- - // Validate Owner data. - public bool IsValidOwner(SbmcOwner owner) + //------------------------------------------------------------------- + // Validate Item data. + public bool IsValidOwner(SbmcOwner owner) { ClearErrorState(); if (owner == null) return SetErrorState(ErrorMessage.ItemNotSpecified); @@ -55,9 +55,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } public virtual bool IsValidOwnerData(SbmcOwner.Data data, SbmcOwner.ErrField errField) { - // Owner properties. - ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + // Item properties. + ClearErrorState(); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Contact. @@ -109,28 +109,28 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return true; } - //------------------------------------------------------------------- - // Owner owner interface. - public abstract bool InsertOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo); + //------------------------------------------------------------------- + // Owner Item interface. + public abstract bool InsertOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo); public virtual bool OwnerCanBeDeleted(SbmcOwner owner) { - if (owner == null) return SetErrorState("item not specified"); + if (owner == null) return SetErrorState(Msg_ItemNotSpecified); //ClearErrorState(); return true; } public abstract bool DeleteOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo); - //------------------------------------------------------------------- - // Owner list. - public abstract ColumnDfn GetOwnerColumnDfn(SbmcOwner.Column columnId, String caption = "", int width = 0); + //------------------------------------------------------------------- + // Item list. + public abstract ColumnDfn GetOwnerColumnDfn(SbmcOwner.Column columnId, String caption = "", int width = 0); public abstract List GetOwnerQueryFilter(SbmcOwner.Params prm); public abstract long GetOwnerCount(SbmcOwner.Params prm); public abstract List GetOwnerList(SbmcOwner.Params prm); public abstract DbResultSet ExecuteOwnerQuery(List columns, SbmcOwner.Params prm); //------------------------------------------------------------------- - // D a t a V a l u e s + // Data values. //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. diff --git a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Repository.cs b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Repository.cs index 4610d8f..a1a953d 100644 --- a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Repository.cs +++ b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcInstanceMgr_Repository.cs @@ -12,13 +12,13 @@ using System.Net.Mail; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control { //======================================================================= - // Control - Instance Manager - Repositories. + // Control Instance manager - Repositories. //======================================================================= partial class SbmcInstanceMgr { - //------------------------------------------------------------------- - // Repository exists. - public bool RepositoryExistsById(SysId repositoryId) + //------------------------------------------------------------------- + // Item exists. + public bool RepositoryExistsById(SysId repositoryId) { ClearErrorState(); if (!SysId.IsValid(repositoryId)) return false; @@ -37,9 +37,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return GetRepositoryCount(prmRepository) == 1; } - //------------------------------------------------------------------- - // Get Repository. - public abstract SbmcRepository GetRepository(SbmcRepository.Params prm); + //------------------------------------------------------------------- + // Get Item. + public abstract SbmcRepository GetRepository(SbmcRepository.Params prm); public SbmcRepository GetRepositoryById(SysId repositoryId) { ClearErrorState(); @@ -59,13 +59,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return GetRepository(prmRepository); } - //------------------------------------------------------------------- - // Create Repository. - public abstract SbmcRepository CreateRepository(); + //------------------------------------------------------------------- + // Create Item. + public abstract SbmcRepository CreateRepository(); - //------------------------------------------------------------------- - // Validate Repository data. - public bool IsValidRepository(SbmcRepository repository) + //------------------------------------------------------------------- + // Validate Item data. + public bool IsValidRepository(SbmcRepository repository) { ClearErrorState(); if (repository == null) return SetErrorState(ErrorMessage.ItemNotSpecified); @@ -73,9 +73,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } public virtual bool IsValidRepositoryData(SbmcRepository.Data data, SbmcRepository.ErrField errField) { - // Repository properties. - ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + // Item properties. + ClearErrorState(); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Owner. if (!SysId.IsValid(data.OwnerId)) return SetErrorState("Owner must be specified"); @@ -137,28 +137,28 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control return true; } - //------------------------------------------------------------------- - // Repository repository interface. - public abstract bool InsertRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); + //------------------------------------------------------------------- + // Repository Item interface. + public abstract bool InsertRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); public virtual bool RepositoryCanBeDeleted(SbmcRepository repository) { - if (repository == null) return SetErrorState("item not specified"); + if (repository == null) return SetErrorState(Msg_ItemNotSpecified); //ClearErrorState(); return true; } public abstract bool DeleteRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo); - //------------------------------------------------------------------- - // Repository list. - public abstract ColumnDfn GetRepositoryColumnDfn(SbmcRepository.Column columnId, String caption = "", int width = 0); + //------------------------------------------------------------------- + // Item list. + public abstract ColumnDfn GetRepositoryColumnDfn(SbmcRepository.Column columnId, String caption = "", int width = 0); public abstract List GetRepositoryQueryFilter(SbmcRepository.Params prm); public abstract long GetRepositoryCount(SbmcRepository.Params prm); public abstract List GetRepositoryList(SbmcRepository.Params prm); public abstract DbResultSet ExecuteRepositoryQuery(List columns, SbmcRepository.Params prm); //------------------------------------------------------------------- - // D a t a V a l u e s + // Data values. //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. diff --git a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcItemMgr_ItemParam.cs b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcItemMgr_ItemParam.cs index 79c2496..35cdf11 100644 --- a/SaBusMgrStandardBase/Base/Mgr/Control/SbmcItemMgr_ItemParam.cs +++ b/SaBusMgrStandardBase/Base/Mgr/Control/SbmcItemMgr_ItemParam.cs @@ -12,7 +12,7 @@ using System.Net.Mail; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control { //======================================================================= - // Control Item Manager - ItemParams. + // Control Item manager - Item Params. //======================================================================= partial class SbmcItemMgr { @@ -29,7 +29,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } //------------------------------------------------------------------- - // Get item. + // Get Item. public abstract SbmcItemParam GetItemParam(SbmcItemParam.Params prm); public SbmcItemParam GetItemParamById(SysId id) { @@ -42,11 +42,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control } //------------------------------------------------------------------- - // Create item. + // Create Item. public abstract SbmcItemParam CreateItemParam(ItemId itemId); //------------------------------------------------------------------- - // Validate item data. + // Validate Item data. public bool IsValidItemParam(SbmcItemParam itemParam) { ClearErrorState(); @@ -57,7 +57,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control { // Item properties. ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Item. @@ -66,7 +66,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control if (!ItemId.IsValid(data.ItemId)) { errField.Context = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("Item Id must be specified"); + return SetErrorState(Msg_ItemIdNotSpecified); } if (!SbmcItemParam.ValidItemTypes.Contains((SbmcHierarchyItem.ItemType)data.ItemId.Type)) { @@ -121,7 +121,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control public abstract bool UpdateItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo); public virtual bool ItemParamCanBeDeleted(SbmcItemParam itemParam) { - if (itemParam == null) return SetErrorState("item not specified"); + if (itemParam == null) return SetErrorState(Msg_ItemNotSpecified); //ClearErrorState(); return true; } @@ -136,7 +136,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control public abstract DbResultSet ExecuteItemParamQuery(List columns, SbmcItemParam.Params prm); //------------------------------------------------------------------- - // D a t a V a l u e s + // Data values. //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Address.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Address.cs index 04dcae5..0090617 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Address.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Address.cs @@ -72,7 +72,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ItemType < 1) { errField.ItemType = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("Item type must be supplied"); + return SetErrorState(Msg_ItemTypeNotSpecified); } } if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore) @@ -80,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (!SysId.IsValid(data.ItemId)) { errField.ItemId = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("Item Id must be specified"); + return SetErrorState(Msg_ItemIdNotSpecified); } } if (errField.AddressType != SacsHierarchyItem.ValidValue.Ignore) @@ -91,102 +91,102 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Address type must be supplied"); } } - if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_RefExt))) + if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "reference", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_RefExt))) { errField.RefExt = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Name))) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Name))) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DescBrief))) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DescBrief))) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Line1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line1, "line 1", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line1), true)) + if (errField.Line1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line1, "line 1", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line1), true)) { errField.Line1 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Line2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line2, "line 2", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line2))) + if (errField.Line2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line2, "line 2", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line2))) { errField.Line2 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Line3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line3, "line 3", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line3))) + if (errField.Line3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Line3, "line 3", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Line3))) { errField.Line3 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.City != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.City, "city", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_City))) + if (errField.City != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.City, "city", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_City))) { errField.City = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Province != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Province, "province", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Province))) + if (errField.Province != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Province, "province", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Province))) { errField.Province = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Postcode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Postcode, "postcode", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Postcode))) + if (errField.Postcode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Postcode, "postcode", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Postcode))) { errField.Postcode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Country != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Country, "country", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Country))) + if (errField.Country != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Country, "country", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Country))) { errField.Country = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Contact != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Contact, "contact", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Contact))) + if (errField.Contact != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Contact, "contact", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Contact))) { errField.Contact = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Phone != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Phone, "phone", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Phone))) + if (errField.Phone != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Phone, "phone", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Phone))) { errField.Phone = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Fax != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Fax, "fax", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Fax))) + if (errField.Fax != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Fax, "fax", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Fax))) { errField.Fax = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Email))) + if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Email))) { errField.Email = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AccountManagerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountManagerCode, " account manager phone", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_AccountManagerCode))) + if (errField.AccountManagerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountManagerCode, " account manager phone", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_AccountManagerCode))) { errField.AccountManagerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AccountHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountHandlerCode, "account handler phone", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode))) + if (errField.AccountHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountHandlerCode, "account handler phone", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_AccountHandlerCode))) { errField.AccountHandlerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area phone", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_ContactAreaCode))) + if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area phone", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_ContactAreaCode))) { errField.ContactAreaCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactHandlerCode, "contact handler phone", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode))) + if (errField.ContactHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactHandlerCode, "contact handler phone", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_ContactHandlerCode))) { errField.ContactHandlerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DeliveryTypeCode))) + if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DeliveryTypeCode))) { errField.DeliveryTypeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book-in code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DeliveryBookInCode))) + if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book-in code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_DeliveryBookInCode))) { errField.DeliveryBookInCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -200,14 +200,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Address_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Affiliate.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Affiliate.cs index 5e366b2..58da4ad 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Affiliate.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Affiliate.cs @@ -7,7 +7,6 @@ using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm.Config; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { @@ -28,6 +27,28 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return ""; } + //------------------------------------------------------------------- + public void SetAffiliateName(SbmAffiliate affiliate, String name) + { + if (affiliate.IsIndividual()) + { + name = name.ReplaceAll(",,", ",").ReplaceAll(" ", " "); + if (name.IndexOf(",", 0) >= 0) + { + String[] nameParts = name.Split(','); + affiliate.LastName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); + affiliate.FirstName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)); + } + else if (name.IndexOf(" ", 0) >= 0) + { + String[] nameParts = name.Split(' '); + affiliate.FirstName = nameParts[0].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName)); + affiliate.LastName = nameParts[1].TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); + } + else affiliate.LastName = name.TrimAll().CapitaliseFirst().Left((int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName)); + } + } + //------------------------------------------------------------------- // Child affiliates (subordinate organisations). public abstract long GetChildAffiliateCount(SysId affiliateId); @@ -189,7 +210,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { // Affiliate properties. ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Validate the type: if (errField.Type != SacsHierarchyItem.ValidValue.Ignore && (short)data.AffiliateType < 1) { @@ -201,95 +222,95 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Validate the user id. if (!SbmAffiliate.IsIndividual(data.AffiliateType) && SysId.IsValid(data.UserId)) return SetErrorState("only individuals can have user ids"); - if (errField.Abbr != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Abbr, "abbreviation", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Abbrev))) + if (errField.Abbr != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Abbr, "abbreviation", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Abbrev))) { errField.Abbr = SacsHierarchyItem.ValidValue.Invalid; return false; } // Validate the affiliate names. - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Name), !SbmAffiliate.IsIndividual(data.AffiliateType))) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Name), !SbmAffiliate.IsIndividual(data.AffiliateType))) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmAffiliate.IsIndividual(data.AffiliateType) && !data.Title.IsEmpty()) return SetErrorState("only individuals can have a Title"); - if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Title))) + if (errField.Title != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Title, "title", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Title))) { errField.Title = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Initials != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Initials, "initials", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Initials))) + if (errField.Initials != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Initials, "initials", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Initials))) { errField.Initials = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.LastName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.LastName, "last name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName), SbmAffiliate.IsIndividual(data.AffiliateType))) + if (errField.LastName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.LastName, "last name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_LastName), SbmAffiliate.IsIndividual(data.AffiliateType))) { errField.LastName = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.FirstName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FirstName, "first name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName))) + if (errField.FirstName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FirstName, "first name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_FirstName))) { errField.FirstName = SacsHierarchyItem.ValidValue.Invalid; return false; } // Validate the text attributes. - if (errField.Salutation != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Salutation, "salutation", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Salutation))) + if (errField.Salutation != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Salutation, "salutation", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Salutation))) { errField.Salutation = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Nature != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Nature, "nature", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Nature))) + if (errField.Nature != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Nature, "nature", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Nature))) { errField.Nature = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.CompanyNo != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CompanyNo, "company no", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo))) + if (errField.CompanyNo != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CompanyNo, "company no", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_CompanyNo))) { errField.CompanyNo = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.VatReg != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VatReg, "vat no", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_VatReg))) + if (errField.VatReg != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VatReg, "vat no", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_VatReg))) { errField.Nature = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Contact != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Contact, "contact", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Contact))) + if (errField.Contact != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Contact, "contact", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Contact))) { errField.Contact = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain))) + if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMain))) { errField.PhoneMain = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneAlt, "alt number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt))) + if (errField.PhoneAlt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneAlt, "alt number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneAlt))) { errField.PhoneAlt = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneFax != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneFax, "fax number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax))) + if (errField.PhoneFax != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneFax, "fax number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneFax))) { errField.PhoneFax = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneMobile != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMobile, "mobile number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile))) + if (errField.PhoneMobile != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMobile, "mobile number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneMobile))) { errField.PhoneMobile = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneDirect != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneDirect, "direct number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect))) + if (errField.PhoneDirect != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneDirect, "direct number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_PhoneDirect))) { errField.PhoneDirect = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Email))) + if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Email))) { errField.Email = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Website != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Website, "website", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Website))) + if (errField.Website != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Website, "website", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Website))) { errField.Website = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -309,36 +330,36 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.BirthYear = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Birth year must not be negative"); } - if (errField.MaritalStatus != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaritalStatus, "marital status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_MaritalStatus))) + if (errField.MaritalStatus != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaritalStatus, "marital status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_MaritalStatus))) { errField.MaritalStatus = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Spouse != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Spouse, "Partner", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Spouse))) + if (errField.Spouse != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Spouse, "Partner", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Spouse))) { errField.Spouse = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Children != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Children, "Children", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Children))) + if (errField.Children != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Children, "Children", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Children))) { errField.Children = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Hometown != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Hometown, "Hometown", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Hometown))) + if (errField.Hometown != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Hometown, "Hometown", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Hometown))) { errField.Hometown = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Affiliate_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -374,7 +395,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public abstract bool UpdateAffiliate(SbmAffiliate affiliate, DbUpdateInfo dbUpdateInfo); public virtual bool AffiliateCanBeDeleted(SbmAffiliate affiliate) { - if (affiliate == null) return SetErrorState("item not specified"); + if (affiliate == null) return SetErrorState(Msg_ItemNotSpecified); if (AffiliateHasChildAffiliates(affiliate.Id)) return SetErrorState("item has child organisations"); if (AffiliateOwnerHasAssociations(affiliate.Id, Sbm.AssociationType.Any, false)) return SetErrorState("item own associations"); if (AffiliateTargetHasAssociations(affiliate.Id, Sbm.AssociationType.Any, false)) return SetErrorState("item is the target of associations"); @@ -407,6 +428,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr List affiliateIdNames = new List(); SbmAffiliate.Params prmAffiliate = new SbmAffiliate.Params(); prmAffiliate.AffiliateIdAssocTarget = affiliateIdSupervisor; + prmAffiliate.AssociationType = Sbm.AssociationType.Member; prmAffiliate.TargetSupervised = SbmAffiliate.Params.Supervised.Yes; foreach (SbmAffiliate affiliate in GetAffiliateList(prmAffiliate)) { diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association-Util.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association-Util.cs new file mode 100644 index 0000000..0010924 --- /dev/null +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association-Util.cs @@ -0,0 +1,511 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.ReferenceData; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; +using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData; + +namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr +{ + //======================================================================= + // Account manager - Associations - Utilities. + //======================================================================= + partial class SbmAccountMgr + { + //------------------------------------------------------------------- + // Utilities. + public static bool IsValidCode(String code) + { + if (StringUtil.IsEmpty(code)) return false; + if (code != code.Trim()) return false; + return true; + } + + // Association types in use. + public abstract List GetAssociationTypesInUse(); + + //------------------------------------------------------------------- + // Internal associations. + public abstract HashSet GetInternalAssociationAffiliateIdsOwner(); + public SbmAssociation GetInternalAssociation(SysId affiliateIdOwner) + { + return GetAssociationByOwnerTypeTarget(affiliateIdOwner, Sbm.AssociationType.Internal, affiliateIdOwner); + } + + //------------------------------------------------------------------- + // Association Targets. + public abstract List GetMemberTargetIds(SysId affiliateIdOwner); + public abstract List GetCustomerTargetIds(List affiliateIdsInclude, List affiliateIdsExclude); + public abstract List GetCustomerAssocIdsForTargets(List affiliateIdsTarget); + public abstract List GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIdsTarget); + + //------------------------------------------------------------------- + // Associated data. + public abstract bool AssociationHasTransactions(SysId associationId); + public abstract bool AssociationHasRequirements(SysId associationId); + public abstract bool AssociationHasConstituents(SysId associationId); + // Is associated with transaction for delivery. + public abstract bool AssociationIsDeliveryContractor(SysId associationId); + // Dependent data should only be cleared when removing an association. + public abstract bool ClearAssociationDependentData(SbmAssociation association, DbUpdateInfo dbUpdateInfo); + + //------------------------------------------------------------------- + // Association interface rules. + public bool AllowColumnImport(SbmAssociation.Column column) + { + SbmDbDfn.ColumnIdx columnDb = GetDbCol(column); + if (column.Equals(SbmDbDfn.ColumnIdx.Unknown) && SessionConsole.DisplayAttribute(columnDb)) + { + switch (column) + { + /*case SbmAssociation.Column.Id: + case SbmAssociation.Column.Type: + case SbmAssociation.Column.TypeDesc:*/ + case SbmAssociation.Column.Code: + case SbmAssociation.Column.ExtRef: + case SbmAssociation.Column.Role: + case SbmAssociation.Column.Location: + case SbmAssociation.Column.PhoneMain: + case SbmAssociation.Column.Email: + case SbmAssociation.Column.Group: + case SbmAssociation.Column.DescDetail: + case SbmAssociation.Column.AnnualSalesTarget: + case SbmAssociation.Column.PriceSetId: + /*case SbmAssociation.Column.PriceSet_Ref: + case SbmAssociation.Column.PriceSet_Type: + case SbmAssociation.Column.PriceSet_Name: + case SbmAssociation.Column.TaxCodeId:*/ + return true; + + case SbmAssociation.Column.AccountManagerCode: + //case SbmAssociation.Column.AccountManagerDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.AccountManager); + case SbmAssociation.Column.AccountHandlerCode: + //case SbmAssociation.Column.AccountHandlerDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.AccountHandler); + case SbmAssociation.Column.AccountTypeCode: + //case SbmAssociation.Column.AccountTypeDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.AccountType); + case SbmAssociation.Column.AccountRatingCode: + //case SbmAssociation.Column.AccountRatingDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.AccountRating); + case SbmAssociation.Column.ContactAreaCode: + //case SbmAssociation.Column.ContactAreaDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.ContactArea); + case SbmAssociation.Column.ContactHandlerCode: + //case SbmAssociation.Column.ContactHandlerDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.ContactHandler); + case SbmAssociation.Column.ContactMethodCode: + //case SbmAssociation.Column.ContactMethodDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.ContactMethod); + case SbmAssociation.Column.ContactCallCycleCode: + //case SbmAssociation.Column.ContactCallCycleDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.ContactCallCycle); + + case SbmAssociation.Column.CallsPerYear: + case SbmAssociation.Column.LastCall: + return true; + case SbmAssociation.Column.SeasonalCategoryCodes: + case SbmAssociation.Column.SeasonalCategoryCode1: + //case SbmAssociation.Column.SeasonalCategoryDesc1: + case SbmAssociation.Column.SeasonalCategoryCode2: + //case SbmAssociation.Column.SeasonalCategoryDesc2: + case SbmAssociation.Column.SeasonalCategoryCode3: + //case SbmAssociation.Column.SeasonalCategoryDesc3: + return CodeTypeHasCodes(Sbm.ApplCodeType.SeasonalCategory); + + case SbmAssociation.Column.OrderLeadTimeCode: + //case SbmAssociation.Column.OrderLeadTimeDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.OrderLeadTime); + case SbmAssociation.Column.DeliveryTypeCode: + //case SbmAssociation.Column.DeliveryTypeDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryType); + case SbmAssociation.Column.DeliveryMethodCode: + //case SbmAssociation.Column.DeliveryMethodDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryMethod); + case SbmAssociation.Column.DeliveryBookInCode: + //case SbmAssociation.Column.DeliveryBookInDesc: + return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryBookIn); + + case SbmAssociation.Column.Terminated: + case SbmAssociation.Column.Notes: + case SbmAssociation.Column.Target_Name: + case SbmAssociation.Column.Target_Nature: + case SbmAssociation.Column.Target_PhoneMain: + case SbmAssociation.Column.Target_PhoneAlt: + case SbmAssociation.Column.Target_PhoneFax: + case SbmAssociation.Column.Target_PhoneMobile: + case SbmAssociation.Column.Target_Email: + case SbmAssociation.Column.Target_Website: + case SbmAssociation.Column.Target_Notes: + case SbmAssociation.Column.Target_DeliveryAddress_Postcode: + //case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: + case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: + case SbmAssociation.Column.Member_Code: + case SbmAssociation.Column.Member_ExtRef: + case SbmAssociation.Column.Member_Role: + case SbmAssociation.Column.Member_Location: + case SbmAssociation.Column.Member_PhoneMain: + case SbmAssociation.Column.Member_Email: + case SbmAssociation.Column.Member_Target_Name: + case SbmAssociation.Column.Member_Target_PhoneMain: + case SbmAssociation.Column.Member_Target_PhoneAlt: + case SbmAssociation.Column.Member_Target_PhoneFax: + case SbmAssociation.Column.Member_Target_PhoneMobile: + case SbmAssociation.Column.Member_Target_Email: + case SbmAssociation.Column.Member_Target_Website: + case SbmAssociation.Column.Member_Target_Notes: + return true; + } + } + return false; + } + public String GetColumnCode(SbmAssociation.Column column) + { + switch (column) + { + //case SbmAssociation.Column.Unknown: return ""; + case SbmAssociation.Column.Pos: return "Assoc_Pos"; + case SbmAssociation.Column.Id: return "Assoc_Id"; + case SbmAssociation.Column.Type: return "Assoc_Type"; + case SbmAssociation.Column.Type_Desc: return "Assoc_TypeDesc"; + case SbmAssociation.Column.Code: return "Assoc_Code"; + case SbmAssociation.Column.ExtRef: return "Assoc_ExtRef"; + case SbmAssociation.Column.Role: return "Assoc_Role"; + case SbmAssociation.Column.Location: return "Assoc_Location"; + case SbmAssociation.Column.PhoneMain: return "Assoc_PhoneMain"; + case SbmAssociation.Column.Email: return "Assoc_Email"; + case SbmAssociation.Column.Group: return "Assoc_Group"; + case SbmAssociation.Column.DescDetail: return "Assoc_DescDetail"; + case SbmAssociation.Column.DefaultNominalCode: return "Assoc_DefaultNominalCode"; + case SbmAssociation.Column.AmountTransMax: return "Assoc_AmountTransMax"; + case SbmAssociation.Column.AnnualSalesTarget: return "Assoc_AnnualSalesTarget"; + case SbmAssociation.Column.CreditLimit: return "Assoc_CreditLimit"; + case SbmAssociation.Column.AccountBalance: return "Assoc_AccountBalance"; + case SbmAssociation.Column.DiscountType: return "Assoc_DiscountType"; + case SbmAssociation.Column.DiscountType_Desc: return "Assoc_DiscountTypeDesc"; + case SbmAssociation.Column.DiscountRate: return "Assoc_DiscountRate"; + case SbmAssociation.Column.PriceSetId: return "Assoc_PriceSetId"; + case SbmAssociation.Column.PriceSet_Ref: return "Assoc_PriceSet_Ref"; + case SbmAssociation.Column.PriceSet_Type: return "Assoc_PriceSet_Type"; + case SbmAssociation.Column.PriceSet_TypeDesc: return "Assoc_PriceSet_TypeDesc"; + case SbmAssociation.Column.PriceSet_Name: return "Assoc_PriceSet_Name"; + case SbmAssociation.Column.TaxCodeId: return "Assoc_TaxCodeId"; + case SbmAssociation.Column.PaymentTerms: return "Assoc_PaymentTerms"; + case SbmAssociation.Column.InvoiceDesc: return "Assoc_InvoiceDesc"; + case SbmAssociation.Column.AccountManagerCode: return "Assoc_AccountManagerCode"; + case SbmAssociation.Column.AccountManagerDesc: return "Assoc_AccountManagerDesc"; + case SbmAssociation.Column.AccountHandlerCode: return "Assoc_AccountHandlerCode"; + case SbmAssociation.Column.AccountHandlerDesc: return "Assoc_AccountHandlerDesc"; + case SbmAssociation.Column.AccountTypeCode: return "Assoc_AccountTypeCode"; + case SbmAssociation.Column.AccountTypeDesc: return "Assoc_AccountTypeDesc"; + case SbmAssociation.Column.AccountRatingCode: return "Assoc_AccountRatingCode"; + case SbmAssociation.Column.AccountRatingDesc: return "Assoc_AccountRatingDesc"; + case SbmAssociation.Column.ContactAreaCode: return "Assoc_ContactAreaCode"; + case SbmAssociation.Column.ContactAreaDesc: return "Assoc_ContactAreaDesc"; + case SbmAssociation.Column.ContactHandlerCode: return "Assoc_ContactHandlerCode"; + case SbmAssociation.Column.ContactHandlerDesc: return "Assoc_ContactHandlerDesc"; + case SbmAssociation.Column.ContactMethodCode: return "Assoc_ContactMethodCode"; + case SbmAssociation.Column.ContactMethodDesc: return "Assoc_ContactMethodDesc"; + case SbmAssociation.Column.ContactCallCycleCode: return "Assoc_ContactCallCycleCode"; + case SbmAssociation.Column.ContactCallCycleDesc: return "Assoc_ContactCallCycleDesc"; + case SbmAssociation.Column.CallsPerYear: return "Assoc_CallsPerYear"; + case SbmAssociation.Column.LastCall: return "Assoc_LastCall"; + case SbmAssociation.Column.SeasonalCategoryCodes: return "Assoc_SeasonalCatCodes"; + case SbmAssociation.Column.SeasonalCategoryCode1: return "Assoc_SeasonalCatCode1"; + case SbmAssociation.Column.SeasonalCategoryDesc1: return "Assoc_SeasonalCatDesc1"; + case SbmAssociation.Column.SeasonalCategoryCode2: return "Assoc_SeasonalCatCode2"; + case SbmAssociation.Column.SeasonalCategoryDesc2: return "Assoc_SeasonalCatDesc2"; + case SbmAssociation.Column.SeasonalCategoryCode3: return "Assoc_SeasonalCatCode3"; + case SbmAssociation.Column.SeasonalCategoryDesc3: return "Assoc_SeasonalCatDesc3"; + case SbmAssociation.Column.OrderLeadTimeCode: return "Assoc_OrderLeadTimeCode"; + case SbmAssociation.Column.OrderLeadTimeDesc: return "Assoc_OrderLeadTimeDesc"; + case SbmAssociation.Column.DeliveryTypeCode: return "Assoc_DeliveryTypeCode"; + case SbmAssociation.Column.DeliveryTypeDesc: return "Assoc_DeliveryTypeDesc"; + case SbmAssociation.Column.DeliveryMethodCode: return "Assoc_DeliveryMethodCode"; + case SbmAssociation.Column.DeliveryMethodDesc: return "Assoc_DeliveryMethodDesc"; + case SbmAssociation.Column.DeliveryBookInCode: return "Assoc_DeliveryBookInCode"; + case SbmAssociation.Column.DeliveryBookInDesc: return "Assoc_DeliveryBookInDesc"; + case SbmAssociation.Column.Terminated: return "Assoc_Terminated"; + case SbmAssociation.Column.Primary: return "Assoc_Primary"; + case SbmAssociation.Column.Technician: return "Assoc_Technician"; + case SbmAssociation.Column.Notes: return "Assoc_Notes"; + case SbmAssociation.Column.Status_Desc: return "Assoc_StatusDesc"; + case SbmAssociation.Column.Status_Ind: return "Assoc_StatusInd"; + case SbmAssociation.Column.AffIdOwner: return "Assoc_AffIdOwner"; + case SbmAssociation.Column.Owner_Name: return "Assoc_Owner_Name"; + case SbmAssociation.Column.AffIdTarget: return "Assoc_AffIdTarget"; + case SbmAssociation.Column.Target_Type: return "Assoc_Target_Type"; + case SbmAssociation.Column.Target_TypeDesc: return "Assoc_Target_TypeDesc"; + case SbmAssociation.Column.Target_Name: return "Assoc_Target_Name"; + case SbmAssociation.Column.Target_Nature: return "Assoc_Target_Nature"; + case SbmAssociation.Column.Target_PhoneMain: return "Assoc_Target_PhoneMain"; + case SbmAssociation.Column.Target_PhoneAlt: return "Assoc_Target_PhoneAlt"; + case SbmAssociation.Column.Target_PhoneFax: return "Assoc_Target_PhoneFax"; + case SbmAssociation.Column.Target_PhoneMobile: return "Assoc_Target_PhoneMobile"; + case SbmAssociation.Column.Target_Email: return "Assoc_Target_Email"; + case SbmAssociation.Column.Target_Website: return "Assoc_Target_Website"; + case SbmAssociation.Column.Target_Notes: return "Assoc_Target_Notes"; + case SbmAssociation.Column.Target_Address_Type: return "Assoc_Target_Address_Type"; + case SbmAssociation.Column.Target_Address_TypeDesc: return "Assoc_Target_Address_TypeDesc"; + case SbmAssociation.Column.Target_Address_RefExt: return "Assoc_Target_Address_RefExt"; + case SbmAssociation.Column.Target_Address_Name: return "Assoc_Target_Address_Name"; + case SbmAssociation.Column.Target_Address_DescBrief: return "Assoc_Target_Address_DescBrief"; + case SbmAssociation.Column.Target_Address_Summary: return "Assoc_Target_Address_Summary"; + case SbmAssociation.Column.Target_Address_Line1: return "Assoc_Target_Address_Line1"; + case SbmAssociation.Column.Target_Address_Line2: return "Assoc_Target_Address_Line2"; + case SbmAssociation.Column.Target_Address_City: return "Assoc_Target_Address_City"; + case SbmAssociation.Column.Target_Address_Province: return "Assoc_Target_Address_Province"; + case SbmAssociation.Column.Target_Address_Postcode: return "Assoc_Target_Address_Postcode"; + case SbmAssociation.Column.Target_Address_Country: return "Assoc_Target_Address_Country"; + case SbmAssociation.Column.Target_Address_Contact: return "Assoc_Target_Address_Contact"; + case SbmAssociation.Column.Target_Address_Phone: return "Assoc_Target_Address_Phone"; + case SbmAssociation.Column.Target_Address_Email: return "Assoc_Target_Address_Email"; + case SbmAssociation.Column.Target_Address_AccountManagerCode: return "Assoc_Target_Address_AccountManagerCode"; + case SbmAssociation.Column.Target_Address_AccountManagerDesc: return "Assoc_Target_Address_AccountManagerDesc"; + case SbmAssociation.Column.Target_Address_AccountHandlerCode: return "Assoc_Target_Address_AccountHandlerCode"; + case SbmAssociation.Column.Target_Address_AccountHandlerDesc: return "Assoc_Target_Address_AccountHandlerDesc"; + case SbmAssociation.Column.Target_Address_ContactAreaCode: return "Assoc_Target_Address_ContactAreaCode"; + case SbmAssociation.Column.Target_Address_ContactAreaDesc: return "Assoc_Target_Address_ContactAreaDesc"; + case SbmAssociation.Column.Target_Address_ContactHandlerCode: return "Assoc_Target_Address_ContactHandlerCode"; + case SbmAssociation.Column.Target_Address_ContactHandlerDesc: return "Assoc_Target_Address_ContactHandlerDesc"; + case SbmAssociation.Column.Target_Address_LastVisitOn: return "Assoc_Target_Address_LastVisitOn"; + case SbmAssociation.Column.Target_Address_NextVisitOn: return "Assoc_Target_Address_NextVisitOn"; + case SbmAssociation.Column.Target_DeliveryAddress_Postcode: return "Assoc_Target_DelAddr_Postcode"; + case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: return "Assoc_Target_DelAddr_AccountManagerCode"; + case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: return "Assoc_Target_DelAddr_ContactAreaCode"; + case SbmAssociation.Column.Member_Type: return "Assoc_Member_Type"; + case SbmAssociation.Column.Member_TypeDesc: return "Assoc_Member_TypeDesc"; + case SbmAssociation.Column.Member_Code: return "Assoc_Member_Code"; + case SbmAssociation.Column.Member_ExtRef: return "Assoc_Member_ExtRef"; + case SbmAssociation.Column.Member_Role: return "Assoc_Member_Role"; + case SbmAssociation.Column.Member_Location: return "Assoc_Member_Location"; + case SbmAssociation.Column.Member_PhoneMain: return "Assoc_Member_PhoneMain"; + case SbmAssociation.Column.Member_Email: return "Assoc_Member_Email"; + case SbmAssociation.Column.Member_Target_Name: return "Assoc_Member_Target_Name"; + case SbmAssociation.Column.Member_Target_Nature: return "Assoc_Member_Target_Nature"; + case SbmAssociation.Column.Member_Target_PhoneMain: return "Assoc_Member_Target_PhoneMain"; + case SbmAssociation.Column.Member_Target_PhoneAlt: return "Assoc_Member_Target_PhoneAlt"; + case SbmAssociation.Column.Member_Target_PhoneFax: return "Assoc_Member_Target_PhoneFax"; + case SbmAssociation.Column.Member_Target_PhoneMobile: return "Assoc_Member_Target_PhoneMobile"; + case SbmAssociation.Column.Member_Target_Email: return "Assoc_Member_Target_Email"; + case SbmAssociation.Column.Member_Target_Website: return "Assoc_Member_Target_Website"; + case SbmAssociation.Column.Member_Target_Notes: return "Assoc_Member_Target_Notes"; + case SbmAssociation.Column.Member_Target_Address_Summary: return "Assoc_Member_Target_Address_Summary"; + case SbmAssociation.Column.Member_Target_Address_Line1: return "Assoc_Member_Target_Address_Line1"; + case SbmAssociation.Column.Member_Target_Address_Line2: return "Assoc_Member_Target_Address_Line2"; + case SbmAssociation.Column.Member_Target_Address_City: return "Assoc_Member_Target_Address_City"; + case SbmAssociation.Column.Member_Target_Address_Province: return "Assoc_Member_Target_Address_Province"; + case SbmAssociation.Column.Member_Target_Address_Postcode: return "Assoc_Member_Target_Address_Postcode"; + case SbmAssociation.Column.Member_Target_Address_Country: return "Assoc_Member_Target_Address_Country"; + case SbmAssociation.Column.Trans_LastSaleRaised: return "Assoc_Trans_LastSaleRaised"; + case SbmAssociation.Column.Trans_SalesValue_Open: return "Assoc_Trans_SalesValue_Open"; + case SbmAssociation.Column.Trans_SalesValue_Cytd: return "Assoc_Trans_SalesValue_Cytd"; + case SbmAssociation.Column.Trans_SalesValue_Lcy: return "Assoc_Trans_SalesValue_Lcy"; + } + return ""; + } + public String GetColumnCaption(SbmAssociation.Column column) + { + String caption = ""; + switch (column) + { + //case SbmAssociation.Column.Unknown: caption = ""; break; + case SbmAssociation.Column.Pos: caption = "Pos"; break; // Position in list (derived). + case SbmAssociation.Column.Id: caption = "Id"; break; + //-----------------------------------------------------------// Association details. + case SbmAssociation.Column.Type: caption = "Type"; break; + case SbmAssociation.Column.Type_Desc: caption = "Type desc"; break; + case SbmAssociation.Column.Code: caption = "Code"; break; + case SbmAssociation.Column.ExtRef: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ExtRef, "Ext ref"); break; + case SbmAssociation.Column.Role: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Role, "Role"); break; + case SbmAssociation.Column.Location: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Location, "Location"); break; + case SbmAssociation.Column.PhoneMain: caption = "Phone main"; break; + case SbmAssociation.Column.Email: caption = "Email"; break; + case SbmAssociation.Column.Group: caption = "Group"; break; + case SbmAssociation.Column.DescDetail: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DescDetail, "Detail desc"); break; + case SbmAssociation.Column.DefaultNominalCode: + caption = "Default nominal code"; break; + case SbmAssociation.Column.AmountTransMax: caption = "Trans max amount"; break; + case SbmAssociation.Column.AnnualSalesTarget: caption = "Annual sales target"; break; + case SbmAssociation.Column.CreditLimit: caption = "Credit Limit"; break; + case SbmAssociation.Column.AccountBalance: caption = "Account balance"; break; + case SbmAssociation.Column.DiscountType: caption = "Discount type"; break; + case SbmAssociation.Column.DiscountType_Desc: caption = "Discount type"; break; + case SbmAssociation.Column.DiscountRate: caption = "Discount rate"; break; + //-----------------------------------------------------------// part of PriceSet details + case SbmAssociation.Column.PriceSetId: caption = "Price set #"; break; + case SbmAssociation.Column.PriceSet_Ref: caption = "Price set ref"; break; + case SbmAssociation.Column.PriceSet_Type: caption = "Price set type"; break; + case SbmAssociation.Column.PriceSet_TypeDesc: caption = "Price set type"; break; + case SbmAssociation.Column.PriceSet_Name: caption = "Price set"; break; + case SbmAssociation.Column.TaxCodeId: caption = "Tax code #"; break; + case SbmAssociation.Column.PaymentTerms: caption = "Payment terms"; break; + case SbmAssociation.Column.InvoiceDesc: caption = "Invoice desc"; break; + case SbmAssociation.Column.AccountManagerCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager") + " code"; break; + case SbmAssociation.Column.AccountManagerDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; + case SbmAssociation.Column.AccountHandlerCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler") + " code"; break; + case SbmAssociation.Column.AccountHandlerDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler"); break; + case SbmAssociation.Column.AccountTypeCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, "Account type") + " code"; break; + case SbmAssociation.Column.AccountTypeDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, "Account type"); break; + case SbmAssociation.Column.AccountRatingCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, "Account rating") + " code"; break; + case SbmAssociation.Column.AccountRatingDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, "Account rating"); break; + case SbmAssociation.Column.ContactAreaCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area") + " code"; break; + case SbmAssociation.Column.ContactAreaDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; + case SbmAssociation.Column.ContactHandlerCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler)") + " code"; break; + case SbmAssociation.Column.ContactHandlerDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler"); break; + case SbmAssociation.Column.ContactMethodCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, "Conact method") + " code"; break; + case SbmAssociation.Column.ContactMethodDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, "Conact method"); break; + case SbmAssociation.Column.ContactCallCycleCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, "Call cycle") + " code"; break; + case SbmAssociation.Column.ContactCallCycleDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, "Call cycle"); break; + case SbmAssociation.Column.CallsPerYear: caption = "Calls per year"; break; + case SbmAssociation.Column.LastCall: caption = "Last call"; break; + case SbmAssociation.Column.SeasonalCategoryCodes: caption = "Seasonal category codes"; break; + case SbmAssociation.Column.SeasonalCategoryCode1: caption = "Seasonal category code 1"; break; + case SbmAssociation.Column.SeasonalCategoryDesc1: caption = "Seasonal category 1"; break; + case SbmAssociation.Column.SeasonalCategoryCode2: caption = "Seasonal category code 2"; break; + case SbmAssociation.Column.SeasonalCategoryDesc2: caption = "Seasonal category 2"; break; + case SbmAssociation.Column.SeasonalCategoryCode3: caption = "Seasonal category code 3"; break; + case SbmAssociation.Column.SeasonalCategoryDesc3: caption = "Seasonal category 3"; break; + case SbmAssociation.Column.OrderLeadTimeCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, "Order lead time") + " code"; break; + case SbmAssociation.Column.OrderLeadTimeDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, "Order lead time"); break; + case SbmAssociation.Column.DeliveryTypeCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, "Delivery type") + " code"; break; + case SbmAssociation.Column.DeliveryTypeDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, "Delivery type"); break; + case SbmAssociation.Column.DeliveryMethodCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, "Delivery method") + " code"; break; + case SbmAssociation.Column.DeliveryMethodDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, "Delivery method"); break; + case SbmAssociation.Column.DeliveryBookInCode: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, "Delivery book-in") + " code"; break; + case SbmAssociation.Column.DeliveryBookInDesc: + caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, "Delivery book-in"); break; + case SbmAssociation.Column.Terminated: caption = "Terminated"; break; + case SbmAssociation.Column.Primary: caption = "Primary"; break; + case SbmAssociation.Column.Technician: caption = "Technician"; break; + case SbmAssociation.Column.Notes: caption = "Notes"; break; + case SbmAssociation.Column.Status_Desc: caption = "Status"; break; + case SbmAssociation.Column.Status_Ind: caption = "Status ind"; break; + //-----------------------------------------------------------//Association's owner details + case SbmAssociation.Column.AffIdOwner: caption = "Owner #"; break; + case SbmAssociation.Column.Owner_Name: caption = "Owner name"; break; + case SbmAssociation.Column.AffIdTarget: caption = "Target #"; break; + //-----------------------------------------------------------// Association's target details + case SbmAssociation.Column.Target_Type: caption = "Contact type"; break; + case SbmAssociation.Column.Target_TypeDesc: caption = "Contact type"; break; + case SbmAssociation.Column.Target_Name: caption = "Contact name"; break; + case SbmAssociation.Column.Target_Nature: caption = "Contact nature"; break; + case SbmAssociation.Column.Target_PhoneMain: caption = "Contact main phone"; break; + case SbmAssociation.Column.Target_PhoneAlt: caption = "Contact alt phone"; break; + case SbmAssociation.Column.Target_PhoneFax: caption = "Contact fax"; break; + case SbmAssociation.Column.Target_PhoneMobile: caption = "Contact mobile phone"; break; + case SbmAssociation.Column.Target_Email: caption = "Contact email"; break; + case SbmAssociation.Column.Target_Website: caption = "Contact website"; break; + case SbmAssociation.Column.Target_Notes: caption = "Contact notes"; break; + case SbmAssociation.Column.Target_Address_Type: caption = "Contact addr. type"; break; + case SbmAssociation.Column.Target_Address_TypeDesc: caption = "Contact address type"; break; + case SbmAssociation.Column.Target_Address_RefExt: caption = "Contact address ref ext"; break; + case SbmAssociation.Column.Target_Address_Name: caption = "Contact address name"; break; + case SbmAssociation.Column.Target_Address_DescBrief: caption = "Contact address desc"; break; + //-----------------------------------------------------------// Association's target address details + case SbmAssociation.Column.Target_Address_Summary: caption = "Contact address"; break; + case SbmAssociation.Column.Target_Address_Line1: caption = "Contact address line 1"; break; + case SbmAssociation.Column.Target_Address_Line2: caption = "Contact address line 2"; break; + case SbmAssociation.Column.Target_Address_City: caption = "Contact address city"; break; + case SbmAssociation.Column.Target_Address_Province: caption = "Contact address province"; break; + case SbmAssociation.Column.Target_Address_Postcode: caption = "Contact address postcode"; break; + case SbmAssociation.Column.Target_Address_Country: caption = "Contact address country"; break; + case SbmAssociation.Column.Target_Address_Contact: caption = "Contact address Contact"; break; + case SbmAssociation.Column.Target_Address_Phone: caption = "Contact address Phone"; break; + case SbmAssociation.Column.Target_Address_Email: caption = "Contact address Email"; break; + case SbmAssociation.Column.Target_Address_AccountManagerCode: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager") + " code"; break; + case SbmAssociation.Column.Target_Address_AccountManagerDesc: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; + case SbmAssociation.Column.Target_Address_AccountHandlerCode: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler") + " code"; break; + case SbmAssociation.Column.Target_Address_AccountHandlerDesc: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler"); break; + case SbmAssociation.Column.Target_Address_ContactAreaCode: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area") + " code"; break; + case SbmAssociation.Column.Target_Address_ContactAreaDesc: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; + case SbmAssociation.Column.Target_Address_ContactHandlerCode: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler)") + " code"; break; + case SbmAssociation.Column.Target_Address_ContactHandlerDesc: + caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler"); break; + case SbmAssociation.Column.Target_Address_LastVisitOn: caption = "Contact address last visit"; break; + case SbmAssociation.Column.Target_Address_NextVisitOn: caption = "Contact address next visit"; break; + case SbmAssociation.Column.Target_DeliveryAddress_Postcode: caption = "Delivery address - Postcode"; break; + case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: + caption = "Delivery address - " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; + case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: + caption = "Delivery address - " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; + //-----------------------------------------------------------// part of ... Members details + case SbmAssociation.Column.Member_Type: caption = "Member type"; break; + case SbmAssociation.Column.Member_TypeDesc: caption = "Member type desc"; break; + case SbmAssociation.Column.Member_Code: caption = "Member code"; break; + case SbmAssociation.Column.Member_ExtRef: caption = "Member ext ref"; break; + case SbmAssociation.Column.Member_Role: caption = "Member role"; break; + case SbmAssociation.Column.Member_Location: caption = "Member location"; break; + case SbmAssociation.Column.Member_PhoneMain: caption = "Member phone main"; break; + case SbmAssociation.Column.Member_Email: caption = "Member email"; break; + case SbmAssociation.Column.Member_Target_Name: caption = "Member contact name"; break; + case SbmAssociation.Column.Member_Target_Nature: caption = "Member contact nature"; break; + case SbmAssociation.Column.Member_Target_PhoneMain: caption = "Member contact phone main"; break; + case SbmAssociation.Column.Member_Target_PhoneAlt: caption = "Member contact phone alt"; break; + case SbmAssociation.Column.Member_Target_PhoneFax: caption = "Member contact phone fax"; break; + case SbmAssociation.Column.Member_Target_PhoneMobile: caption = "Member contact phone mobile"; break; + case SbmAssociation.Column.Member_Target_Email: caption = "Member contact email"; break; + case SbmAssociation.Column.Member_Target_Website: caption = "Member contact website"; break; + case SbmAssociation.Column.Member_Target_Notes: caption = "Member contact notes"; break; + case SbmAssociation.Column.Member_Target_Address_Summary: caption = "Member contact address"; break; + case SbmAssociation.Column.Member_Target_Address_Line1: caption = "Member contact address line 1"; break; + case SbmAssociation.Column.Member_Target_Address_Line2: caption = "Member contact address line 2"; break; + case SbmAssociation.Column.Member_Target_Address_City: caption = "Member contact city"; break; + case SbmAssociation.Column.Member_Target_Address_Province: caption = "Member contact address province"; break; + case SbmAssociation.Column.Member_Target_Address_Postcode: caption = "Member contact address postcode"; break; + case SbmAssociation.Column.Member_Target_Address_Country: caption = "Member contact address country"; break; + case SbmAssociation.Column.Trans_LastSaleRaised: caption = "Last sale"; break; + case SbmAssociation.Column.Trans_SalesValue_Open: caption = "SO value - open"; break; // Net open sales order value. + case SbmAssociation.Column.Trans_SalesValue_Cytd: caption = "SO value - YDT"; break; // Net sales order value closed this calendar year. + case SbmAssociation.Column.Trans_SalesValue_Lcy: caption = "SO value - LCY"; break; // Net sales order value closed last calendar year. + } + if (StringUtil.IsEmpty(caption)) + caption = GetAssociationColumnDfn(column).Caption; + return caption; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association.cs index f896e54..23dcc14 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_Association.cs @@ -8,6 +8,8 @@ using Sarand.Net.Standard.Base.ReferenceData; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; +using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; +using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { @@ -17,486 +19,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr partial class SbmAccountMgr { //------------------------------------------------------------------- - // Utilities. - public static bool IsValidCode(String code) - { - if (StringUtil.IsEmpty(code)) return false; - if (code != code.Trim()) return false; - return true; - } - public abstract List GetAssociationTypesInUse(); - - //------------------------------------------------------------------- - // Association List Targets. - public abstract List GetMemberTargetIds(SysId affiliateIdOwner); - public abstract List GetCustomerTargetIds(List affiliateIdsInclude, List affiliateIdsExclude); - public abstract List GetCustomerAssocIdsForTargets(List affiliateIdsTarget); - public abstract List GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIdsTarget); - - //------------------------------------------------------------------- - // Associated data. - public abstract bool AssociationHasTransactions(SysId associationId); - public abstract bool AssociationHasRequirements(SysId associationId); - public abstract bool AssociationHasConstituents(SysId associationId); - // Is associated with transaction for delivery. - public abstract bool AssociationIsDeliveryContractor(SysId associationId); - // Dependent data should only be cleared when removing an association. - public abstract bool ClearAssociationDependentData(SbmAssociation association, DbUpdateInfo dbUpdateInfo); - - //------------------------------------------------------------------- - // Association interface rules. - public bool AllowColumnImport(SbmAssociation.Column column) - { - SbmDbDfn.ColumnIdx columnDb = GetDbCol(column); - if (column.Equals(SbmDbDfn.ColumnIdx.Unknown) && SessionConsole.DisplayAttribute(columnDb)) - { - switch (column) - { - /*case SbmAssociation.Column.Id: - case SbmAssociation.Column.Type: - case SbmAssociation.Column.TypeDesc:*/ - case SbmAssociation.Column.Code: - case SbmAssociation.Column.ExtRef: - case SbmAssociation.Column.Role: - case SbmAssociation.Column.Location: - case SbmAssociation.Column.PhoneMain: - case SbmAssociation.Column.Email: - case SbmAssociation.Column.Group: - case SbmAssociation.Column.DescDetail: - case SbmAssociation.Column.AnnualSalesTarget: - case SbmAssociation.Column.PriceSetId: - /*case SbmAssociation.Column.PriceSet_Ref: - case SbmAssociation.Column.PriceSet_Type: - case SbmAssociation.Column.PriceSet_Name: - case SbmAssociation.Column.TaxCodeId:*/ - return true; - - case SbmAssociation.Column.AccountManagerCode: - //case SbmAssociation.Column.AccountManagerDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.AccountManager); - case SbmAssociation.Column.AccountHandlerCode: - //case SbmAssociation.Column.AccountHandlerDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.AccountHandler); - case SbmAssociation.Column.AccountTypeCode: - //case SbmAssociation.Column.AccountTypeDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.AccountType); - case SbmAssociation.Column.AccountRatingCode: - //case SbmAssociation.Column.AccountRatingDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.AccountRating); - case SbmAssociation.Column.ContactAreaCode: - //case SbmAssociation.Column.ContactAreaDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.ContactArea); - case SbmAssociation.Column.ContactHandlerCode: - //case SbmAssociation.Column.ContactHandlerDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.ContactHandler); - case SbmAssociation.Column.ContactMethodCode: - //case SbmAssociation.Column.ContactMethodDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.ContactMethod); - case SbmAssociation.Column.ContactCallCycleCode: - //case SbmAssociation.Column.ContactCallCycleDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.ContactCallCycle); - - case SbmAssociation.Column.CallsPerYear: - case SbmAssociation.Column.LastCall: - return true; - case SbmAssociation.Column.SeasonalCategoryCodes: - case SbmAssociation.Column.SeasonalCategoryCode1: - //case SbmAssociation.Column.SeasonalCategoryDesc1: - case SbmAssociation.Column.SeasonalCategoryCode2: - //case SbmAssociation.Column.SeasonalCategoryDesc2: - case SbmAssociation.Column.SeasonalCategoryCode3: - //case SbmAssociation.Column.SeasonalCategoryDesc3: - return CodeTypeHasCodes(Sbm.ApplCodeType.SeasonalCategory); - - case SbmAssociation.Column.OrderLeadTimeCode: - //case SbmAssociation.Column.OrderLeadTimeDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.OrderLeadTime); - case SbmAssociation.Column.DeliveryTypeCode: - //case SbmAssociation.Column.DeliveryTypeDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryType); - case SbmAssociation.Column.DeliveryMethodCode: - //case SbmAssociation.Column.DeliveryMethodDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryMethod); - case SbmAssociation.Column.DeliveryBookInCode: - //case SbmAssociation.Column.DeliveryBookInDesc: - return CodeTypeHasCodes(Sbm.ApplCodeType.DeliveryBookIn); - - case SbmAssociation.Column.Terminated: - case SbmAssociation.Column.Notes: - case SbmAssociation.Column.Target_Name: - case SbmAssociation.Column.Target_Nature: - case SbmAssociation.Column.Target_PhoneMain: - case SbmAssociation.Column.Target_PhoneAlt: - case SbmAssociation.Column.Target_PhoneFax: - case SbmAssociation.Column.Target_PhoneMobile: - case SbmAssociation.Column.Target_Email: - case SbmAssociation.Column.Target_Website: - case SbmAssociation.Column.Target_Notes: - case SbmAssociation.Column.Target_DeliveryAddress_Postcode: - //case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: - case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: - case SbmAssociation.Column.Member_Code: - case SbmAssociation.Column.Member_ExtRef: - case SbmAssociation.Column.Member_Role: - case SbmAssociation.Column.Member_Location: - case SbmAssociation.Column.Member_PhoneMain: - case SbmAssociation.Column.Member_Email: - case SbmAssociation.Column.Member_Target_Name: - case SbmAssociation.Column.Member_Target_PhoneMain: - case SbmAssociation.Column.Member_Target_PhoneAlt: - case SbmAssociation.Column.Member_Target_PhoneFax: - case SbmAssociation.Column.Member_Target_PhoneMobile: - case SbmAssociation.Column.Member_Target_Email: - case SbmAssociation.Column.Member_Target_Website: - case SbmAssociation.Column.Member_Target_Notes: - return true; - } - } - return false; - } - public String GetColumnCode(SbmAssociation.Column column) - { - switch (column) - { - //case SbmAssociation.Column.Unknown: return ""; - case SbmAssociation.Column.Pos: return "Assoc_Pos"; - case SbmAssociation.Column.Id: return "Assoc_Id"; - case SbmAssociation.Column.Type: return "Assoc_Type"; - case SbmAssociation.Column.Type_Desc: return "Assoc_TypeDesc"; - case SbmAssociation.Column.Code: return "Assoc_Code"; - case SbmAssociation.Column.ExtRef: return "Assoc_ExtRef"; - case SbmAssociation.Column.Role: return "Assoc_Role"; - case SbmAssociation.Column.Location: return "Assoc_Location"; - case SbmAssociation.Column.PhoneMain: return "Assoc_PhoneMain"; - case SbmAssociation.Column.Email: return "Assoc_Email"; - case SbmAssociation.Column.Group: return "Assoc_Group"; - case SbmAssociation.Column.DescDetail: return "Assoc_DescDetail"; - case SbmAssociation.Column.DefaultNominalCode: return "Assoc_DefaultNominalCode"; - case SbmAssociation.Column.AmountTransMax: return "Assoc_AmountTransMax"; - case SbmAssociation.Column.AnnualSalesTarget: return "Assoc_AnnualSalesTarget"; - case SbmAssociation.Column.CreditLimit: return "Assoc_CreditLimit"; - case SbmAssociation.Column.AccountBalance: return "Assoc_AccountBalance"; - case SbmAssociation.Column.DiscountType: return "Assoc_DiscountType"; - case SbmAssociation.Column.DiscountType_Desc: return "Assoc_DiscountTypeDesc"; - case SbmAssociation.Column.DiscountRate: return "Assoc_DiscountRate"; - case SbmAssociation.Column.PriceSetId: return "Assoc_PriceSetId"; - case SbmAssociation.Column.PriceSet_Ref: return "Assoc_PriceSet_Ref"; - case SbmAssociation.Column.PriceSet_Type: return "Assoc_PriceSet_Type"; - case SbmAssociation.Column.PriceSet_TypeDesc: return "Assoc_PriceSet_TypeDesc"; - case SbmAssociation.Column.PriceSet_Name: return "Assoc_PriceSet_Name"; - case SbmAssociation.Column.TaxCodeId: return "Assoc_TaxCodeId"; - case SbmAssociation.Column.PaymentTerms: return "Assoc_PaymentTerms"; - case SbmAssociation.Column.InvoiceDesc: return "Assoc_InvoiceDesc"; - case SbmAssociation.Column.AccountManagerCode: return "Assoc_AccountManagerCode"; - case SbmAssociation.Column.AccountManagerDesc: return "Assoc_AccountManagerDesc"; - case SbmAssociation.Column.AccountHandlerCode: return "Assoc_AccountHandlerCode"; - case SbmAssociation.Column.AccountHandlerDesc: return "Assoc_AccountHandlerDesc"; - case SbmAssociation.Column.AccountTypeCode: return "Assoc_AccountTypeCode"; - case SbmAssociation.Column.AccountTypeDesc: return "Assoc_AccountTypeDesc"; - case SbmAssociation.Column.AccountRatingCode: return "Assoc_AccountRatingCode"; - case SbmAssociation.Column.AccountRatingDesc: return "Assoc_AccountRatingDesc"; - case SbmAssociation.Column.ContactAreaCode: return "Assoc_ContactAreaCode"; - case SbmAssociation.Column.ContactAreaDesc: return "Assoc_ContactAreaDesc"; - case SbmAssociation.Column.ContactHandlerCode: return "Assoc_ContactHandlerCode"; - case SbmAssociation.Column.ContactHandlerDesc: return "Assoc_ContactHandlerDesc"; - case SbmAssociation.Column.ContactMethodCode: return "Assoc_ContactMethodCode"; - case SbmAssociation.Column.ContactMethodDesc: return "Assoc_ContactMethodDesc"; - case SbmAssociation.Column.ContactCallCycleCode: return "Assoc_ContactCallCycleCode"; - case SbmAssociation.Column.ContactCallCycleDesc: return "Assoc_ContactCallCycleDesc"; - case SbmAssociation.Column.CallsPerYear: return "Assoc_CallsPerYear"; - case SbmAssociation.Column.LastCall: return "Assoc_LastCall"; - case SbmAssociation.Column.SeasonalCategoryCodes: return "Assoc_SeasonalCatCodes"; - case SbmAssociation.Column.SeasonalCategoryCode1: return "Assoc_SeasonalCatCode1"; - case SbmAssociation.Column.SeasonalCategoryDesc1: return "Assoc_SeasonalCatDesc1"; - case SbmAssociation.Column.SeasonalCategoryCode2: return "Assoc_SeasonalCatCode2"; - case SbmAssociation.Column.SeasonalCategoryDesc2: return "Assoc_SeasonalCatDesc2"; - case SbmAssociation.Column.SeasonalCategoryCode3: return "Assoc_SeasonalCatCode3"; - case SbmAssociation.Column.SeasonalCategoryDesc3: return "Assoc_SeasonalCatDesc3"; - case SbmAssociation.Column.OrderLeadTimeCode: return "Assoc_OrderLeadTimeCode"; - case SbmAssociation.Column.OrderLeadTimeDesc: return "Assoc_OrderLeadTimeDesc"; - case SbmAssociation.Column.DeliveryTypeCode: return "Assoc_DeliveryTypeCode"; - case SbmAssociation.Column.DeliveryTypeDesc: return "Assoc_DeliveryTypeDesc"; - case SbmAssociation.Column.DeliveryMethodCode: return "Assoc_DeliveryMethodCode"; - case SbmAssociation.Column.DeliveryMethodDesc: return "Assoc_DeliveryMethodDesc"; - case SbmAssociation.Column.DeliveryBookInCode: return "Assoc_DeliveryBookInCode"; - case SbmAssociation.Column.DeliveryBookInDesc: return "Assoc_DeliveryBookInDesc"; - case SbmAssociation.Column.Terminated: return "Assoc_Terminated"; - case SbmAssociation.Column.Primary: return "Assoc_Primary"; - case SbmAssociation.Column.Technician: return "Assoc_Technician"; - case SbmAssociation.Column.Notes: return "Assoc_Notes"; - case SbmAssociation.Column.Status_Desc: return "Assoc_StatusDesc"; - case SbmAssociation.Column.Status_Ind: return "Assoc_StatusInd"; - case SbmAssociation.Column.AffIdOwner: return "Assoc_AffIdOwner"; - case SbmAssociation.Column.Owner_Name: return "Assoc_Owner_Name"; - case SbmAssociation.Column.AffIdTarget: return "Assoc_AffIdTarget"; - case SbmAssociation.Column.Target_Type: return "Assoc_Target_Type"; - case SbmAssociation.Column.Target_TypeDesc: return "Assoc_Target_TypeDesc"; - case SbmAssociation.Column.Target_Name: return "Assoc_Target_Name"; - case SbmAssociation.Column.Target_Nature: return "Assoc_Target_Nature"; - case SbmAssociation.Column.Target_PhoneMain: return "Assoc_Target_PhoneMain"; - case SbmAssociation.Column.Target_PhoneAlt: return "Assoc_Target_PhoneAlt"; - case SbmAssociation.Column.Target_PhoneFax: return "Assoc_Target_PhoneFax"; - case SbmAssociation.Column.Target_PhoneMobile: return "Assoc_Target_PhoneMobile"; - case SbmAssociation.Column.Target_Email: return "Assoc_Target_Email"; - case SbmAssociation.Column.Target_Website: return "Assoc_Target_Website"; - case SbmAssociation.Column.Target_Notes: return "Assoc_Target_Notes"; - case SbmAssociation.Column.Target_Address_Type: return "Assoc_Target_Address_Type"; - case SbmAssociation.Column.Target_Address_TypeDesc: return "Assoc_Target_Address_TypeDesc"; - case SbmAssociation.Column.Target_Address_RefExt: return "Assoc_Target_Address_RefExt"; - case SbmAssociation.Column.Target_Address_Name: return "Assoc_Target_Address_Name"; - case SbmAssociation.Column.Target_Address_DescBrief: return "Assoc_Target_Address_DescBrief"; - case SbmAssociation.Column.Target_Address_Summary: return "Assoc_Target_Address_Summary"; - case SbmAssociation.Column.Target_Address_Line1: return "Assoc_Target_Address_Line1"; - case SbmAssociation.Column.Target_Address_Line2: return "Assoc_Target_Address_Line2"; - case SbmAssociation.Column.Target_Address_City: return "Assoc_Target_Address_City"; - case SbmAssociation.Column.Target_Address_Province: return "Assoc_Target_Address_Province"; - case SbmAssociation.Column.Target_Address_Postcode: return "Assoc_Target_Address_Postcode"; - case SbmAssociation.Column.Target_Address_Country: return "Assoc_Target_Address_Country"; - case SbmAssociation.Column.Target_Address_Contact: return "Assoc_Target_Address_Contact"; - case SbmAssociation.Column.Target_Address_Phone: return "Assoc_Target_Address_Phone"; - case SbmAssociation.Column.Target_Address_Email: return "Assoc_Target_Address_Email"; - case SbmAssociation.Column.Target_Address_AccountManagerCode: return "Assoc_Target_Address_AccountManagerCode"; - case SbmAssociation.Column.Target_Address_AccountManagerDesc: return "Assoc_Target_Address_AccountManagerDesc"; - case SbmAssociation.Column.Target_Address_AccountHandlerCode: return "Assoc_Target_Address_AccountHandlerCode"; - case SbmAssociation.Column.Target_Address_AccountHandlerDesc: return "Assoc_Target_Address_AccountHandlerDesc"; - case SbmAssociation.Column.Target_Address_ContactAreaCode: return "Assoc_Target_Address_ContactAreaCode"; - case SbmAssociation.Column.Target_Address_ContactAreaDesc: return "Assoc_Target_Address_ContactAreaDesc"; - case SbmAssociation.Column.Target_Address_ContactHandlerCode: return "Assoc_Target_Address_ContactHandlerCode"; - case SbmAssociation.Column.Target_Address_ContactHandlerDesc: return "Assoc_Target_Address_ContactHandlerDesc"; - case SbmAssociation.Column.Target_Address_LastVisitOn: return "Assoc_Target_Address_LastVisitOn"; - case SbmAssociation.Column.Target_Address_NextVisitOn: return "Assoc_Target_Address_NextVisitOn"; - case SbmAssociation.Column.Target_DeliveryAddress_Postcode: return "Assoc_Target_DelAddr_Postcode"; - case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: return "Assoc_Target_DelAddr_AccountManagerCode"; - case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: return "Assoc_Target_DelAddr_ContactAreaCode"; - case SbmAssociation.Column.Member_Type: return "Assoc_Member_Type"; - case SbmAssociation.Column.Member_TypeDesc: return "Assoc_Member_TypeDesc"; - case SbmAssociation.Column.Member_Code: return "Assoc_Member_Code"; - case SbmAssociation.Column.Member_ExtRef: return "Assoc_Member_ExtRef"; - case SbmAssociation.Column.Member_Role: return "Assoc_Member_Role"; - case SbmAssociation.Column.Member_Location: return "Assoc_Member_Location"; - case SbmAssociation.Column.Member_PhoneMain: return "Assoc_Member_PhoneMain"; - case SbmAssociation.Column.Member_Email: return "Assoc_Member_Email"; - case SbmAssociation.Column.Member_Target_Name: return "Assoc_Member_Target_Name"; - case SbmAssociation.Column.Member_Target_Nature: return "Assoc_Member_Target_Nature"; - case SbmAssociation.Column.Member_Target_PhoneMain: return "Assoc_Member_Target_PhoneMain"; - case SbmAssociation.Column.Member_Target_PhoneAlt: return "Assoc_Member_Target_PhoneAlt"; - case SbmAssociation.Column.Member_Target_PhoneFax: return "Assoc_Member_Target_PhoneFax"; - case SbmAssociation.Column.Member_Target_PhoneMobile: return "Assoc_Member_Target_PhoneMobile"; - case SbmAssociation.Column.Member_Target_Email: return "Assoc_Member_Target_Email"; - case SbmAssociation.Column.Member_Target_Website: return "Assoc_Member_Target_Website"; - case SbmAssociation.Column.Member_Target_Notes: return "Assoc_Member_Target_Notes"; - case SbmAssociation.Column.Member_Target_Address_Summary: return "Assoc_Member_Target_Address_Summary"; - case SbmAssociation.Column.Member_Target_Address_Line1: return "Assoc_Member_Target_Address_Line1"; - case SbmAssociation.Column.Member_Target_Address_Line2: return "Assoc_Member_Target_Address_Line2"; - case SbmAssociation.Column.Member_Target_Address_City: return "Assoc_Member_Target_Address_City"; - case SbmAssociation.Column.Member_Target_Address_Province: return "Assoc_Member_Target_Address_Province"; - case SbmAssociation.Column.Member_Target_Address_Postcode: return "Assoc_Member_Target_Address_Postcode"; - case SbmAssociation.Column.Member_Target_Address_Country: return "Assoc_Member_Target_Address_Country"; - case SbmAssociation.Column.Trans_LastSaleRaised: return "Assoc_Trans_LastSaleRaised"; - case SbmAssociation.Column.Trans_SalesValue_Open: return "Assoc_Trans_SalesValue_Open"; - case SbmAssociation.Column.Trans_SalesValue_Cytd: return "Assoc_Trans_SalesValue_Cytd"; - case SbmAssociation.Column.Trans_SalesValue_Lcy: return "Assoc_Trans_SalesValue_Lcy"; - } - return ""; - } - public String GetColumnCaption(SbmAssociation.Column column) - { - String caption = ""; - switch (column) - { - //case SbmAssociation.Column.Unknown: caption = ""; break; - case SbmAssociation.Column.Pos: caption = "Pos"; break; // Position in list (derived). - case SbmAssociation.Column.Id: caption = "Id"; break; - //-----------------------------------------------------------// Association details. - case SbmAssociation.Column.Type: caption = "Type"; break; - case SbmAssociation.Column.Type_Desc: caption = "Type desc"; break; - case SbmAssociation.Column.Code: caption = "Code"; break; - case SbmAssociation.Column.ExtRef: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ExtRef, "Ext ref"); break; - case SbmAssociation.Column.Role: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Role, "Role"); break; - case SbmAssociation.Column.Location: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_Location, "Location"); break; - case SbmAssociation.Column.PhoneMain: caption = "Phone main"; break; - case SbmAssociation.Column.Email: caption = "Email"; break; - case SbmAssociation.Column.Group: caption = "Group"; break; - case SbmAssociation.Column.DescDetail: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DescDetail, "Detail desc"); break; - case SbmAssociation.Column.DefaultNominalCode: - caption = "Default nominal code"; break; - case SbmAssociation.Column.AmountTransMax: caption = "Trans max amount"; break; - case SbmAssociation.Column.AnnualSalesTarget: caption = "Annual sales target"; break; - case SbmAssociation.Column.CreditLimit: caption = "Credit Limit"; break; - case SbmAssociation.Column.AccountBalance: caption = "Account balance"; break; - case SbmAssociation.Column.DiscountType: caption = "Discount type"; break; - case SbmAssociation.Column.DiscountType_Desc: caption = "Discount type"; break; - case SbmAssociation.Column.DiscountRate: caption = "Discount rate"; break; - //-----------------------------------------------------------// part of PriceSet details - case SbmAssociation.Column.PriceSetId: caption = "Price set #"; break; - case SbmAssociation.Column.PriceSet_Ref: caption = "Price set ref"; break; - case SbmAssociation.Column.PriceSet_Type: caption = "Price set type"; break; - case SbmAssociation.Column.PriceSet_TypeDesc: caption = "Price set type"; break; - case SbmAssociation.Column.PriceSet_Name: caption = "Price set"; break; - case SbmAssociation.Column.TaxCodeId: caption = "Tax code #"; break; - case SbmAssociation.Column.PaymentTerms: caption = "Payment terms"; break; - case SbmAssociation.Column.InvoiceDesc: caption = "Invoice desc"; break; - case SbmAssociation.Column.AccountManagerCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager") + " code"; break; - case SbmAssociation.Column.AccountManagerDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; - case SbmAssociation.Column.AccountHandlerCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler") + " code"; break; - case SbmAssociation.Column.AccountHandlerDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler"); break; - case SbmAssociation.Column.AccountTypeCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, "Account type") + " code"; break; - case SbmAssociation.Column.AccountTypeDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, "Account type"); break; - case SbmAssociation.Column.AccountRatingCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, "Account rating") + " code"; break; - case SbmAssociation.Column.AccountRatingDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, "Account rating"); break; - case SbmAssociation.Column.ContactAreaCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area") + " code"; break; - case SbmAssociation.Column.ContactAreaDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; - case SbmAssociation.Column.ContactHandlerCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler)") + " code"; break; - case SbmAssociation.Column.ContactHandlerDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler"); break; - case SbmAssociation.Column.ContactMethodCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, "Conact method") + " code"; break; - case SbmAssociation.Column.ContactMethodDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, "Conact method"); break; - case SbmAssociation.Column.ContactCallCycleCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, "Call cycle") + " code"; break; - case SbmAssociation.Column.ContactCallCycleDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, "Call cycle"); break; - case SbmAssociation.Column.CallsPerYear: caption = "Calls per year"; break; - case SbmAssociation.Column.LastCall: caption = "Last call"; break; - case SbmAssociation.Column.SeasonalCategoryCodes: caption = "Seasonal category codes"; break; - case SbmAssociation.Column.SeasonalCategoryCode1: caption = "Seasonal category code 1"; break; - case SbmAssociation.Column.SeasonalCategoryDesc1: caption = "Seasonal category 1"; break; - case SbmAssociation.Column.SeasonalCategoryCode2: caption = "Seasonal category code 2"; break; - case SbmAssociation.Column.SeasonalCategoryDesc2: caption = "Seasonal category 2"; break; - case SbmAssociation.Column.SeasonalCategoryCode3: caption = "Seasonal category code 3"; break; - case SbmAssociation.Column.SeasonalCategoryDesc3: caption = "Seasonal category 3"; break; - case SbmAssociation.Column.OrderLeadTimeCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, "Order lead time") + " code"; break; - case SbmAssociation.Column.OrderLeadTimeDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode, "Order lead time"); break; - case SbmAssociation.Column.DeliveryTypeCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, "Delivery type") + " code"; break; - case SbmAssociation.Column.DeliveryTypeDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode, "Delivery type"); break; - case SbmAssociation.Column.DeliveryMethodCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, "Delivery method") + " code"; break; - case SbmAssociation.Column.DeliveryMethodDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode, "Delivery method"); break; - case SbmAssociation.Column.DeliveryBookInCode: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, "Delivery book-in") + " code"; break; - case SbmAssociation.Column.DeliveryBookInDesc: - caption = GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode, "Delivery book-in"); break; - case SbmAssociation.Column.Terminated: caption = "Terminated"; break; - case SbmAssociation.Column.Primary: caption = "Primary"; break; - case SbmAssociation.Column.Technician: caption = "Technician"; break; - case SbmAssociation.Column.Notes: caption = "Notes"; break; - case SbmAssociation.Column.Status_Desc: caption = "Status"; break; - case SbmAssociation.Column.Status_Ind: caption = "Status ind"; break; - //-----------------------------------------------------------//Association's owner details - case SbmAssociation.Column.AffIdOwner: caption = "Owner #"; break; - case SbmAssociation.Column.Owner_Name: caption = "Owner name"; break; - case SbmAssociation.Column.AffIdTarget: caption = "Target #"; break; - //-----------------------------------------------------------// Association's target details - case SbmAssociation.Column.Target_Type: caption = "Contact type"; break; - case SbmAssociation.Column.Target_TypeDesc: caption = "Contact type"; break; - case SbmAssociation.Column.Target_Name: caption = "Contact name"; break; - case SbmAssociation.Column.Target_Nature: caption = "Contact nature"; break; - case SbmAssociation.Column.Target_PhoneMain: caption = "Contact main phone"; break; - case SbmAssociation.Column.Target_PhoneAlt: caption = "Contact alt phone"; break; - case SbmAssociation.Column.Target_PhoneFax: caption = "Contact fax"; break; - case SbmAssociation.Column.Target_PhoneMobile: caption = "Contact mobile phone"; break; - case SbmAssociation.Column.Target_Email: caption = "Contact email"; break; - case SbmAssociation.Column.Target_Website: caption = "Contact website"; break; - case SbmAssociation.Column.Target_Notes: caption = "Contact notes"; break; - case SbmAssociation.Column.Target_Address_Type: caption = "Contact addr. type"; break; - case SbmAssociation.Column.Target_Address_TypeDesc: caption = "Contact address type"; break; - case SbmAssociation.Column.Target_Address_RefExt: caption = "Contact address ref ext"; break; - case SbmAssociation.Column.Target_Address_Name: caption = "Contact address name"; break; - case SbmAssociation.Column.Target_Address_DescBrief: caption = "Contact address desc"; break; - //-----------------------------------------------------------// Association's target address details - case SbmAssociation.Column.Target_Address_Summary: caption = "Contact address"; break; - case SbmAssociation.Column.Target_Address_Line1: caption = "Contact address line 1"; break; - case SbmAssociation.Column.Target_Address_Line2: caption = "Contact address line 2"; break; - case SbmAssociation.Column.Target_Address_City: caption = "Contact address city"; break; - case SbmAssociation.Column.Target_Address_Province: caption = "Contact address province"; break; - case SbmAssociation.Column.Target_Address_Postcode: caption = "Contact address postcode"; break; - case SbmAssociation.Column.Target_Address_Country: caption = "Contact address country"; break; - case SbmAssociation.Column.Target_Address_Contact: caption = "Contact address Contact"; break; - case SbmAssociation.Column.Target_Address_Phone: caption = "Contact address Phone"; break; - case SbmAssociation.Column.Target_Address_Email: caption = "Contact address Email"; break; - case SbmAssociation.Column.Target_Address_AccountManagerCode: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager") + " code"; break; - case SbmAssociation.Column.Target_Address_AccountManagerDesc: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; - case SbmAssociation.Column.Target_Address_AccountHandlerCode: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler") + " code"; break; - case SbmAssociation.Column.Target_Address_AccountHandlerDesc: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, "Account handler"); break; - case SbmAssociation.Column.Target_Address_ContactAreaCode: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area") + " code"; break; - case SbmAssociation.Column.Target_Address_ContactAreaDesc: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; - case SbmAssociation.Column.Target_Address_ContactHandlerCode: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler)") + " code"; break; - case SbmAssociation.Column.Target_Address_ContactHandlerDesc: - caption = "Contact address " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, "Contact handler"); break; - case SbmAssociation.Column.Target_Address_LastVisitOn: caption = "Contact address last visit"; break; - case SbmAssociation.Column.Target_Address_NextVisitOn: caption = "Contact address next visit"; break; - case SbmAssociation.Column.Target_DeliveryAddress_Postcode: caption = "Delivery address - Postcode"; break; - case SbmAssociation.Column.Target_DeliveryAddress_AccountManagerCode: - caption = "Delivery address - " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, "Account manager"); break; - case SbmAssociation.Column.Target_DeliveryAddress_ContactAreaCode: - caption = "Delivery address - " + GetAttributeCaption(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, "Contact area"); break; - //-----------------------------------------------------------// part of ... Members details - case SbmAssociation.Column.Member_Type: caption = "Member type"; break; - case SbmAssociation.Column.Member_TypeDesc: caption = "Member type desc"; break; - case SbmAssociation.Column.Member_Code: caption = "Member code"; break; - case SbmAssociation.Column.Member_ExtRef: caption = "Member ext ref"; break; - case SbmAssociation.Column.Member_Role: caption = "Member role"; break; - case SbmAssociation.Column.Member_Location: caption = "Member location"; break; - case SbmAssociation.Column.Member_PhoneMain: caption = "Member phone main"; break; - case SbmAssociation.Column.Member_Email: caption = "Member email"; break; - case SbmAssociation.Column.Member_Target_Name: caption = "Member contact name"; break; - case SbmAssociation.Column.Member_Target_Nature: caption = "Member contact nature"; break; - case SbmAssociation.Column.Member_Target_PhoneMain: caption = "Member contact phone main"; break; - case SbmAssociation.Column.Member_Target_PhoneAlt: caption = "Member contact phone alt"; break; - case SbmAssociation.Column.Member_Target_PhoneFax: caption = "Member contact phone fax"; break; - case SbmAssociation.Column.Member_Target_PhoneMobile: caption = "Member contact phone mobile"; break; - case SbmAssociation.Column.Member_Target_Email: caption = "Member contact email"; break; - case SbmAssociation.Column.Member_Target_Website: caption = "Member contact website"; break; - case SbmAssociation.Column.Member_Target_Notes: caption = "Member contact notes"; break; - case SbmAssociation.Column.Member_Target_Address_Summary: caption = "Member contact address"; break; - case SbmAssociation.Column.Member_Target_Address_Line1: caption = "Member contact address line 1"; break; - case SbmAssociation.Column.Member_Target_Address_Line2: caption = "Member contact address line 2"; break; - case SbmAssociation.Column.Member_Target_Address_City: caption = "Member contact city"; break; - case SbmAssociation.Column.Member_Target_Address_Province: caption = "Member contact address province"; break; - case SbmAssociation.Column.Member_Target_Address_Postcode: caption = "Member contact address postcode"; break; - case SbmAssociation.Column.Member_Target_Address_Country: caption = "Member contact address country"; break; - case SbmAssociation.Column.Trans_LastSaleRaised: caption = "Last sale"; break; - case SbmAssociation.Column.Trans_SalesValue_Open: caption = "SO value - open"; break; // Net open sales order value. - case SbmAssociation.Column.Trans_SalesValue_Cytd: caption = "SO value - YDT"; break; // Net sales order value closed this calendar year. - case SbmAssociation.Column.Trans_SalesValue_Lcy: caption = "SO value - LCY"; break; // Net sales order value closed last calendar year. - } - if (StringUtil.IsEmpty(caption)) - caption = GetAssociationColumnDfn(column).Caption; - return caption; - } - - //------------------------------------------------------------------- - // Retrieve individual associations - //------------------------------------------------------------------- - // Association exists. + // Item exists. public bool AssociationExistsById(SysId id) { ClearErrorState(); @@ -533,7 +56,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } //------------------------------------------------------------------- - // Get association. + // Get item. public abstract SbmAssociation GetAssociation(SbmAssociation.Params prm); public SbmAssociation GetAssociationById(SysId associationId) @@ -603,93 +126,93 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Association type must be supplied"); } } - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Code))) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Code))) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ExtRef))) + if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ExtRef))) { errField.RefExt = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Role != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Role, "role", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Role))) + if (errField.Role != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Role, "role", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Role))) { errField.Role = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Location != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Location, "location", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Location))) + if (errField.Location != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Location, "location", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Location))) { errField.Location = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone main", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_PhoneMain))) + if (errField.PhoneMain != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PhoneMain, "phone main", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_PhoneMain))) { errField.PhoneMain = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Email))) + if (errField.Email != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Email, "email", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Email))) { errField.Email = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Group != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Group, "group", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Group))) + if (errField.Group != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Group, "group", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Group))) { errField.Group = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "desc detail", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DescDetail))) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "desc detail", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DescDetail))) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DefaultNominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DefaultNominalCode, "default nominal code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode))) + if (errField.DefaultNominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DefaultNominalCode, "default nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DefaultNominalCode))) { errField.DefaultNominalCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.InvoiceDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InvoiceDesc, "invoice description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_InvoiceDesc))) + if (errField.InvoiceDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InvoiceDesc, "invoice description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_InvoiceDesc))) { errField.InvoiceDesc = SacsHierarchyItem.ValidValue.Invalid; return false; } // Association codes. - if (errField.AccountManagerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountManagerCode, " account manager code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountManagerCode))) + if (errField.AccountManagerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountManagerCode, " account manager code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountManagerCode))) { errField.AccountManagerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AccountHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountHandlerCode, "account handler code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode))) + if (errField.AccountHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountHandlerCode, "account handler code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode))) { errField.AccountHandlerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AccountTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountTypeCode, " account type code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountTypeCode))) + if (errField.AccountTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountTypeCode, " account type code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountTypeCode))) { errField.AccountTypeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AccountRatingCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountRatingCode, "account rating code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountRatingCode))) + if (errField.AccountRatingCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AccountRatingCode, "account rating code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_AccountRatingCode))) { errField.AccountRatingCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactAreaCode))) + if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactAreaCode))) { errField.ContactAreaCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactHandlerCode, "contact handler code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode))) + if (errField.ContactHandlerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactHandlerCode, "contact handler code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode))) { errField.ContactHandlerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactMethodCode, "contact method code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactMethodCode))) + if (errField.ContactMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactMethodCode, "contact method code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactMethodCode))) { errField.ContactMethodCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactCallCycleCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactCallCycleCode, "contact call cycle code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode))) + if (errField.ContactCallCycleCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactCallCycleCode, "contact call cycle code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode))) { errField.ContactCallCycleCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -702,27 +225,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Default sales Commodity can only be assigned to customers"); } } - if (errField.OrderLeadTimeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.OrderLeadTimeCode, "order lead time code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode))) + if (errField.OrderLeadTimeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.OrderLeadTimeCode, "order lead time code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_OrderLeadTimeCode))) { errField.OrderLeadTimeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode))) + if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryTypeCode))) { errField.DeliveryTypeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryMethodCode, "delivery method code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode))) + if (errField.DeliveryMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryMethodCode, "delivery method code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryMethodCode))) { errField.DeliveryMethodCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryCourierCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryCourierCode, "delivery courier code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryCourierCode))) + if (errField.DeliveryCourierCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryCourierCode, "delivery courier code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryCourierCode))) { errField.DeliveryCourierCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book in code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode))) + if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book in code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_DeliveryBookInCode))) { errField.DeliveryBookInCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -762,14 +285,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Payment terms must not be negative"); } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Association_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SysParam.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SysParam.cs index fe8f7d6..422f701 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SysParam.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SysParam.cs @@ -83,12 +83,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.Category = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Name), true)) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Value != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Value, "value", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Value), true)) + if (errField.Value != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Value, "value", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Value), true)) { errField.Value = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -96,7 +96,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr // Common properties. if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SysParam_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccount.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccount.cs index faf2766..5171521 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccount.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccount.cs @@ -113,30 +113,30 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (!SysId.IsValid(data.InterfaceId)) return SetErrorState("invalid system"); if (!SysId.IsValid(data.AssociationId)) return SetErrorState("invalid association"); // Validate the text attributes. - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Code), true)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Name), true)) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AuthCodeEnc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AuthCodeEnc, "authorisation code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_AuthCodeEnc))) + if (errField.AuthCodeEnc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AuthCodeEnc, "authorisation code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_AuthCodeEnc))) { errField.AuthCodeEnc = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccount_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccountUser.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccountUser.cs index 9e5a387..b1e2a92 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccountUser.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemAccountUser.cs @@ -68,14 +68,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (!SysId.IsValid(data.UserId)) return SetErrorState("invalid user"); // Validate the text attributes. // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccountUser_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccountUser_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccountUser_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemAccountUser_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemUser.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemUser.cs index 67d07b6..b919e5f 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemUser.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAccountMgr_SystemUser.cs @@ -107,25 +107,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr //Validate the identity. if (!SysId.IsValid(data.AffiliateIdOwner)) return SetErrorState("invalid affiliate owner"); // Validate the text attributes. - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Code), true)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AuthCodeEnc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AuthCodeEnc, "authorisation code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_AuthCodeEnc))) + if (errField.AuthCodeEnc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AuthCodeEnc, "authorisation code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_AuthCodeEnc))) { errField.AuthCodeEnc = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SystemUser_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Asset.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Asset.cs index 99a1933..2d1d914 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Asset.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Asset.cs @@ -116,17 +116,17 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.AssetCategoryId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Aff Id Owner must be supplied"); } - if (errField.SerialNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SerialNumber, "SerialNumber", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_SerialNumber), true)) + if (errField.SerialNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SerialNumber, "SerialNumber", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_SerialNumber), true)) { errField.SerialNumber = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "RefExt", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_RefExt))) + if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "RefExt", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_RefExt))) { errField.RefExt = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "DescBrief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_DescBrief))) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "DescBrief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_DescBrief))) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -147,7 +147,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (errField.AssocIdSupplier != SacsHierarchyItem.ValidValue.Ignore) { } - if (errField.PurchaseInvoiceRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PurchaseInvoiceRef, "Purchase Invoice Ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_PurchaseInvoiceRef))) + if (errField.PurchaseInvoiceRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PurchaseInvoiceRef, "Purchase Invoice Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_PurchaseInvoiceRef))) { errField.PurchaseInvoiceRef = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -175,7 +175,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (errField.AssocIdCustomer != SacsHierarchyItem.ValidValue.Ignore) { } - if (errField.SellCategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SellCategoryCode, "Sell category code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_SellCategoryCode))) + if (errField.SellCategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SellCategoryCode, "Sell category code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_SellCategoryCode))) { errField.SellCategoryCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -203,7 +203,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Disposal. - if (errField.DisposeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DisposeCode, "dispose code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_DisposeCode))) + if (errField.DisposeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DisposeCode, "dispose code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_DisposeCode))) { errField.DisposeCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -241,14 +241,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Common. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAsset_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetCategory.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetCategory.cs index b79ed6c..2e937ff 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetCategory.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetCategory.cs @@ -128,12 +128,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Type must be supplied"); } } - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Code), true)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -159,7 +159,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (errField.TaxCodeIdProfit != SacsHierarchyItem.ValidValue.Ignore && SysId.ToInt(data.TaxCodeIdProfit) < 1) { } - if (errField.DisposeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DisposeCode, "dispose code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_DisposeCode))) + if (errField.DisposeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DisposeCode, "dispose code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_DisposeCode))) { errField.DisposeCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -175,14 +175,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetCategory_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetProcess.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetProcess.cs index 704af14..cc59a44 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetProcess.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_AssetProcess.cs @@ -66,7 +66,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.AssetId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Aff Id Owner must be supplied"); } - if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Seq, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Seq), true)) + if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Seq, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Seq), true)) { errField.Seq = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -93,14 +93,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaAssetProcess_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Vehicle.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Vehicle.cs index 00a23c8..7adf768 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Vehicle.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_Vehicle.cs @@ -90,45 +90,45 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.VehicleClassId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Aff Id Owner must be supplied"); } - if (errField.RegNumber != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumber, "registration Number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumber)))) + if (errField.RegNumber != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumber, "registration Number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumber)))) { errField.RegNumber = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.RegNumberPrev != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumberPrev, "registration Number Previous", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumberPrev)))) + if (errField.RegNumberPrev != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumberPrev, "registration Number Previous", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumberPrev)))) { errField.RegNumberPrev = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Vin != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.Vin, "VIN", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_VIN)))) + if (errField.Vin != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.Vin, "VIN", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_VIN)))) { errField.Vin = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.TachoCode != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoCode, "tacho code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoCode)))) + if (errField.TachoCode != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoCode, "tacho code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoCode)))) { errField.TachoCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.TachoId != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoId, "tacho id", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoId)))) + if (errField.TachoId != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoId, "tacho id", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoId)))) { errField.TachoId = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.MotNo != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.MotNo, "MOT", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_MotNo)))) + if (errField.MotNo != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.MotNo, "MOT", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_MotNo)))) { errField.MotNo = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleClass.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleClass.cs index a24b39d..2164cdf 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleClass.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleClass.cs @@ -98,45 +98,45 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { ClearErrorState(); // VehicleClass properties. - if (errField.MakeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "make", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_MakeCode), true)) + if (errField.MakeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "make", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_MakeCode), true)) { errField.MakeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Model != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Model, "model", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Model), true)) + if (errField.Model != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Model, "model", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Model), true)) { errField.Model = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Derivative != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "derivative", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Derivative), true)) + if (errField.Derivative != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "derivative", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Derivative), true)) { errField.Derivative = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "desctiption brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "desctiption brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.VehicleCategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VehicleCategoryCode, "vehicle category code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_VehicleCategoryCode))) + if (errField.VehicleCategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VehicleCategoryCode, "vehicle category code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_VehicleCategoryCode))) { errField.VehicleCategoryCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.InsuranceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InsuranceCode, "insurance code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_InsuranceCode))) + if (errField.InsuranceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InsuranceCode, "insurance code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_InsuranceCode))) { errField.InsuranceCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleEvent.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleEvent.cs index 906f667..26741b1 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleEvent.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleEvent.cs @@ -84,25 +84,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { ClearErrorState(); // VehicleEvent properties.return SetErrorState("Aff Id Owner must be supplied"); - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "DescBrief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "DescBrief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "DescDetail", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_DescDetail), true)) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "DescDetail", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_DescDetail), true)) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleEvent_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleFeature.cs b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleFeature.cs index 578e901..a972092 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleFeature.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleFeature.cs @@ -66,22 +66,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { ClearErrorState(); // VehicleFeature properties. - if (errField.CategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CategoryCode, "CategoryCode", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_CategoryCode), true)) + if (errField.CategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CategoryCode, "CategoryCode", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_CategoryCode), true)) { errField.CategoryCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.CategoryDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CategoryDesc, "CategoryDesc", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_CategoryDesc), true)) + if (errField.CategoryDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CategoryDesc, "CategoryDesc", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_CategoryDesc), true)) { errField.CategoryDesc = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.FeatureCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FeatureCode, "FeatureCode", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_FeatureCode), true)) + if (errField.FeatureCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FeatureCode, "FeatureCode", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_FeatureCode), true)) { errField.FeatureCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.FeatureDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FeatureDesc, "FeatureDesc", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_FeatureDesc), true)) + if (errField.FeatureDesc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FeatureDesc, "FeatureDesc", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_FeatureDesc), true)) { errField.FeatureDesc = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -89,14 +89,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleFeature_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Commodity.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Commodity.cs index c715e95..baec84a 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Commodity.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Commodity.cs @@ -124,131 +124,131 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Validate the text attributes. - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Code), true)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescOrder != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOrder, "description order", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescOrder))) + if (errField.DescOrder != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOrder, "description order", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescOrder))) { errField.DescOrder = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "description detail", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescDetail))) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "description detail", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DescDetail))) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DrawingNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingNumber, "drawing no", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingNo))) + if (errField.DrawingNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingNumber, "drawing no", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingNo))) { errField.DrawingNumber = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DrawingIssue != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingIssue, "drawing issue", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue))) + if (errField.DrawingIssue != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DrawingIssue, "drawing issue", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_DrawingIssue))) { errField.DrawingIssue = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ImagePath != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ImagePath, "image path", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ImagePath))) + if (errField.ImagePath != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ImagePath, "image path", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ImagePath))) { errField.ImagePath = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Category1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category1, "category1", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category))) + if (errField.Category1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category1, "category1", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category))) { errField.Category1 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Category2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category2, "category2", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category2))) + if (errField.Category2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category2, "category2", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category2))) { errField.Category2 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Category3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category3, "category3", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category3))) + if (errField.Category3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category3, "category3", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Category3))) { errField.Category3 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Location != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Location, "location", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Location))) + if (errField.Location != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Location, "location", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Location))) { errField.Location = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Department != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Department, "department", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Department))) + if (errField.Department != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Department, "department", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Department))) { errField.Department = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.CatalogRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CatalogRef, "catalog ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_CatalogRef))) + if (errField.CatalogRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CatalogRef, "catalog ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_CatalogRef))) { errField.CatalogRef = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Dimensions != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Dimensions, "dimensions", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Dimensions))) + if (errField.Dimensions != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Dimensions, "dimensions", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Dimensions))) { errField.Dimensions = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.SpecSummary != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SpecSummary, "spec summary", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SpecSummary))) + if (errField.SpecSummary != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SpecSummary, "spec summary", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SpecSummary))) { errField.SpecSummary = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.MaterialCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_MaterialCode, "material code"), - (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_MaterialCode))) + (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_MaterialCode))) { errField.MaterialCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.FinishCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.FinishCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_FinishCode, "finish code"), - (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_FinishCode))) + (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_FinishCode))) { errField.FinishCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PromotionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PromotionCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "promotion code"), (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PromotionCode))) + if (errField.PromotionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PromotionCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_PromotionCode, "promotion code"), (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PromotionCode))) { errField.PromotionCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ICNTariffCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ICNTariffCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN tariff code"), (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode))) + if (errField.ICNTariffCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ICNTariffCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode, "ICN tariff code"), (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_ICNTariffCode))) { errField.ICNTariffCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCode))) + if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCode))) { errField.NominalCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.NominalCodePurchase != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCodePurchase, "nominal code purchase", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase))) + if (errField.NominalCodePurchase != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCodePurchase, "nominal code purchase", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_NominalCodePurchase))) { errField.NominalCodePurchase = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.SupplierRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SupplierRef, "supplier ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SupplierRef))) + if (errField.SupplierRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SupplierRef, "supplier ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_SupplierRef))) { errField.SupplierRef = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PlaceOfOrigin != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PlaceOfOrigin, "place of origin", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin))) + if (errField.PlaceOfOrigin != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PlaceOfOrigin, "place of origin", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_PlaceOfOrigin))) { errField.PlaceOfOrigin = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Commodity_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommodityCustomer.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommodityCustomer.cs index aec0213..cc6075b 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommodityCustomer.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommodityCustomer.cs @@ -92,24 +92,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (!SysId.IsValid(data.AssocIdCustomer)) return SetErrorState("Customer must be specified"); // Validate the text attributes. if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode, "finish code"), - (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode), true)) + (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_ProductCode), true)) { errField.ProductCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.PromotionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PromotionCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, "promotion code"), (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode), true)) + if (errField.PromotionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.PromotionCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode, "promotion code"), (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_PromotionCode), true)) { errField.PromotionCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "Notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_Notes), true)) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "Notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_Notes), true)) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommodityCustomer_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommoditySupplier.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommoditySupplier.cs index 1475641..ed38ba1 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommoditySupplier.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_CommoditySupplier.cs @@ -69,29 +69,29 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (!SysId.IsValid(data.AssocIdSupplier)) return SetErrorState("Supplier must be specified"); // Validate the text attributes. if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, GetAttributeCaption(SbmDbDfn.ColumnIdx.CommoditySupplier_ProductCode, "finish code"), - (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_ProductCode), true)) + (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_ProductCode), true)) { errField.ProductCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.AmountCost != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AmountCost.ToString(), "AmountCost", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_AmountCost), true)) + if (errField.AmountCost != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.AmountCost.ToString(), "AmountCost", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_AmountCost), true)) { errField.AmountCost = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.CurrencyIdCost != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CurrencyIdCost.ToString(), "CurrencyIdCost", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_CurrencyIdCost), true)) + if (errField.CurrencyIdCost != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.CurrencyIdCost.ToString(), "CurrencyIdCost", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_CurrencyIdCost), true)) { errField.CurrencyIdCost = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "Notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_Notes), true)) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "Notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_Notes), true)) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.CommoditySupplier_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Container.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Container.cs index 82355ac..5f477f7 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Container.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_Container.cs @@ -116,29 +116,29 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Validate the text attributes. - if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Reference), true)) + if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Reference), true)) { errField.Reference = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Container_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.TagId != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.TagId.ToString(), "tag Id", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_TagId), true)) + if (errField.TagId != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.TagId.ToString(), "tag Id", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Container_TagId), true)) { errField.TagId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("invalid TagId"); } - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Container_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_ContainerItem.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_ContainerItem.cs index 298d5ac..13cb98e 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_ContainerItem.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_ContainerItem.cs @@ -76,7 +76,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ItemType < 1) { errField.ItemType = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("Item type must be supplied"); + return SetErrorState(Msg_ItemTypeNotSpecified); } } if (!SysId.IsValid(data.ItemId)) @@ -110,14 +110,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Quantity must be supplied"); } } - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ContainerItem_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_PortfolioItem.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_PortfolioItem.cs index 5ada932..9b51d9f 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_PortfolioItem.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCommodityMgr_PortfolioItem.cs @@ -180,27 +180,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Validate the text attributes. - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Code), data.Type != Sbm.PortfolioItemType.Commodity)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Code), data.Type != Sbm.PortfolioItemType.Commodity)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ShortCut != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ShortCut, "short cut code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_ShortCut))) + if (errField.ShortCut != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ShortCut, "short cut code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_ShortCut))) { errField.ShortCut = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Caption != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Caption, "caption", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Caption), data.Type != Sbm.PortfolioItemType.Commodity)) + if (errField.Caption != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Caption, "caption", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Caption), data.Type != Sbm.PortfolioItemType.Commodity)) { errField.Caption = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "brief desc", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_DescBrief))) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "brief desc", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_DescBrief))) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detail desc", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_DescDetail))) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detail desc", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_DescDetail))) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -218,14 +218,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Only hierarchy items can reference other items"); } // Common properties. - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.PortfolioItem_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmCoreMgr.cs b/SaBusMgrStandardBase/Base/Mgr/SbmCoreMgr.cs index b87d19e..b100794 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmCoreMgr.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmCoreMgr.cs @@ -2,7 +2,6 @@ using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.Core; @@ -19,8 +18,6 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Linq; -using System.Security.Cryptography; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm.Config; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { @@ -192,7 +189,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr protected ISbmUserOrganisationContext UserContext { get; } protected SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } public SysId AffiliateId_Owner { get { return UserContext.OrganisationAffiliateId; } } - protected SbmAccountsDfn AccountsDfn { get { return Internals.AccountsDfn; } } + protected SbmAccountsConsole AccountsDfn { get { return Internals.AccountsConsole; } } protected DbUpdateInfo DbUpdateInfo { get { return Internals.DbUpdateInfo; } } // User security profile. public bool UserCanViewCommoditySalesFinancials() { return UserContext.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales); } diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemBatch.cs b/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemBatch.cs index 6bd5369..168b085 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemBatch.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemBatch.cs @@ -91,34 +91,34 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ItemBatchType < 1) { errField.ItemBatchType = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("ItemBatch type must be supplied"); + return SetErrorState(Msg_ItemTypeNotSpecified); } } - if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Ref), true)) + if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "reference", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Ref), true)) { errField.Ref = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ProcessType != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProcessType, "process type", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_ProcessType), true)) + if (errField.ProcessType != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProcessType, "process type", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_ProcessType), true)) { errField.ProcessType = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemBatch_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -139,7 +139,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public virtual bool ItemBatchCanBeDeleted(SbmItemBatch itemBatch) { ClearErrorState(); - if (itemBatch == null) return SetErrorState("item not specified"); + if (itemBatch == null) return SetErrorState(Msg_ItemNotSpecified); return true; } public abstract bool DeleteItemBatch(SbmItemBatch itemBatch, DbUpdateInfo dbUpdateInfo); diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemLink.cs b/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemLink.cs index 0d4de39..64f0624 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemLink.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmDataItemMgr_ItemLink.cs @@ -68,7 +68,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ItemLinkType < 1) { errField.ItemLinkType = SacsHierarchyItem.ValidValue.Invalid; - return SetErrorState("ItemLink type must be supplied"); + return SetErrorState(Msg_ItemTypeNotSpecified); } } if (errField.ItemTypeFrom != SacsHierarchyItem.ValidValue.Ignore) @@ -107,20 +107,20 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr errField.Completed = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DataContent != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DataContent, "data content", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_DataContent), true)) + if (errField.DataContent != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DataContent, "data content", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_DataContent), true)) { errField.DataContent = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -145,7 +145,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public virtual bool ItemLinkCanBeDeleted(SbmItemLink itemLink) { ClearErrorState(); - if (itemLink == null) return SetErrorState("item not specified"); + if (itemLink == null) return SetErrorState(Msg_ItemNotSpecified); return true; } public abstract bool DeleteItemLink(SbmItemLink itemLink, DbUpdateInfo dbUpdateInfo); diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmItemMgr.cs b/SaBusMgrStandardBase/Base/Mgr/SbmItemMgr.cs index fc9cac6..ba119b3 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmItemMgr.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmItemMgr.cs @@ -43,17 +43,44 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr protected bool DebugMode { get; } = SacsSystem.DebugMode; protected ElapsedTimeLogger ElapsedLogger { get; } // Status. - protected String StatusActive { get; } = SacsSystem.GetStatusCode(SaStatus.Active); - protected String StatusProvisional { get; } = SacsSystem.GetStatusCode(SaStatus.Provisional); - protected String StatusAwaiting { get; } = SacsSystem.GetStatusCode(SaStatus.Awaiting); - protected String StatusCurrent { get; } = SacsSystem.GetStatusCode(SaStatus.Current); - protected String StatusActioned { get; } = SacsSystem.GetStatusCode(SaStatus.Actioned); - protected String StatusConfirmed { get; } = SacsSystem.GetStatusCode(SaStatus.Confirmed); - protected String StatusQueried { get; } = SacsSystem.GetStatusCode(SaStatus.Queried); - protected String StatusCompleted { get; } = SacsSystem.GetStatusCode(SaStatus.Completed); - protected String StatusCancelled { get; } = SacsSystem.GetStatusCode(SaStatus.Cancelled); - protected String StatusDisabled { get; } = SacsSystem.GetStatusCode(SaStatus.Disabled); - protected String StatusDeleted { get; } = SacsSystem.GetStatusCode(SaStatus.Deleted); + protected static String StatusCurrent { get; } = SacsSystem.GetStatusCode(SaStatus.Current); + protected static String StatusRedundant { get; } = SacsSystem.GetStatusCode(SaStatus.Redundant); + protected static String StatusSuperseded { get; } = SacsSystem.GetStatusCode(SaStatus.Superseded); + protected static String StatusDiscontinued { get; } = SacsSystem.GetStatusCode(SaStatus.Discontinued); + protected static String StatusProvisional { get; } = SacsSystem.GetStatusCode(SaStatus.Provisional); + protected static String StatusConfirmed { get; } = SacsSystem.GetStatusCode(SaStatus.Confirmed); + protected static String StatusEnabled { get; } = SacsSystem.GetStatusCode(SaStatus.Enabled); + protected static String StatusDisabled { get; } = SacsSystem.GetStatusCode(SaStatus.Disabled); + protected static String StatusCreated { get; } = SacsSystem.GetStatusCode(SaStatus.Created); + protected static String StatusUpdated { get; } = SacsSystem.GetStatusCode(SaStatus.Updated); + protected static String StatusReinstated { get; } = SacsSystem.GetStatusCode(SaStatus.Reinstated); + protected static String StatusDeleted { get; } = SacsSystem.GetStatusCode(SaStatus.Deleted); + protected static String StatusRequired { get; } = SacsSystem.GetStatusCode(SaStatus.Required); + protected static String StatusAwaiting { get; } = SacsSystem.GetStatusCode(SaStatus.Awaiting); + protected static String StatusPreparation { get; } = SacsSystem.GetStatusCode(SaStatus.Preparation); + protected static String StatusRaised { get; } = SacsSystem.GetStatusCode(SaStatus.Raised); + protected static String StatusInProgress { get; } = SacsSystem.GetStatusCode(SaStatus.InProgress); + protected static String StatusActive { get; } = SacsSystem.GetStatusCode(SaStatus.Active); + protected static String StatusInactive { get; } = SacsSystem.GetStatusCode(SaStatus.Inactive); + protected static String StatusOnHold { get; } = SacsSystem.GetStatusCode(SaStatus.OnHold); + protected static String StatusImported { get; } = SacsSystem.GetStatusCode(SaStatus.Imported); + protected static String StatusExported { get; } = SacsSystem.GetStatusCode(SaStatus.Exported); + protected static String StatusOpen { get; } = SacsSystem.GetStatusCode(SaStatus.Open); + protected static String StatusClosed { get; } = SacsSystem.GetStatusCode(SaStatus.Closed); + protected static String StatusCompleted { get; } = SacsSystem.GetStatusCode(SaStatus.Completed); + protected static String StatusInvoiced { get; } = SacsSystem.GetStatusCode(SaStatus.Invoiced); + protected static String StatusCancelled { get; } = SacsSystem.GetStatusCode(SaStatus.Cancelled); + protected static String StatusSuccessful { get; } = SacsSystem.GetStatusCode(SaStatus.Successful); + protected static String StatusFailed { get; } = SacsSystem.GetStatusCode(SaStatus.Failed); + protected static String StatusActioned { get; } = SacsSystem.GetStatusCode(SaStatus.Actioned); + protected static String StatusAuthorised { get; } = SacsSystem.GetStatusCode(SaStatus.Authorised); + protected static String StatusAccepted { get; } = SacsSystem.GetStatusCode(SaStatus.Accepted); + protected static String StatusRejected { get; } = SacsSystem.GetStatusCode(SaStatus.Rejected); + protected static String StatusSubmitted { get; } = SacsSystem.GetStatusCode(SaStatus.Submitted); + protected static String StatusQueried { get; } = SacsSystem.GetStatusCode(SaStatus.Queried); + protected static String StatusGranted { get; } = SacsSystem.GetStatusCode(SaStatus.Granted); + protected static String StatusDenied { get; } = SacsSystem.GetStatusCode(SaStatus.Denied); + protected static String StatusLogged { get; } = SacsSystem.GetStatusCode(SaStatus.Logged); //------------------------------------------------------------------- } diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-Price.cs b/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-Price.cs index 1404a1a..79e6a0d 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-Price.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-Price.cs @@ -60,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { // Price properties. ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Price set. if (errField.PriceSetId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.PriceSetId)) { @@ -77,14 +77,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPrice_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPrice_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPrice_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPrice_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -115,7 +115,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public virtual bool PriceCanBeDeleted(SbmPrice price) { ClearErrorState(); - if (price == null) return SetErrorState("item not specified"); + if (price == null) return SetErrorState(Msg_ItemNotSpecified); return true; } public abstract bool DeletePrice(SbmPrice price, DbUpdateInfo dbUpdateInfo); diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-PriceSet.cs b/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-PriceSet.cs index b8a5fd3..6a57015 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-PriceSet.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmPriceMgr-PriceSet.cs @@ -80,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { // PriceSet properties. ClearErrorState(); - if (data == null) return SetErrorState("item not specified"); + if (data == null) return SetErrorState(Msg_ItemNotSpecified); // Validate the type. if (errField.PriceType != SacsHierarchyItem.ValidValue.Ignore) { @@ -90,25 +90,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr return SetErrorState("Price type must be supplied"); } } - if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Ref), true)) + if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Ref), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Name), true)) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaPriceSet_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -129,7 +129,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public virtual bool PriceSetCanBeDeleted(SbmPriceSet priceSet) { ClearErrorState(); - if (priceSet == null) return SetErrorState("item not specified"); + if (priceSet == null) return SetErrorState(Msg_ItemNotSpecified); if (PriceMgr.PriceSetHasPrices(priceSet.Id)) return SetErrorState("item has prices"); return true; } diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs b/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs index fab424c..9a48eff 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_ItemProcess.cs @@ -46,7 +46,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ItemType < 1) return SetErrorState("invalid item type"); if (SysId.IsValid(data.ProcessId)) return SetErrorState("invalid process id"); // Validate the text attributes. - if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Seq.ToString(), "sequence", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Seq), true)) + if (errField.Seq != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Seq.ToString(), "sequence", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Seq), true)) { // ColIdx.ItemProcess_Seq errField.Seq = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -54,14 +54,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.ItemLink_Notes))) { //ColIdx.ItemProcess_Notes errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Unknown/*ItemProcess_Status*/), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Unknown/*ItemProcess_Status*/), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_Process.cs b/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_Process.cs index f9a31e6..c56db51 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_Process.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmProcessMgr_Process.cs @@ -6,7 +6,6 @@ using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using System; using System.Collections.Generic; -using static Sarand.BusinessMgr.Net.Standard.Base.Bus.SbmProcess; namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { @@ -23,23 +22,23 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr //------------------------------------------------------------------- // Associated codes. - public String GetItemDataCodeForProcessCostCode(SbmProcessCostCode processCostCode) + public String GetItemDataCodeForProcessCostCode(SbmProcess.SbmProcessCostCode processCostCode) { List itemDataTypes = Internals.GetSystemCodes(Sbm.SystemCode.ItemDataType); switch (processCostCode) { - case SbmProcessCostCode.Fixed_Unit: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_FixedCost_Unit); - case SbmProcessCostCode.Fixed_Job: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_FixedCost_Job); - case SbmProcessCostCode.Labour_Unit: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_LabourCost_Unit); - case SbmProcessCostCode.Labour_Job: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_LabourCost_Job); + case SbmProcess.SbmProcessCostCode.Fixed_Unit: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_FixedCost_Unit); + case SbmProcess.SbmProcessCostCode.Fixed_Job: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_FixedCost_Job); + case SbmProcess.SbmProcessCostCode.Labour_Unit: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_LabourCost_Unit); + case SbmProcess.SbmProcessCostCode.Labour_Job: return itemDataTypes.GetCodeForType(Sbm.ItemDataType.Process_LabourCost_Job); } return ""; } public abstract bool ProcessHasAnyCostCodes(SysId processId); - public abstract bool ProcessHasCostCodes(SysId processId, SbmProcessCostCode processCostCode); - public abstract List GetProcessCostCodes(SysId processId, SbmProcessCostCode processCostCode); - public abstract bool StoreProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, List costCodes, DbUpdateInfo dbUpdateInfo); - public abstract bool ClearProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, DbUpdateInfo dbUpdateInfo); + public abstract bool ProcessHasCostCodes(SysId processId, SbmProcess.SbmProcessCostCode processCostCode); + public abstract List GetProcessCostCodes(SysId processId, SbmProcess.SbmProcessCostCode processCostCode); + public abstract bool StoreProcessCostCodes(SbmProcess process, SbmProcess.SbmProcessCostCode processCostCode, List costCodes, DbUpdateInfo dbUpdateInfo); + public abstract bool ClearProcessCostCodes(SbmProcess process, SbmProcess.SbmProcessCostCode processCostCode, DbUpdateInfo dbUpdateInfo); public abstract bool ClearAllProcessCostCodes(SbmProcess process, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- @@ -109,26 +108,26 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if ((int)data.ProcessCategory < 1) return SetErrorState("invalid category"); if ((int)data.ProcessType < 1) return SetErrorState("invalid type"); // Validate the text attributes. - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Process_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description brief", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Process_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "description outline", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Process_DescOutline), true)) + if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "description outline", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Process_DescOutline), true)) { errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Process_Notes))) + if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Process_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Process_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Process_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr-Allocation.cs b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr-Allocation.cs index 7295ce2..118d370 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr-Allocation.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr-Allocation.cs @@ -157,7 +157,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr #endif List requirements = TransactionMgr.GetRequirementsForTransaction(transaction.Id); RefreshAllocations(transaction, requirements, true, dbUpdateInfo); - return !HasErrorState(); + return OK; } public bool UnAllocateTransaction(SbmTransaction transaction, DbUpdateInfo dbUpdateInfo) @@ -181,7 +181,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr // Update the transaction: transaction.ClearAllocationStatus(); TransactionMgr.UpdateTransaction(transaction, dbUpdateInfo); - return !HasErrorState(); + return OK; } //=========================================================================== @@ -220,7 +220,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } //----------------------------------------------------------------------- - return !HasErrorState(); + return OK; } //=========================================================================== @@ -309,7 +309,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr CalculateStockLevels(commodityIdsToCalculate, dbUpdateInfo); } } - return !HasErrorState(); + return OK; } //=========================================================================== @@ -354,7 +354,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr TransactionMgr.UpdateRequirement(requirement, dbUpdateInfo); } - return !HasErrorState(); + return OK; } //=========================================================================== @@ -672,7 +672,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr { CalculateStockLevels(commodityIds, dbUpdateInfo); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_Location.cs b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_Location.cs index d8b435d..bdcf698 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_Location.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_Location.cs @@ -154,25 +154,25 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Validate the text attributes. - if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Code), true)) + if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Name), true)) + if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Location_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_StockLevel.cs b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_StockLevel.cs index ddc54d7..2d4b829 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_StockLevel.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmStockMgr_StockLevel.cs @@ -88,24 +88,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // Bays. - if (errField.Bay1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay1, "bay 1", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay1))) + if (errField.Bay1 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay1, "bay 1", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay1))) { errField.Bay1 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Bay2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay2, "bay 2", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay2))) + if (errField.Bay2 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay2, "bay 2", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay2))) { errField.Bay2 = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Bay3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay3, "bay 3", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay3))) + if (errField.Bay3 != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Bay3, "bay 3", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Bay3))) { errField.Bay3 = SacsHierarchyItem.ValidValue.Invalid; return false; } // Notes. - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Notes))) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -113,7 +113,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.StockLevel_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Constituent.cs b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Constituent.cs index b6f5854..43f31f5 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Constituent.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Constituent.cs @@ -121,41 +121,41 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } } // NB Seq, Effective, Required, Started, Completed is optional. - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescOutline), true)) + if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescOutline), true)) { errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescDetail), true)) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_DescDetail), true)) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB TaskNumber, Priority is optional. - if (errField.Category != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category, "ategory", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Category), true)) + if (errField.Category != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Category, "ategory", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Category), true)) { errField.Category = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Reference), true)) + if (errField.Reference != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Reference, "reference", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Reference), true)) { errField.Reference = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB Quantity, UomId, UnitCost, AmountEst, AmountNet, TaxCodeId, TaxRate, AmountTax, AmountTot, TaxRateRebate, AmountTaxRebate is optional. - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Notes), true)) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Notes), true)) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Constituent_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Requirement.cs b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Requirement.cs index 6bf7a0b..1dde7c1 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Requirement.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Requirement.cs @@ -154,58 +154,58 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } } // NB Seq, ReqntIdSource, Required, Started, Completed is optional. - if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber), true)) + if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber), true)) { errField.JobNumber = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB AssIdSubcontract, CommodityId is optional. - if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode), true)) + if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode), true)) { errField.ProductCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB AssetId is optional. - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief), true)) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief), true)) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro), true)) + if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro), true)) { errField.DescIntro = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline), true)) + if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline), true)) { errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail), true)) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail), true)) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB PromotionCode, Quantity, QuantityProd, UomId, Weight, UomIdWeight is optional. - if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode), true)) + if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode), true)) { errField.NominalCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode), true)) + if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode), true)) { errField.MaterialSourceCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB AmountUnit > LocationIdStock is optional. - if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes), true)) + if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes), true)) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Transaction.cs b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Transaction.cs index 9d7a4bd..d446712 100644 --- a/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Transaction.cs +++ b/SaBusMgrStandardBase/Base/Mgr/SbmTransactionMgr_Transaction.cs @@ -44,6 +44,23 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr public abstract bool RefreshAssociatedData(SbmTransaction transaction, List requirements, DbUpdateInfo dbUpdateInfo); public abstract bool RefreshAssociatedTransactions(SbmTransaction transaction, List requirements, DbUpdateInfo dbUpdateInfo); + public DateTime GetTransactionTaxEffectiveDate(SbmTransaction transaction) + { + // Original thinking was that the status would have an effect on the tax point. + SbmTransaction.StatusCat transactionStatusCat = SbmTransaction.GetCategoryForStatus(transaction.Status); + + // Nov-08 Current thinking is that the only differences is whether the 'In Progress' date has been specified and whether that should be used in preference to the 'Raised' date. + if (DateUtil.IsValid(transaction.InProgress) && (transactionStatusCat == SbmTransaction.StatusCat.Open || transactionStatusCat == SbmTransaction.StatusCat.Closed)) + { + if (SessionConsole.UseInProgressTaxDateAsTaxPoint(transaction.TransactionType)) + return transaction.InProgress; + } + // Otherwise, use 'Raised' date. + if (DateUtil.IsValid(transaction.Raised)) + return transaction.Raised; + return DateTime.Today; + } + //------------------------------------------------------------------- // Associated data. public abstract bool TransactionIsReferencedByOtherTransactions(SysId transactionId/*, Sbm.TransactionStatusCat transactionStatusCat*/); @@ -152,7 +169,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (transaction == null) return SetErrorState(ErrorMessage.ItemNotSpecified); if (!IsValidTransactionData(transaction.GetData(), new SbmTransaction.ErrField())) return false; // Transaction status category. - if (!IsValidValue(TransactionStatusCats.GetCodeForType(transaction.TransactionStatusCat), "status cat", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_StatusCat), true, true)) + if (!IsValidValue(TransactionStatusCats.GetCodeForType(transaction.TransactionStatusCat), "status cat", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_StatusCat), true, true)) return false; return true; } @@ -180,134 +197,134 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } // References. - if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref))) + if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref))) { errField.Ref = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_RefExt))) + if (errField.RefExt != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_RefExt))) { errField.RefExt = SacsHierarchyItem.ValidValue.Invalid; return false; } // Raised by. - if (errField.RaisedBy != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RaisedBy, "raised by", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_RaisedBy))) + if (errField.RaisedBy != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RaisedBy, "raised by", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_RaisedBy))) { errField.RaisedBy = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB AffIdRaise, AssocIdOffice, TransIdSource is optional. - if (errField.ContactName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactName, "contact name", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ContactName))) + if (errField.ContactName != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactName, "contact name", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ContactName))) { errField.ContactName = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.Likelihood != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Likelihood, "likelihood", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Likelihood))) + if (errField.Likelihood != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Likelihood, "likelihood", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Likelihood))) { errField.Likelihood = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ReferCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ReferCode, "refer code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ReferCode))) + if (errField.ReferCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ReferCode, "refer code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ReferCode))) { errField.ReferCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ReferSource != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ReferSource, "refer source", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ReferSource))) + if (errField.ReferSource != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ReferSource, "refer source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ReferSource))) { errField.ReferSource = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB AffIdRefer > Closed is optional. - if (errField.Department != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Department, "department", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Department))) + if (errField.Department != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Department, "department", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Department))) { errField.Department = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "brief description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescBrief))) + if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "brief description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescBrief))) { errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescIntro))) + if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescIntro))) { errField.DescIntro = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescOutline))) + if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescOutline))) { errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detail description", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescDetail))) + if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detail description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DescDetail))) { errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ContactAreaCode))) + if (errField.ContactAreaCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ContactAreaCode, "contact area", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ContactAreaCode))) { errField.ContactAreaCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.ResponseCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ResponseCode, "response", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ResponseCode))) + if (errField.ResponseCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ResponseCode, "response", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_ResponseCode))) { errField.ResponseCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB CurrencyId > UomIdWeight is optional. - if (errField.BoxCount != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.BoxCount, "box count", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_BoxCount))) + if (errField.BoxCount != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.BoxCount, "box count", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_BoxCount))) { errField.BoxCount = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryStatusCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryStatusCode, "delivery status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryStatusCode))) + if (errField.DeliveryStatusCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryStatusCode, "delivery status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryStatusCode))) { errField.DeliveryStatusCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryTypeCode))) + if (errField.DeliveryTypeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryTypeCode, "delivery type", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryTypeCode))) { errField.DeliveryTypeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryMethodCode, "delivery method", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryMethodCode))) + if (errField.DeliveryMethodCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryMethodCode, "delivery method", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryMethodCode))) { errField.DeliveryMethodCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryCourierCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryCourierCode, "delivery courier", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryCourierCode))) + if (errField.DeliveryCourierCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryCourierCode, "delivery courier", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryCourierCode))) { errField.DeliveryCourierCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book-in", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryBookInCode))) + if (errField.DeliveryBookInCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryBookInCode, "delivery book-in", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryBookInCode))) { errField.DeliveryBookInCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.StockPickerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.StockPickerCode, "stock picker", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_StockPickerCode))) + if (errField.StockPickerCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.StockPickerCode, "stock picker", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_StockPickerCode))) { errField.StockPickerCode = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryRef, "delivery ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryRef))) + if (errField.DeliveryRef != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryRef, "delivery ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryRef))) { errField.DeliveryRef = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryComment != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryComment, "delivery comment", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryComment))) + if (errField.DeliveryComment != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryComment, "delivery comment", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryComment))) { errField.DeliveryComment = SacsHierarchyItem.ValidValue.Invalid; return false; } // NB DeliveryAmountNet, TaxCodeIdDelivery, DeliveryAmountTax, DeliveryAmountTot is optional. - if (errField.DeliveryDepartment != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryDepartment, "delivery department", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryDepartment))) + if (errField.DeliveryDepartment != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryDepartment, "delivery department", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryDepartment))) { errField.DeliveryDepartment = SacsHierarchyItem.ValidValue.Invalid; return false; } - if (errField.DeliveryNominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryNominalCode, " delivery nominal code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryNominalCode))) + if (errField.DeliveryNominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DeliveryNominalCode, " delivery nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_DeliveryNominalCode))) { errField.DeliveryNominalCode = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -317,7 +334,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr if (maxTranNotesLength < 1) { // Standard notes length: - maxTranNotesLength = (int)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes); + maxTranNotesLength = (int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes); // Check if this database allows longer notes: ISacsDatabase db = SbmGlobals.Application.GetBusMgrDatabase(SessionContext); if (db != null) @@ -334,7 +351,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { - if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Status), true, true)) + if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; @@ -375,7 +392,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr } if (HasErrorState()) return false; } - if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "Ref", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true)) + if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true)) { errField.Ref = SacsHierarchyItem.ValidValue.Invalid; return false; diff --git a/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-register.html b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-register.html new file mode 100644 index 0000000..73dd8fe --- /dev/null +++ b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-register.html @@ -0,0 +1,23 @@ + + + + + Demo Account Request + [#Email.MainStylesheet] + + + [#Email.Header] +
+
+
Demo Account Registration
+
+
+
Thank you for registering your demo account details!
+
Follow this link to login to the demo application.
+
Thank you.
+
BusinessMgr team
+
+
+ [#Email.Footer] + + \ No newline at end of file diff --git a/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-request.html b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-request.html new file mode 100644 index 0000000..3868944 --- /dev/null +++ b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-demo-account-request.html @@ -0,0 +1,24 @@ + + + + + Demo Account Request + [#Email.MainStylesheet] + + + [#Email.Header] +
+
+
Demo Account Request
+
+
+
Thank you for requesting a demo account!
+
Follow this link to complete registration for your account for the demo application.
+
This link will expire in [#Link.ExpiresMinutes] minutes.
+
Thank you.
+
BusinessMgr team
+
+
+ [#Email.Footer] + + \ No newline at end of file diff --git a/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-request-password.html b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-request-password.html index c56a29d..bb7cee8 100644 --- a/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-request-password.html +++ b/SaBusMgrStandardBase/Resources/Email/Security/sbm-email-request-password.html @@ -16,7 +16,7 @@
Follow this link to set a new password against your account.
This link will expire in [#Link.ExpiresMinutes] minutes.
Thank you.
-
Sarand BusinessMgr team
+
BusinessMgr team
[#Email.Footer] diff --git a/SaBusMgrStandardDbas/Dbas/App/SbmSystem_Dbas.cs b/SaBusMgrStandardDbas/Dbas/App/SbmSystem_Dbas.cs index 8932c15..af89bac 100644 --- a/SaBusMgrStandardDbas/Dbas/App/SbmSystem_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/App/SbmSystem_Dbas.cs @@ -51,66 +51,34 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.App { return new SbmAccountMgr_Dbas(internals); } - public override SbmAccountMgr CreateAccountMgr(ISbmUserOrganisationContext userContext) - { - return new SbmAccountMgr_Dbas(userContext); - } public override SbmAssetMgr CreateAssetMgr(SbmInternals internals) { return new SbmAssetMgr_Dbas(internals); } - public override SbmAssetMgr CreateAssetMgr(ISbmUserOrganisationContext userContext) - { - return new SbmAssetMgr_Dbas(userContext); - } public override SbmCommodityMgr CreateCommodityMgr(SbmInternals internals) { return new SbmCommodityMgr_Dbas(internals); } - public override SbmCommodityMgr CreateCommodityMgr(ISbmUserOrganisationContext userContext) - { - return new SbmCommodityMgr_Dbas(userContext); - } public override SbmPriceMgr CreatePriceMgr(SbmInternals internals) { return new SbmPriceMgr_Dbas(internals); } - public override SbmPriceMgr CreatePriceMgr(ISbmUserOrganisationContext userContext) - { - return new SbmPriceMgr_Dbas(userContext); - } public override SbmDataItemMgr CreateDataItemMgr(SbmInternals internals) { return new SbmDataItemMgr_Dbas(internals); } - public override SbmDataItemMgr CreateDataItemMgr(ISbmUserOrganisationContext userContext) - { - return new SbmDataItemMgr_Dbas(userContext); - } public override SbmProcessMgr CreateProcessMgr(SbmInternals internals) { return new SbmProcessMgr_Dbas(internals); } - public override SbmProcessMgr CreateProcessMgr(ISbmUserOrganisationContext userContext) - { - return new SbmProcessMgr_Dbas(userContext); - } public override SbmStockMgr CreateStockMgr(SbmInternals internals) { return new SbmStockMgr_Dbas(internals); } - public override SbmStockMgr CreateStockMgr(ISbmUserOrganisationContext userContext) - { - return new SbmStockMgr_Dbas(userContext); - } public override SbmTransactionMgr CreateTransactionMgr(SbmInternals internals) { return new SbmTransactionMgr_Dbas(internals); } - public override SbmTransactionMgr CreateTransactionMgr(ISbmUserOrganisationContext userContext) - { - return new SbmTransactionMgr_Dbas(userContext); - } // Control. public override SbmcAccountMgr CreateControlAccountMgr() diff --git a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcAccountRegistration_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcAccountRegistration_Dbas.cs new file mode 100644 index 0000000..5911994 --- /dev/null +++ b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcAccountRegistration_Dbas.cs @@ -0,0 +1,27 @@ +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.Net.Standard.Base.Bus; +using System; + +namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control +{ + //======================================================================= + internal class SbmcAccountRegistration_Dbas : SbmcAccountRegistration + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SbmcAccountRegistration_Dbas(SysId id, string emailAddress, Guid registerAccountToken, ushort flags) : + base(id, emailAddress, registerAccountToken) + { + Flags = flags; + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcItemParam_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcItemParam_Dbas.cs index f341910..8196581 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcItemParam_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcItemParam_Dbas.cs @@ -22,13 +22,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control { Flags = flags; } - protected override void Dispose(bool disposing) - { - if (disposing) - { - } - base.Dispose(disposing); - } //------------------------------------------------------------------- // Properties. diff --git a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcOwner_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcOwner_Dbas.cs index 29b1fe3..241afb9 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcOwner_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcOwner_Dbas.cs @@ -22,13 +22,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control { Flags = flags; } - protected override void Dispose(bool disposing) - { - if (disposing) - { - } - base.Dispose(disposing); - } //------------------------------------------------------------------- // Properties. diff --git a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcRepository_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcRepository_Dbas.cs index 890597c..3aff3eb 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcRepository_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcRepository_Dbas.cs @@ -22,13 +22,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control { Flags = flags; } - protected override void Dispose(bool disposing) - { - if (disposing) - { - } - base.Dispose(disposing); - } //------------------------------------------------------------------- // Properties. diff --git a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcUserAccount_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcUserAccount_Dbas.cs index 8101f19..5680a7c 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcUserAccount_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/Control/SbmcUserAccount_Dbas.cs @@ -22,13 +22,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control { Flags = flags; } - protected override void Dispose(bool disposing) - { - if (disposing) - { - } - base.Dispose(disposing); - } //------------------------------------------------------------------- // Properties. diff --git a/SaBusMgrStandardDbas/Dbas/Bus/SbmProcess_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/SbmProcess_Dbas.cs index 42b2bc8..6c538ff 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/SbmProcess_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/SbmProcess_Dbas.cs @@ -1,14 +1,6 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.Net.Standard.Base.Bus; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.ItemData; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus { diff --git a/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicleClass_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicleClass_Dbas.cs index 498dae2..8fe90ea 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicleClass_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicleClass_Dbas.cs @@ -132,7 +132,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus } } else SetErrorState("database is unavailable"); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicle_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicle_Dbas.cs index 02a0d8a..540639a 100644 --- a/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicle_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicle_Dbas.cs @@ -262,7 +262,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus } } else SetErrorState("database is unavailable"); - return !HasErrorState(); + return OK; } } diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmCodeTypeConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmCodeTypeConsole_Dbas.cs index a90645f..76c8e1b 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmCodeTypeConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmCodeTypeConsole_Dbas.cs @@ -1,4 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.CodeTypes; @@ -9,16 +10,31 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles public abstract class SbmCodeTypeConsole_Dbas : SaCodeTypeConsole_Dbas { //------------------------------------------------------------------- - // Construction. - protected SbmCodeTypeConsole_Dbas(ISbmUserOrganisationContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + // Data members. + private class DataMembers { - UserContext = userContext; + public DataMembers (SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr {get; } + + //------------------------------------------------------------------- + // Construction. + protected SbmCodeTypeConsole_Dbas(SbmInternals internals) : base(internals.BusMgrDatabase) + { + mbr = new DataMembers(internals); + SbmSystem.RegisterCodeTypes(SessionConsole, this); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } + private SbmSessionContext SessionContext { get { return Internals.SessionContext; } } + private ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + private SbmSessionConsole SessionConsole { get{ return Internals.SessionConsole; } } //------------------------------------------------------------------- } diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmCoreInstanceConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmCoreInstanceConsole_Dbas.cs new file mode 100644 index 0000000..9aba721 --- /dev/null +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmCoreInstanceConsole_Dbas.cs @@ -0,0 +1,50 @@ +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; +using Sarand.Net.Standard.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles +{ + public abstract class SbmCoreInstanceConsole_Dbas : SbmCoreInstanceConsole + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + protected SbmCoreInstanceConsole_Dbas() + { + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // Utilities. + + public static SacsDatabaseConsole.OdbcConfig GetRepositoryOdbcConfig(SbmcRepository repository) + { + SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig(); + config.Location = $"MsSql:{repository.ServerName}\\{repository.InstanceName}.{repository.DatabaseName}"; + config.User = repository.UserName; + config.Password = repository.Password; + return config; + } + + //------------------------------------------------------------------- + } +} diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmDatabaseConsole.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmDatabaseConsole.cs index 924c972..7c57014 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmDatabaseConsole.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmDatabaseConsole.cs @@ -1,6 +1,11 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Dbas.Base; +using System; +using System.Collections.Generic; +using System.Text.RegularExpressions; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { @@ -9,36 +14,549 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private readonly SbmSessionContext sessionContext; + private class DataMembers + { + public DataMembers(SbmSessionContext sessionContext) + { + this.SessionContext = sessionContext; + } + public SbmSessionContext SessionContext { get; } + public ISacsDatabase Database { get; set; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. public SbmDatabaseConsole(SbmSessionContext sessionContext) { - this.sessionContext = sessionContext; + this.mbr = new DataMembers(sessionContext); } //------------------------------------------------------------------- // Properties. + private SbmSessionContext SessionContext { get { return mbr.SessionContext; } } + private ISacsDatabase Database { get { if (mbr.Database == null) { mbr.Database = SbmGlobals.Application.GetBusMgrDatabase(SessionContext); } return mbr.Database; } } //------------------------------------------------------------------- - // D a t a b a s e I n d i c e s + // Database Indices. //------------------------------------------------------------------- - public bool CreateDbIndices(IndexStats indexStats) + public bool InstallDbIndices(IndexStats indexStats) { ClearErrorState(); - ISacsDatabase database = SbmGlobals.Application.GetBusMgrDatabase(sessionContext); - if (database == null || database.DbmsType != DbmsType.MsSql) return SetErrorState(""); + if (Database == null || Database.DbmsType != DbmsType.MsSql) return SetErrorState(""); // Turn off database exceptions. - bool displayDbExceptionsPrev = database.DisplayErrors; - database.DisplayErrors = false; + bool displayDbExceptionsPrev = Database.DisplayErrors; + Database.DisplayErrors = false; - // ToDo SbmDatabaseConsole Create database indices. + //--------------------------------------------------------------- + // Common tables. + // NextId table: + CreatePrimaryDbIndex("NextId", "Object"); + + // Attribute Update table: + CreatePrimaryDbIndex("SaAttrUpdate", "Logged,ItemType,ItemId,Attribute"); + CreateDbIndex("SaAttrUpdate", "IDX_SaAttrUpdate_Item", "ItemType,ItemId,Logged,Attribute"); + CreateDbIndex("SaAttrUpdate", "IDX_SaAttrUpdate_ItemAttr", "ItemType,ItemId,Attribute,Logged"); + + // Code table: + CreatePrimaryDbIndex("SaCode", "Id"); + CreateDbIndex("SaCode", "IDX_SaCode_Status", "Status"); + CreateDbIndex("SaCode", "IDX_SaCode_Type", "CodeTypeId"); + CreateDbIndex("SaCode", "IDX_SaCode_TypeCode", "CodeTypeId,Code", "", true); + CreateDbIndex("SaCode", "IDX_SaCode_TypeSeq", "CodeTypeId,Seq"); + + // Code Type table: + CreatePrimaryDbIndex("SaCodeType", "Id"); + CreateDbIndex("SaCodeType", "IDX_SaCodeType_Code", "Code", "", true); + + // Diary Entry table: + CreatePrimaryDbIndex("SaDiaryEntry", "Id"); + CreateDbIndex("SaDiaryEntry", "IDX_SaDiaryEntry_Finish", "Finish"); + CreateDbIndex("SaDiaryEntry", "IDX_SaDiaryEntry_Start", "Start"); + + // Diary Link table: + CreatePrimaryDbIndex("SaDiaryLink", "EntryId,ItemType,ItemId"); + + // Item Data table: + CreatePrimaryDbIndex("SaItemData", "Id"); + CreateDbIndex("SaItemData", "IDX_SaItemData_DataTypeItem", "DataType,ItemType,ItemId"); + CreateDbIndex("SaItemData", "IDX_SaItemData_Item", "ItemType,ItemId"); + CreateDbIndex("SaItemData", "IDX_SaItemData_ItemTypeDataType", "ItemType,DataType"); + + // Item Document table: + CreatePrimaryDbIndex("SaItemDoc", "Id"); + CreateDbIndex("SaItemDoc", "IDX_SaItemDoc_Item", "ItemType,ItemId"); + + // Item Named Value table: + CreatePrimaryDbIndex("SaItemNamedValue", "ItemType,ItemId,Name,Seq"); + CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_Item", "ItemType,ItemId"); + CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_ItemName", "ItemType,ItemId,Name"); + CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_Name", "Name"); + + // Item Option table: + CreatePrimaryDbIndex("SaItemOption", "ItemType,ItemId,Name,Context"); + CreateDbIndex("SaItemOption", "IDX_SaItemOption_Item", "ItemType,ItemId"); + CreateDbIndex("SaItemOption", "IDX_SaItemOption_ItemName", "ItemType,ItemId,Name"); + CreateDbIndex("SaItemOption", "IDX_SaItemOption_Name", "Name"); + + // Security Item table: + CreatePrimaryDbIndex("SaSecItem", "Id"); + CreateDbIndex("SaSecItem", "IDX_SaSecItem_Code", "Code"); + CreateDbIndex("SaSecItem", "IDX_SaSecItem_Desc", "Description"); + CreateDbIndex("SaSecItem", "IDX_SaSecItem_TypeCode", "Type,Code", "", true); + + // Security Link table: + CreatePrimaryDbIndex("SaSecLink", "ItemOwner,ItemTarget,ItemContext"); + CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemContext", "ItemContext"); + CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemOwner", "ItemOwner"); + CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemTarget", "ItemTarget"); + + //--------------------------------------------------------------------- + // I n t e r f a c e s + //--------------------------------------------------------------------- + // Interface table: + CreatePrimaryDbIndex("Interface", "Id"); + CreateDbIndex("Interface", "IDX_Interface_ContextCategoryType", "Context,Category,Type"); + CreateDbIndex("Interface", "IDX_Interface_ContextCode", "Context,Code", "", true); + + // Interface Data Item table: + CreatePrimaryDbIndex("InterfaceDataItem", "Id"); + CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceDirectionItemRef", "InterfaceId,Direction,ItemType,ExternalRef"); + CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceItemRef", "InterfaceId,Direction,ItemType,ItemId,ExternalRef", "", true); + CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceStatusItemRef", "InterfaceId,Direction,ProcessStatus,ItemType,ItemId,ExternalRef", "", true); + CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_Item", "ItemType,ItemId"); + CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_ItemExternal", "ItemType,ExternalRef"); + + // Interface Process table: + CreatePrimaryDbIndex("InterfaceProcess", "Id"); + CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntDirSeq", "InterfaceId,Direction,ProcSeq", "", true); + CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntProc", "InterfaceId,ProcRef"); + CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntProcDate", "InterfaceId,ProcDate,ProcTime"); + + // Interface Process Data Item table: + CreatePrimaryDbIndex("InterfaceProcessDataItem", "ProcessId,InterfaceDataItemId"); + CreateDbIndex("InterfaceProcessDataItem", "IDX_InterfaceProcessDataItem_Item", "InterfaceDataItemId"); + CreateDbIndex("InterfaceProcessDataItem", "IDX_InterfaceProcessDataItem_ProcItemData", "ProcessId,ItemData"); + + // InterfaceProcessMessage table: + CreatePrimaryDbIndex("InterfaceProcessMessage", "Id"); + CreateDbIndex("InterfaceProcessMessage", "IDX_InterfaceProcessMessage_Process", "ProcessId"); + CreateDbIndex("InterfaceProcessMessage", "IDX_InterfaceProcessMessage_ProcMsgType", "ProcessId,MsgType"); + + //--------------------------------------------------------------------- + // B u s i n e s s M a n a g e r + //--------------------------------------------------------------------- + // Address table: + CreatePrimaryDbIndex("Address", "Id"); + CreateDbIndex("Address", "IDX_Address_CityRgn", "CityRgn"); + CreateDbIndex("Address", "IDX_Address_CountryRgn", "CountryRgn"); + CreateDbIndex("Address", "IDX_Address_Flags", "Flags"); + CreateDbIndex("Address", "IDX_Address_Item", "ItemType,ItemId"); + CreateDbIndex("Address", "IDX_Address_Line1", "Line1"); + CreateDbIndex("Address", "IDX_Address_Owner", "AffIdOwner"); + CreateDbIndex("Address", "IDX_Address_Postcode", "Postcode"); + CreateDbIndex("Address", "IDX_Address_PostcodeFmt", "PostcodeFmt"); + CreateDbIndex("Address", "IDX_Address_ProvinceRgn", "ProvinceRgn"); + CreateDbIndex("Address", "IDX_Address_RefAddress", "AddIdRef"); + CreateDbIndex("Address", "IDX_Address_Status", "Status"); + CreateDbIndex("Address", "IDX_Address_Type", "Type"); + + // Affiliate table: + CreatePrimaryDbIndex("Affiliate", "Id"); + CreateDbIndex("Affiliate", "IDX_Affiliate_Name", "Name"); + CreateDbIndex("Affiliate", "IDX_Affiliate_Status", "Status"); + CreateDbIndex("Affiliate", "IDX_Affiliate_Type", "Type"); + CreateDbIndex("Affiliate", "IDX_Affiliate_UserId", "UserId"); + + // Association table: + CreatePrimaryDbIndex("Association", "Id"); + CreateDbIndex("Association", "IDX_Association_Code", "Code"); + CreateDbIndex("Association", "IDX_Association_ExtRef", "ExtRef"); + CreateDbIndex("Association", "IDX_Association_Owner", "AffIdOwner"); + CreateDbIndex("Association", "IDX_Association_OwnerTargetType", "AffIdOwner,AffIdTarget,Type", "", true); + CreateDbIndex("Association", "IDX_Association_OwnerTypeCode", "AffIdOwner,Type,Code"); + CreateDbIndex("Association", "IDX_Association_PriceSet", "PriceSetId"); + CreateDbIndex("Association", "IDX_Association_Target", "AffIdTarget"); + CreateDbIndex("Association", "IDX_Association_TaxCode", "TaxCodeId"); + + // Commodity table: + CreatePrimaryDbIndex("Commodity", "Id"); + CreateDbIndex("Commodity", "IDX_Commodity_AssetCat", "AssetCatId"); + CreateDbIndex("Commodity", "IDX_Commodity_CodeIssue", "Code,DrawingIssue"); + CreateDbIndex("Commodity", "IDX_Commodity_Colour", "ColourCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Customer", "AssIdCustomer"); + CreateDbIndex("Commodity", "IDX_Commodity_Delivery", "DeliveryCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Description", "DescBrief"); + CreateDbIndex("Commodity", "IDX_Commodity_Finish", "FinishCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Handling", "HandlingCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Material", "MaterialCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Owner", "AffIdOwner"); + CreateDbIndex("Commodity", "IDX_Commodity_Range", "RangeCode"); + CreateDbIndex("Commodity", "IDX_Commodity_SalesProjCommodity", "CommodityIdSalesProj"); + CreateDbIndex("Commodity", "IDX_Commodity_Source", "SourceCode"); + CreateDbIndex("Commodity", "IDX_Commodity_Supplier", "AssIdSupplier"); + CreateDbIndex("Commodity", "IDX_Commodity_SupplyMethod", "SupplyMethodCode"); + CreateDbIndex("Commodity", "IDX_Commodity_TaxCode", "TaxCodeId"); + CreateDbIndex("Commodity", "IDX_Commodity_UomBox", "UomIdBox"); + CreateDbIndex("Commodity", "IDX_Commodity_UomDensity", "UomIdDensity"); + CreateDbIndex("Commodity", "IDX_Commodity_UomLength", "UomIdLength"); + CreateDbIndex("Commodity", "IDX_Commodity_UomSale", "UomIdSale"); + CreateDbIndex("Commodity", "IDX_Commodity_UomTimeProd", "UomIdTimeProd"); + CreateDbIndex("Commodity", "IDX_Commodity_UomVolume", "UomIdVolume"); + CreateDbIndex("Commodity", "IDX_Commodity_UomWeight", "UomIdWeight"); + + // Commodity Customer table: + CreatePrimaryDbIndex("CommodityCustomer", "CommodityId,AssocIdCustomer"); + CreateDbIndex("CommodityCustomer", "IDX_CommodityCustomer_Currency", "CurrencyIdRetail"); + CreateDbIndex("CommodityCustomer", "IDX_CommodityCustomer_Customer", "AssocIdCustomer"); + + // Commodity Supplier table: + CreatePrimaryDbIndex("CommoditySupplier", "CommodityId,AssocIdSupplier"); + CreateDbIndex("CommoditySupplier", "IDX_CommoditySupplier_Currency", "CurrencyIdCost"); + CreateDbIndex("CommoditySupplier", "IDX_CommoditySupplier_Supplier", "AssocIdSupplier"); + + // Constituent table: + CreatePrimaryDbIndex("Constituent", "Id"); + CreateDbIndex("Constituent", "IDX_Constituent_Asset", "AssetId"); + CreateDbIndex("Constituent", "IDX_Constituent_Assoc", "AssocId"); + CreateDbIndex("Constituent", "IDX_Constituent_Const", "ConstId"); + CreateDbIndex("Constituent", "IDX_Constituent_Contractor", "AssocIdContractor"); + CreateDbIndex("Constituent", "IDX_Constituent_Effective", "Effective"); + CreateDbIndex("Constituent", "IDX_Constituent_Owner", "AffIdOwner"); + CreateDbIndex("Constituent", "IDX_Constituent_Process", "ProcessId"); + CreateDbIndex("Constituent", "IDX_Constituent_Reqnt", "ReqntId"); + CreateDbIndex("Constituent", "IDX_Constituent_Target", "AffIdTarget"); + CreateDbIndex("Constituent", "IDX_Constituent_TaxCode", "TaxCodeId"); + CreateDbIndex("Constituent", "IDX_Constituent_Trans", "TransId"); + CreateDbIndex("Constituent", "IDX_Constituent_Type", "Type"); + CreateDbIndex("Constituent", "IDX_Constituent_Uom", "UomId"); + + // Container table: + CreatePrimaryDbIndex("Container", "Id"); + CreateDbIndex("Container", "IDX_Container_Customer", "AssIdCustomer"); + CreateDbIndex("Container", "IDX_Container_OwnerRef", "AffIdOwner,Reference"); + CreateDbIndex("Container", "IDX_Container_OwnerType", "AffIdOwner,Type"); + CreateDbIndex("Container", "IDX_Container_Supplier", "AssIdSupplier"); + CreateDbIndex("Container", "IDX_Container_TagId", "TagId"); + + // Container Item table: + CreatePrimaryDbIndex("ContainerItem", "ContainerId,ItemSeq,ItemType,ItemId"); + CreateDbIndex("ContainerItem", "IDX_ContainerItem_ContainerSeq", "ContainerId,ItemSeq"); + CreateDbIndex("ContainerItem", "IDX_ContainerItem_Item", "ItemType,ItemId"); + CreateDbIndex("ContainerItem", "IDX_ContainerItem_SourceItem", "ItemTypeSource,ItemIdSource"); + + // Item Link table: + //CreatePrimaryDbIndex ("ItemLink","Type,ItemTypeFrom,ItemIdFrom,ItemTypeTo,ItemIdTo,Seq"); + CreateDbIndex("ItemLink", "IDX_ItemLink_ItemFrom", "ItemTypeFrom,ItemIdFrom"); + CreateDbIndex("ItemLink", "IDX_ItemLink_ItemTo", "ItemTypeTo,ItemIdTo"); + CreateDbIndex("ItemLink", "IDX_ItemLink_TypeItemFromStatus", "Type,ItemTypeFrom,ItemIdFrom,Status"); + CreateDbIndex("ItemLink", "IDX_ItemLink_Type_ItemTypeFrom_ItemTypeTo", "Type,ItemTypeFrom,ItemTypeTo", "ItemIdFrom,ItemIdTo"); + + // Location table: + CreatePrimaryDbIndex("Location", "Id"); + CreateDbIndex("Location", "IDX_Location_Owner", "AffIdOwner"); + CreateDbIndex("Location", "IDX_Location_OwnerCat", "AffIdOwner,Category"); + CreateDbIndex("Location", "IDX_Location_OwnerCode", "AffIdOwner,Code"); + + // Movement table: + CreatePrimaryDbIndex("Movement", "Id"); + CreateDbIndex("Movement", "IDX_Movement_Item", "ItemType,ItemId"); + CreateDbIndex("Movement", "IDX_Movement_ItemTypeMovement", "ItemType,ItemId,Type,Movement"); + CreateDbIndex("Movement", "IDX_Movement_LocationFrom", "LocationIdFrom"); + CreateDbIndex("Movement", "IDX_Movement_LocationTo", "LocationIdTo"); + CreateDbIndex("Movement", "IDX_Movement_Movement", "Movement"); + CreateDbIndex("Movement", "IDX_Movement_SourceItem", "ItemTypeSource,ItemIdSource"); + CreateDbIndex("Movement", "IDX_Movement_SourceMovement", "MovementIdSource"); + + // PortfolioItem table: + CreatePrimaryDbIndex("PortfolioItem", "Id"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_Commodity", "CommodityId"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_Owner", "AffIdOwner"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_OwnerParentCode", "AffIdOwner,ItemIdParent,Code"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_OwnerParentType", "AffIdOwner,ItemIdParent,Type"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ParentItem", "ItemIdParent"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ParentSeq", "ItemIdParent,Seq"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_RefItem", "ItemIdRef"); + CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ShortCut", "ShortCut"); + + // Process table: + CreatePrimaryDbIndex("Process", "Id"); + CreateDbIndex("Process", "IDX_Process_OwnerCategory", "AffIdOwner,Category"); + CreateDbIndex("Process", "IDX_Process_OwnerSeq", "AffIdOwner,Seq"); + CreateDbIndex("Process", "IDX_Process_OwnerType", "AffIdOwner,Type"); + + // Requirement table: + CreatePrimaryDbIndex("Requirement", "Id"); + CreateDbIndex("Requirement", "IDX_Requirement_Reqnt_Trans", "Id,TransId", "ReqntIdSource", true); + CreateDbIndex("Requirement", "IDX_Requirement_Reqnt_Trans_ReqntSource", "Id,TransId,ReqntIdSource", "", true); + CreateDbIndex("Requirement", "IDX_Requirement_AffilOwner", "AffIdOwner"); + CreateDbIndex("Requirement", "IDX_Requirement_Asset", "AssetId"); + CreateDbIndex("Requirement", "IDX_Requirement_Assoc", "AssocId"); + CreateDbIndex("Requirement", "IDX_Requirement_AssocContract", "AssIdSubcontract"); + CreateDbIndex("Requirement", "IDX_Requirement_Commodity", "CommodityId"); + CreateDbIndex("Requirement", "IDX_Requirement_MaterialSource", "MaterialSourceCode"); + CreateDbIndex("Requirement", "IDX_Requirement_ProductCode", "ProductCode"); + CreateDbIndex("Requirement", "IDX_Requirement_ReqntSource", "ReqntIdSource"); + CreateDbIndex("Requirement", "IDX_Requirement_StockLocation", "LocationIdStock"); + CreateDbIndex("Requirement", "IDX_Requirement_TaxCode", "TaxCodeId"); + CreateDbIndex("Requirement", "IDX_Requirement_Trans", "TransId"); + CreateDbIndex("Requirement", "IDX_Requirement_TransCommodityStatus", "TransId,CommodityId,Status"); + CreateDbIndex("Requirement", "IDX_Requirement_TransSeq", "TransId,Seq"); + CreateDbIndex("Requirement", "IDX_Requirement_Uom", "UomId"); + + // Asset table: + CreatePrimaryDbIndex("SaAsset", "Id"); + CreateDbIndex("SaAsset", "IDX_SaAsset_CategorySerial", "AssetCategoryId,SerialFmt", "", true); + CreateDbIndex("SaAsset", "IDX_SaAsset_Customer", "AssocIdCustomer,Id", "", true); + CreateDbIndex("SaAsset", "IDX_SaAsset_Item", "ItemType,ItemId"); + CreateDbIndex("SaAsset", "IDX_SaAsset_Supplier", "AssocIdSupplier,Id", "", true); + + // Asset Category table: + CreatePrimaryDbIndex("SaAssetCategory", "Id"); + CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_Customer", "AssocIdCustomer,Id", "", true); + CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_OwnerType", "AffIdOwner,AssetType,Code", "", true); + CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_Supplier", "AssocIdSupplier,Id", "", true); + + // Asset Process table: + CreatePrimaryDbIndex("SaAssetProcess", "Id"); + + // Price table: + CreatePrimaryDbIndex("SaPrice", "PriceSetId,CommodityId"); + CreateDbIndex("SaPrice", "IDX_SaPrice_Commodity", "CommodityId"); + CreateDbIndex("SaPrice", "IDX_SaPrice_PriceSet", "PriceSetId"); + + // Price Set table: + CreatePrimaryDbIndex("SaPriceSet", "Id"); + CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_AffOwner", "AffIdOwner"); + CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_Currency", "CurrencyId"); + CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_Name", "Name"); + CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_OwnerRef", "AffIdOwner,Ref", "", true); + + // Vehicle table: + CreatePrimaryDbIndex("SaVehicle", "Id"); + CreateDbIndex("SaVehicle", "IDX_SaVehicle_CapCode", "CapCode,Id", "", true); + CreateDbIndex("SaVehicle", "IDX_SaVehicle_KeyLocation", "KeyLocation,Id", "", true); + CreateDbIndex("SaVehicle", "IDX_SaVehicle_RegNumber", "RegNumber", "", true); + CreateDbIndex("SaVehicle", "IDX_SaVehicle_VehicleClass", "VehicleClassId,Id", "", true); + + // Vehicle Class table: + CreatePrimaryDbIndex("SaVehicleClass", "Id"); + CreateDbIndex("SaVehicleClass", "IDX_SaVehicleClass_Category", "VehicleCategoryCode"); + CreateDbIndex("SaVehicleClass", "IDX_SaVehicleClass_Make", "MakeCode,Id", "", true); + + // Vehicle Event table: + CreatePrimaryDbIndex("SaVehicleEvent", "Id"); + CreateDbIndex("SaVehicleEvent", "IDX_SaVehicleEvent_TaxCode", "TaxCodeId"); + CreateDbIndex("SaVehicleEvent", "IDX_SaVehicleEvent_VehicleStart", "VehicleId,StartOn", "", true); + + // Vehicle Feature table: + CreatePrimaryDbIndex("SaVehicleFeature", "VehicleId,Source,Type,CategoryCode,FeatureCode"); + + // Stock Level table: + CreatePrimaryDbIndex("StockLevel", "Id"); + CreateDbIndex("StockLevel", "IDX_StockLevel_Commodity", "CommodityId"); + CreateDbIndex("StockLevel", "IDX_StockLevel_CommodityRecorded", "CommodityId,Recorded"); + CreateDbIndex("StockLevel", "IDX_StockLevel_CommodityType", "CommodityId,Type"); + CreateDbIndex("StockLevel", "IDX_StockLevel_Location", "LocationId"); + CreateDbIndex("StockLevel", "IDX_StockLevel_Recorded", "Recorded"); + CreateDbIndex("StockLevel", "IDX_StockLevel_Type", "Type"); + + // System Account table: + CreatePrimaryDbIndex("SystemAccount", "Id"); + CreateDbIndex("SystemAccount", "IDX_SystemAccount_AffIdOwner", "AffIdOwner"); + CreateDbIndex("SystemAccount", "IDX_SystemAccount_Association", "AssocId"); + CreateDbIndex("SystemAccount", "IDX_SystemAccount_Interface", "InterfaceId"); + + // System Account User table: + CreatePrimaryDbIndex("SystemAccountUser", "AccountId,UserId"); + CreateDbIndex("SystemAccountUser", "IDX_SystemAccountUser_User", "UserId"); + + // System User table: + CreatePrimaryDbIndex("SystemUser", "Id"); + CreateDbIndex("SystemUser", "IDX_SystemUser_AffiliateId", "AffiliateId"); + CreateDbIndex("SystemUser", "IDX_SystemUser_Interface", "InterfaceId"); + CreateDbIndex("SystemUser", "IDX_SystemUser_OwnerCode", "AffIdOwner,Code", "", true); + + // Transaction table: + CreatePrimaryDbIndex("Transaction", "Id"); + CreateDbIndex("Transaction", "IDX_Transaction_AffilRaise", "AffIdRaise"); + CreateDbIndex("Transaction", "IDX_Transaction_AffilRefer", "AffIdRefer"); + CreateDbIndex("Transaction", "IDX_Transaction_Assoc", "AssocId"); + CreateDbIndex("Transaction", "IDX_Transaction_AssocContract", "AssocIdContract"); + CreateDbIndex("Transaction", "IDX_Transaction_AssocOffice", "AssocIdOffice"); + CreateDbIndex("Transaction", "IDX_Transaction_AssocType", "AssocId,Type"); + CreateDbIndex("Transaction", "IDX_Transaction_Currency", "CurrencyId"); + CreateDbIndex("Transaction", "IDX_Transaction_OwnerRef", "AffIdOwner,Ref"); + CreateDbIndex("Transaction", "IDX_Transaction_OwnerRefExt", "AffIdOwner,RefExt"); + CreateDbIndex("Transaction", "IDX_Transaction_OwnerTypeRaised", "AffIdOwner,Type,Raised"); + CreateDbIndex("Transaction", "IDX_Transaction_Postcode", "Postcode"); + CreateDbIndex("Transaction", "IDX_Transaction_StatusCat", "StatusCat"); + CreateDbIndex("Transaction", "IDX_Transaction_StockLocation", "LocationIdStock"); + CreateDbIndex("Transaction", "IDX_Transaction_TaxCode", "TaxCodeId"); + CreateDbIndex("Transaction", "IDX_Transaction_TransSource", "TransIdSource"); + + //--------------------------------------------------------------------- + // R e f e r e n c e D a t a + //--------------------------------------------------------------------- + // Currency table: + CreatePrimaryDbIndex("Currency", "Id"); + CreateDbIndex("Currency", "IDX_Currency_Code", "Code", "", true); + CreateDbIndex("Currency", "IDX_Currency_Region", "Region"); + + // Language table: + CreatePrimaryDbIndex("Language", "Id"); + CreateDbIndex("Language", "IDX_Language_Code", "Code", "", true); + + // Region table: + CreatePrimaryDbIndex("Region", "Id"); + CreateDbIndex("Region", "IDX_Region_ParentTypeName", "Parent,Type,Name"); + CreateDbIndex("Region", "IDX_Region_TypeName", "Type,Name", "", true); + + // SysParam table: + CreatePrimaryDbIndex("SysParam", "Id"); + CreateDbIndex("SysParam", "IDX_SysParam_CatAssName", "Cat,AssocId,Name"); + CreateDbIndex("SysParam", "IDX_SysParam_CatName", "Cat,Name"); + CreateDbIndex("SysParam", "IDX_SysParam_CatOrgName", "Cat,AffIdTarget,Name"); + CreateDbIndex("SysParam", "IDX_SysParam_CatPerName", "Cat,AffIdOwner,Name"); + + // TaxCode table: + CreatePrimaryDbIndex("TaxCode", "Id"); + CreateDbIndex("TaxCode", "IdX_TaxCode_Code", "Code"); + CreateDbIndex("TaxCode", "IdX_TaxCode_CodeAlt1", "CodeAlt1"); + CreateDbIndex("TaxCode", "IdX_TaxCode_CodeAlt2", "CodeAlt2"); + + // Unit of Measure table: + CreatePrimaryDbIndex("UnitMeasure", "Id"); + CreateDbIndex("UnitMeasure", "IDX_UnitMeasure_Code", "Code", "", true); + + //--------------------------------------------------------------- // Clean-up. - database.DisplayErrors = displayDbExceptionsPrev; - return !HasErrorState(); + Database.DisplayErrors = displayDbExceptionsPrev; + return OK; + } + + private bool CreatePrimaryDbIndex(String tableName, String columns, bool dropIndicesIfNotExist = false) + { + if (HasErrorState()) return false; + if (!Database.TableExists(tableName)) return true; + List columnNames = new List(Regex.Split(columns, "[\\s,;\\-+]+")); + DbDfnTable dfnTbl = Database.GetTableDfn(tableName); + String indexName = "PK_" + tableName; + if (!dfnTbl.HasIndexByName(indexName)) + { + // Primary index does not exist on table. + if (dropIndicesIfNotExist) + { + // All existing indices are dropped + foreach (DbDfnIndex index in dfnTbl.Indices) + DropDbIndex(tableName, index.Name); + } + if (!HasErrorState()) + { + // Examples: + // MS Access: ALTER TABLE ADD PRIMARY KEY () + // 1. ALTER TABLE Customer ADD PRIMARY KEY (SID); + // 2. ALTER TABLE [Sales].[Individual] + // ADD CONSTRAINT [PK_Individual_CustomerID] + // PRIMARY KEY CLUSTERED + // ([CustomerID] ASC) + String query = "ALTER TABLE [" + tableName + "] ADD CONSTRAINT [" + indexName + "] PRIMARY KEY (" + columnNames.Concat(",", "[", "]") + ")"; + if (Database.DbmsType == DbmsType.MsSql) + query = "ALTER TABLE [" + tableName + "] ADD CONSTRAINT [" + indexName + "] PRIMARY KEY CLUSTERED (" + columnNames.Concat(",", "[", "]") + ")"; + SaLogger.Info($"{SysUtil.Fn} Query:\n\t" + query); + if (!query.IsEmpty()) Database.ExecuteNonQuery(query); + if (Database.HasErrorState()) + { +#if DEBUG + SaLogger.Debug($"{SysUtil.Fn} Table: {tableName}. Index: {indexName}. Exception: {Database.ErrorStateMessage.TrimEnd('.')}."); +#endif + SetErrorState($"Failed to create primary index {indexName} on {tableName} - {Database.ErrorStateMessage}"); + SaLogger.Error(ErrorStateMessage); + } + } + } + return OK; + } + + private bool CreateDbIndex(String tableName, String indexName, String columns, String includeColumns = "", bool unique = false) + { + if (HasErrorState()) return false; + if (!Database.TableExists(tableName)) return true; + List columnNames = new List(Regex.Split(columns, "[\\s,;\\-+]+")); + List includeColumnNames = new List(Regex.Split(includeColumns, "[\\s,;\\-+]+")); + DbDfnTable dfnTbl = Database.GetTableDfn(tableName); + if (!dfnTbl.HasIndexByName(indexName)) // ToDo Should also check the columns and their sequence in the index. + { + String query = "CREATE " + (unique ? "UNIQUE " : "") + "INDEX "; + query += "[" + indexName + "] ON [" + tableName + "] (" + columnNames.Concat(",", "[", "]") + ")"; + if (!includeColumnNames.IsEmpty()) + query += " INCLUDE (" + includeColumnNames.Concat(",", "[", "]") + ")"; +#if DEBUG + SaLogger.Debug($"{SysUtil.Fn} Table: {tableName}. Index: {indexName}."); + SaLogger.Debug("\tQuery: {query}"); +#endif + SaLogger.Info($"{SysUtil.Fn} Query:\n\t" + query); + if (!query.IsEmpty()) Database.ExecuteNonQuery(query); + if (Database.HasErrorState()) + { +#if DEBUG + SaLogger.Debug($"\tException: {Database.ErrorStateMessage}"); +#endif + SetErrorState($"Failed to create index {indexName} on {tableName} - {Database.ErrorStateMessage}"); + SaLogger.Error(ErrorStateMessage); + } + } + return OK; + } + + private bool DropDbIndex(String tableName, String indexName) + { + if (HasErrorState()) return false; + if (!Database.TableExists(tableName)) return true; + DbDfnTable dfnTbl = Database.GetTableDfn(tableName); + if (!dfnTbl.HasIndexByName(indexName)) // ToDo Should also check the columns and their sequence in the index. + { + // Drop index: + // MS Access: DROP INDEX index_name ON table_name + // MS SQL Server: DROP INDEX table_name.index_name + // DB2/Oracle: DROP INDEX index_name + // MySQL: ALTER TABLE table_name DROP INDEX index_name + String query = "DROP INDEX [" + indexName + "] ON [" + tableName + "]"; + SaLogger.Info("SapphireDbConsole_Odbc::DropDbIndex"); + SaLogger.Info("Query: " + query); + if (Database.DbmsType == DbmsType.MsSql) + query = "DROP INDEX [" + tableName + "].[" + indexName + "]"; + if (!query.IsEmpty()) Database.ExecuteNonQuery(query); + if (Database.HasErrorState()) + { +#if DEBUG + SaLogger.Debug($"{SysUtil.Fn} Table: {tableName}. Index: {indexName}. Exception: {Database.ErrorStateMessage}"); +#endif + SetErrorState($"Failed to drop index {indexName} on {tableName} - {Database.ErrorStateMessage}"); + SaLogger.Error(ErrorStateMessage); + } + } + else + { + // Assume this is the Primary Key: + String query = "ALTER TABLE [" + tableName + "] DROP CONSTRAINT [" + indexName + "]"; + SaLogger.Info($"{SysUtil.Fn}"); + SaLogger.Info("Query: " + query); + //if (Database.DbmsType == eSaDbmsMsSql) + // sQry = (String)"DROP INDEX ["+sTable+"].["+sIndex+"]"; + if (!query.IsEmpty()) Database.ExecuteNonQuery(query); + if (Database.HasErrorState()) + { +#if DEBUG + SaLogger.Debug($"{SysUtil.Fn} Table: {tableName}. Index: {indexName}. Exception: {Database.ErrorStateMessage}"); +#endif + SetErrorState($"Failed to drop primary key {indexName} on {tableName} - {Database.ErrorStateMessage}"); + SaLogger.Error(ErrorStateMessage); + } + } + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmInterfaceConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmInterfaceConsole_Dbas.cs index f151636..9673468 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmInterfaceConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmInterfaceConsole_Dbas.cs @@ -19,15 +19,23 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private SbmInternals internals; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } private readonly List dataItemTypes; private readonly List interfaceDataTypes; //------------------------------------------------------------------- // Construction. - protected SbmInterfaceConsole_Dbas(ISbmUserOrganisationContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + protected SbmInterfaceConsole_Dbas(SbmInternals internals) : base(internals.BusMgrDatabase) { - UserContext = userContext; + mbr = new DataMembers(internals); dataItemTypes = Internals.GetSystemCodes(Sbm.SystemCode.ItemType); interfaceDataTypes = internals.GetSystemCodes(Sbm.SystemCode.InterfaceDataType); } @@ -35,19 +43,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } - private SbmInternals Internals { get { if (internals == null) internals = new SbmInternals(UserContext); return internals; } } + protected SbmInternals Internals { get { return mbr.InternalsSupplied; } } + protected ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + protected SbmSessionContext SessionContext { get { return Internals.SessionContext; } } public override short InterfaceDataType { get { return (short)Sbm.ItemType.Interface; } } // Consoles. - private SbmSessionConsole SessionConsole { get { return Internals.SessionConsole; } } + protected SbmSessionConsole SessionConsole { get { return Internals.SessionConsole; } } public override SaItemOptionConsole ItemOptionConsole { get { return Internals.ItemOptionConsole; } } public override SaUpdateLogConsole UpdateLogConsole { get { return Internals.UpdateLogConsole; } } @@ -68,13 +75,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles private List GetInterfaceTypesForCategory(SaInterfaceCategory interfaceCategory) { if (interfaceCategory == SaInterfaceCategory.Website) - return internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_Website); + return Internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_Website); if (interfaceCategory == SaInterfaceCategory.Accounts) - return internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_Accounts); + return Internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_Accounts); if (interfaceCategory == SaInterfaceCategory.System) - return internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_System); + return Internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_System); if (interfaceCategory == SaInterfaceCategory.File) - return internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_File); + return Internals.GetSystemCodes(Sbm.SystemCode.InterfaceType_File); return new List(); } public void RegisterInterfaces(String context) diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmItemOptionConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmItemOptionConsole_Dbas.cs index 37917ef..ef15bf7 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmItemOptionConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmItemOptionConsole_Dbas.cs @@ -2,6 +2,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Base.ItemOptions; using Sarand.Net.Standard.Base.UpdateLog; @@ -16,32 +17,38 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private SbmInternals internals; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. - protected SbmItemOptionConsole_Dbas(ISbmUserOrganisationContext userContext) : base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + protected SbmItemOptionConsole_Dbas(SbmInternals internals) : base(internals.BusMgrDatabase) { - UserContext = userContext; + mbr = new DataMembers(internals); } protected override void Dispose(bool disposing) { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; set; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } - private SbmInternals Internals { get { if (internals == null) { internals = new SbmInternals(UserContext); } return internals; } } public override short ItemOptionDataType { get { return (short)Sbm.ItemType.ItemOption; } } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } + private ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + private SbmSessionContext SessionContext { get { return Internals.SessionContext; } } private SbmAccountMgr AccountMgr { get { return Internals.AccountMgr; } } - // Consoles. - public SaInterfaceConsole InterfaceConsole { get { return Internals.InterfaceConsole; } } + private SaInterfaceConsole InterfaceConsole { get { return Internals.InterfaceConsole; } } public override SaUpdateLogConsole UpdateLogConsole { get { return Internals.UpdateLogConsole; } } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmReferenceDataConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmReferenceDataConsole_Dbas.cs index f25359b..cdcca82 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmReferenceDataConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmReferenceDataConsole_Dbas.cs @@ -1,8 +1,10 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.UpdateLog; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.ReferenceData; +using System.Collections.Generic; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { @@ -11,29 +13,36 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private SbmInternals internals; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. - protected SbmReferenceDataConsole_Dbas(ISbmUserOrganisationContext userContext) : - base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + protected SbmReferenceDataConsole_Dbas(SbmInternals internals) : + base(internals.BusMgrDatabase) { - UserContext = userContext; + mbr = new DataMembers(internals); } protected override void Dispose(bool disposing) { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } - private SbmInternals Internals { get { if (internals == null) { internals = new SbmInternals(UserContext); } return internals; } } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } + private ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + private SbmSessionContext SessionContext { get { return Internals.SessionContext; } } // Item types. public override short LanguageItemType { get { return (short)Sbm.ItemDataType.Unknown; } } public override short RegionItemType { get { return (short)Sbm.ItemDataType.Region; } } diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmSecurityConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmSecurityConsole_Dbas.cs index d3cbf8c..0427948 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmSecurityConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmSecurityConsole_Dbas.cs @@ -20,31 +20,38 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private SbmInternals internals; - private List securityRights; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + public List SecurityRights { get; set; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. - protected SbmSecurityConsole_Dbas(ISbmUserOrganisationContext userContext) : - base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + protected SbmSecurityConsole_Dbas(SbmInternals internals) : + base(internals.BusMgrDatabase) { - UserContext = userContext; + mbr = new DataMembers(internals); RegisterSecurityRights(); } protected override void Dispose(bool disposing) { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } + public ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } - private SbmInternals Internals { get { if (internals == null) internals = new SbmInternals(UserContext); return internals; } } + private SbmInternals Internals { get { return mbr.InternalsSupplied; } } public override short SecurityItemDataType { get { return (short)Sbm.ItemType.SecurityItem; } } public override short SecurityLinkDataType { get { return (short)Sbm.ItemType.SecurityLink; } } // Consoles. @@ -59,60 +66,60 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles //------------------------------------------------------------------- protected List GetSecurityRights() { - if (securityRights == null) + if (mbr.SecurityRights == null) { - securityRights = new List(); + mbr.SecurityRights = new List(); if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.Contacts)) { - securityRights.Add(Sbm.SecurityRight.Affiliate_Create, "AffIns", "Affiliates - Create"); - securityRights.Add(Sbm.SecurityRight.Affiliate_Update, "AffUpd", "Affiliates - Update"); - securityRights.Add(Sbm.SecurityRight.Association_Create, "AssIns", "Associations - Create"); - securityRights.Add(Sbm.SecurityRight.Association_Update, "AssUpd", "Associations - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Affiliate_Create, "AffIns", "Affiliates - Create"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Affiliate_Update, "AffUpd", "Affiliates - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Association_Create, "AssIns", "Associations - Create"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Association_Update, "AssUpd", "Associations - Update"); } if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.Commodities)) { - securityRights.Add(Sbm.SecurityRight.Commodity_Create, "CmdIns", "Commodities - Create"); - securityRights.Add(Sbm.SecurityRight.Commodity_Update, "CmdUpd", "Commodities - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Commodity_Create, "CmdIns", "Commodities - Create"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Commodity_Update, "CmdUpd", "Commodities - Update"); if (SessionConsole.GetStockControlConfig().AllowStockControl()) { - securityRights.Add(Sbm.SecurityRight.StockTake, "CmdStkTak", "Commodities - Stock Take"); + mbr.SecurityRights.Add(Sbm.SecurityRight.StockTake, "CmdStkTak", "Commodities - Stock Take"); } } if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) { - securityRights.Add(Sbm.SecurityRight.Asset_Create, "AssetIns", "Assets - Create"); - securityRights.Add(Sbm.SecurityRight.Asset_Update, "AssetUpd", "Assets - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Asset_Create, "AssetIns", "Assets - Create"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Asset_Update, "AssetUpd", "Assets - Update"); } if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.Transactions)) { - securityRights.Add(Sbm.SecurityRight.Transaction_Create, "TraIns", "Transactions - Create"); - securityRights.Add(Sbm.SecurityRight.Transaction_Update, "TraUpd", "Transactions - Update"); - securityRights.Add(Sbm.SecurityRight.Transaction_Remove, "TraRem", "Transactions - Remove"); - securityRights.Add(Sbm.SecurityRight.Transaction_ByType, "TransType", "Transactions - Allow by type"); - securityRights.Add(Sbm.SecurityRight.Transaction_UpdateByTypeStatus, "UpdTransTypeStat", "Transactions - Update by type and status"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Transaction_Create, "TraIns", "Transactions - Create"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Transaction_Update, "TraUpd", "Transactions - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Transaction_Remove, "TraRem", "Transactions - Remove"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Transaction_ByType, "TransType", "Transactions - Allow by type"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Transaction_UpdateByTypeStatus, "UpdTransTypeStat", "Transactions - Update by type and status"); } - securityRights.Add(Sbm.SecurityRight.Security_Admin, "SecAdm", "Admin - Security"); - securityRights.Add(Sbm.SecurityRight.Database_Admin, "DbAdm", "Admin - Database"); - securityRights.Add(Sbm.SecurityRight.ReferenceData_Admin, "RefAdm", "Admin - Reference data"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Security_Admin, "SecAdm", "Admin - Security"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Database_Admin, "DbAdm", "Admin - Database"); + mbr.SecurityRights.Add(Sbm.SecurityRight.ReferenceData_Admin, "RefAdm", "Admin - Reference data"); if (SessionConsole != null && SessionConsole.AllowInterfaces()) { - securityRights.Add(Sbm.SecurityRight.InterfaceConfig, "IntCfg", "Interfaces - Configuration"); - securityRights.Add(Sbm.SecurityRight.InterfaceByCategory, "IntCategory", "Interfaces - Allow by category"); + mbr.SecurityRights.Add(Sbm.SecurityRight.InterfaceConfig, "IntCfg", "Interfaces - Configuration"); + mbr.SecurityRights.Add(Sbm.SecurityRight.InterfaceByCategory, "IntCategory", "Interfaces - Allow by category"); } - securityRights.Add(Sbm.SecurityRight.Financial_Update, "FinUpd", "Financials - Update"); - securityRights.Add(Sbm.SecurityRight.Financial_View, "FinLst", "Financials - View"); - securityRights.Add(Sbm.SecurityRight.Financial_ViewByType, "FinType", "Financials - View by type"); - securityRights.Add(Sbm.SecurityRight.Financial_UpdateByType, "FinTypeUpd", "Financials - Update by type"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Financial_Update, "FinUpd", "Financials - Update"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Financial_View, "FinLst", "Financials - View"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Financial_ViewByType, "FinType", "Financials - View by type"); + mbr.SecurityRights.Add(Sbm.SecurityRight.Financial_UpdateByType, "FinTypeUpd", "Financials - Update by type"); if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.TimeRecording)) { - securityRights.Add(Sbm.SecurityRight.TimesheetManager, "TimMgr", "Manage - Timesheets"); + mbr.SecurityRights.Add(Sbm.SecurityRight.TimesheetManager, "TimMgr", "Manage - Timesheets"); } if (SessionConsole != null && SessionConsole.AllowOption(Sbm.ConfigOption.Tasks)) { - securityRights.Add(Sbm.SecurityRight.TaskManager, "TskMgr", "Manage - Tasks"); + mbr.SecurityRights.Add(Sbm.SecurityRight.TaskManager, "TskMgr", "Manage - Tasks"); } } - return securityRights; + return mbr.SecurityRights; } //------------------------------------------------------------------- @@ -122,7 +129,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { // Construct list of transaction types and statuses to use in security rights. List transactionTypesStatus = new List(); - foreach (TypeCodeDesc transactionType in internals.GetSystemCodes(Sbm.SystemCode.TransactionType)) + foreach (TypeCodeDesc transactionType in Internals.GetSystemCodes(Sbm.SystemCode.TransactionType)) { Sbm.TransactionType transType = (Sbm.TransactionType)transactionType.Type; // Only interested in sales quotes and orders for now. @@ -201,7 +208,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles // Transaction types: List transactionTypesDesc = new List(); List transactionTypesDescAllowed = new List(); - foreach (TypeCodeDesc transactionType in internals.GetSystemCodes(Sbm.SystemCode.TransactionType)) + foreach (TypeCodeDesc transactionType in Internals.GetSystemCodes(Sbm.SystemCode.TransactionType)) { if (SessionConsole.AllowTransactionType((Sbm.TransactionType)transactionType.Type)) transactionTypesDescAllowed.Add(new SysId(transactionType.Type), transactionType.Desc); @@ -228,7 +235,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles // Financial types: List financialTypesDesc = new List(); List financialTypesDescAllowed = new List(); - foreach (TypeCodeDesc financialType in internals.GetSystemCodes(Sbm.SystemCode.FinancialType)) + foreach (TypeCodeDesc financialType in Internals.GetSystemCodes(Sbm.SystemCode.FinancialType)) { financialTypesDescAllowed.Add(new SysId(financialType.Type), financialType.Desc); financialTypesDesc.Add(new SysId(financialType.Type), financialType.Desc); @@ -241,7 +248,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles CodeDesc GetSecurityRight(Sbm.SecurityRight securityRight) { - return securityRights.GetCodeDescForType(securityRight); + return mbr.SecurityRights.GetCodeDescForType(securityRight); } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Consoles/SbmUpdateLogConsole_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Consoles/SbmUpdateLogConsole_Dbas.cs index 7994c61..fc9b112 100644 --- a/SaBusMgrStandardDbas/Dbas/Consoles/SbmUpdateLogConsole_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Consoles/SbmUpdateLogConsole_Dbas.cs @@ -14,31 +14,38 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles { //------------------------------------------------------------------- // Data members. - private SbmInternals internals; + private class DataMembers + { + public DataMembers(SbmInternals internalsSupplied) + { + this.InternalsSupplied = internalsSupplied; + } + public SbmInternals InternalsSupplied { get; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. - protected SbmUpdateLogConsole_Dbas(ISbmUserOrganisationContext userContext) : - base(SbmGlobals.Application.GetBusMgrDatabase(userContext.SessionContext)) + protected SbmUpdateLogConsole_Dbas(SbmInternals internals) : + base(internals.BusMgrDatabase) { - UserContext = userContext; + mbr = new DataMembers(internals); } protected override void Dispose(bool disposing) { if (disposing) { - if (internals != null) internals.Dispose(); internals = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public ISbmUserOrganisationContext UserContext { get; } - public SbmSessionContext SessionContext { get { return UserContext.SessionContext; } } - private SbmInternals Internals { get { if (internals == null) { internals = new SbmInternals(UserContext); } return internals; } } + protected SbmInternals Internals { get { return mbr.InternalsSupplied; } } + protected ISbmUserOrganisationContext UserContext { get { return Internals.UserContext; } } + protected SbmSessionContext SessionContext { get { return Internals.SessionContext; } } // Consoles. - public SaSecurityConsole SecurityConsole { get { return Internals.SecurityConsole; } } + protected SaSecurityConsole SecurityConsole { get { return Internals.SecurityConsole; } } //------------------------------------------------------------------- // Get name for User Id. diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Address_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Address_Db.cs index 3cb751f..23fa8b6 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Address_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Address_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Affiliate_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Affiliate_Db.cs index 8827566..708b710 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Affiliate_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Affiliate_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Association_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Association_Db.cs index d62abef..d3eddfb 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Association_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Association_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/CommodityCustomer_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/CommodityCustomer_Db.cs index b9ba359..1363bee 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/CommodityCustomer_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/CommodityCustomer_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/CommoditySupplier_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/CommoditySupplier_Db.cs index 05c3eb5..26bcfd3 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/CommoditySupplier_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/CommoditySupplier_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Commodity_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Commodity_Db.cs index 9552667..e78b14e 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Commodity_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Commodity_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Constituent_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Constituent_Db.cs index c16520d..a0fa136 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Constituent_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Constituent_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/ContainerItem_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/ContainerItem_Db.cs index 8539e4b..5717201 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/ContainerItem_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/ContainerItem_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Container_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Container_Db.cs index 05f5b34..929df4c 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Container_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Container_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Control/AccountRegistration_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Control/AccountRegistration_Db.cs new file mode 100644 index 0000000..711ecab --- /dev/null +++ b/SaBusMgrStandardDbas/Dbas/Internal/Control/AccountRegistration_Db.cs @@ -0,0 +1,281 @@ +using Microsoft.Data.SqlClient; +using Sarand.BusinessMgr.Net.Standard.Dbas.Data; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; + +//--------------------------------------------------------------------------- +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 +//--------------------------------------------------------------------------- +namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control +{ + internal class AccountRegistration_Db : SbmDbDataItem + { + //------------------------------------------------------------------- + // Column definitions. + public class ColumnsData + { + public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true); + public ColumnDataString _EmailAddress { get; } = new ColumnDataString("EmailAddress"); + public ColumnDataString _FirstName { get; } = new ColumnDataString("FirstName"); + public ColumnDataString _LastName { get; } = new ColumnDataString("LastName"); + public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain"); + public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt"); + public ColumnDataString _InstanceContext { get; } = new ColumnDataString("InstanceContext"); + public ColumnDataDateTime _RequestAccountAt { get; } = new ColumnDataDateTime("RequestAccountAt"); + public ColumnDataGuid _RegisterAccountToken { get; } = new ColumnDataGuid("RegisterAccountToken"); + public ColumnDataDateTimeNullable _RegisterAccountAt { get; } = new ColumnDataDateTimeNullable("RegisterAccountAt"); + public ColumnDataString _AccountPasswordSalt { get; } = new ColumnDataString("AccountPasswordSalt"); + public ColumnDataString _AccountPasswordHash { get; } = new ColumnDataString("AccountPasswordHash"); + public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); + public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags"); + public ColumnDataString _Status { get; } = new ColumnDataString("Status"); + public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn"); + public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy"); + public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); + public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn"); + public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy"); + public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); + } + + //------------------------------------------------------------------- + // Data members. + protected static List fields { get; } = new List() + { + "Id", + "EmailAddress", + "FirstName", + "LastName", + "PhoneMain", + "PhoneAlt", + "InstanceContext", + "RequestAccountAt", + "RegisterAccountToken", + "RegisterAccountAt", + "AccountPasswordSalt", + "AccountPasswordHash", + "Notes", + "Flags", + "Status", + "CreateOn", + "CreateBy", + "CreateHost", + "UpdateOn", + "UpdateBy", + "UpdateHost", + }; + protected static List fieldsId { get; } = new List() + { + "Id", + }; + protected static List fieldsPrimary { get; } = new List() + { + "Id", + }; + protected static List fieldsNullable { get; } = new List() + { + "PhoneMain", + "PhoneAlt", + "RegisterAccountAt", + "AccountPasswordSalt", + "AccountPasswordHash", + }; + protected static List fieldsIgnoreOnUpdate { get; } = new List() + { + "CreateOn", + "CreateBy", + "CreateHost", + }; + + //------------------------------------------------------------------- + // Construction. + internal AccountRegistration_Db (IDatabaseInfo dbInfo) : base(dbInfo) + { + } + + //------------------------------------------------------------------- + // Properties. + public override String SchemaName { get; } = "dbo"; + public override String TableName { get; } = "AccountRegistration"; + public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } + public static List Fields { get { return new List(fields); } } + public static List FieldsId { get { return new List(fieldsId); } } + public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } + // Columns. + public ColumnsData Cols { get; } = new ColumnsData(); + public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } + public String _EmailAddress { get { return Cols._EmailAddress.Value; } set { Cols._EmailAddress.Value = value; } } + public String _FirstName { get { return Cols._FirstName.Value; } set { Cols._FirstName.Value = value; } } + public String _LastName { get { return Cols._LastName.Value; } set { Cols._LastName.Value = value; } } + public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } } + public String _PhoneAlt { get { return Cols._PhoneAlt.Value; } set { Cols._PhoneAlt.Value = value; } } + public String _InstanceContext { get { return Cols._InstanceContext.Value; } set { Cols._InstanceContext.Value = value; } } + public DateTime _RequestAccountAt { get { return Cols._RequestAccountAt.Value; } set { Cols._RequestAccountAt.Value = value; } } + public Guid _RegisterAccountToken { get { return Cols._RegisterAccountToken.Value; } set { Cols._RegisterAccountToken.Value = value; } } + public DateTime? _RegisterAccountAt { get { return Cols._RegisterAccountAt.Value; } set { Cols._RegisterAccountAt.Value = value; } } + public String _AccountPasswordSalt { get { return Cols._AccountPasswordSalt.Value; } set { Cols._AccountPasswordSalt.Value = value; } } + public String _AccountPasswordHash { get { return Cols._AccountPasswordHash.Value; } set { Cols._AccountPasswordHash.Value = value; } } + public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } + public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } + public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } + public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } + public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } + public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } + public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } + public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } + public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } + // Existing columns - confirmed on database if table exists. + public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } + public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } + public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } + + //------------------------------------------------------------------- + // Population. + public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) + { + dbCommand.CommandText = + "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + + "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + + (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); + Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); + using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) + { + dbDataReader.Read(); + PopulateFrom(dbDataReader); + } + } + public override void PopulateFrom (DbDataReader dbDataReader) + { + _Id = GetFieldInt32(dbDataReader, "Id", _Id); + _EmailAddress = GetFieldString(dbDataReader, "EmailAddress", _EmailAddress); + _FirstName = GetFieldString(dbDataReader, "FirstName", _FirstName); + _LastName = GetFieldString(dbDataReader, "LastName", _LastName); + _PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain); + _PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt); + _InstanceContext = GetFieldString(dbDataReader, "InstanceContext", _InstanceContext); + _RequestAccountAt = GetFieldDateTime(dbDataReader, "RequestAccountAt", _RequestAccountAt); + _RegisterAccountToken = GetFieldGuid(dbDataReader, "RegisterAccountToken", _RegisterAccountToken); + _RegisterAccountAt = GetFieldDateTimeNullable(dbDataReader, "RegisterAccountAt", _RegisterAccountAt); + _AccountPasswordSalt = GetFieldString(dbDataReader, "AccountPasswordSalt", _AccountPasswordSalt); + _AccountPasswordHash = GetFieldString(dbDataReader, "AccountPasswordHash", _AccountPasswordHash); + _Notes = GetFieldString(dbDataReader, "Notes", _Notes); + _Flags = GetFieldInt16(dbDataReader, "Flags", _Flags); + _Status = GetFieldString(dbDataReader, "Status", _Status); + _CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn); + _CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy); + _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); + _UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn); + _UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy); + _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); + } + + //------------------------------------------------------------------- + // Insert command. + public override bool ExecuteInsertCommand (DbCommand dbCommand) + { + List columnNames = ExistingColumnNamesNonId; + // Avoid insert if Identity field is already valid. + if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id"); + // Construct query. + String query = + "INSERT INTO " + TableNameFmt + " " + + "("+columnNames.Concat(",","[","]")+") "; + query += "Output Inserted.Id "; + if (dbCommand is SqlCommand) + query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; + else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; + dbCommand.CommandText = query; + Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); + // Populate parameters. + dbCommand.Parameters.Clear(); + if (columnNames.ContainsCI("EmailAddress")) AddCommandParameter(dbCommand, "@EmailAddress", _EmailAddress); + if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName); + if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName); + if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain); + if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt); + if (columnNames.ContainsCI("InstanceContext")) AddCommandParameter(dbCommand, "@InstanceContext", _InstanceContext); + if (columnNames.ContainsCI("RequestAccountAt")) AddCommandParameter(dbCommand, "@RequestAccountAt", _RequestAccountAt); + if (columnNames.ContainsCI("RegisterAccountToken")) AddCommandParameter(dbCommand, "@RegisterAccountToken", _RegisterAccountToken); + if (columnNames.ContainsCI("RegisterAccountAt")) AddCommandParameter(dbCommand, "@RegisterAccountAt", _RegisterAccountAt); + if (columnNames.ContainsCI("AccountPasswordSalt")) AddCommandParameter(dbCommand, "@AccountPasswordSalt", _AccountPasswordSalt); + if (columnNames.ContainsCI("AccountPasswordHash")) AddCommandParameter(dbCommand, "@AccountPasswordHash", _AccountPasswordHash); + if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); + if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); + if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); + if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); + if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); + if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); + if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); + if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); + if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); + // Execute insert command. + bool commandSuccess = false; + int executeNonQuery = dbCommand.ExecuteNonQuery(); + if (executeNonQuery == 1) + { + dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";"; + _Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar()); + commandSuccess = (_Id > 0); + } + return commandSuccess; + } + + //------------------------------------------------------------------- + // Update command. + public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) + { + // Avoid update if Identity field isn't valid. + if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id"); + // Columns to update. + List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); + if (!columnNames.Any()) + { + SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); + return false; + } + // Construct query. + String query = "UPDATE " + TableNameFmt + " SET "; + if (dbCommand is SqlCommand) + { + query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; + query += "WHERE Id=@Id;"; + } + else + { + query += columnNames.Concat(", ", "", "=?") + " "; + query += "WHERE Id=?;"; + } + dbCommand.CommandText = query; + Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); + // Populate parameters. + dbCommand.Parameters.Clear(); + if (columnNames.ContainsCI("EmailAddress")) AddCommandParameter(dbCommand, "@EmailAddress", _EmailAddress); + if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName); + if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName); + if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain); + if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt); + if (columnNames.ContainsCI("InstanceContext")) AddCommandParameter(dbCommand, "@InstanceContext", _InstanceContext); + if (columnNames.ContainsCI("RequestAccountAt")) AddCommandParameter(dbCommand, "@RequestAccountAt", _RequestAccountAt); + if (columnNames.ContainsCI("RegisterAccountToken")) AddCommandParameter(dbCommand, "@RegisterAccountToken", _RegisterAccountToken); + if (columnNames.ContainsCI("RegisterAccountAt")) AddCommandParameter(dbCommand, "@RegisterAccountAt", _RegisterAccountAt); + if (columnNames.ContainsCI("AccountPasswordSalt")) AddCommandParameter(dbCommand, "@AccountPasswordSalt", _AccountPasswordSalt); + if (columnNames.ContainsCI("AccountPasswordHash")) AddCommandParameter(dbCommand, "@AccountPasswordHash", _AccountPasswordHash); + if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); + if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); + if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); + if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); + if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); + if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); + AddCommandParameter(dbCommand, "@Id", _Id); + int executeNonQueryResult = dbCommand.ExecuteNonQuery(); + return (executeNonQueryResult == 1); + } + + //------------------------------------------------------------------- + } +} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Control/ItemParam_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Control/ItemParam_Db.cs index 1014b95..c6a0108 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Control/ItemParam_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Control/ItemParam_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Wed 4-Dec-2024 12:38:20 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Control/Owner_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Control/Owner_Db.cs index 9f2228a..04c764d 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Control/Owner_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Control/Owner_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Wed 4-Dec-2024 12:38:20 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Control/Repository_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Control/Repository_Db.cs index cba0c9e..c07bf44 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Control/Repository_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Control/Repository_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Wed 4-Dec-2024 12:38:20 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Control/UserAccount_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Control/UserAccount_Db.cs index 47fd591..c83fbb2 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Control/UserAccount_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Control/UserAccount_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Wed 4-Dec-2024 12:38:20 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:19 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Currency_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Currency_Db.cs deleted file mode 100644 index d76b84c..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/Currency_Db.cs +++ /dev/null @@ -1,252 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class Currency_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataString _Code { get; } = new ColumnDataString("Code"); - public ColumnDataString _Name { get; } = new ColumnDataString("Name"); - public ColumnDataInt32Nullable _Primary { get; } = new ColumnDataInt32Nullable("Primary"); - public ColumnDataString _Division { get; } = new ColumnDataString("Division"); - public ColumnDataInt32Nullable _Region { get; } = new ColumnDataInt32Nullable("Region"); - public ColumnDataString _Symbol { get; } = new ColumnDataString("Symbol"); - public ColumnDataBoolean _Suffix { get; } = new ColumnDataBoolean("Suffix"); - public ColumnDataBoolean _IncSpace { get; } = new ColumnDataBoolean("IncSpace"); - public ColumnDataInt16Nullable _Decimals { get; } = new ColumnDataInt16Nullable("Decimals"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Code", - "Name", - "Primary", - "Division", - "Region", - "Symbol", - "Suffix", - "IncSpace", - "Decimals", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Code", - "Name", - "Primary", - "Division", - "Region", - "Symbol", - "Decimals", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal Currency_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "Currency"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public String _Code { get { return Cols._Code.Value; } set { Cols._Code.Value = value; } } - public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } } - public Int32? _Primary { get { return Cols._Primary.Value; } set { Cols._Primary.Value = value; } } - public String _Division { get { return Cols._Division.Value; } set { Cols._Division.Value = value; } } - public Int32? _Region { get { return Cols._Region.Value; } set { Cols._Region.Value = value; } } - public String _Symbol { get { return Cols._Symbol.Value; } set { Cols._Symbol.Value = value; } } - public Boolean _Suffix { get { return Cols._Suffix.Value; } set { Cols._Suffix.Value = value; } } - public Boolean _IncSpace { get { return Cols._IncSpace.Value; } set { Cols._IncSpace.Value = value; } } - public Int16? _Decimals { get { return Cols._Decimals.Value; } set { Cols._Decimals.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Code = GetFieldString(dbDataReader, "Code", _Code); - _Name = GetFieldString(dbDataReader, "Name", _Name); - _Primary = GetFieldInt32Nullable(dbDataReader, "Primary", _Primary); - _Division = GetFieldString(dbDataReader, "Division", _Division); - _Region = GetFieldInt32Nullable(dbDataReader, "Region", _Region); - _Symbol = GetFieldString(dbDataReader, "Symbol", _Symbol); - _Suffix = GetFieldBoolean(dbDataReader, "Suffix", _Suffix); - _IncSpace = GetFieldBoolean(dbDataReader, "IncSpace", _IncSpace); - _Decimals = GetFieldInt16Nullable(dbDataReader, "Decimals", _Decimals); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Primary")) AddCommandParameter(dbCommand, "@Primary", _Primary); - if (columnNames.ContainsCI("Division")) AddCommandParameter(dbCommand, "@Division", _Division); - if (columnNames.ContainsCI("Region")) AddCommandParameter(dbCommand, "@Region", _Region); - if (columnNames.ContainsCI("Symbol")) AddCommandParameter(dbCommand, "@Symbol", _Symbol); - if (columnNames.ContainsCI("Suffix")) AddCommandParameter(dbCommand, "@Suffix", _Suffix); - if (columnNames.ContainsCI("IncSpace")) AddCommandParameter(dbCommand, "@IncSpace", _IncSpace); - if (columnNames.ContainsCI("Decimals")) AddCommandParameter(dbCommand, "@Decimals", _Decimals); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Primary")) AddCommandParameter(dbCommand, "@Primary", _Primary); - if (columnNames.ContainsCI("Division")) AddCommandParameter(dbCommand, "@Division", _Division); - if (columnNames.ContainsCI("Region")) AddCommandParameter(dbCommand, "@Region", _Region); - if (columnNames.ContainsCI("Symbol")) AddCommandParameter(dbCommand, "@Symbol", _Symbol); - if (columnNames.ContainsCI("Suffix")) AddCommandParameter(dbCommand, "@Suffix", _Suffix); - if (columnNames.ContainsCI("IncSpace")) AddCommandParameter(dbCommand, "@IncSpace", _IncSpace); - if (columnNames.ContainsCI("Decimals")) AddCommandParameter(dbCommand, "@Decimals", _Decimals); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/IndexDefragLog_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/IndexDefragLog_Db.cs deleted file mode 100644 index f6ab1ae..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/IndexDefragLog_Db.cs +++ /dev/null @@ -1,225 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class IndexDefragLog_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _IndexDefragId { get; } = new ColumnDataInt32("IndexDefragId", true); - public ColumnDataInt32 _DatabaseID { get; } = new ColumnDataInt32("DatabaseID"); - public ColumnDataString _DatabaseName { get; } = new ColumnDataString("DatabaseName"); - public ColumnDataInt32 _ObjectID { get; } = new ColumnDataInt32("ObjectID"); - public ColumnDataString _ObjectName { get; } = new ColumnDataString("ObjectName"); - public ColumnDataInt32 _IndexID { get; } = new ColumnDataInt32("IndexID"); - public ColumnDataString _IndexName { get; } = new ColumnDataString("IndexName"); - public ColumnDataInt16 _PartitionNumber { get; } = new ColumnDataInt16("PartitionNumber"); - public ColumnDataDecimal _Fragmentation { get; } = new ColumnDataDecimal("Fragmentation"); - public ColumnDataInt32 _PageCount { get; } = new ColumnDataInt32("PageCount"); - public ColumnDataDateTime _DateTimeStart { get; } = new ColumnDataDateTime("DateTimeStart"); - public ColumnDataInt32 _DurationSeconds { get; } = new ColumnDataInt32("DurationSeconds"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "IndexDefragId", - "DatabaseID", - "DatabaseName", - "ObjectID", - "ObjectName", - "IndexID", - "IndexName", - "PartitionNumber", - "Fragmentation", - "PageCount", - "DateTimeStart", - "DurationSeconds", - }; - protected static List fieldsId { get; } = new List() - { - "IndexDefragId", - }; - protected static List fieldsPrimary { get; } = new List() - { - "IndexDefragId", - }; - protected static List fieldsNullable { get; } = new List() - { - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal IndexDefragLog_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "IndexDefragLog"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _IndexDefragId { get { return Cols._IndexDefragId.Value; } set { Cols._IndexDefragId.Value = value; } } - public Int32 _DatabaseID { get { return Cols._DatabaseID.Value; } set { Cols._DatabaseID.Value = value; } } - public String _DatabaseName { get { return Cols._DatabaseName.Value; } set { Cols._DatabaseName.Value = value; } } - public Int32 _ObjectID { get { return Cols._ObjectID.Value; } set { Cols._ObjectID.Value = value; } } - public String _ObjectName { get { return Cols._ObjectName.Value; } set { Cols._ObjectName.Value = value; } } - public Int32 _IndexID { get { return Cols._IndexID.Value; } set { Cols._IndexID.Value = value; } } - public String _IndexName { get { return Cols._IndexName.Value; } set { Cols._IndexName.Value = value; } } - public Int16 _PartitionNumber { get { return Cols._PartitionNumber.Value; } set { Cols._PartitionNumber.Value = value; } } - public Decimal _Fragmentation { get { return Cols._Fragmentation.Value; } set { Cols._Fragmentation.Value = value; } } - public Int32 _PageCount { get { return Cols._PageCount.Value; } set { Cols._PageCount.Value = value; } } - public DateTime _DateTimeStart { get { return Cols._DateTimeStart.Value; } set { Cols._DateTimeStart.Value = value; } } - public Int32 _DurationSeconds { get { return Cols._DurationSeconds.Value; } set { Cols._DurationSeconds.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _IndexDefragId = GetFieldInt32(dbDataReader, "IndexDefragId", _IndexDefragId); - _DatabaseID = GetFieldInt32(dbDataReader, "DatabaseID", _DatabaseID); - _DatabaseName = GetFieldString(dbDataReader, "DatabaseName", _DatabaseName); - _ObjectID = GetFieldInt32(dbDataReader, "ObjectID", _ObjectID); - _ObjectName = GetFieldString(dbDataReader, "ObjectName", _ObjectName); - _IndexID = GetFieldInt32(dbDataReader, "IndexID", _IndexID); - _IndexName = GetFieldString(dbDataReader, "IndexName", _IndexName); - _PartitionNumber = GetFieldInt16(dbDataReader, "PartitionNumber", _PartitionNumber); - _Fragmentation = GetFieldDecimal(dbDataReader, "Fragmentation", _Fragmentation); - _PageCount = GetFieldInt32(dbDataReader, "PageCount", _PageCount); - _DateTimeStart = GetFieldDateTime(dbDataReader, "DateTimeStart", _DateTimeStart); - _DurationSeconds = GetFieldInt32(dbDataReader, "DurationSeconds", _DurationSeconds); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Avoid insert if Identity field is already valid. - if (_IndexDefragId != 0) throw new Exception("Invalid for Insert - item already has a valid Id"); - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - query += "Output Inserted.IndexDefragId "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("DatabaseID")) AddCommandParameter(dbCommand, "@DatabaseID", _DatabaseID); - if (columnNames.ContainsCI("DatabaseName")) AddCommandParameter(dbCommand, "@DatabaseName", _DatabaseName); - if (columnNames.ContainsCI("ObjectID")) AddCommandParameter(dbCommand, "@ObjectID", _ObjectID); - if (columnNames.ContainsCI("ObjectName")) AddCommandParameter(dbCommand, "@ObjectName", _ObjectName); - if (columnNames.ContainsCI("IndexID")) AddCommandParameter(dbCommand, "@IndexID", _IndexID); - if (columnNames.ContainsCI("IndexName")) AddCommandParameter(dbCommand, "@IndexName", _IndexName); - if (columnNames.ContainsCI("PartitionNumber")) AddCommandParameter(dbCommand, "@PartitionNumber", _PartitionNumber); - if (columnNames.ContainsCI("Fragmentation")) AddCommandParameter(dbCommand, "@Fragmentation", _Fragmentation); - if (columnNames.ContainsCI("PageCount")) AddCommandParameter(dbCommand, "@PageCount", _PageCount); - if (columnNames.ContainsCI("DateTimeStart")) AddCommandParameter(dbCommand, "@DateTimeStart", _DateTimeStart); - if (columnNames.ContainsCI("DurationSeconds")) AddCommandParameter(dbCommand, "@DurationSeconds", _DurationSeconds); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - dbCommand.CommandText = "SELECT Max(IndexDefragId) FROM " + TableNameFmt + ";"; - _IndexDefragId = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar()); - commandSuccess = (_IndexDefragId > 0); - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Avoid update if Identity field isn't valid. - if (_IndexDefragId == 0) throw new Exception("Invalid for Update - item has an invalid Id"); - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE IndexDefragId=@IndexDefragId;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE IndexDefragId=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("DatabaseID")) AddCommandParameter(dbCommand, "@DatabaseID", _DatabaseID); - if (columnNames.ContainsCI("DatabaseName")) AddCommandParameter(dbCommand, "@DatabaseName", _DatabaseName); - if (columnNames.ContainsCI("ObjectID")) AddCommandParameter(dbCommand, "@ObjectID", _ObjectID); - if (columnNames.ContainsCI("ObjectName")) AddCommandParameter(dbCommand, "@ObjectName", _ObjectName); - if (columnNames.ContainsCI("IndexID")) AddCommandParameter(dbCommand, "@IndexID", _IndexID); - if (columnNames.ContainsCI("IndexName")) AddCommandParameter(dbCommand, "@IndexName", _IndexName); - if (columnNames.ContainsCI("PartitionNumber")) AddCommandParameter(dbCommand, "@PartitionNumber", _PartitionNumber); - if (columnNames.ContainsCI("Fragmentation")) AddCommandParameter(dbCommand, "@Fragmentation", _Fragmentation); - if (columnNames.ContainsCI("PageCount")) AddCommandParameter(dbCommand, "@PageCount", _PageCount); - if (columnNames.ContainsCI("DateTimeStart")) AddCommandParameter(dbCommand, "@DateTimeStart", _DateTimeStart); - if (columnNames.ContainsCI("DurationSeconds")) AddCommandParameter(dbCommand, "@DurationSeconds", _DurationSeconds); - AddCommandParameter(dbCommand, "@IndexDefragId", _IndexDefragId); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceDataItem_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/InterfaceDataItem_Db.cs deleted file mode 100644 index 972a7e1..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceDataItem_Db.cs +++ /dev/null @@ -1,278 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class InterfaceDataItem_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataInt32 _InterfaceId { get; } = new ColumnDataInt32("InterfaceId"); - public ColumnDataInt16 _Direction { get; } = new ColumnDataInt16("Direction"); - public ColumnDataString _ExternalRef { get; } = new ColumnDataString("ExternalRef"); - public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType"); - public ColumnDataInt32 _ItemId { get; } = new ColumnDataInt32("ItemId"); - public ColumnDataString _ProcessStatus { get; } = new ColumnDataString("ProcessStatus"); - public ColumnDataInt32Nullable _ProcessStatusBy { get; } = new ColumnDataInt32Nullable("ProcessStatusBy"); - public ColumnDataInt32Nullable _ProcessStatusOn { get; } = new ColumnDataInt32Nullable("ProcessStatusOn"); - public ColumnDataString _ItemStatus { get; } = new ColumnDataString("ItemStatus"); - public ColumnDataInt32Nullable _ItemStatusBy { get; } = new ColumnDataInt32Nullable("ItemStatusBy"); - public ColumnDataInt32Nullable _ItemStatusOn { get; } = new ColumnDataInt32Nullable("ItemStatusOn"); - public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "InterfaceId", - "Direction", - "ExternalRef", - "ItemType", - "ItemId", - "ProcessStatus", - "ProcessStatusBy", - "ProcessStatusOn", - "ItemStatus", - "ItemStatusBy", - "ItemStatusOn", - "Notes", - "Flags", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "ExternalRef", - "ProcessStatus", - "ProcessStatusBy", - "ProcessStatusOn", - "ItemStatus", - "ItemStatusBy", - "ItemStatusOn", - "Notes", - "Flags", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal InterfaceDataItem_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "InterfaceDataItem"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public Int32 _InterfaceId { get { return Cols._InterfaceId.Value; } set { Cols._InterfaceId.Value = value; } } - public Int16 _Direction { get { return Cols._Direction.Value; } set { Cols._Direction.Value = value; } } - public String _ExternalRef { get { return Cols._ExternalRef.Value; } set { Cols._ExternalRef.Value = value; } } - public Int16 _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } } - public Int32 _ItemId { get { return Cols._ItemId.Value; } set { Cols._ItemId.Value = value; } } - public String _ProcessStatus { get { return Cols._ProcessStatus.Value; } set { Cols._ProcessStatus.Value = value; } } - public Int32? _ProcessStatusBy { get { return Cols._ProcessStatusBy.Value; } set { Cols._ProcessStatusBy.Value = value; } } - public Int32? _ProcessStatusOn { get { return Cols._ProcessStatusOn.Value; } set { Cols._ProcessStatusOn.Value = value; } } - public String _ItemStatus { get { return Cols._ItemStatus.Value; } set { Cols._ItemStatus.Value = value; } } - public Int32? _ItemStatusBy { get { return Cols._ItemStatusBy.Value; } set { Cols._ItemStatusBy.Value = value; } } - public Int32? _ItemStatusOn { get { return Cols._ItemStatusOn.Value; } set { Cols._ItemStatusOn.Value = value; } } - public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _InterfaceId = GetFieldInt32(dbDataReader, "InterfaceId", _InterfaceId); - _Direction = GetFieldInt16(dbDataReader, "Direction", _Direction); - _ExternalRef = GetFieldString(dbDataReader, "ExternalRef", _ExternalRef); - _ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType); - _ItemId = GetFieldInt32(dbDataReader, "ItemId", _ItemId); - _ProcessStatus = GetFieldString(dbDataReader, "ProcessStatus", _ProcessStatus); - _ProcessStatusBy = GetFieldInt32Nullable(dbDataReader, "ProcessStatusBy", _ProcessStatusBy); - _ProcessStatusOn = GetFieldInt32Nullable(dbDataReader, "ProcessStatusOn", _ProcessStatusOn); - _ItemStatus = GetFieldString(dbDataReader, "ItemStatus", _ItemStatus); - _ItemStatusBy = GetFieldInt32Nullable(dbDataReader, "ItemStatusBy", _ItemStatusBy); - _ItemStatusOn = GetFieldInt32Nullable(dbDataReader, "ItemStatusOn", _ItemStatusOn); - _Notes = GetFieldString(dbDataReader, "Notes", _Notes); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("InterfaceId")) AddCommandParameter(dbCommand, "@InterfaceId", _InterfaceId); - if (columnNames.ContainsCI("Direction")) AddCommandParameter(dbCommand, "@Direction", _Direction); - if (columnNames.ContainsCI("ExternalRef")) AddCommandParameter(dbCommand, "@ExternalRef", _ExternalRef); - if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType); - if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId); - if (columnNames.ContainsCI("ProcessStatus")) AddCommandParameter(dbCommand, "@ProcessStatus", _ProcessStatus); - if (columnNames.ContainsCI("ProcessStatusBy")) AddCommandParameter(dbCommand, "@ProcessStatusBy", _ProcessStatusBy); - if (columnNames.ContainsCI("ProcessStatusOn")) AddCommandParameter(dbCommand, "@ProcessStatusOn", _ProcessStatusOn); - if (columnNames.ContainsCI("ItemStatus")) AddCommandParameter(dbCommand, "@ItemStatus", _ItemStatus); - if (columnNames.ContainsCI("ItemStatusBy")) AddCommandParameter(dbCommand, "@ItemStatusBy", _ItemStatusBy); - if (columnNames.ContainsCI("ItemStatusOn")) AddCommandParameter(dbCommand, "@ItemStatusOn", _ItemStatusOn); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("InterfaceId")) AddCommandParameter(dbCommand, "@InterfaceId", _InterfaceId); - if (columnNames.ContainsCI("Direction")) AddCommandParameter(dbCommand, "@Direction", _Direction); - if (columnNames.ContainsCI("ExternalRef")) AddCommandParameter(dbCommand, "@ExternalRef", _ExternalRef); - if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType); - if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId); - if (columnNames.ContainsCI("ProcessStatus")) AddCommandParameter(dbCommand, "@ProcessStatus", _ProcessStatus); - if (columnNames.ContainsCI("ProcessStatusBy")) AddCommandParameter(dbCommand, "@ProcessStatusBy", _ProcessStatusBy); - if (columnNames.ContainsCI("ProcessStatusOn")) AddCommandParameter(dbCommand, "@ProcessStatusOn", _ProcessStatusOn); - if (columnNames.ContainsCI("ItemStatus")) AddCommandParameter(dbCommand, "@ItemStatus", _ItemStatus); - if (columnNames.ContainsCI("ItemStatusBy")) AddCommandParameter(dbCommand, "@ItemStatusBy", _ItemStatusBy); - if (columnNames.ContainsCI("ItemStatusOn")) AddCommandParameter(dbCommand, "@ItemStatusOn", _ItemStatusOn); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessDataItem_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessDataItem_Db.cs deleted file mode 100644 index 01c7203..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessDataItem_Db.cs +++ /dev/null @@ -1,219 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class InterfaceProcessDataItem_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _ProcessId { get; } = new ColumnDataInt32("ProcessId"); - public ColumnDataInt32 _InterfaceDataItemId { get; } = new ColumnDataInt32("InterfaceDataItemId"); - public ColumnDataString _ItemData { get; } = new ColumnDataString("ItemData"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "ProcessId", - "InterfaceDataItemId", - "ItemData", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "ProcessId", - "InterfaceDataItemId", - }; - protected static List fieldsNullable { get; } = new List() - { - "ItemData", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal InterfaceProcessDataItem_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "InterfaceProcessDataItem"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _ProcessId { get { return Cols._ProcessId.Value; } set { Cols._ProcessId.Value = value; } } - public Int32 _InterfaceDataItemId { get { return Cols._InterfaceDataItemId.Value; } set { Cols._InterfaceDataItemId.Value = value; } } - public String _ItemData { get { return Cols._ItemData.Value; } set { Cols._ItemData.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _ProcessId = GetFieldInt32(dbDataReader, "ProcessId", _ProcessId); - _InterfaceDataItemId = GetFieldInt32(dbDataReader, "InterfaceDataItemId", _InterfaceDataItemId); - _ItemData = GetFieldString(dbDataReader, "ItemData", _ItemData); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("ProcessId")) AddCommandParameter(dbCommand, "@ProcessId", _ProcessId); - if (columnNames.ContainsCI("InterfaceDataItemId")) AddCommandParameter(dbCommand, "@InterfaceDataItemId", _InterfaceDataItemId); - if (columnNames.ContainsCI("ItemData")) AddCommandParameter(dbCommand, "@ItemData", _ItemData); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE ProcessId=@ProcessId AND InterfaceDataItemId=@InterfaceDataItemId;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE ProcessId=? AND InterfaceDataItemId=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("ItemData")) AddCommandParameter(dbCommand, "@ItemData", _ItemData); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@ProcessId", _ProcessId); - AddCommandParameter(dbCommand, "@InterfaceDataItemId", _InterfaceDataItemId); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessMessage_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessMessage_Db.cs deleted file mode 100644 index 669ea83..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcessMessage_Db.cs +++ /dev/null @@ -1,253 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class InterfaceProcessMessage_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataInt32 _ProcessId { get; } = new ColumnDataInt32("ProcessId"); - public ColumnDataString _MsgType { get; } = new ColumnDataString("MsgType"); - public ColumnDataString _Msg { get; } = new ColumnDataString("Msg"); - public ColumnDataString _FileName { get; } = new ColumnDataString("FileName"); - public ColumnDataInt32Nullable _LineNumber { get; } = new ColumnDataInt32Nullable("LineNumber"); - public ColumnDataInt16Nullable _ItemType { get; } = new ColumnDataInt16Nullable("ItemType"); - public ColumnDataInt32Nullable _ItemId { get; } = new ColumnDataInt32Nullable("ItemId"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "ProcessId", - "MsgType", - "Msg", - "FileName", - "LineNumber", - "ItemType", - "ItemId", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "MsgType", - "Msg", - "FileName", - "LineNumber", - "ItemType", - "ItemId", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal InterfaceProcessMessage_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "InterfaceProcessMessage"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public Int32 _ProcessId { get { return Cols._ProcessId.Value; } set { Cols._ProcessId.Value = value; } } - public String _MsgType { get { return Cols._MsgType.Value; } set { Cols._MsgType.Value = value; } } - public String _Msg { get { return Cols._Msg.Value; } set { Cols._Msg.Value = value; } } - public String _FileName { get { return Cols._FileName.Value; } set { Cols._FileName.Value = value; } } - public Int32? _LineNumber { get { return Cols._LineNumber.Value; } set { Cols._LineNumber.Value = value; } } - public Int16? _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } } - public Int32? _ItemId { get { return Cols._ItemId.Value; } set { Cols._ItemId.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _ProcessId = GetFieldInt32(dbDataReader, "ProcessId", _ProcessId); - _MsgType = GetFieldString(dbDataReader, "MsgType", _MsgType); - _Msg = GetFieldString(dbDataReader, "Msg", _Msg); - _FileName = GetFieldString(dbDataReader, "FileName", _FileName); - _LineNumber = GetFieldInt32Nullable(dbDataReader, "LineNumber", _LineNumber); - _ItemType = GetFieldInt16Nullable(dbDataReader, "ItemType", _ItemType); - _ItemId = GetFieldInt32Nullable(dbDataReader, "ItemId", _ItemId); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("ProcessId")) AddCommandParameter(dbCommand, "@ProcessId", _ProcessId); - if (columnNames.ContainsCI("MsgType")) AddCommandParameter(dbCommand, "@MsgType", _MsgType); - if (columnNames.ContainsCI("Msg")) AddCommandParameter(dbCommand, "@Msg", _Msg); - if (columnNames.ContainsCI("FileName")) AddCommandParameter(dbCommand, "@FileName", _FileName); - if (columnNames.ContainsCI("LineNumber")) AddCommandParameter(dbCommand, "@LineNumber", _LineNumber); - if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType); - if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("ProcessId")) AddCommandParameter(dbCommand, "@ProcessId", _ProcessId); - if (columnNames.ContainsCI("MsgType")) AddCommandParameter(dbCommand, "@MsgType", _MsgType); - if (columnNames.ContainsCI("Msg")) AddCommandParameter(dbCommand, "@Msg", _Msg); - if (columnNames.ContainsCI("FileName")) AddCommandParameter(dbCommand, "@FileName", _FileName); - if (columnNames.ContainsCI("LineNumber")) AddCommandParameter(dbCommand, "@LineNumber", _LineNumber); - if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType); - if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcess_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcess_Db.cs deleted file mode 100644 index ccd61a8..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/InterfaceProcess_Db.cs +++ /dev/null @@ -1,273 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class InterfaceProcess_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataInt32 _InterfaceId { get; } = new ColumnDataInt32("InterfaceId"); - public ColumnDataInt16 _Direction { get; } = new ColumnDataInt16("Direction"); - public ColumnDataString _ProcRef { get; } = new ColumnDataString("ProcRef"); - public ColumnDataInt32Nullable _ProcSeq { get; } = new ColumnDataInt32Nullable("ProcSeq"); - public ColumnDataInt32Nullable _ProcDate { get; } = new ColumnDataInt32Nullable("ProcDate"); - public ColumnDataInt32Nullable _ProcTime { get; } = new ColumnDataInt32Nullable("ProcTime"); - public ColumnDataInt32Nullable _BatchDate { get; } = new ColumnDataInt32Nullable("BatchDate"); - public ColumnDataInt32Nullable _BatchTime { get; } = new ColumnDataInt32Nullable("BatchTime"); - public ColumnDataInt32Nullable _ElapseSecs { get; } = new ColumnDataInt32Nullable("ElapseSecs"); - public ColumnDataInt32Nullable _ItemCount { get; } = new ColumnDataInt32Nullable("ItemCount"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "InterfaceId", - "Direction", - "ProcRef", - "ProcSeq", - "ProcDate", - "ProcTime", - "BatchDate", - "BatchTime", - "ElapseSecs", - "ItemCount", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "ProcRef", - "ProcSeq", - "ProcDate", - "ProcTime", - "BatchDate", - "BatchTime", - "ElapseSecs", - "ItemCount", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal InterfaceProcess_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "InterfaceProcess"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public Int32 _InterfaceId { get { return Cols._InterfaceId.Value; } set { Cols._InterfaceId.Value = value; } } - public Int16 _Direction { get { return Cols._Direction.Value; } set { Cols._Direction.Value = value; } } - public String _ProcRef { get { return Cols._ProcRef.Value; } set { Cols._ProcRef.Value = value; } } - public Int32? _ProcSeq { get { return Cols._ProcSeq.Value; } set { Cols._ProcSeq.Value = value; } } - public Int32? _ProcDate { get { return Cols._ProcDate.Value; } set { Cols._ProcDate.Value = value; } } - public Int32? _ProcTime { get { return Cols._ProcTime.Value; } set { Cols._ProcTime.Value = value; } } - public Int32? _BatchDate { get { return Cols._BatchDate.Value; } set { Cols._BatchDate.Value = value; } } - public Int32? _BatchTime { get { return Cols._BatchTime.Value; } set { Cols._BatchTime.Value = value; } } - public Int32? _ElapseSecs { get { return Cols._ElapseSecs.Value; } set { Cols._ElapseSecs.Value = value; } } - public Int32? _ItemCount { get { return Cols._ItemCount.Value; } set { Cols._ItemCount.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _InterfaceId = GetFieldInt32(dbDataReader, "InterfaceId", _InterfaceId); - _Direction = GetFieldInt16(dbDataReader, "Direction", _Direction); - _ProcRef = GetFieldString(dbDataReader, "ProcRef", _ProcRef); - _ProcSeq = GetFieldInt32Nullable(dbDataReader, "ProcSeq", _ProcSeq); - _ProcDate = GetFieldInt32Nullable(dbDataReader, "ProcDate", _ProcDate); - _ProcTime = GetFieldInt32Nullable(dbDataReader, "ProcTime", _ProcTime); - _BatchDate = GetFieldInt32Nullable(dbDataReader, "BatchDate", _BatchDate); - _BatchTime = GetFieldInt32Nullable(dbDataReader, "BatchTime", _BatchTime); - _ElapseSecs = GetFieldInt32Nullable(dbDataReader, "ElapseSecs", _ElapseSecs); - _ItemCount = GetFieldInt32Nullable(dbDataReader, "ItemCount", _ItemCount); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("InterfaceId")) AddCommandParameter(dbCommand, "@InterfaceId", _InterfaceId); - if (columnNames.ContainsCI("Direction")) AddCommandParameter(dbCommand, "@Direction", _Direction); - if (columnNames.ContainsCI("ProcRef")) AddCommandParameter(dbCommand, "@ProcRef", _ProcRef); - if (columnNames.ContainsCI("ProcSeq")) AddCommandParameter(dbCommand, "@ProcSeq", _ProcSeq); - if (columnNames.ContainsCI("ProcDate")) AddCommandParameter(dbCommand, "@ProcDate", _ProcDate); - if (columnNames.ContainsCI("ProcTime")) AddCommandParameter(dbCommand, "@ProcTime", _ProcTime); - if (columnNames.ContainsCI("BatchDate")) AddCommandParameter(dbCommand, "@BatchDate", _BatchDate); - if (columnNames.ContainsCI("BatchTime")) AddCommandParameter(dbCommand, "@BatchTime", _BatchTime); - if (columnNames.ContainsCI("ElapseSecs")) AddCommandParameter(dbCommand, "@ElapseSecs", _ElapseSecs); - if (columnNames.ContainsCI("ItemCount")) AddCommandParameter(dbCommand, "@ItemCount", _ItemCount); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("InterfaceId")) AddCommandParameter(dbCommand, "@InterfaceId", _InterfaceId); - if (columnNames.ContainsCI("Direction")) AddCommandParameter(dbCommand, "@Direction", _Direction); - if (columnNames.ContainsCI("ProcRef")) AddCommandParameter(dbCommand, "@ProcRef", _ProcRef); - if (columnNames.ContainsCI("ProcSeq")) AddCommandParameter(dbCommand, "@ProcSeq", _ProcSeq); - if (columnNames.ContainsCI("ProcDate")) AddCommandParameter(dbCommand, "@ProcDate", _ProcDate); - if (columnNames.ContainsCI("ProcTime")) AddCommandParameter(dbCommand, "@ProcTime", _ProcTime); - if (columnNames.ContainsCI("BatchDate")) AddCommandParameter(dbCommand, "@BatchDate", _BatchDate); - if (columnNames.ContainsCI("BatchTime")) AddCommandParameter(dbCommand, "@BatchTime", _BatchTime); - if (columnNames.ContainsCI("ElapseSecs")) AddCommandParameter(dbCommand, "@ElapseSecs", _ElapseSecs); - if (columnNames.ContainsCI("ItemCount")) AddCommandParameter(dbCommand, "@ItemCount", _ItemCount); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Interface_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Interface_Db.cs deleted file mode 100644 index 17d9cce..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/Interface_Db.cs +++ /dev/null @@ -1,245 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class Interface_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataString _Context { get; } = new ColumnDataString("Context"); - public ColumnDataString _Code { get; } = new ColumnDataString("Code"); - public ColumnDataInt16Nullable _Category { get; } = new ColumnDataInt16Nullable("Category"); - public ColumnDataInt16Nullable _Type { get; } = new ColumnDataInt16Nullable("Type"); - public ColumnDataString _Caption { get; } = new ColumnDataString("Caption"); - public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Context", - "Code", - "Category", - "Type", - "Caption", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Context", - "Category", - "Type", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal Interface_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "Interface"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public String _Context { get { return Cols._Context.Value; } set { Cols._Context.Value = value; } } - public String _Code { get { return Cols._Code.Value; } set { Cols._Code.Value = value; } } - public Int16? _Category { get { return Cols._Category.Value; } set { Cols._Category.Value = value; } } - public Int16? _Type { get { return Cols._Type.Value; } set { Cols._Type.Value = value; } } - public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } } - public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Context = GetFieldString(dbDataReader, "Context", _Context); - _Code = GetFieldString(dbDataReader, "Code", _Code); - _Category = GetFieldInt16Nullable(dbDataReader, "Category", _Category); - _Type = GetFieldInt16Nullable(dbDataReader, "Type", _Type); - _Caption = GetFieldString(dbDataReader, "Caption", _Caption); - _Notes = GetFieldString(dbDataReader, "Notes", _Notes); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Context")) AddCommandParameter(dbCommand, "@Context", _Context); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Category")) AddCommandParameter(dbCommand, "@Category", _Category); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Context")) AddCommandParameter(dbCommand, "@Context", _Context); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Category")) AddCommandParameter(dbCommand, "@Category", _Category); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/ItemBatch_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/ItemBatch_Db.cs index 90fbaa0..bf50c8e 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/ItemBatch_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/ItemBatch_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/ItemLink_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/ItemLink_Db.cs index f31707e..48213d9 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/ItemLink_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/ItemLink_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Language_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Language_Db.cs deleted file mode 100644 index 08db85b..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/Language_Db.cs +++ /dev/null @@ -1,222 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class Language_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataString _Code { get; } = new ColumnDataString("Code"); - public ColumnDataString _Name { get; } = new ColumnDataString("Name"); - public ColumnDataInt32Nullable _Primary { get; } = new ColumnDataInt32Nullable("Primary"); - public ColumnDataBoolean _Unicode { get; } = new ColumnDataBoolean("Unicode"); - public ColumnDataBoolean _Translation { get; } = new ColumnDataBoolean("Translation"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Code", - "Name", - "Primary", - "Unicode", - "Translation", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Primary", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal Language_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "Language"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public String _Code { get { return Cols._Code.Value; } set { Cols._Code.Value = value; } } - public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } } - public Int32? _Primary { get { return Cols._Primary.Value; } set { Cols._Primary.Value = value; } } - public Boolean _Unicode { get { return Cols._Unicode.Value; } set { Cols._Unicode.Value = value; } } - public Boolean _Translation { get { return Cols._Translation.Value; } set { Cols._Translation.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Code = GetFieldString(dbDataReader, "Code", _Code); - _Name = GetFieldString(dbDataReader, "Name", _Name); - _Primary = GetFieldInt32Nullable(dbDataReader, "Primary", _Primary); - _Unicode = GetFieldBoolean(dbDataReader, "Unicode", _Unicode); - _Translation = GetFieldBoolean(dbDataReader, "Translation", _Translation); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Primary")) AddCommandParameter(dbCommand, "@Primary", _Primary); - if (columnNames.ContainsCI("Unicode")) AddCommandParameter(dbCommand, "@Unicode", _Unicode); - if (columnNames.ContainsCI("Translation")) AddCommandParameter(dbCommand, "@Translation", _Translation); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Primary")) AddCommandParameter(dbCommand, "@Primary", _Primary); - if (columnNames.ContainsCI("Unicode")) AddCommandParameter(dbCommand, "@Unicode", _Unicode); - if (columnNames.ContainsCI("Translation")) AddCommandParameter(dbCommand, "@Translation", _Translation); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Location_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Location_Db.cs index f7c4abd..9bde2c0 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Location_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Location_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Movement_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Movement_Db.cs index 4ecaca3..093760c 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Movement_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Movement_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/PortfolioItem_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/PortfolioItem_Db.cs index 11da54a..dfac30d 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/PortfolioItem_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/PortfolioItem_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Process_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Process_Db.cs index 65022ff..9d854c4 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Process_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Process_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Region_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Region_Db.cs deleted file mode 100644 index ec2f588..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/Region_Db.cs +++ /dev/null @@ -1,232 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class Region_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataString _Type { get; } = new ColumnDataString("Type"); - public ColumnDataString _Name { get; } = new ColumnDataString("Name"); - public ColumnDataInt32Nullable _Parent { get; } = new ColumnDataInt32Nullable("Parent"); - public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Type", - "Name", - "Parent", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Name", - "Parent", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal Region_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "Region"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public String _Type { get { return Cols._Type.Value; } set { Cols._Type.Value = value; } } - public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } } - public Int32? _Parent { get { return Cols._Parent.Value; } set { Cols._Parent.Value = value; } } - public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Type = GetFieldString(dbDataReader, "Type", _Type); - _Name = GetFieldString(dbDataReader, "Name", _Name); - _Parent = GetFieldInt32Nullable(dbDataReader, "Parent", _Parent); - _Notes = GetFieldString(dbDataReader, "Notes", _Notes); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Parent")) AddCommandParameter(dbCommand, "@Parent", _Parent); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name); - if (columnNames.ContainsCI("Parent")) AddCommandParameter(dbCommand, "@Parent", _Parent); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Requirement_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Requirement_Db.cs index 8d96cc7..bf9fadb 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Requirement_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Requirement_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaAssetCategory_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaAssetCategory_Db.cs index b7320f3..378a945 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaAssetCategory_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaAssetCategory_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaAssetProcess_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaAssetProcess_Db.cs index b2f2f48..ed0a5ec 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaAssetProcess_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaAssetProcess_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaAsset_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaAsset_Db.cs index c746fa3..5fbdb4e 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaAsset_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaAsset_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryEntry_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryEntry_Db.cs index 334a891..6892838 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryEntry_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryEntry_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryLink_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryLink_Db.cs index a099d57..834698e 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryLink_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaDiaryLink_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaPriceSet_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaPriceSet_Db.cs index ddd6bdc..61b354d 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaPriceSet_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaPriceSet_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaPrice_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaPrice_Db.cs index 37fdb7a..eed8ff6 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaPrice_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaPrice_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleClass_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleClass_Db.cs index ae0825e..d1d453b 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleClass_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleClass_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleEvent_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleEvent_Db.cs index e51bb73..4eba0bc 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleEvent_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleEvent_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleFeature_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleFeature_Db.cs index f3eec89..e42b616 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleFeature_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicleFeature_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicle_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicle_Db.cs index 4ac1aa7..b0e994a 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SaVehicle_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SaVehicle_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SbmDbDfn.xml b/SaBusMgrStandardDbas/Dbas/Internal/SbmDbDfn.xml deleted file mode 100644 index c5becd8..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/SbmDbDfn.xml +++ /dev/null @@ -1,23507 +0,0 @@ - - - - - dbo - Address - - - - dbo -
Address
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - - - - dbo - Address
- 2 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Address
- 3 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Address
- 4 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Address
- 5 - AddIdRef - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Address
- 6 - RefExt - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - Address
- 7 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Address
- 8 - Name - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 9 - DescBrief - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 10 - Line1 - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - NoNulls - false - -
- - dbo - Address
- 11 - Line2 - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 12 - Line3 - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 13 - City - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 14 - Province - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Address
- 15 - Postcode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 16 - PostcodeFmt - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 17 - Country - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Address
- 18 - CityRgn - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Address
- 19 - ProvinceRgn - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Address
- 20 - CountryRgn - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Address
- 21 - Contact - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Address
- 22 - Phone - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Address
- 23 - Fax - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Address
- 24 - Email - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Address
- 25 - AccountManagerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 26 - AccountHandlerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 27 - ContactAreaCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 28 - ContactHandlerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 29 - DeliveryTypeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 30 - DeliveryMethodCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 31 - DeliveryBookInCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Address
- 32 - LastVisitOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Address
- 33 - NextVisitOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Address
- 34 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Address
- 35 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Address
- 36 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Address
- 37 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Address
- 38 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Address
- 39 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Address
- 40 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Address
- 41 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Address
- 42 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - - - dbo - Address
- PK_Address - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Address
- IDX_Address_CityRgn - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CityRgn - true - - -
- - dbo - Address
- IDX_Address_CountryRgn - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CountryRgn - true - - -
- - dbo - Address
- IDX_Address_Flags - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Flags - true - - -
- - dbo - Address
- IDX_Address_Item - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ItemId - true - - -
- - dbo - Address
- IDX_Address_Line1 - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Line1 - true - - -
- - dbo - Address
- IDX_Address_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Address
- IDX_Address_Postcode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Postcode - true - - -
- - dbo - Address
- IDX_Address_PostcodeFmt - 3 - false - false - false - false - 0 - 0 - false - - - 1 - PostcodeFmt - true - - -
- - dbo - Address
- IDX_Address_ProvinceRgn - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProvinceRgn - true - - -
- - dbo - Address
- IDX_Address_RefAddress - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AddIdRef - true - - -
- - dbo - Address
- IDX_Address_Status - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Status - true - - -
- - dbo - Address
- IDX_Address_Type - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - -
-
- - - dbo - Affiliate - - - - dbo - Affiliate
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Affiliate
- 2 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Affiliate
- 3 - Name - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - NoNulls - false - -
- - dbo - Affiliate
- 4 - Abbrev - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Affiliate
- 5 - AffIdParent - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Affiliate
- 6 - Title - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Affiliate
- 7 - Initials - VarChar - - -9 - nvarchar - false - 5 - 10 - 0 - Nullable - true - -
- - dbo - Affiliate
- 8 - LastName - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 9 - FirstName - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 10 - Salutation - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 11 - Nature - VarChar - - -9 - nvarchar - false - 100 - 200 - 0 - Nullable - true - -
- - dbo - Affiliate
- 12 - CompanyNo - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Affiliate
- 13 - VatReg - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Affiliate
- 14 - Contact - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Affiliate
- 15 - PhoneMain - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 16 - PhoneAlt - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 17 - PhoneFax - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 18 - PhoneMobile - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 19 - PhoneDirect - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 20 - Email - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Affiliate
- 21 - Website - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Affiliate
- 22 - BirthDay - TinyInt - - -6 - tinyint - false - 3 - 1 - 0 - Nullable - true - -
- - dbo - Affiliate
- 23 - BirthMonth - TinyInt - - -6 - tinyint - false - 3 - 1 - 0 - Nullable - true - -
- - dbo - Affiliate
- 24 - BirthYear - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Affiliate
- 25 - MaritalStatus - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Affiliate
- 26 - Spouse - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 27 - Children - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Affiliate
- 28 - Hometown - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Affiliate
- 29 - UserId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Affiliate
- 30 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Affiliate
- 31 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Affiliate
- 32 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Affiliate
- 33 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Affiliate
- 34 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Affiliate
- 35 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Affiliate
- 36 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Affiliate
- 37 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Affiliate
- 38 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Affiliate
- PK_Affiliate - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Affiliate
- IDX_Affiliate_Name - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Name - true - - -
- - dbo - Affiliate
- IDX_Affiliate_Status - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Status - true - - -
- - dbo - Affiliate
- IDX_Affiliate_Type - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - -
- - dbo - Affiliate
- IDX_Affiliate_UserId - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UserId - true - - -
-
-
- - dbo - Association - - - - dbo - Association
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Association
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Association
- 3 - AffIdTarget - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Association
- 4 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Association
- 5 - Code - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Association
- 6 - ExtRef - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Association
- 7 - Location - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Association
- 8 - Role - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Association
- 9 - PhoneMain - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Association
- 10 - Email - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Association
- 11 - Group - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - Association
- 12 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Association
- 13 - DefaultNominalCode - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - Association
- 14 - AccountManagerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 15 - AccountHandlerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 16 - AccountTypeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 17 - AccountRatingCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 18 - ContactAreaCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 19 - ContactHandlerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 20 - ContactMethodCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 21 - ContactCallCycleCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 22 - CallsPerYear - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Association
- 23 - LastCall - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Association
- 24 - CommodityIdSalesDefault - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 25 - OrderLeadTimeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 26 - DeliveryTypeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 27 - DeliveryMethodCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 28 - DeliveryCourierCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 29 - DeliveryBookInCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Association
- 30 - AmountTransMax - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Association
- 31 - AnnualSalesTarget - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Association
- 32 - CreditLimit - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Association
- 33 - AccountBalance - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Association
- 34 - DiscountType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Association
- 35 - DiscountRate - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Association
- 36 - PriceSetId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 37 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 38 - PaymentTerms - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Association
- 39 - InvoiceDesc - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Association
- 40 - Terminated - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 41 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Association
- 42 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Association
- 43 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - NoNulls - false - -
- - dbo - Association
- 44 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Association
- 45 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 46 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - Association
- 47 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Association
- 48 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Association
- 49 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - Association
- PK_Association - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Association
- IDX_Association_OwnerTargetType - 3 - true - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - AffIdTarget - true - - - 3 - Type - true - - -
- - dbo - Association
- IDX_Association_Code - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Code - true - - -
- - dbo - Association
- IDX_Association_ExtRef - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ExtRef - true - - -
- - dbo - Association
- IDX_Association_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Association
- IDX_Association_OwnerTypeCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Type - true - - - 3 - Code - true - - -
- - dbo - Association
- IDX_Association_PriceSet - 3 - false - false - false - false - 0 - 0 - false - - - 1 - PriceSetId - true - - -
- - dbo - Association
- IDX_Association_Target - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdTarget - true - - -
- - dbo - Association
- IDX_Association_TaxCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TaxCodeId - true - - -
-
-
- - dbo - Commodity - - - - dbo - Commodity
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Commodity
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Commodity
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Commodity
- 4 - Code - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - NoNulls - false - -
- - dbo - Commodity
- 5 - DescBrief - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - NoNulls - false - -
- - dbo - Commodity
- 6 - DescOrder - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Commodity
- 7 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Commodity
- 8 - DrawingNo - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Commodity
- 9 - DrawingIssue - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Commodity
- 10 - AssetCatId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 11 - ImagePath - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Commodity
- 12 - Category - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Commodity
- 13 - Category2 - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Commodity
- 14 - Category3 - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Commodity
- 15 - Location - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - Commodity
- 16 - Department - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Commodity
- 17 - CatalogRef - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Commodity
- 18 - Weight - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 19 - UomIdWeight - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 20 - Length - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 21 - UomIdLength - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 22 - Volume - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 23 - UomIdVolume - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 24 - Density - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 25 - UomIdDensity - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 26 - BoxQuantity - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 27 - UomIdBox - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 28 - Dimensions - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Commodity
- 29 - SpecSummary - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Commodity
- 30 - NominalCode - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - Commodity
- 31 - NominalCodePurchase - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - Commodity
- 32 - ICNTariffCode - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Commodity
- 33 - TimeProd - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 34 - UomIdTimeProd - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 35 - RangeCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 36 - ColourCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 37 - SourceCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 38 - SupplyMethodCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 39 - HandlingCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 40 - DeliveryCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 41 - MaterialCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 42 - FinishCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 43 - PromotionCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Commodity
- 44 - AssIdSupplier - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 45 - SupplierRef - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - Commodity
- 46 - CostPrice - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 47 - PlaceOfOrigin - VarChar - - 12 - varchar - false - 60 - 60 - 0 - Nullable - true - -
- - dbo - Commodity
- 48 - MaterialCost - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 49 - CurrencyIdMaterial - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 50 - ExWorksCost - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 51 - CurrencyIdExWorks - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 52 - ReorderLevel - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 53 - ReorderQty - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 54 - QtyOnOrder - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 55 - AssIdCustomer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 56 - SalesPrice - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 57 - RetailPrice - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 58 - RetailPricePlanned - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 59 - UomIdSale - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 60 - PackQty - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 61 - CarriageCostIndicative - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 62 - MinOrderQty - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 63 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 64 - LastOrderDate - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Commodity
- 65 - LastOrderQty - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 66 - QtyInStock - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 67 - QtyAllocated - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 68 - FreeStock - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 69 - StockTakeDate - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Commodity
- 70 - StockTakeQty - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Commodity
- 71 - OrderQtyDecimals - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Commodity
- 72 - CommodityIdSalesProj - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 73 - SalesProjMonthlyProp - VarChar - - 12 - varchar - false - 128 - 128 - 0 - Nullable - true - -
- - dbo - Commodity
- 74 - SalesProjAnnual - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 75 - SalesProjMonth01 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 76 - SalesProjMonth02 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 77 - SalesProjMonth03 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 78 - SalesProjMonth04 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 79 - SalesProjMonth05 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 80 - SalesProjMonth06 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 81 - SalesProjMonth07 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 82 - SalesProjMonth08 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 83 - SalesProjMonth09 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 84 - SalesProjMonth10 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 85 - SalesProjMonth11 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 86 - SalesProjMonth12 - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Commodity
- 87 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Commodity
- 88 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Commodity
- 89 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - NoNulls - false - -
- - dbo - Commodity
- 90 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Commodity
- 91 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 92 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - Commodity
- 93 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Commodity
- 94 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Commodity
- 95 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - Commodity
- PK_Commodity - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Commodity
- IDX_Commodity_AssetCat - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssetCatId - true - - -
- - dbo - Commodity
- IDX_Commodity_CodeIssue - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Code - true - - - 2 - DrawingIssue - true - - -
- - dbo - Commodity
- IDX_Commodity_Colour - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ColourCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Customer - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssIdCustomer - true - - -
- - dbo - Commodity
- IDX_Commodity_Delivery - 3 - false - false - false - false - 0 - 0 - false - - - 1 - DeliveryCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Description - 3 - false - false - false - false - 0 - 0 - false - - - 1 - DescBrief - true - - -
- - dbo - Commodity
- IDX_Commodity_Finish - 3 - false - false - false - false - 0 - 0 - false - - - 1 - FinishCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Handling - 3 - false - false - false - false - 0 - 0 - false - - - 1 - HandlingCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Material - 3 - false - false - false - false - 0 - 0 - false - - - 1 - MaterialCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Commodity
- IDX_Commodity_Range - 3 - false - false - false - false - 0 - 0 - false - - - 1 - RangeCode - true - - -
- - dbo - Commodity
- IDX_Commodity_SalesProjCommodity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityIdSalesProj - true - - -
- - dbo - Commodity
- IDX_Commodity_Source - 3 - false - false - false - false - 0 - 0 - false - - - 1 - SourceCode - true - - -
- - dbo - Commodity
- IDX_Commodity_Supplier - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssIdSupplier - true - - -
- - dbo - Commodity
- IDX_Commodity_SupplyMethod - 3 - false - false - false - false - 0 - 0 - false - - - 1 - SupplyMethodCode - true - - -
- - dbo - Commodity
- IDX_Commodity_TaxCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TaxCodeId - true - - -
- - dbo - Commodity
- IDX_Commodity_UomBox - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdBox - true - - -
- - dbo - Commodity
- IDX_Commodity_UomDensity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdDensity - true - - -
- - dbo - Commodity
- IDX_Commodity_UomLength - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdLength - true - - -
- - dbo - Commodity
- IDX_Commodity_UomSale - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdSale - true - - -
- - dbo - Commodity
- IDX_Commodity_UomTimeProd - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdTimeProd - true - - -
- - dbo - Commodity
- IDX_Commodity_UomVolume - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdVolume - true - - -
- - dbo - Commodity
- IDX_Commodity_UomWeight - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomIdWeight - true - - -
-
-
- - dbo - CommodityCustomer - - - - dbo - CommodityCustomer
- 1 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 2 - AssocIdCustomer - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 3 - ProductCode - VarChar - - 12 - varchar - false - 32 - 32 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 4 - AmountRetail - Double - - 6 - float - false - 53 - 8 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 5 - CurrencyIdRetail - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 6 - PromotionCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 7 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - CommodityCustomer
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - CommodityCustomer
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - CommodityCustomer
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - CommodityCustomer
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - CommodityCustomer
- PK_CommodityCustomer - 1 - true - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - - 2 - AssocIdCustomer - true - - -
- - dbo - CommodityCustomer
- IDX_CommodityCustomer_Currency - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CurrencyIdRetail - true - - -
- - dbo - CommodityCustomer
- IDX_CommodityCustomer_Customer - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocIdCustomer - true - - -
-
-
- - dbo - CommoditySupplier - - - - dbo - CommoditySupplier
- 1 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - CommoditySupplier
- 2 - AssocIdSupplier - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - CommoditySupplier
- 3 - ProductCode - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 4 - AmountCost - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 5 - CurrencyIdCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 6 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 7 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - CommoditySupplier
- 8 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - CommoditySupplier
- 9 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - CommoditySupplier
- 10 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 11 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 12 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - CommoditySupplier
- 13 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - CommoditySupplier
- 14 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - CommoditySupplier
- PK_CommoditySupplier - 1 - true - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - - 2 - AssocIdSupplier - true - - -
-
-
- - dbo - Constituent - - - - dbo - Constituent
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Constituent
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Constituent
- 3 - AffIdTarget - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 4 - AssocId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 5 - TransId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 6 - ReqntId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 7 - ConstId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 8 - ProcessId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 9 - AssocIdContractor - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 10 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Constituent
- 11 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Constituent
- 12 - Effective - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 13 - Required - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 14 - Started - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 15 - Completed - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 16 - AssetId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 17 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Constituent
- 18 - DescOutline - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Constituent
- 19 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Constituent
- 20 - TaskNumber - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 21 - Priority - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Constituent
- 22 - Category - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Constituent
- 23 - Reference - VarChar - - -9 - nvarchar - false - 20 - 40 - 0 - Nullable - true - -
- - dbo - Constituent
- 24 - Quantity - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 25 - UomId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 26 - UnitCost - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 27 - AmountEst - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 28 - AmountNet - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 29 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 30 - TaxRate - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 31 - AmountTax - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 32 - AmountTot - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 33 - TaxRateRebate - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 34 - AmountTaxRebate - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - Constituent
- 35 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Constituent
- 36 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Constituent
- 37 - StatusCat - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Constituent
- 38 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Constituent
- 39 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 40 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 41 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Constituent
- 42 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Constituent
- 43 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Constituent
- 44 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Constituent
- PK_Constituent - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Constituent
- IDX_Constituent_Asset - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssetId - true - - -
- - dbo - Constituent
- IDX_Constituent_Assoc - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocId - true - - -
- - dbo - Constituent
- IDX_Constituent_Const - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ConstId - true - - -
- - dbo - Constituent
- IDX_Constituent_Contractor - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocIdContractor - true - - -
- - dbo - Constituent
- IDX_Constituent_Effective - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Effective - true - - -
- - dbo - Constituent
- IDX_Constituent_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Constituent
- IDX_Constituent_Process - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProcessId - true - - -
- - dbo - Constituent
- IDX_Constituent_Reqnt - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ReqntId - true - - -
- - dbo - Constituent
- IDX_Constituent_Target - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdTarget - true - - -
- - dbo - Constituent
- IDX_Constituent_TaxCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TaxCodeId - true - - -
- - dbo - Constituent
- IDX_Constituent_Trans - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TransId - true - - -
- - dbo - Constituent
- IDX_Constituent_Type - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - -
- - dbo - Constituent
- IDX_Constituent_Uom - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomId - true - - -
-
-
- - dbo - Container - - - - dbo - Container
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Container
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Container
- 3 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Container
- 4 - Type - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - NoNulls - false - -
- - dbo - Container
- 5 - Reference - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - NoNulls - false - -
- - dbo - Container
- 6 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Container
- 7 - TagId - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Container
- 8 - AssIdSupplier - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Container
- 9 - AssIdCustomer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Container
- 10 - Expected - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Container
- 11 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Container
- 12 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Container
- 13 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Container
- 14 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Container
- 15 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Container
- 16 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Container
- 17 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Container
- 18 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Container
- 19 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Container
- PK_Container - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Container
- IDX_Container_Customer - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssIdCustomer - true - - -
- - dbo - Container
- IDX_Container_OwnerRef - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Reference - true - - -
- - dbo - Container
- IDX_Container_OwnerType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Type - true - - -
- - dbo - Container
- IDX_Container_Supplier - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssIdSupplier - true - - -
- - dbo - Container
- IDX_Container_TagId - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TagId - true - - -
-
-
- - dbo - ContainerItem - - - - dbo - ContainerItem
- 1 - ContainerId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 2 - ItemSeq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 3 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 4 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 5 - ItemTypeSource - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - ContainerItem
- 6 - ItemIdSource - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - ContainerItem
- 7 - Quantity - Double - - 6 - float - false - 53 - 8 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 8 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - ContainerItem
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 10 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - ContainerItem
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ContainerItem
- 13 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - ContainerItem
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - ContainerItem
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - ContainerItem
- 16 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - ContainerItem
- PK_ContainerItem - 1 - true - false - false - false - 0 - 0 - false - - - 1 - ContainerId - true - - - 2 - ItemSeq - true - - - 3 - ItemType - true - - - 4 - ItemId - true - - -
- - dbo - ContainerItem
- IDX_ContainerItem_ContainerSeq - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ContainerId - true - - - 2 - ItemSeq - true - - -
- - dbo - ContainerItem
- IDX_ContainerItem_Item - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ItemId - true - - -
- - dbo - ContainerItem
- IDX_ContainerItem_SourceItem - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemTypeSource - true - - - 2 - ItemIdSource - true - - -
-
-
- - dbo - Currency - - - - dbo - Currency
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Currency
- 2 - Code - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Currency
- 3 - Name - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Currency
- 4 - Primary - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Currency
- 5 - Division - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Currency
- 6 - Region - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Currency
- 7 - Symbol - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Currency
- 8 - Suffix - Bit - - -7 - bit - false - 1 - 1 - 0 - NoNulls - false - -
- - dbo - Currency
- 9 - IncSpace - Bit - - -7 - bit - false - 1 - 1 - 0 - NoNulls - false - -
- - dbo - Currency
- 10 - Decimals - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Currency
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Currency
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Currency
- 13 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Currency
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Currency
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Currency
- 16 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Currency
- PK_Currency - 1 - true - false - false - false - 1 - 4 - false - - - 1 - Id - true - - -
- - dbo - Currency
- IDX_Currency_Code - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Code - true - - -
- - dbo - Currency
- IDX_Currency_Region - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Region - true - - -
-
-
- - dbo - IndexDefragLog - - - - dbo - IndexDefragLog
- 1 - IndexDefragId - Int - - 4 - int - true - 10 - 4 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 2 - DatabaseID - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 3 - DatabaseName - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 4 - ObjectID - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 5 - ObjectName - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 6 - IndexID - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 7 - IndexName - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 8 - PartitionNumber - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 9 - Fragmentation - Double - - 6 - float - false - 53 - 8 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 10 - PageCount - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - IndexDefragLog
- 11 - DateTimeStart - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - IndexDefragLog
- 12 - DurationSeconds - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
-
- - - dbo - IndexDefragLog
- PK_IndexDefragLog - 1 - true - false - false - false - 0 - 0 - false - - - 1 - IndexDefragId - true - - -
-
-
- - dbo - Interface - - - - dbo - Interface
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Interface
- 2 - Context - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Interface
- 3 - Code - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - NoNulls - false - -
- - dbo - Interface
- 4 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Interface
- 5 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Interface
- 6 - Caption - VarChar - - -9 - nvarchar - false - 100 - 200 - 0 - NoNulls - false - -
- - dbo - Interface
- 7 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Interface
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Interface
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Interface
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Interface
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Interface
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Interface
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Interface
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Interface
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Interface
- PK_Interface - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Interface
- IDX_Interface_ContextCode - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Context - true - - - 2 - Code - true - - -
- - dbo - Interface
- IDX_Interface_ContextCategoryType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Context - true - - - 2 - Category - true - - - 3 - Type - true - - -
-
-
- - dbo - InterfaceDataItem - - - - dbo - InterfaceDataItem
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceDataItem
- 2 - InterfaceId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceDataItem
- 3 - Direction - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - InterfaceDataItem
- 4 - ExternalRef - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 5 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - InterfaceDataItem
- 6 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceDataItem
- 7 - ProcessStatus - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 8 - ProcessStatusBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 9 - ProcessStatusOn - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 10 - ItemStatus - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 11 - ItemStatusBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 12 - ItemStatusOn - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 13 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 14 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 15 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceDataItem
- 16 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 17 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 18 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceDataItem
- 19 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceDataItem
- 20 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - InterfaceDataItem
- PK_InterfaceDataItem - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - InterfaceDataItem
- IDX_InterfaceDataItem_InterfaceItemRef - 3 - true - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - Direction - true - - - 3 - ItemType - true - - - 4 - ItemId - true - - - 5 - ExternalRef - true - - -
- - dbo - InterfaceDataItem
- IDX_InterfaceDataItem_InterfaceStatusItemRef - 3 - true - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - Direction - true - - - 3 - ProcessStatus - true - - - 4 - ItemType - true - - - 5 - ItemId - true - - - 6 - ExternalRef - true - - -
- - dbo - InterfaceDataItem
- IDX_InterfaceDataItem_InterfaceDirectionItemRef - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - Direction - true - - - 3 - ItemType - true - - - 4 - ExternalRef - true - - -
- - dbo - InterfaceDataItem
- IDX_InterfaceDataItem_Item - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ItemId - true - - -
- - dbo - InterfaceDataItem
- IDX_InterfaceDataItem_ItemExternal - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ExternalRef - true - - -
-
-
- - dbo - InterfaceProcess - - - - dbo - InterfaceProcess
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcess
- 2 - InterfaceId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcess
- 3 - Direction - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - InterfaceProcess
- 4 - ProcRef - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 5 - ProcSeq - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 6 - ProcDate - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 7 - ProcTime - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 8 - BatchDate - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 9 - BatchTime - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 10 - ElapseSecs - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 11 - ItemCount - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 12 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 13 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 14 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcess
- 15 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 16 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 17 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcess
- 18 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcess
- 19 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - InterfaceProcess
- PK_InterfaceProcess - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - InterfaceProcess
- IDX_InterfaceProcess_IntDirSeq - 3 - true - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - Direction - true - - - 3 - ProcSeq - true - - -
- - dbo - InterfaceProcess
- IDX_InterfaceProcess_IntProc - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - ProcRef - true - - -
- - dbo - InterfaceProcess
- IDX_InterfaceProcess_IntProcDate - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - - 2 - ProcDate - true - - - 3 - ProcTime - true - - -
-
-
- - dbo - InterfaceProcessDataItem - - - - dbo - InterfaceProcessDataItem
- 1 - ProcessId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcessDataItem
- 2 - InterfaceDataItemId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcessDataItem
- 3 - ItemData - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 4 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 5 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 6 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 7 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 8 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 9 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 10 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessDataItem
- 11 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - InterfaceProcessDataItem
- PK_InterfaceProcessDataItem - 1 - true - false - false - false - 0 - 0 - false - - - 1 - ProcessId - true - - - 2 - InterfaceDataItemId - true - - -
- - dbo - InterfaceProcessDataItem
- IDX_InterfaceProcessDataItem_Item - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceDataItemId - true - - -
- - dbo - InterfaceProcessDataItem
- IDX_InterfaceProcessDataItem_ProcItemData - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProcessId - true - - - 2 - ItemData - true - - -
-
-
- - dbo - InterfaceProcessMessage - - - - dbo - InterfaceProcessMessage
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcessMessage
- 2 - ProcessId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - InterfaceProcessMessage
- 3 - MsgType - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 4 - Msg - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 5 - FileName - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 6 - LineNumber - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 7 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 8 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 10 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 13 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - InterfaceProcessMessage
- 16 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - InterfaceProcessMessage
- PK_InterfaceProcessMessage - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - InterfaceProcessMessage
- IDX_InterfaceProcessMessage_Process - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProcessId - true - - -
- - dbo - InterfaceProcessMessage
- IDX_InterfaceProcessMessage_ProcMsgType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProcessId - true - - - 2 - MsgType - true - - -
-
-
- - dbo - ItemBatch - - - - dbo - ItemBatch
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - ItemBatch
- 4 - Ref - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 5 - ProcessType - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - ItemBatch
- 6 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - ItemBatch
- 7 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - ItemBatch
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - ItemBatch
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - NoNulls - false - -
- - dbo - ItemBatch
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - ItemBatch
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - ItemBatch
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - ItemBatch
- PK_ItemBatch - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - ItemLink - - - - dbo - ItemLink
- 1 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 2 - ItemTypeFrom - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 3 - ItemIdFrom - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 4 - ItemTypeTo - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 5 - ItemIdTo - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 6 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - ItemLink
- 7 - Completed - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - ItemLink
- 8 - DataContent - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - ItemLink
- 9 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - ItemLink
- 10 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - ItemLink
- 11 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - ItemLink
- 12 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - ItemLink
- 13 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - ItemLink
- 14 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - ItemLink
- 15 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - ItemLink
- 16 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - ItemLink
- 17 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - ItemLink
- PK_ItemLink - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Type - true - - - 2 - ItemTypeFrom - true - - - 3 - ItemIdFrom - true - - - 4 - ItemTypeTo - true - - - 5 - ItemIdTo - true - - - 6 - Seq - true - - -
- - dbo - ItemLink
- IDX_ItemLink_ItemFrom - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemTypeFrom - true - - - 2 - ItemIdFrom - true - - -
- - dbo - ItemLink
- IDX_ItemLink_ItemTo - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemTypeTo - true - - - 2 - ItemIdTo - true - - -
- - dbo - ItemLink
- IDX_ItemLink_Type_ItemTypeFrom_ItemTypeTo - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - - 2 - ItemTypeFrom - true - - - 3 - ItemTypeTo - true - - -
- - dbo - ItemLink
- IDX_ItemLink_TypeItemFromStatus - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - - 2 - ItemTypeFrom - true - - - 3 - ItemIdFrom - true - - - 4 - Status - true - - -
-
-
- - dbo - Language - - - - dbo - Language
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Language
- 2 - Code - VarChar - - -9 - nvarchar - false - 4 - 8 - 0 - NoNulls - false - -
- - dbo - Language
- 3 - Name - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - NoNulls - false - -
- - dbo - Language
- 4 - Primary - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Language
- 5 - Unicode - Bit - - -7 - bit - false - 1 - 1 - 0 - NoNulls - false - -
- - dbo - Language
- 6 - Translation - Bit - - -7 - bit - false - 1 - 1 - 0 - NoNulls - false - -
- - dbo - Language
- 7 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Language
- 8 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Language
- 9 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Language
- 10 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Language
- 11 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Language
- 12 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Language
- PK_Language - 1 - true - false - false - false - 1 - 5 - false - - - 1 - Id - true - - -
- - dbo - Language
- IDX_Language_Code - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Code - true - - -
-
-
- - dbo - Location - - - - dbo - Location
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Location
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Location
- 3 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Location
- 4 - Code - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - NoNulls - false - -
- - dbo - Location
- 5 - Name - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - NoNulls - false - -
- - dbo - Location
- 6 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Location
- 7 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Location
- 8 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Location
- 9 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Location
- 10 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Location
- 11 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Location
- 12 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Location
- 13 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Location
- 14 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Location
- PK_Location - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Location
- IDX_Location_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Location
- IDX_Location_OwnerCat - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Category - true - - -
- - dbo - Location
- IDX_Location_OwnerCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Code - true - - -
-
-
- - dbo - Movement - - - - dbo - Movement
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Movement
- 2 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Movement
- 3 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Movement
- 4 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Movement
- 5 - Movement - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Movement
- 6 - LocationIdFrom - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Movement
- 7 - LocationIdTo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Movement
- 8 - Quantity - Double - - 6 - float - false - 53 - 8 - 0 - NoNulls - false - -
- - dbo - Movement
- 9 - MovementIdSource - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Movement
- 10 - ItemTypeSource - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Movement
- 11 - ItemIdSource - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Movement
- 12 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Movement
- 13 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - Movement
- 14 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Movement
- 15 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - Movement
- 16 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Movement
- 17 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Movement
- 18 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Movement
- 19 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Movement
- 20 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Movement
- PK_Movement - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Movement
- IDX_Movement_Item - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ItemId - true - - -
- - dbo - Movement
- IDX_Movement_ItemTypeMovement - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemType - true - - - 2 - ItemId - true - - - 3 - Type - true - - - 4 - Movement - true - - -
- - dbo - Movement
- IDX_Movement_LocationFrom - 3 - false - false - false - false - 0 - 0 - false - - - 1 - LocationIdFrom - true - - -
- - dbo - Movement
- IDX_Movement_LocationTo - 3 - false - false - false - false - 0 - 0 - false - - - 1 - LocationIdTo - true - - -
- - dbo - Movement
- IDX_Movement_Movement - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Movement - true - - -
- - dbo - Movement
- IDX_Movement_SourceItem - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemTypeSource - true - - - 2 - ItemIdSource - true - - -
- - dbo - Movement
- IDX_Movement_SourceMovement - 3 - false - false - false - false - 0 - 0 - false - - - 1 - MovementIdSource - true - - -
-
-
- - dbo - PortfolioItem - - - - dbo - PortfolioItem
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - PortfolioItem
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - PortfolioItem
- 3 - ItemIdParent - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - PortfolioItem
- 4 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 5 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - PortfolioItem
- 6 - ItemIdRef - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - PortfolioItem
- 7 - Code - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 8 - ShortCut - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 9 - Caption - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 10 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 11 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 12 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 13 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 14 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 15 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 16 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - PortfolioItem
- 17 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 18 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 19 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - PortfolioItem
- 20 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - PortfolioItem
- 21 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - PortfolioItem
- PK_PortfolioItem - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_Commodity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_Owner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_OwnerParentCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - ItemIdParent - true - - - 3 - Code - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_OwnerParentType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - ItemIdParent - true - - - 3 - Type - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_ParentItem - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemIdParent - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_ParentSeq - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemIdParent - true - - - 2 - Seq - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_RefItem - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ItemIdRef - true - - -
- - dbo - PortfolioItem
- IDX_PortfolioItem_ShortCut - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ShortCut - true - - -
-
-
- - dbo - Process - - - - dbo - Process
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Process
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Process
- 3 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Process
- 4 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Process
- 5 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Process
- 6 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Process
- 7 - DescOutline - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Process
- 8 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Process
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Process
- 10 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - Nullable - true - -
- - dbo - Process
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Process
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Process
- 13 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - Process
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Process
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Process
- 16 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - Process
- PK_Process - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Process
- IDX_Process_OwnerCategory - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Category - true - - -
- - dbo - Process
- IDX_Process_OwnerSeq - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Seq - true - - -
- - dbo - Process
- IDX_Process_OwnerType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Type - true - - -
-
-
- - dbo - Region - - - - dbo - Region
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Region
- 2 - Type - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - Region
- 3 - Name - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - Region
- 4 - Parent - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Region
- 5 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Region
- 6 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Region
- 7 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Region
- 8 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Region
- 9 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Region
- 10 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Region
- 11 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Region
- 12 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Region
- 13 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Region
- PK_Region - 1 - true - false - false - false - 1 - 17 - false - - - 1 - Id - true - - -
- - dbo - Region
- IDX_Region_TypeName - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Type - true - - - 2 - Name - true - - -
- - dbo - Region
- IDX_Region_ParentTypeName - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Parent - true - - - 2 - Type - true - - - 3 - Name - true - - -
-
-
- - dbo - Requirement - - - - dbo - Requirement
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Requirement
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Requirement
- 3 - AssocId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 4 - TransId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 5 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Requirement
- 6 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Requirement
- 7 - ReqntIdSource - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 8 - Required - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 9 - Started - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 10 - Completed - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 11 - JobNumber - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Requirement
- 12 - AssIdSubcontract - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 13 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 14 - ProductCode - VarChar - - -9 - nvarchar - false - 30 - 60 - 0 - Nullable - true - -
- - dbo - Requirement
- 15 - AssetId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 16 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Requirement
- 17 - DescIntro - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Requirement
- 18 - DescOutline - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Requirement
- 19 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Requirement
- 20 - PromotionCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Requirement
- 21 - NominalCode - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - Requirement
- 22 - Quantity - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 23 - QuantityProd - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 24 - UomId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 25 - Weight - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 26 - UomIdWeight - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 27 - MaterialSourceCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Requirement
- 28 - AmountUnit - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 29 - AmountAct - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 30 - AmountDisc - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 31 - AmountNet - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 32 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 33 - TaxRate - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 34 - AmountTax - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 35 - AmountTot - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 36 - TimeEstChunks - VarChar - - 12 - varchar - false - 1024 - 1024 - 0 - NoNulls - false - -
- - dbo - Requirement
- 37 - TimeEst - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 38 - TimeActChunks - VarChar - - 12 - varchar - false - 1024 - 1024 - 0 - Nullable - true - -
- - dbo - Requirement
- 39 - TimeAct - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 40 - TimeTot - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Requirement
- 41 - LocationIdStock - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 42 - CostLabourHours - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 43 - CostLabourRateHour - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 44 - CostLabour - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 45 - CostCommodity - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 46 - CostPurchase - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 47 - CostProcess - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 48 - CostAdditional - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 49 - CostTotal - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Requirement
- 50 - CostCalculated - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 51 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Requirement
- 52 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Requirement
- 53 - StatusCat - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Requirement
- 54 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Requirement
- 55 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 56 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 57 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - Requirement
- 58 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Requirement
- 59 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Requirement
- 60 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - Requirement
- PK_Requirement - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Requirement
- IDX_Requirement_Reqnt_Trans - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - - 2 - TransId - true - - -
- - dbo - Requirement
- IDX_Requirement_Reqnt_Trans_ReqntSource - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - - 2 - TransId - true - - - 3 - ReqntIdSource - true - - -
- - dbo - Requirement
- IDX_Requirement_AffilOwner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - Requirement
- IDX_Requirement_Asset - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssetId - true - - -
- - dbo - Requirement
- IDX_Requirement_Assoc - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocId - true - - -
- - dbo - Requirement
- IDX_Requirement_AssocContract - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssIdSubcontract - true - - -
- - dbo - Requirement
- IDX_Requirement_Commodity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - -
- - dbo - Requirement
- IDX_Requirement_MaterialSource - 3 - false - false - false - false - 0 - 0 - false - - - 1 - MaterialSourceCode - true - - -
- - dbo - Requirement
- IDX_Requirement_ProductCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ProductCode - true - - -
- - dbo - Requirement
- IDX_Requirement_ReqntSource - 3 - false - false - false - false - 0 - 0 - false - - - 1 - ReqntIdSource - true - - -
- - dbo - Requirement
- IDX_Requirement_StockLocation - 3 - false - false - false - false - 0 - 0 - false - - - 1 - LocationIdStock - true - - -
- - dbo - Requirement
- IDX_Requirement_TaxCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TaxCodeId - true - - -
- - dbo - Requirement
- IDX_Requirement_Trans - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TransId - true - - -
- - dbo - Requirement
- IDX_Requirement_TransCommodityStatus - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TransId - true - - - 2 - CommodityId - true - - - 3 - Status - true - - -
- - dbo - Requirement
- IDX_Requirement_TransSeq - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TransId - true - - - 2 - Seq - true - - -
- - dbo - Requirement
- IDX_Requirement_Uom - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UomId - true - - -
-
-
- - dbo - SaAsset - - - - dbo - SaAsset
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaAsset
- 2 - AssetCategoryId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 3 - SerialNumber - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SaAsset
- 4 - SerialFmt - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SaAsset
- 5 - RefExt - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SaAsset
- 6 - DescBrief - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - SaAsset
- 7 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAsset
- 8 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 9 - PurchaseOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 10 - AssocIdSupplier - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 11 - PurchaseInvoiceRef - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - SaAsset
- 12 - PaymentTerms - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAsset
- 13 - AmountPurchase - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 14 - TaxCodeIdPurchase - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 15 - AmountPurchaseGross - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 16 - AmountSettlementGross - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 17 - AmountEnhancementGross - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 18 - AssocIdCustomer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 19 - SellCategoryCode - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - SaAsset
- 20 - AmountSell - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 21 - TaxCodeIdSell - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 22 - AmountSellGross - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 23 - TaxCodeIdProfit - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 24 - SoldOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 25 - AmountSold - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 26 - AmountSoldGross - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 27 - DisposeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - SaAsset
- 28 - DisposeOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 29 - DueBackOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 30 - AmountRentalCost - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 31 - UomIdRentalCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 32 - TaxCodeIdRentalCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 33 - AmountRentalPrice - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 34 - UomIdRentalPrice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 35 - TaxCodeIdRentalPrice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 36 - ProcessIdNext - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 37 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaAsset
- 38 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAsset
- 39 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaAsset
- 40 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 41 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 42 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaAsset
- 43 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAsset
- 44 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAsset
- 45 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaAsset
- PK_SaAsset - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaAssetCategory - - - - dbo - SaAssetCategory
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaAssetCategory
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaAssetCategory
- 3 - AssetType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - SaAssetCategory
- 4 - Code - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - NoNulls - false - -
- - dbo - SaAssetCategory
- 5 - DescBrief - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 6 - IncomeType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 7 - AssocIdSupplier - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 8 - PaymentTerms - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 9 - TaxCodeIdPurchase - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 10 - AssocIdCustomer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 11 - TaxCodeIdSell - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 12 - TaxCodeIdProfit - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 13 - UomIdRentalCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 14 - TaxCodeIdRentalCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 15 - UomIdRentalPrice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 16 - TaxCodeIdRentalPrice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 17 - DisposeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 18 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 19 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 20 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 21 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetCategory
- 22 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 23 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 24 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetCategory
- 25 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetCategory
- 26 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaAssetCategory
- PK_SaAssetCategory - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaAssetProcess - - - - dbo - SaAssetProcess
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaAssetProcess
- 2 - AssetId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 3 - Seq - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 4 - ProcessId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 5 - RequiredOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetProcess
- 6 - ExpectedOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetProcess
- 7 - ProcessedOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetProcess
- 8 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 10 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetProcess
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 13 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaAssetProcess
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaAssetProcess
- 16 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaAssetProcess
- PK_SaAssetProcess - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaDiaryEntry - - - - dbo - SaDiaryEntry
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaDiaryEntry
- 2 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 4 - Start - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - SaDiaryEntry
- 5 - Finish - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaDiaryEntry
- 6 - Duration - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 7 - Description - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - NoNulls - false - -
- - dbo - SaDiaryEntry
- 8 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 10 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaDiaryEntry
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 13 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaDiaryEntry
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaDiaryEntry
- 16 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaDiaryEntry
- PK_SaDiaryEntry - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - SaDiaryEntry
- IDX_SaDiaryEntry_Finish - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Finish - true - - -
- - dbo - SaDiaryEntry
- IDX_SaDiaryEntry_Start - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Start - true - - -
-
-
- - dbo - SaDiaryLink - - - - dbo - SaDiaryLink
- 1 - EntryId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaDiaryLink
- 2 - ItemType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - SaDiaryLink
- 3 - ItemId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaDiaryLink
- 4 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 5 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 6 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 7 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaDiaryLink
- 8 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 9 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 10 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaDiaryLink
- 11 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaDiaryLink
- 12 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaDiaryLink
- PK_SaDiaryLink - 1 - true - false - false - false - 0 - 0 - false - - - 1 - EntryId - true - - - 2 - ItemType - true - - - 3 - ItemId - true - - -
-
-
- - dbo - SaPrice - - - - dbo - SaPrice
- 1 - PriceSetId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaPrice
- 2 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaPrice
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPrice
- 4 - CalcMethod - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPrice
- 5 - CalcValue - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - SaPrice
- 6 - RounderMethod - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPrice
- 7 - RounderDirection - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPrice
- 8 - RounderMultipleOf - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - SaPrice
- 9 - RounderAdjustment - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - SaPrice
- 10 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaPrice
- 11 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPrice
- 12 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaPrice
- 13 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaPrice
- 14 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaPrice
- 15 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaPrice
- 16 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaPrice
- 17 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaPrice
- 18 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaPrice
- PK_SaPrice - 1 - true - false - false - false - 0 - 0 - false - - - 1 - PriceSetId - true - - - 2 - CommodityId - true - - -
- - dbo - SaPrice
- IDX_SaPrice_Commodity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - -
- - dbo - SaPrice
- IDX_SaPrice_PriceSet - 3 - false - false - false - false - 0 - 0 - false - - - 1 - PriceSetId - true - - -
-
-
- - dbo - SaPriceSet - - - - dbo - SaPriceSet
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaPriceSet
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaPriceSet
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 4 - Ref - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 5 - Name - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - NoNulls - false - -
- - dbo - SaPriceSet
- 6 - CurrencyId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 7 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaPriceSet
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaPriceSet
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaPriceSet
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaPriceSet
- PK_SaPriceSet - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - SaPriceSet
- IDX_SaPriceSet_OwnerRef - 3 - true - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Ref - true - - -
- - dbo - SaPriceSet
- IDX_SaPriceSet_AffOwner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - SaPriceSet
- IDX_SaPriceSet_Currency - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CurrencyId - true - - -
- - dbo - SaPriceSet
- IDX_SaPriceSet_Name - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Name - true - - -
-
-
- - dbo - SaVehicle - - - - dbo - SaVehicle
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaVehicle
- 2 - VehicleClassId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 3 - RegNumber - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 4 - VIN - VarChar - - -9 - nvarchar - false - 24 - 48 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 5 - CapCode - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 6 - KeyNumber - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 7 - KeyLocation - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 8 - EngineNumber - VarChar - - -9 - nvarchar - false - 24 - 48 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 9 - EngineCapacity - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 10 - Seats - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 11 - Weight - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 12 - ManufactureYear - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 13 - BuildOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 14 - FirstRegisterOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 15 - RegisterOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 16 - RegNumberPrev - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 17 - PurchaseOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 18 - TachoCode - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 19 - TachoId - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 20 - LastServiceOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 21 - LastServiceOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 22 - NextServiceOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 23 - NextServiceOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 24 - MotOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 25 - MotNo - VarChar - - -9 - nvarchar - false - 24 - 48 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 26 - NextTaxOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 27 - LatestOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 28 - LatestOdoOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 29 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 30 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 31 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 32 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 33 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 34 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 35 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicle
- 36 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicle
- 37 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaVehicle
- PK_SaVehicle - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaVehicleClass - - - - dbo - SaVehicleClass
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaVehicleClass
- 2 - MakeCode - VarChar - - -9 - nvarchar - false - 8 - 16 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 3 - Model - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 4 - Derivative - VarChar - - -9 - nvarchar - false - 120 - 240 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 5 - DescBrief - VarChar - - -9 - nvarchar - false - 120 - 240 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 6 - VehicleType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 7 - VehicleCategoryCode - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 8 - FuelType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 9 - OdometerUnits - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 10 - Seats - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 11 - Weight - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 12 - InsuranceCode - VarChar - - -9 - nvarchar - false - 6 - 12 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 13 - FirstServiceOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 14 - ServiceOdo - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 15 - ServiceWeeks - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 16 - AmountRentalCost - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 17 - UomIdRentalCost - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 18 - AmountRentalPrice - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 19 - UomIdRentalPrice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 20 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 21 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 22 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 23 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleClass
- 24 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 25 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 26 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleClass
- 27 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleClass
- 28 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaVehicleClass
- PK_SaVehicleClass - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaVehicleEvent - - - - dbo - SaVehicleEvent
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaVehicleEvent
- 2 - VehicleId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 3 - EventType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 4 - StartOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleEvent
- 5 - FinishOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleEvent
- 6 - Odometer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 7 - DescBrief - VarChar - - -9 - nvarchar - false - 120 - 240 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 8 - DescDetail - VarChar - - -9 - nvarchar - false - 0 - 0 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 9 - AmountNet - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 10 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 11 - TaxRate - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 12 - AmountTax - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 13 - AmountTot - Single - - 7 - real - false - 24 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 14 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 15 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 16 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 17 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleEvent
- 18 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 19 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 20 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleEvent
- 21 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleEvent
- 22 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaVehicleEvent
- PK_SaVehicleEvent - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
-
-
- - dbo - SaVehicleFeature - - - - dbo - SaVehicleFeature
- 1 - VehicleId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SaVehicleFeature
- 2 - Source - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - SaVehicleFeature
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - SaVehicleFeature
- 4 - CategoryCode - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - NoNulls - false - -
- - dbo - SaVehicleFeature
- 5 - CategoryDesc - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 6 - FeatureCode - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - NoNulls - false - -
- - dbo - SaVehicleFeature
- 7 - FeatureDesc - VarChar - - -9 - nvarchar - false - 128 - 256 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 8 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 9 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 10 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 11 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleFeature
- 12 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 13 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 14 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SaVehicleFeature
- 15 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SaVehicleFeature
- 16 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SaVehicleFeature
- PK_SaVehicleFeature - 1 - true - false - false - false - 0 - 0 - false - - - 1 - VehicleId - true - - -
-
-
- - dbo - StockLevel - - - - dbo - StockLevel
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 2 - CommodityId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - StockLevel
- 3 - LocationId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 4 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 5 - Source - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 6 - Recorded - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - StockLevel
- 7 - Quantity - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - StockLevel
- 8 - Bay1 - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - StockLevel
- 9 - Bay2 - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - StockLevel
- 10 - Bay3 - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - StockLevel
- 11 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - StockLevel
- 12 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 13 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 14 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - NoNulls - false - -
- - dbo - StockLevel
- 15 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - StockLevel
- 16 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - StockLevel
- 17 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - StockLevel
- 18 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - StockLevel
- 19 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - StockLevel
- PK_StockLevel - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - StockLevel
- IDX_StockLevel_Commodity - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - -
- - dbo - StockLevel
- IDX_StockLevel_CommodityRecorded - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - - 2 - Recorded - true - - -
- - dbo - StockLevel
- IDX_StockLevel_CommodityType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CommodityId - true - - - 2 - Type - true - - -
- - dbo - StockLevel
- IDX_StockLevel_Location - 3 - false - false - false - false - 0 - 0 - false - - - 1 - LocationId - true - - -
- - dbo - StockLevel
- IDX_StockLevel_Recorded - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Recorded - true - - -
- - dbo - StockLevel
- IDX_StockLevel_Type - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Type - true - - -
-
-
- - dbo - SysParam - - - - dbo - SysParam
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SysParam
- 2 - Cat - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - NoNulls - false - -
- - dbo - SysParam
- 3 - Name - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - NoNulls - false - -
- - dbo - SysParam
- 4 - Value - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - SysParam
- 5 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SysParam
- 6 - AffIdTarget - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SysParam
- 7 - AssocId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SysParam
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SysParam
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SysParam
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SysParam
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SysParam
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SysParam
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SysParam
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SysParam
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SysParam
- PK_SysParam - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - SysParam
- IDX_SysParam_CatAssName - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Cat - true - - - 2 - AssocId - true - - - 3 - Name - true - - -
- - dbo - SysParam
- IDX_SysParam_CatName - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Cat - true - - - 2 - Name - true - - -
- - dbo - SysParam
- IDX_SysParam_CatOrgName - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Cat - true - - - 2 - AffIdTarget - true - - - 3 - Name - true - - -
- - dbo - SysParam
- IDX_SysParam_CatPerName - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Cat - true - - - 2 - AffIdOwner - true - - - 3 - Name - true - - -
-
-
- - dbo - SystemAccount - - - - dbo - SystemAccount
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccount
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccount
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 4 - InterfaceId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccount
- 5 - AssocId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccount
- 6 - Code - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 7 - Name - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 8 - AuthCodeEnc - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 9 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 10 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 11 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 12 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemAccount
- 13 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 14 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 15 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemAccount
- 16 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemAccount
- 17 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SystemAccount
- PK_SystemAccount - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - SystemAccount
- IDX_SystemAccount_AffIdOwner - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - -
- - dbo - SystemAccount
- IDX_SystemAccount_Association - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocId - true - - -
- - dbo - SystemAccount
- IDX_SystemAccount_Interface - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - -
-
-
- - dbo - SystemAccountUser - - - - dbo - SystemAccountUser
- 1 - AccountId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccountUser
- 2 - UserId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemAccountUser
- 3 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 4 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 5 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 6 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemAccountUser
- 7 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 8 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 9 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemAccountUser
- 10 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemAccountUser
- 11 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SystemAccountUser
- PK_SystemAccountUser - 1 - true - false - false - false - 0 - 0 - false - - - 1 - AccountId - true - - - 2 - UserId - true - - -
- - dbo - SystemAccountUser
- IDX_SystemAccountUser_User - 3 - false - false - false - false - 0 - 0 - false - - - 1 - UserId - true - - -
-
-
- - dbo - SystemUser - - - - dbo - SystemUser
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemUser
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - SystemUser
- 3 - InterfaceId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemUser
- 4 - AffiliateId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemUser
- 5 - Code - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemUser
- 6 - AuthCodeEnc - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemUser
- 7 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - SystemUser
- 8 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - SystemUser
- 9 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - SystemUser
- 10 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemUser
- 11 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemUser
- 12 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - SystemUser
- 13 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - SystemUser
- 14 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - SystemUser
- 15 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - SystemUser
- PK_SystemUser - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - SystemUser
- IDX_SystemUser_OwnerCode - 3 - true - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Code - true - - -
- - dbo - SystemUser
- IDX_SystemUser_Affiliate - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffiliateId - true - - -
- - dbo - SystemUser
- IDX_SystemUser_AffiliateId - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffiliateId - true - - -
- - dbo - SystemUser
- IDX_SystemUser_Interface - 3 - false - false - false - false - 0 - 0 - false - - - 1 - InterfaceId - true - - -
-
-
- - dbo - TaxCode - - - - dbo - TaxCode
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - TaxCode
- 2 - Code - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - TaxCode
- 3 - CodeAlt1 - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - TaxCode
- 4 - CodeAlt2 - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - TaxCode
- 5 - Description - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - TaxCode
- 6 - RegionId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - TaxCode
- 7 - EffectFrom - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - TaxCode
- 8 - EffectTo - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - TaxCode
- 9 - TaxRate - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - TaxCode
- 10 - TaxRatePrev - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - TaxCode
- 11 - TaxCodeIdLink - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - TaxCode
- 12 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - TaxCode
- 13 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - TaxCode
- 14 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - TaxCode
- 15 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - TaxCode
- 16 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - TaxCode
- 17 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - TaxCode
- 18 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - TaxCode
- 19 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - TaxCode
- 20 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - TaxCode
- PK_TaxCode - 1 - true - false - false - false - 1 - 13 - false - - - 1 - Id - true - - -
- - dbo - TaxCode
- IdX_TaxCode_Code - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Code - true - - -
- - dbo - TaxCode
- IdX_TaxCode_CodeAlt1 - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CodeAlt1 - true - - -
- - dbo - TaxCode
- IdX_TaxCode_CodeAlt2 - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CodeAlt2 - true - - -
-
-
- - dbo - Transaction - - - - dbo - Transaction
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Transaction
- 2 - AffIdOwner - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 3 - AssocId - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - Transaction
- 4 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Transaction
- 5 - Ref - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - Transaction
- 6 - RefInt - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 7 - RefExt - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Transaction
- 8 - RaisedBy - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Transaction
- 9 - AffIdRaise - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 10 - AssocIdOffice - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 11 - ContactName - VarChar - - 12 - varchar - false - 60 - 60 - 0 - Nullable - true - -
- - dbo - Transaction
- 12 - Likelihood - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 13 - TransIdSource - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 14 - ReferCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 15 - ReferSource - VarChar - - -9 - nvarchar - false - 60 - 120 - 0 - Nullable - true - -
- - dbo - Transaction
- 16 - AffIdRefer - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 17 - AssocIdContract - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 18 - AssIdDeliver - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 19 - Raised - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 20 - Required - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 21 - InProgress - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 22 - DeliveredEst - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 23 - DeliveredAct - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 24 - Closed - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 25 - Department - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 26 - DescBrief - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Transaction
- 27 - DescIntro - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Transaction
- 28 - DescOutline - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Transaction
- 29 - DescDetail - VarChar - - -9 - nvarchar - false - 4000 - 8000 - 0 - Nullable - true - -
- - dbo - Transaction
- 30 - ResponseCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 31 - ContactAreaCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 32 - Postcode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 33 - CurrencyId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 34 - TaxCodeId - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 35 - AmountEst - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 36 - AmountMax - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 37 - AmountNet - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 38 - AmountTax - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 39 - AmountTot - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 40 - TimeEstChunks - VarChar - - 12 - varchar - false - 1024 - 1024 - 0 - Nullable - true - -
- - dbo - Transaction
- 41 - TimeEst - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Transaction
- 42 - TimeActChunks - VarChar - - 12 - varchar - false - 1024 - 1024 - 0 - Nullable - true - -
- - dbo - Transaction
- 43 - TimeAct - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Transaction
- 44 - TimeTot - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Transaction
- 45 - LocationIdStock - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 46 - Weight - Decimal - - 3 - decimal - false - 9 - 11 - 3 - Nullable - true - -
- - dbo - Transaction
- 47 - UomIdWeight - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 48 - BoxCount - VarChar - - -9 - nvarchar - false - 16 - 32 - 0 - Nullable - true - -
- - dbo - Transaction
- 49 - DeliveryStatusCode - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - Transaction
- 50 - DeliveryTypeCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 51 - DeliveryMethodCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 52 - DeliveryCourierCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 53 - DeliveryBookInCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 54 - StockPickerCode - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - Transaction
- 55 - DeliveryRef - VarChar - - -9 - nvarchar - false - 32 - 64 - 0 - Nullable - true - -
- - dbo - Transaction
- 56 - DeliveryComment - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - Transaction
- 57 - DeliveryAmountNet - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 58 - TaxCodeIdDelivery - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 59 - DeliveryAmountTax - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 60 - DeliveryAmountTot - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 61 - DeliveryDepartment - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Transaction
- 62 - DeliveryNominalCode - VarChar - - 12 - varchar - false - 12 - 12 - 0 - Nullable - true - -
- - dbo - Transaction
- 63 - CostLabourRateHour - Decimal - - 3 - decimal - false - 9 - 11 - 2 - Nullable - true - -
- - dbo - Transaction
- 64 - Notes - VarChar - - -9 - nvarchar - false - 1024 - 2048 - 0 - Nullable - true - -
- - dbo - Transaction
- 65 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - Transaction
- 66 - StatusCat - VarChar - - 12 - varchar - false - 3 - 3 - 0 - Nullable - true - -
- - dbo - Transaction
- 67 - Status - VarChar - - 12 - varchar - false - 3 - 3 - 0 - NoNulls - false - -
- - dbo - Transaction
- 68 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 69 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 70 - CreateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
- - dbo - Transaction
- 71 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - Transaction
- 72 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - Transaction
- 73 - UpdateHost - VarChar - - 12 - varchar - false - 64 - 64 - 0 - Nullable - true - -
-
- - - dbo - Transaction
- PK_Transaction - 1 - true - false - false - false - 0 - 0 - false - - - 1 - Id - true - - -
- - dbo - Transaction
- IDX_Transaction_AffilRaise - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdRaise - true - - -
- - dbo - Transaction
- IDX_Transaction_AffilRefer - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdRefer - true - - -
- - dbo - Transaction
- IDX_Transaction_Assoc - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocId - true - - -
- - dbo - Transaction
- IDX_Transaction_AssocContract - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocIdContract - true - - -
- - dbo - Transaction
- IDX_Transaction_AssocOffice - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocIdOffice - true - - -
- - dbo - Transaction
- IDX_Transaction_AssocType - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AssocId - true - - - 2 - Type - true - - -
- - dbo - Transaction
- IDX_Transaction_Currency - 3 - false - false - false - false - 0 - 0 - false - - - 1 - CurrencyId - true - - -
- - dbo - Transaction
- IDX_Transaction_OwnerRef - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Ref - true - - -
- - dbo - Transaction
- IDX_Transaction_OwnerRefExt - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - RefExt - true - - -
- - dbo - Transaction
- IDX_Transaction_OwnerTypeRaised - 3 - false - false - false - false - 0 - 0 - false - - - 1 - AffIdOwner - true - - - 2 - Type - true - - - 3 - Raised - true - - -
- - dbo - Transaction
- IDX_Transaction_Postcode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - Postcode - true - - -
- - dbo - Transaction
- IDX_Transaction_StatusCat - 3 - false - false - false - false - 0 - 0 - false - - - 1 - StatusCat - true - - -
- - dbo - Transaction
- IDX_Transaction_StockLocation - 3 - false - false - false - false - 0 - 0 - false - - - 1 - LocationIdStock - true - - -
- - dbo - Transaction
- IDX_Transaction_TaxCode - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TaxCodeId - true - - -
- - dbo - Transaction
- IDX_Transaction_TransSource - 3 - false - false - false - false - 0 - 0 - false - - - 1 - TransIdSource - true - - -
-
-
- - dbo - UnitMeasure - - - - dbo - UnitMeasure
- 1 - Id - Int - - 4 - int - false - 10 - 4 - 0 - NoNulls - false - -
- - dbo - UnitMeasure
- 2 - Category - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 3 - Type - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 4 - UnitType - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 5 - Code - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - NoNulls - false - -
- - dbo - UnitMeasure
- 6 - Abbr - VarChar - - -9 - nvarchar - false - 12 - 24 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 7 - Single - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 8 - Multiple - VarChar - - -9 - nvarchar - false - 50 - 100 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 9 - EquValue - Double - - 6 - float - false - 53 - 8 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 10 - UomIdEqu - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 11 - EquAlgorythm - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 12 - UomIdRef1 - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 13 - UomIdRef2 - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 14 - UomIdRef3 - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 15 - Notes - VarChar - - -9 - nvarchar - false - 255 - 510 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 16 - Flags - SmallInt - - 5 - smallint - false - 5 - 2 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 17 - Status - VarChar - - -9 - nvarchar - false - 3 - 6 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 18 - CreateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - UnitMeasure
- 19 - CreateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 20 - CreateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 21 - UpdateOn - DateTime - - 93 - datetime - false - 23 - 16 - 3 - Nullable - true - -
- - dbo - UnitMeasure
- 22 - UpdateBy - Int - - 4 - int - false - 10 - 4 - 0 - Nullable - true - -
- - dbo - UnitMeasure
- 23 - UpdateHost - VarChar - - -9 - nvarchar - false - 64 - 128 - 0 - Nullable - true - -
-
- - - dbo - UnitMeasure
- PK_UnitMeasure - 1 - true - false - false - false - 1 - 21 - false - - - 1 - Id - true - - -
- - dbo - UnitMeasure
- IDX_UnitMeasure_Code - 3 - true - false - false - false - 0 - 0 - false - - - 1 - Code - true - - -
-
-
- - \ No newline at end of file diff --git a/SaBusMgrStandardDbas/Dbas/Internal/StockLevel_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/StockLevel_Db.cs index 8bcdbfb..e70adff 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/StockLevel_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/StockLevel_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SysParam_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SysParam_Db.cs index a26715b..63cf843 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SysParam_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SysParam_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SystemAccountUser_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SystemAccountUser_Db.cs index 8e579af..e3c4885 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SystemAccountUser_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SystemAccountUser_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SystemAccount_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SystemAccount_Db.cs index 1372a37..9c07b63 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SystemAccount_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SystemAccount_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/SystemUser_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/SystemUser_Db.cs index 0ae1cb6..fa10095 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/SystemUser_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/SystemUser_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/TaxCode_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/TaxCode_Db.cs deleted file mode 100644 index 9ae04a9..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/TaxCode_Db.cs +++ /dev/null @@ -1,282 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class TaxCode_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataString _Code { get; } = new ColumnDataString("Code"); - public ColumnDataString _CodeAlt1 { get; } = new ColumnDataString("CodeAlt1"); - public ColumnDataString _CodeAlt2 { get; } = new ColumnDataString("CodeAlt2"); - public ColumnDataString _Description { get; } = new ColumnDataString("Description"); - public ColumnDataInt32Nullable _RegionId { get; } = new ColumnDataInt32Nullable("RegionId"); - public ColumnDataDateTimeNullable _EffectFrom { get; } = new ColumnDataDateTimeNullable("EffectFrom"); - public ColumnDataDateTimeNullable _EffectTo { get; } = new ColumnDataDateTimeNullable("EffectTo"); - public ColumnDataDecimalNullable _TaxRate { get; } = new ColumnDataDecimalNullable("TaxRate"); - public ColumnDataDecimalNullable _TaxRatePrev { get; } = new ColumnDataDecimalNullable("TaxRatePrev"); - public ColumnDataInt32Nullable _TaxCodeIdLink { get; } = new ColumnDataInt32Nullable("TaxCodeIdLink"); - public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Code", - "CodeAlt1", - "CodeAlt2", - "Description", - "RegionId", - "EffectFrom", - "EffectTo", - "TaxRate", - "TaxRatePrev", - "TaxCodeIdLink", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Code", - "CodeAlt1", - "CodeAlt2", - "Description", - "RegionId", - "EffectFrom", - "EffectTo", - "TaxRate", - "TaxRatePrev", - "TaxCodeIdLink", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal TaxCode_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "TaxCode"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public String _Code { get { return Cols._Code.Value; } set { Cols._Code.Value = value; } } - public String _CodeAlt1 { get { return Cols._CodeAlt1.Value; } set { Cols._CodeAlt1.Value = value; } } - public String _CodeAlt2 { get { return Cols._CodeAlt2.Value; } set { Cols._CodeAlt2.Value = value; } } - public String _Description { get { return Cols._Description.Value; } set { Cols._Description.Value = value; } } - public Int32? _RegionId { get { return Cols._RegionId.Value; } set { Cols._RegionId.Value = value; } } - public DateTime? _EffectFrom { get { return Cols._EffectFrom.Value; } set { Cols._EffectFrom.Value = value; } } - public DateTime? _EffectTo { get { return Cols._EffectTo.Value; } set { Cols._EffectTo.Value = value; } } - public Decimal? _TaxRate { get { return Cols._TaxRate.Value; } set { Cols._TaxRate.Value = value; } } - public Decimal? _TaxRatePrev { get { return Cols._TaxRatePrev.Value; } set { Cols._TaxRatePrev.Value = value; } } - public Int32? _TaxCodeIdLink { get { return Cols._TaxCodeIdLink.Value; } set { Cols._TaxCodeIdLink.Value = value; } } - public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Code = GetFieldString(dbDataReader, "Code", _Code); - _CodeAlt1 = GetFieldString(dbDataReader, "CodeAlt1", _CodeAlt1); - _CodeAlt2 = GetFieldString(dbDataReader, "CodeAlt2", _CodeAlt2); - _Description = GetFieldString(dbDataReader, "Description", _Description); - _RegionId = GetFieldInt32Nullable(dbDataReader, "RegionId", _RegionId); - _EffectFrom = GetFieldDateTimeNullable(dbDataReader, "EffectFrom", _EffectFrom); - _EffectTo = GetFieldDateTimeNullable(dbDataReader, "EffectTo", _EffectTo); - _TaxRate = GetFieldDecimalNullable(dbDataReader, "TaxRate", _TaxRate); - _TaxRatePrev = GetFieldDecimalNullable(dbDataReader, "TaxRatePrev", _TaxRatePrev); - _TaxCodeIdLink = GetFieldInt32Nullable(dbDataReader, "TaxCodeIdLink", _TaxCodeIdLink); - _Notes = GetFieldString(dbDataReader, "Notes", _Notes); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("CodeAlt1")) AddCommandParameter(dbCommand, "@CodeAlt1", _CodeAlt1); - if (columnNames.ContainsCI("CodeAlt2")) AddCommandParameter(dbCommand, "@CodeAlt2", _CodeAlt2); - if (columnNames.ContainsCI("Description")) AddCommandParameter(dbCommand, "@Description", _Description); - if (columnNames.ContainsCI("RegionId")) AddCommandParameter(dbCommand, "@RegionId", _RegionId); - if (columnNames.ContainsCI("EffectFrom")) AddCommandParameter(dbCommand, "@EffectFrom", _EffectFrom); - if (columnNames.ContainsCI("EffectTo")) AddCommandParameter(dbCommand, "@EffectTo", _EffectTo); - if (columnNames.ContainsCI("TaxRate")) AddCommandParameter(dbCommand, "@TaxRate", _TaxRate); - if (columnNames.ContainsCI("TaxRatePrev")) AddCommandParameter(dbCommand, "@TaxRatePrev", _TaxRatePrev); - if (columnNames.ContainsCI("TaxCodeIdLink")) AddCommandParameter(dbCommand, "@TaxCodeIdLink", _TaxCodeIdLink); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("CodeAlt1")) AddCommandParameter(dbCommand, "@CodeAlt1", _CodeAlt1); - if (columnNames.ContainsCI("CodeAlt2")) AddCommandParameter(dbCommand, "@CodeAlt2", _CodeAlt2); - if (columnNames.ContainsCI("Description")) AddCommandParameter(dbCommand, "@Description", _Description); - if (columnNames.ContainsCI("RegionId")) AddCommandParameter(dbCommand, "@RegionId", _RegionId); - if (columnNames.ContainsCI("EffectFrom")) AddCommandParameter(dbCommand, "@EffectFrom", _EffectFrom); - if (columnNames.ContainsCI("EffectTo")) AddCommandParameter(dbCommand, "@EffectTo", _EffectTo); - if (columnNames.ContainsCI("TaxRate")) AddCommandParameter(dbCommand, "@TaxRate", _TaxRate); - if (columnNames.ContainsCI("TaxRatePrev")) AddCommandParameter(dbCommand, "@TaxRatePrev", _TaxRatePrev); - if (columnNames.ContainsCI("TaxCodeIdLink")) AddCommandParameter(dbCommand, "@TaxCodeIdLink", _TaxCodeIdLink); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Internal/Transaction_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/Transaction_Db.cs index df14223..77ca3a1 100644 --- a/SaBusMgrStandardDbas/Dbas/Internal/Transaction_Db.cs +++ b/SaBusMgrStandardDbas/Dbas/Internal/Transaction_Db.cs @@ -10,7 +10,7 @@ using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 +// Code generated by Sarand Database Utilities Thu 6-Feb-2025 13:02:20 //--------------------------------------------------------------------------- namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal { diff --git a/SaBusMgrStandardDbas/Dbas/Internal/UnitMeasure_Db.cs b/SaBusMgrStandardDbas/Dbas/Internal/UnitMeasure_Db.cs deleted file mode 100644 index 5b7ba3e..0000000 --- a/SaBusMgrStandardDbas/Dbas/Internal/UnitMeasure_Db.cs +++ /dev/null @@ -1,302 +0,0 @@ -using Microsoft.Data.SqlClient; -using Sarand.BusinessMgr.Net.Standard.Dbas.Data; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Data.Common; -using System.Linq; - -//--------------------------------------------------------------------------- -// Code generated by Sarand Database Utilities Sat 1-Feb-2025 17:49:12 -//--------------------------------------------------------------------------- -namespace Sarand.BusinessMgr.Net.Standard.Dbas.Internal -{ - internal class UnitMeasure_Db : SbmDbDataItem - { - //------------------------------------------------------------------- - // Column definitions. - public class ColumnsData - { - public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id"); - public ColumnDataInt16Nullable _Category { get; } = new ColumnDataInt16Nullable("Category"); - public ColumnDataInt16Nullable _Type { get; } = new ColumnDataInt16Nullable("Type"); - public ColumnDataInt16Nullable _UnitType { get; } = new ColumnDataInt16Nullable("UnitType"); - public ColumnDataString _Code { get; } = new ColumnDataString("Code"); - public ColumnDataString _Abbr { get; } = new ColumnDataString("Abbr"); - public ColumnDataString _Single { get; } = new ColumnDataString("Single"); - public ColumnDataString _Multiple { get; } = new ColumnDataString("Multiple"); - public ColumnDataDecimalNullable _EquValue { get; } = new ColumnDataDecimalNullable("EquValue"); - public ColumnDataInt32Nullable _UomIdEqu { get; } = new ColumnDataInt32Nullable("UomIdEqu"); - public ColumnDataInt32Nullable _EquAlgorythm { get; } = new ColumnDataInt32Nullable("EquAlgorythm"); - public ColumnDataInt32Nullable _UomIdRef1 { get; } = new ColumnDataInt32Nullable("UomIdRef1"); - public ColumnDataInt32Nullable _UomIdRef2 { get; } = new ColumnDataInt32Nullable("UomIdRef2"); - public ColumnDataInt32Nullable _UomIdRef3 { get; } = new ColumnDataInt32Nullable("UomIdRef3"); - public ColumnDataString _Notes { get; } = new ColumnDataString("Notes"); - public ColumnDataInt16Nullable _Flags { get; } = new ColumnDataInt16Nullable("Flags"); - public ColumnDataString _Status { get; } = new ColumnDataString("Status"); - public ColumnDataDateTimeNullable _CreateOn { get; } = new ColumnDataDateTimeNullable("CreateOn"); - public ColumnDataInt32Nullable _CreateBy { get; } = new ColumnDataInt32Nullable("CreateBy"); - public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost"); - public ColumnDataDateTimeNullable _UpdateOn { get; } = new ColumnDataDateTimeNullable("UpdateOn"); - public ColumnDataInt32Nullable _UpdateBy { get; } = new ColumnDataInt32Nullable("UpdateBy"); - public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost"); - } - - //------------------------------------------------------------------- - // Data members. - protected static List fields { get; } = new List() - { - "Id", - "Category", - "Type", - "UnitType", - "Code", - "Abbr", - "Single", - "Multiple", - "EquValue", - "UomIdEqu", - "EquAlgorythm", - "UomIdRef1", - "UomIdRef2", - "UomIdRef3", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsId { get; } = new List() - { - }; - protected static List fieldsPrimary { get; } = new List() - { - "Id", - }; - protected static List fieldsNullable { get; } = new List() - { - "Category", - "Type", - "UnitType", - "Abbr", - "Single", - "Multiple", - "EquValue", - "UomIdEqu", - "EquAlgorythm", - "UomIdRef1", - "UomIdRef2", - "UomIdRef3", - "Notes", - "Flags", - "Status", - "CreateOn", - "CreateBy", - "CreateHost", - "UpdateOn", - "UpdateBy", - "UpdateHost", - }; - protected static List fieldsIgnoreOnUpdate { get; } = new List() - { - "CreateOn", - "CreateBy", - "CreateHost", - }; - - //------------------------------------------------------------------- - // Construction. - internal UnitMeasure_Db (IDatabaseInfo dbInfo) : base(dbInfo) - { - } - - //------------------------------------------------------------------- - // Properties. - public override String SchemaName { get; } = "dbo"; - public override String TableName { get; } = "UnitMeasure"; - public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } } - public static List Fields { get { return new List(fields); } } - public static List FieldsId { get { return new List(fieldsId); } } - public static List FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } } - // Columns. - public ColumnsData Cols { get; } = new ColumnsData(); - public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } } - public Int16? _Category { get { return Cols._Category.Value; } set { Cols._Category.Value = value; } } - public Int16? _Type { get { return Cols._Type.Value; } set { Cols._Type.Value = value; } } - public Int16? _UnitType { get { return Cols._UnitType.Value; } set { Cols._UnitType.Value = value; } } - public String _Code { get { return Cols._Code.Value; } set { Cols._Code.Value = value; } } - public String _Abbr { get { return Cols._Abbr.Value; } set { Cols._Abbr.Value = value; } } - public String _Single { get { return Cols._Single.Value; } set { Cols._Single.Value = value; } } - public String _Multiple { get { return Cols._Multiple.Value; } set { Cols._Multiple.Value = value; } } - public Decimal? _EquValue { get { return Cols._EquValue.Value; } set { Cols._EquValue.Value = value; } } - public Int32? _UomIdEqu { get { return Cols._UomIdEqu.Value; } set { Cols._UomIdEqu.Value = value; } } - public Int32? _EquAlgorythm { get { return Cols._EquAlgorythm.Value; } set { Cols._EquAlgorythm.Value = value; } } - public Int32? _UomIdRef1 { get { return Cols._UomIdRef1.Value; } set { Cols._UomIdRef1.Value = value; } } - public Int32? _UomIdRef2 { get { return Cols._UomIdRef2.Value; } set { Cols._UomIdRef2.Value = value; } } - public Int32? _UomIdRef3 { get { return Cols._UomIdRef3.Value; } set { Cols._UomIdRef3.Value = value; } } - public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } } - public Int16? _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } } - public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } } - public DateTime? _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } } - public Int32? _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } } - public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } } - public DateTime? _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } } - public Int32? _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } } - public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } } - // Existing columns - confirmed on database if table exists. - public List ExistingColumnNames { get { return GetExistingColumnNames(Fields); } } - public List ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } } - public List UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } } - - //------------------------------------------------------------------- - // Population. - public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter) - { - dbCommand.CommandText = - "SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " + - "FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + - (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); - Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); - using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) - { - dbDataReader.Read(); - PopulateFrom(dbDataReader); - } - } - public override void PopulateFrom (DbDataReader dbDataReader) - { - _Id = GetFieldInt32(dbDataReader, "Id", _Id); - _Category = GetFieldInt16Nullable(dbDataReader, "Category", _Category); - _Type = GetFieldInt16Nullable(dbDataReader, "Type", _Type); - _UnitType = GetFieldInt16Nullable(dbDataReader, "UnitType", _UnitType); - _Code = GetFieldString(dbDataReader, "Code", _Code); - _Abbr = GetFieldString(dbDataReader, "Abbr", _Abbr); - _Single = GetFieldString(dbDataReader, "Single", _Single); - _Multiple = GetFieldString(dbDataReader, "Multiple", _Multiple); - _EquValue = GetFieldDecimalNullable(dbDataReader, "EquValue", _EquValue); - _UomIdEqu = GetFieldInt32Nullable(dbDataReader, "UomIdEqu", _UomIdEqu); - _EquAlgorythm = GetFieldInt32Nullable(dbDataReader, "EquAlgorythm", _EquAlgorythm); - _UomIdRef1 = GetFieldInt32Nullable(dbDataReader, "UomIdRef1", _UomIdRef1); - _UomIdRef2 = GetFieldInt32Nullable(dbDataReader, "UomIdRef2", _UomIdRef2); - _UomIdRef3 = GetFieldInt32Nullable(dbDataReader, "UomIdRef3", _UomIdRef3); - _Notes = GetFieldString(dbDataReader, "Notes", _Notes); - _Flags = GetFieldInt16Nullable(dbDataReader, "Flags", _Flags); - _Status = GetFieldString(dbDataReader, "Status", _Status); - _CreateOn = GetFieldDateTimeNullable(dbDataReader, "CreateOn", _CreateOn); - _CreateBy = GetFieldInt32Nullable(dbDataReader, "CreateBy", _CreateBy); - _CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost); - _UpdateOn = GetFieldDateTimeNullable(dbDataReader, "UpdateOn", _UpdateOn); - _UpdateBy = GetFieldInt32Nullable(dbDataReader, "UpdateBy", _UpdateBy); - _UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost); - } - - //------------------------------------------------------------------- - // Insert command. - public override bool ExecuteInsertCommand (DbCommand dbCommand) - { - List columnNames = ExistingColumnNamesNonId; - // Construct query. - String query = - "INSERT INTO " + TableNameFmt + " " + - "("+columnNames.Concat(",","[","]")+") "; - if (dbCommand is SqlCommand) - query += "VALUES (" + columnNames.Concat(",", "@", "") + ") "; - else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") "; - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Id")) AddCommandParameter(dbCommand, "@Id", _Id); - if (columnNames.ContainsCI("Category")) AddCommandParameter(dbCommand, "@Category", _Category); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("UnitType")) AddCommandParameter(dbCommand, "@UnitType", _UnitType); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Abbr")) AddCommandParameter(dbCommand, "@Abbr", _Abbr); - if (columnNames.ContainsCI("Single")) AddCommandParameter(dbCommand, "@Single", _Single); - if (columnNames.ContainsCI("Multiple")) AddCommandParameter(dbCommand, "@Multiple", _Multiple); - if (columnNames.ContainsCI("EquValue")) AddCommandParameter(dbCommand, "@EquValue", _EquValue); - if (columnNames.ContainsCI("UomIdEqu")) AddCommandParameter(dbCommand, "@UomIdEqu", _UomIdEqu); - if (columnNames.ContainsCI("EquAlgorythm")) AddCommandParameter(dbCommand, "@EquAlgorythm", _EquAlgorythm); - if (columnNames.ContainsCI("UomIdRef1")) AddCommandParameter(dbCommand, "@UomIdRef1", _UomIdRef1); - if (columnNames.ContainsCI("UomIdRef2")) AddCommandParameter(dbCommand, "@UomIdRef2", _UomIdRef2); - if (columnNames.ContainsCI("UomIdRef3")) AddCommandParameter(dbCommand, "@UomIdRef3", _UomIdRef3); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn); - if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy); - if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - // Execute insert command. - bool commandSuccess = false; - int executeNonQuery = dbCommand.ExecuteNonQuery(); - if (executeNonQuery == 1) - { - commandSuccess = true; - } - return commandSuccess; - } - - //------------------------------------------------------------------- - // Update command. - public override bool ExecuteUpdateCommand (DbCommand dbCommand, List columnsToUpdate = null) - { - // Columns to update. - List columnNames = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList(); - if (!columnNames.Any()) - { - SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]"); - return false; - } - // Construct query. - String query = "UPDATE " + TableNameFmt + " SET "; - if (dbCommand is SqlCommand) - { - query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " "; - query += "WHERE Id=@Id;"; - } - else - { - query += columnNames.Concat(", ", "", "=?") + " "; - query += "WHERE Id=?;"; - } - dbCommand.CommandText = query; - Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText); - // Populate parameters. - dbCommand.Parameters.Clear(); - if (columnNames.ContainsCI("Category")) AddCommandParameter(dbCommand, "@Category", _Category); - if (columnNames.ContainsCI("Type")) AddCommandParameter(dbCommand, "@Type", _Type); - if (columnNames.ContainsCI("UnitType")) AddCommandParameter(dbCommand, "@UnitType", _UnitType); - if (columnNames.ContainsCI("Code")) AddCommandParameter(dbCommand, "@Code", _Code); - if (columnNames.ContainsCI("Abbr")) AddCommandParameter(dbCommand, "@Abbr", _Abbr); - if (columnNames.ContainsCI("Single")) AddCommandParameter(dbCommand, "@Single", _Single); - if (columnNames.ContainsCI("Multiple")) AddCommandParameter(dbCommand, "@Multiple", _Multiple); - if (columnNames.ContainsCI("EquValue")) AddCommandParameter(dbCommand, "@EquValue", _EquValue); - if (columnNames.ContainsCI("UomIdEqu")) AddCommandParameter(dbCommand, "@UomIdEqu", _UomIdEqu); - if (columnNames.ContainsCI("EquAlgorythm")) AddCommandParameter(dbCommand, "@EquAlgorythm", _EquAlgorythm); - if (columnNames.ContainsCI("UomIdRef1")) AddCommandParameter(dbCommand, "@UomIdRef1", _UomIdRef1); - if (columnNames.ContainsCI("UomIdRef2")) AddCommandParameter(dbCommand, "@UomIdRef2", _UomIdRef2); - if (columnNames.ContainsCI("UomIdRef3")) AddCommandParameter(dbCommand, "@UomIdRef3", _UomIdRef3); - if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes); - if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags); - if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status); - if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn); - if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy); - if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost); - AddCommandParameter(dbCommand, "@Id", _Id); - int executeNonQueryResult = dbCommand.ExecuteNonQuery(); - return (executeNonQueryResult == 1); - } - - //------------------------------------------------------------------- - } -} diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-AccountRegistration.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-AccountRegistration.cs new file mode 100644 index 0000000..08b7b79 --- /dev/null +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-AccountRegistration.cs @@ -0,0 +1,580 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Utils; +using Sarand.Net.Standard.Dbas.Data; +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr +{ + //======================================================================= + // Control - Account Manager - Account Registrations. + //======================================================================= + partial class SbmcAccountMgr_Dbas + { + //------------------------------------------------------------------- + // Utilities. + private List GetLogProperties(SbmcAccountRegistration accountRegistration) + { + return new List() + { + new StringPair("Id",SysId.ToString(accountRegistration.Id)), + new StringPair("Email",accountRegistration.EmailAddress), + new StringPair("Token",accountRegistration.RegisterAccountToken.ToString()), + new StringPair("Status",accountRegistration.StatusCode) + }; + } + + //------------------------------------------------------------------- + // Create Item. + public override SbmcAccountRegistration CreateAccountRegistration(String emailAddress, Guid registerAccountToken) + { + return new SbmcAccountRegistration_Dbas(null, emailAddress, registerAccountToken, 0); + } + private SbmcAccountRegistration_Dbas CreateAccountRegistration(AccountRegistration_Db dbAccountRegistration) + { + ClearErrorState(); + SbmcAccountRegistration_Dbas accountRegistration = new SbmcAccountRegistration_Dbas(new SysId(dbAccountRegistration._Id), dbAccountRegistration._EmailAddress, dbAccountRegistration._RegisterAccountToken, (ushort)dbAccountRegistration._Flags); + PopulateFrom(dbAccountRegistration, accountRegistration); + return accountRegistration; + } + + //------------------------------------------------------------------- + // Get Item. + public override SbmcAccountRegistration GetAccountRegistration(SbmcAccountRegistration.Params prm) + { + return GetAccountRegistration(GetAccountRegistrationQueryFilter(prm).Concat(" AND ", "(", ")")); + } + private SbmcAccountRegistration GetAccountRegistration(String filter) + { + ClearErrorState(); + long count = GetAccountRegistrationCount(filter); + if (count == 0) return null; + if (count != 1) + { + SetErrorState(Msg_MultipleItemsFound); + return null; + } + SbmcAccountRegistration accountRegistration = null; + // Query data. + using (var dbConnection = db.CreateConnection()) + using (var dbCommand = dbConnection.CreateCommand()) + { + try + { + dbConnection.Open(); + AccountRegistration_Db dbAccountRegistration = new AccountRegistration_Db(DbInfo); + dbAccountRegistration.PopulateFrom(dbCommand, aliasAccountRegistration, filter); + accountRegistration = CreateAccountRegistration(dbAccountRegistration); + } + catch (Exception exc) + { + SetErrorState(Msg_DatabaseQueryException); + SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); + } + } + return accountRegistration; + } + + //------------------------------------------------------------------- + // Validate Item. + public override bool IsValidAccountRegistrationData(SbmcAccountRegistration.Data data, SbmcAccountRegistration.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidAccountRegistrationData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Item. + public override bool InsertAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAccountRegistration(accountRegistration)) return false; + if (SysId.IsValid(accountRegistration.Id)) return SetErrorState(ErrorMessage.ValiditemId); + using (var dbConnection = db.CreateConnection()) + using (var dbCommand = dbConnection.CreateCommand()) + { + try + { + dbConnection.Open(); + AccountRegistration_Db dbAccountRegistration = new AccountRegistration_Db(DbInfo); + PopulateTo(dbAccountRegistration, accountRegistration, dbUpdateInfo); + if (AccountRegistration_Db.FieldsNonId.Contains("Id")) + { + // Generate next Id. + dbAccountRegistration._Id = SysId.ToInt(db.GetNextId("AccountRegistration", dbUpdateInfo)); + } + dbAccountRegistration.ExecuteInsertCommand(dbCommand); + accountRegistration.Id = new SysId(dbAccountRegistration._Id); + accountRegistration.Changed = false; + if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. {GetLogProperties(accountRegistration).Concat(": ").Concat("", "\n\t")}"); + } + catch (Exception exc) { SetErrorState(exc.Message); } + } + return OK; + } + + //------------------------------------------------------------------- + // Update Item. + public override bool UpdateAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidAccountRegistration(accountRegistration)) return false; + if (!SysId.IsValid(accountRegistration.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + if (!accountRegistration.Changed) + { + if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. {GetLogProperties(accountRegistration).Concat(": ").Concat("", "\n\t")}"); + return true; + } + using (var dbConnection = db.CreateConnection()) + using (var dbCommand = dbConnection.CreateCommand()) + { + try + { + // Retrieve AccountRegistration. + dbConnection.Open(); + AccountRegistration_Db dbAccountRegistration = new AccountRegistration_Db(DbInfo); + dbAccountRegistration.PopulateFrom(dbCommand, aliasAccountRegistration, $"Id={SysId.ToString(accountRegistration.Id)}"); + //SbmUpdateLogItemMonitor_AccountRegistration updateLogMonitor = new SbmUpdateLogItemMonitor_AccountRegistration(Internals, CreateAccountRegistration(dbAccountRegistration)); + + // Update properties. + PopulateTo(dbAccountRegistration, accountRegistration, dbUpdateInfo); + dbAccountRegistration.ExecuteUpdateCommand(dbCommand); + accountRegistration.Changed = false; + if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. {GetLogProperties(accountRegistration).Concat(": ").Concat("", "\n\t")}"); + + // Record updates. + //updateLogMonitor.RecordUpdatedValues(accountRegistration); + //updateLogMonitor.LogUpdates(); + } + catch (Exception exc) { SetErrorState(exc.Message); } + } + return OK; + } + + //------------------------------------------------------------------- + // Delete Item. + public override bool AccountRegistrationCanBeDeleted(SbmcAccountRegistration accountRegistration) + { + ClearErrorState(); + if (!base.AccountRegistrationCanBeDeleted(accountRegistration)) return false; + return true; + } + public override bool DeleteAccountRegistration(SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!AccountRegistrationCanBeDeleted(accountRegistration)) return false; + using (var dbConnection = db.CreateConnection()) + using (var dbCommand = dbConnection.CreateCommand()) + { + try + { + // Retrieve AccountRegistration. + dbConnection.Open(); + AccountRegistration_Db dbAccountRegistration = new AccountRegistration_Db(DbInfo); + dbAccountRegistration.PopulateFrom(dbCommand, aliasAccountRegistration, "Id=" + accountRegistration.Id.ToString()); + // Delete AccountRegistration. + dbCommand.CommandType = System.Data.CommandType.Text; + dbCommand.CommandText = "DELETE FROM " + SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.AccountRegistration) + " WHERE Id=" + SysId.ToString(accountRegistration.Id) + ";"; + dbCommand.ExecuteNonQuery(); + accountRegistration.Changed = false; + if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. {GetLogProperties(accountRegistration).Concat(": ").Concat("", "\n\t")}"); + } + catch (Exception exc) { SetErrorState(exc.Message); } + } + return OK; + } + + //------------------------------------------------------------------- + // Copy data properties to and from Item. + private void PopulateTo(AccountRegistration_Db dbAccountRegistration, SbmcAccountRegistration accountRegistration, DbUpdateInfo dbUpdateInfo) + { + // Properties. + dbAccountRegistration._Id = accountRegistration.Id.ToInt(); + dbAccountRegistration._EmailAddress = accountRegistration.EmailAddress; + dbAccountRegistration._FirstName = accountRegistration.FirstName; + dbAccountRegistration._LastName = accountRegistration.LastName; + dbAccountRegistration._PhoneMain = accountRegistration.PhoneMain; + dbAccountRegistration._PhoneAlt = accountRegistration.PhoneAlt; + // Registration. + dbAccountRegistration._InstanceContext = accountRegistration.InstanceContext; + dbAccountRegistration._RequestAccountAt = accountRegistration.RequestAccountAt; + dbAccountRegistration._RegisterAccountToken = accountRegistration.RegisterAccountToken; + dbAccountRegistration._RegisterAccountAt = accountRegistration.RegisterAccountAt; + // Security. + dbAccountRegistration._AccountPasswordSalt = accountRegistration.AccountPasswordSalt; + dbAccountRegistration._AccountPasswordHash = accountRegistration.AccountPasswordHash; + // Common. + dbAccountRegistration._Notes = accountRegistration.Notes; + dbAccountRegistration._Status = SacsSystem.GetStatusCode(accountRegistration.Status); + dbAccountRegistration._Flags = (short)accountRegistration.Flags; + if (!SysId.IsValid(accountRegistration.Id)) + { + dbAccountRegistration._CreateOn = DateTime.UtcNow; + dbAccountRegistration._CreateBy = dbUpdateInfo.UserId.ToInt(); + dbAccountRegistration._CreateHost = dbUpdateInfo.Host; + } + dbAccountRegistration._UpdateOn = DateTime.UtcNow; + dbAccountRegistration._UpdateBy = dbUpdateInfo.UserId.ToInt(); + dbAccountRegistration._UpdateHost = dbUpdateInfo.Host; + } + private void PopulateFrom(AccountRegistration_Db dbAccountRegistration, SbmcAccountRegistration accountRegistration) + { + // Properties. + //accountRegistration.Id = new SysId(dbAccountRegistration._Id); + //accountRegistration.EmailAddress = dbAccountRegistration._EmailAddress; + accountRegistration.FirstName = dbAccountRegistration._FirstName; + accountRegistration.LastName = dbAccountRegistration._LastName; + accountRegistration.PhoneMain = dbAccountRegistration._PhoneMain; + accountRegistration.PhoneAlt = dbAccountRegistration._PhoneAlt; + // Registration. + accountRegistration.InstanceContext = dbAccountRegistration._InstanceContext; + accountRegistration.RequestAccountAt = dbAccountRegistration._RequestAccountAt; + //accountRegistration.RegisterAccountToken = dbAccountRegistration._RegisterAccountToken; + accountRegistration.RegisterAccountAt = dbAccountRegistration._RegisterAccountAt; + // Security. + accountRegistration.AccountPasswordSalt = dbAccountRegistration._AccountPasswordSalt; + accountRegistration.AccountPasswordHash = dbAccountRegistration._AccountPasswordHash; + // Common. + accountRegistration.Notes = dbAccountRegistration._Notes; + accountRegistration.Status = SacsSystem.GetStatusForCode(dbAccountRegistration._Status); + accountRegistration.SetCreateStamp(dbAccountRegistration._CreateOn, new SysId(dbAccountRegistration._CreateBy), dbAccountRegistration._CreateHost); + accountRegistration.SetUpdateStamp(dbAccountRegistration._UpdateOn, new SysId(dbAccountRegistration._UpdateBy), dbAccountRegistration._UpdateHost); + accountRegistration.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Item column definitions. + private static readonly String aliasAccountRegistration = "Acr"; + private void SetAccountRegistrationColDfn + (ColumnDfn col, String caption, int width, SbmDbDfn_Control.ColumnIdx dbCol, + ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, + String alias = "", String prefix = "") + { + if (String.IsNullOrEmpty(alias) && SbmDbDfn_Control.GetTableForColumn(dbCol) == SbmDbDfn_Control.TableIdx.AccountRegistration) + alias = aliasAccountRegistration; + col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn_Control.GetColumnName(dbCol, false), SbmDbDfn_Control.GetColumnNameQual(dbCol, alias), dataType, align); + if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn_Control.ColumnIdx.Unknown) + col.MaxLength = (int)SbmDbDfn_Control.GetColTextLen(dbCol); + } + //------------------------------------------------------------------- + // Item column definition. + public override ColumnDfn GetAccountRegistrationColumnDfn(SbmcAccountRegistration.Column columnId, string caption = "", int width = 0) + { + ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); + switch (columnId) + { + case SbmcAccountRegistration.Column.Pos: + SetAccountRegistrationColDfn(columnDfn, "Pos", 45, SbmDbDfn_Control.ColumnIdx.Unknown, ColumnAlignment.Right); + columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; + columnDfn.ReadOnly = true; + columnDfn.Resizable = false; + break; + case SbmcAccountRegistration.Column.Id: + SetAccountRegistrationColDfn(columnDfn, "Id", 60, SbmDbDfn_Control.ColumnIdx.AccountRegistration_Id, ColumnAlignment.Right, DataValue.DataType.Long); + columnDfn.ReadOnly = true; + break; + + // AccountRegistration Properties. + case SbmcAccountRegistration.Column.EmailAddress: + SetAccountRegistrationColDfn(columnDfn, "Email", 120, SbmDbDfn_Control.ColumnIdx.AccountRegistration_EmailAddress); + columnDfn.ReadOnly = true; + break; + case SbmcAccountRegistration.Column.FirstName: + SetAccountRegistrationColDfn(columnDfn, "FirstName", 100, SbmDbDfn_Control.ColumnIdx.AccountRegistration_FirstName); + break; + case SbmcAccountRegistration.Column.LastName: + SetAccountRegistrationColDfn(columnDfn, "LastName", 100, SbmDbDfn_Control.ColumnIdx.AccountRegistration_LastName); + break; + case SbmcAccountRegistration.Column.PhoneMain: + SetAccountRegistrationColDfn(columnDfn, "Phone main", 100, SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneMain); + break; + case SbmcAccountRegistration.Column.PhoneAlt: + SetAccountRegistrationColDfn(columnDfn, "Phone alt", 100, SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneAlt); + break; + + // Registration. + case SbmcAccountRegistration.Column.InstanceContext: + SetAccountRegistrationColDfn(columnDfn, "Instance context", 100, SbmDbDfn_Control.ColumnIdx.AccountRegistration_InstanceContext); + columnDfn.ReadOnly = true; + break; + case SbmcAccountRegistration.Column.RequestAccountAt: + SetAccountRegistrationColDfn(columnDfn, "Account requested", 120, SbmDbDfn_Control.ColumnIdx.AccountRegistration_RequestAccountAt, ColumnAlignment.Center, DataValue.DataType.DateTime); + columnDfn.ReadOnly = true; + break; + case SbmcAccountRegistration.Column.RegisterAccountToken: + SetAccountRegistrationColDfn(columnDfn, "Registration token", 120, SbmDbDfn_Control.ColumnIdx.AccountRegistration_RegisterAccountToken); + columnDfn.ReadOnly = true; + break; + case SbmcAccountRegistration.Column.RegisterAccountAt: + SetAccountRegistrationColDfn(columnDfn, "Account registered", 120, SbmDbDfn_Control.ColumnIdx.AccountRegistration_RegisterAccountAt, ColumnAlignment.Center, DataValue.DataType.DateTime); + columnDfn.ReadOnly = true; + break; + + // Common. + case SbmcAccountRegistration.Column.Notes: + SetAccountRegistrationColDfn(columnDfn, "Notes", 200, SbmDbDfn_Control.ColumnIdx.AccountRegistration_Notes); + break; + case SbmcAccountRegistration.Column.Status: + SetAccountRegistrationColDfn(columnDfn, "Status", 50, SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status, ColumnAlignment.Center); + break; + case SbmcAccountRegistration.Column.Status_Desc: + SetAccountRegistrationColDfn(columnDfn, "Status", 50, SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status, ColumnAlignment.Center); + break; + case SbmcAccountRegistration.Column.Status_Ind: + SetAccountRegistrationColDfn(columnDfn, "Status", 50, SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status, ColumnAlignment.Center, DataValue.DataType.TriState); + columnDfn.TriStateFormat = ColumnTriStateFormat.Lights; + break; + case SbmcAccountRegistration.Column.CreateOn_Date: + SetAccountRegistrationColDfn(columnDfn, "Created", 65, SbmDbDfn_Control.ColumnIdx.AccountRegistration_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date); + columnDfn.ReadOnly = true; + break; + case SbmcAccountRegistration.Column.UpdateOn_Date: + SetAccountRegistrationColDfn(columnDfn, "Updated", 65, SbmDbDfn_Control.ColumnIdx.AccountRegistration_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date); + columnDfn.ReadOnly = true; + break; + } + if (!String.IsNullOrEmpty(caption)) + columnDfn.Caption = caption; + if (width > 0) + columnDfn.Width = width; + return columnDfn; + } + + //------------------------------------------------------------------- + // Item query filter. + public override List GetAccountRegistrationQueryFilter(SbmcAccountRegistration.Params prm) + { + List filter = new List(); + String colId = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Id, aliasAccountRegistration); + String colEmail = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_EmailAddress, aliasAccountRegistration); + + // AccountRegistration Id. + if (prm.IdsIncluded.HasValidIds()) + filter.Add($"{colId} IN ({prm.IdsIncluded.Concat(",")})"); + if (prm.IdsExcluded.HasValidIds()) + filter.Add($"{colId} NOT IN ({prm.IdsExcluded.Concat(",")})"); + + // Generic search. + if (!StringUtil.IsBlank(prm.Search)) + { + String colFirstName = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_FirstName, aliasAccountRegistration); + String colLastName = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_LastName, aliasAccountRegistration); + String colPhoneMain = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneMain, aliasAccountRegistration); + String colPhoneAlt = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneAlt, aliasAccountRegistration); + foreach (String search in Regex.Split(prm.Search, "[\\s,;\\-+]+")) + { + if (StringUtil.IsBlank(search)) continue; + String searchForLike = DbQuery.FormatForLike(search, true); + List searchFilter = new List(); + searchFilter.Add($"{colEmail} LIKE '%{searchForLike}%'"); + searchFilter.Add($"{colFirstName} LIKE '%{searchForLike}%'"); + searchFilter.Add($"{colLastName} LIKE '%{searchForLike}%'"); + searchFilter.Add($"{colPhoneMain} LIKE '%{searchForLike}%'"); + searchFilter.Add($"{colPhoneAlt} LIKE '%{searchForLike}%'"); + filter.Add(searchFilter.Concat(" OR ", "(", ")")); + } + } + + // Email. + if (!StringUtil.IsBlank(prm.EmailAddress)) + filter.Add($"{colEmail}='{DbQuery.FormatForCondition(prm.EmailAddress)}'"); + + // Token. + if (prm.RegisterAccountToken != Guid.Empty) + { + String colToken = SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_RegisterAccountToken, aliasAccountRegistration); + filter.Add($"{colToken}='{prm.RegisterAccountToken.ToString()}'"); + } + + // Common Properties. + + // Notes. + if (!StringUtil.IsEmpty(prm.NotesPartial)) + filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Notes, aliasAccountRegistration) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); + + // Status. + String statusFilter = GetAccountRegistrationStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusFilter)) + filter.Add($"{SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status, aliasAccountRegistration)}{statusFilter}"); + + if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); + return filter; + } + internal static String GetAccountRegistrationStatusCatFilterCondition(SbmcAccountRegistration.StatusCat statusCat) + { + if (statusCat == SbmcAccountRegistration.StatusCat.AwaitingOnly) + return $"='{SacsSystem.GetStatusCode(SaStatus.Awaiting)}'"; + if (statusCat == SbmcAccountRegistration.StatusCat.CompletedOnly) + return $"='{SacsSystem.GetStatusCode(SaStatus.Completed)}'"; + if (statusCat == SbmcAccountRegistration.StatusCat.CancelledOnly) + return $"='{SacsSystem.GetStatusCode(SaStatus.Cancelled)}'"; + if (statusCat == SbmcAccountRegistration.StatusCat.NotDeleted) + return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'"; + if (statusCat == SbmcAccountRegistration.StatusCat.DeletedOnly) + return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'"; + return ""; + } + + //------------------------------------------------------------------- + // Item sort columns. + public List GetAccountRegistrationSortColumns(SbmcAccountRegistration.Params prm) + { + // Sort sequence: + List sortColumnNames = new List(); + foreach (var columnDfn in prm.SortColumns) + { + // Need to ensure correct alias used for AccountRegistration columns in case of conflict. + String sortCol = String.Empty; + if (SbmDbDfn_Control.GetTableForColumn((SbmDbDfn_Control.ColumnIdx)columnDfn.DbColumn) == SbmDbDfn_Control.TableIdx.AccountRegistration) + { + sortCol = SbmDbDfn_Control.GetColumnNameQual((SbmDbDfn_Control.ColumnIdx)columnDfn.DbColumn, aliasAccountRegistration); + } + else + { + sortCol = columnDfn.DataName; + if (!StringUtil.IsEmpty(columnDfn.SortDataName)) + sortCol = columnDfn.SortDataName; + } + if (!sortCol.IsEmpty()) + { + DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls + sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", ")); + } + } + sortColumnNames.RemoveBlanks(); + if (sortColumnNames.IsEmpty()) + { + // Default sort columns: + sortColumnNames.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Id, aliasAccountRegistration) + " DESC"); + } + return sortColumnNames; + } + + //------------------------------------------------------------------- + // Item count. + private long GetAccountRegistrationCount(String filter) + { + ClearErrorState(); + return db.GetRowCount(SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.AccountRegistration) + " As " + aliasAccountRegistration, filter); + } + public override long GetAccountRegistrationCount(SbmcAccountRegistration.Params prm) + { + ClearErrorState(); + return GetAccountRegistrationCount(GetAccountRegistrationQueryFilter(prm).Concat(" AND ", "(", ")")); + } + + //------------------------------------------------------------------- + // Item list. + public override List GetAccountRegistrationList(SbmcAccountRegistration.Params prm) + { + ClearErrorState(); + List addresses = new List(); + DbQuery qry = new DbQuery(db.DbmsType); + qry.Tables.Add(SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.AccountRegistration), aliasAccountRegistration); + AccountRegistration_Db dbAccountRegistration = new AccountRegistration_Db(DbInfo); + qry.Columns.AddRange(dbAccountRegistration.ExistingColumnNames); + qry.Filters.AddRange(GetAccountRegistrationQueryFilter(prm)); + qry.OrderBy.AddRange(GetAccountRegistrationSortColumns(prm)); + // Query data. + using (var dbConnection = db.CreateConnection()) + using (var dbCommand = dbConnection.CreateCommand()) + { + try + { + dbConnection.Open(); + dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging); + using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) + { + while (dbDataReader.Read()) + { + dbAccountRegistration = new AccountRegistration_Db(DbInfo); + dbAccountRegistration.PopulateFrom(dbDataReader); + addresses.Add(CreateAccountRegistration(dbAccountRegistration)); + } + } + } + catch (Exception exc) + { + SetErrorState(Msg_DatabaseQueryException); + SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); + } + } + return addresses; + } + + //------------------------------------------------------------------- + // Item query execution. + public override DbResultSet ExecuteAccountRegistrationQuery(List columns, SbmcAccountRegistration.Params prm) + { + ClearErrorState(); + + //--------------------------------------------------------------- + // Construct query. + DbQuery query = new DbQuery(db.DbmsType); + query.Tables.Add(SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.AccountRegistration), aliasAccountRegistration); + + // AccountRegistration Properties - add columns as defined in query list. + if (columns.HasId(SbmcAccountRegistration.Column.Id)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Id, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.EmailAddress)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_EmailAddress, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.FirstName)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_FirstName, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.LastName)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_LastName, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.PhoneMain)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneMain, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.PhoneAlt)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_PhoneAlt, aliasAccountRegistration)); + + // Registration. + if (columns.HasId(SbmcAccountRegistration.Column.InstanceContext)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_InstanceContext, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.RequestAccountAt)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_RequestAccountAt, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.RegisterAccountToken)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_RegisterAccountToken, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.RegisterAccountAt)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_RegisterAccountAt, aliasAccountRegistration)); + + // Common. + if (columns.HasId(SbmcAccountRegistration.Column.Notes)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Notes, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.Status) || columns.HasId(SbmcAccountRegistration.Column.Status_Desc) || columns.HasId(SbmcAccountRegistration.Column.Status_Ind)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_Status, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.CreateOn_Date)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_CreateOn, aliasAccountRegistration)); + if (columns.HasId(SbmcAccountRegistration.Column.UpdateOn_Date)) + query.Columns.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.AccountRegistration_UpdateOn, aliasAccountRegistration)); + + //--------------------------------------------------------------- + // Populate filter. + query.Filters.AddRange(GetAccountRegistrationQueryFilter(prm)); + + if (prm.IdsIncluded.Count != 1) + { + // Configure sort sequence. + foreach (String sortColumn in GetAccountRegistrationSortColumns(prm)) + query.OrderBy.Add(sortColumn); + } + + //--------------------------------------------------------------- + //return new DbResultSet_DataTableReader(db, query.BuildQuery()); + return DbResultSet_DataReader.ExecuteQuery(db, query.BuildQuery(prm.ResultsPaging)); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-UserAccount.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-UserAccount.cs index d39b80d..89df392 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-UserAccount.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas-UserAccount.cs @@ -1,13 +1,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -23,7 +17,7 @@ using System.Text.RegularExpressions; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { //======================================================================= - // Control - Account Manager - UserAccounts. + // Control - Account Manager - User Accounts. //======================================================================= partial class SbmcAccountMgr_Dbas { @@ -40,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Create UserAccount. + // Create Item. public override SbmcUserAccount CreateUserAccount() { return new SbmcUserAccount_Dbas(null, 0); @@ -54,7 +48,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Get UserAccount. + // Get Item. public override SbmcUserAccount GetUserAccount(SbmcUserAccount.Params prm) { return GetUserAccount(GetUserAccountQueryFilter(prm).Concat(" AND ", "(", ")")); @@ -66,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple UserAccountes found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmcUserAccount userAccount = null; @@ -83,7 +77,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("UserAccount query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -91,7 +85,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Validate UserAccount. + // Validate Item. public override bool IsValidUserAccountData(SbmcUserAccount.Data data, SbmcUserAccount.ErrField errField) { ClearErrorState(); @@ -100,7 +94,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Insert UserAccount. + // Insert UserAItemccount. public override bool InsertUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -126,11 +120,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Update UserAccount. + // Update Item. public override bool UpdateUserAccount(SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -164,11 +158,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Delete UserAccount. + // Delete Item. public override bool UserAccountCanBeDeleted(SbmcUserAccount userAccount) { ClearErrorState(); @@ -197,11 +191,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Copy data properties to and from userAccount. + // Copy data properties to and from Item. private void PopulateTo(UserAccount_Db dbUserAccount, SbmcUserAccount userAccount, DbUpdateInfo dbUpdateInfo) { dbUserAccount._Id = userAccount.Id.ToInt(); @@ -266,7 +260,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount column definitions. + // Item column definitions. private static readonly String aliasUserAccount = "Uac"; private void SetUserAccountColDfn (ColumnDfn col, String caption, int width, SbmDbDfn_Control.ColumnIdx dbCol, @@ -280,7 +274,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr col.MaxLength = (int)SbmDbDfn_Control.GetColTextLen(dbCol); } //------------------------------------------------------------------- - // Getting prmUserAccount column definition. + // Item column definition. public override ColumnDfn GetUserAccountColumnDfn(SbmcUserAccount.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); @@ -377,7 +371,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount query filter. + // Item query filter. public override List GetUserAccountQueryFilter(SbmcUserAccount.Params prm) { List filter = new List(); @@ -424,8 +418,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.UserAccount_Notes, aliasUserAccount) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); // Status. - if (prm.StatusCat == SbmcUserAccount.StatusCat.ActiveOnly) - filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.UserAccount_Status, aliasUserAccount) + " = '" + StatusActive + "'"); + String statusFilter = GetUserAccountStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusFilter)) + filter.Add($"{SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.UserAccount_Status, aliasUserAccount)}{statusFilter}"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; @@ -444,7 +439,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount sort columns. + // Item sort columns. public List GetUserAccountSortColumns(SbmcUserAccount.Params prm) { // Sort sequence: @@ -479,7 +474,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount count. + // Item count. private long GetUserAccountCount(String filter) { ClearErrorState(); @@ -492,7 +487,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount list. + // Item list. public override List GetUserAccountList(SbmcUserAccount.Params prm) { ClearErrorState(); @@ -523,7 +518,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("UserAccount query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -531,7 +526,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // UserAccount query execution. + // Item query execution. public override DbResultSet ExecuteUserAccountQuery(List columns, SbmcUserAccount.Params prm) { ClearErrorState(); diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas.cs index 8fb032c..5f4da48 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcAccountMgr_Dbas.cs @@ -1,6 +1,4 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Core; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.BusinessMgr.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Base.Dbas; diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Owner.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Owner.cs index 16bc765..cb352d1 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Owner.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Owner.cs @@ -1,13 +1,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -40,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Create Owner. + // Create Item. public override SbmcOwner CreateOwner() { return new SbmcOwner_Dbas(null, 0); @@ -54,7 +48,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Get Owner. + // Get Item. public override SbmcOwner GetOwner(SbmcOwner.Params prm) { return GetOwner(GetOwnerQueryFilter(prm).Concat(" AND ", "(", ")")); @@ -66,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Owneres found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmcOwner owner = null; @@ -83,7 +77,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Owner query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -91,7 +85,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Validate Owner. + // Validate Item. public override bool IsValidOwnerData(SbmcOwner.Data data, SbmcOwner.ErrField errField) { ClearErrorState(); @@ -100,7 +94,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Insert Owner. + // Insert Item. public override bool InsertOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -126,11 +120,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Update Owner. + // Update Item. public override bool UpdateOwner(SbmcOwner owner, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -146,7 +140,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { try { - // Retrieve Owner. + // Retrieve Item. dbConnection.Open(); Owner_Db dbOwner = new Owner_Db(DbInfo); dbOwner.PopulateFrom(dbCommand, aliasOwner, $"Id={SysId.ToString(owner.Id)}"); @@ -164,11 +158,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Delete Owner. + // Delete Item. public override bool OwnerCanBeDeleted(SbmcOwner owner) { ClearErrorState(); @@ -197,11 +191,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Copy data properties to and from owner. + // Copy data properties to and from Item. private void PopulateTo(Owner_Db dbOwner, SbmcOwner owner, DbUpdateInfo dbUpdateInfo) { dbOwner._Id = owner.Id.ToInt(); @@ -241,7 +235,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner column definitions. + // Item column definitions. private static readonly String aliasOwner = "Onr"; private static readonly String colOwner_Repository_Count = "Onr_Rpo_Count"; private void SetOwnerColDfn @@ -256,7 +250,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr col.MaxLength = (int)SbmDbDfn_Control.GetColTextLen(dbCol); } //------------------------------------------------------------------- - // Getting prmOwner column definition. + // Item column definition. public override ColumnDfn GetOwnerColumnDfn(SbmcOwner.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); @@ -327,7 +321,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner query filter. + // Item query filter. public override List GetOwnerQueryFilter(SbmcOwner.Params prm) { List filter = new List(); @@ -363,8 +357,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Owner_Notes, aliasOwner) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); // Status. - if (prm.StatusCat == SbmcOwner.StatusCat.ActiveOnly) - filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Owner_Status, aliasOwner) + " = '" + StatusActive + "'"); + String statusFilter = GetOwnerStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusFilter)) + filter.Add($"{SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Owner_Status, aliasOwner)}{statusFilter}"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; @@ -385,7 +380,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner sort columns. + // Item sort columns. public List GetOwnerSortColumns(SbmcOwner.Params prm) { // Sort sequence: @@ -420,7 +415,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner count. + // Item count. private long GetOwnerCount(String filter) { ClearErrorState(); @@ -433,7 +428,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner list. + // Item list. public override List GetOwnerList(SbmcOwner.Params prm) { ClearErrorState(); @@ -464,7 +459,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Owner query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -472,7 +467,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Owner query execution. + // Item query execution. public override DbResultSet ExecuteOwnerQuery(List columns, SbmcOwner.Params prm) { ClearErrorState(); diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Repository.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Repository.cs index ad34577..39af636 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Repository.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas-Repository.cs @@ -1,13 +1,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -40,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Create Repository. + // Create Item. public override SbmcRepository CreateRepository() { return new SbmcRepository_Dbas(null, 0); @@ -54,7 +48,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Get Repository. + // Get Item. public override SbmcRepository GetRepository(SbmcRepository.Params prm) { return GetRepository(GetRepositoryQueryFilter(prm).Concat(" AND ", "(", ")")); @@ -66,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Repositories found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmcRepository repository = null; @@ -83,7 +77,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Repository query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -91,7 +85,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Validate Repository. + // Validate Item. public override bool IsValidRepositoryData(SbmcRepository.Data data, SbmcRepository.ErrField errField) { ClearErrorState(); @@ -100,7 +94,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Insert Repository. + // Insert Item. public override bool InsertRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -126,11 +120,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Update Repository. + // Update Item. public override bool UpdateRepository(SbmcRepository repository, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -164,11 +158,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Delete Repository. + // Delete Item. public override bool RepositoryCanBeDeleted(SbmcRepository repository) { ClearErrorState(); @@ -197,11 +191,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Copy data properties to and from repository. + // Copy data properties to and from Item. private void PopulateTo(Repository_Db dbRepository, SbmcRepository repository, DbUpdateInfo dbUpdateInfo) { dbRepository._Id = repository.Id.ToInt(); @@ -245,7 +239,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository column definitions. + // Item column definitions. private static readonly String aliasRepository = "Rpo"; private static readonly String aliasRepository_Owner = "Rpo_Onr"; private static readonly String prefixRepository_Owner = aliasRepository_Owner + "_"; @@ -261,7 +255,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr col.MaxLength = (int)SbmDbDfn_Control.GetColTextLen(dbCol); } //------------------------------------------------------------------- - // Getting prmRepository column definition. + // Item column definition. public override ColumnDfn GetRepositoryColumnDfn(SbmcRepository.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); @@ -351,7 +345,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository query filter. + // Item query filter. public override List GetRepositoryQueryFilter(SbmcRepository.Params prm) { List filter = new List(); @@ -399,8 +393,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Repository_Notes, aliasRepository) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); // Status. - if (prm.StatusCat == SbmcRepository.StatusCat.ActiveOnly) - filter.Add(SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Repository_Status, aliasRepository) + " = '" + StatusActive + "'"); + String statusFilter = GetRepositoryStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusFilter)) + filter.Add($"{SbmDbDfn_Control.GetColumnNameQual(SbmDbDfn_Control.ColumnIdx.Repository_Status, aliasRepository)}{statusFilter}"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; @@ -421,7 +416,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository sort columns. + // Item sort columns. public List GetRepositorySortColumns(SbmcRepository.Params prm) { // Sort sequence: @@ -456,7 +451,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository count. + // Item count. private long GetRepositoryCount(String filter) { ClearErrorState(); @@ -469,7 +464,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository list. + // Item list. public override List GetRepositoryList(SbmcRepository.Params prm) { ClearErrorState(); @@ -500,7 +495,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Repository query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -508,7 +503,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Repository query execution. + // Item query execution. public override DbResultSet ExecuteRepositoryQuery(List columns, SbmcRepository.Params prm) { ClearErrorState(); diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas.cs index e7c4985..49598d1 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcInstanceMgr_Dbas.cs @@ -1,6 +1,4 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Core; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.BusinessMgr.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Base.Dbas; diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas-ItemParam.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas-ItemParam.cs index 16eb316..c9ae324 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas-ItemParam.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas-ItemParam.cs @@ -1,13 +1,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal.Control; -using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -23,7 +17,7 @@ using System.Text.RegularExpressions; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { //======================================================================= - // Control - Item Manager - ItemParams. + // Control - Item Manager - Item Params. //======================================================================= partial class SbmcItemMgr_Dbas { @@ -42,7 +36,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Create item. + // Create Item. public override SbmcItemParam CreateItemParam(ItemId itemId) { return new SbmcItemParam_Dbas(null, itemId, 0); @@ -56,7 +50,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Get item. + // Get Item. public override SbmcItemParam GetItemParam(SbmcItemParam.Params prm) { return GetItemParam(GetItemParamQueryFilter(prm).Concat(" AND ", "(", ")")); @@ -68,7 +62,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple ItemParames found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmcItemParam itemParam = null; @@ -85,7 +79,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("ItemParam query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -93,7 +87,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Validate item. + // Validate Item. public override bool IsValidItemParamData(SbmcItemParam.Data data, SbmcItemParam.ErrField errField) { ClearErrorState(); @@ -102,7 +96,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //------------------------------------------------------------------- - // Insert item. + // Insert Item. public override bool InsertItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -128,11 +122,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Update item. + // Update Item. public override bool UpdateItemParam(SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); @@ -166,11 +160,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Delete item. + // Delete Item. public override bool ItemParamCanBeDeleted(SbmcItemParam itemParam) { ClearErrorState(); @@ -199,11 +193,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- - // Copy data properties to and from item. + // Copy data properties to and from Item. private void PopulateTo(ItemParam_Db dbItemParam, SbmcItemParam itemParam, DbUpdateInfo dbUpdateInfo) { dbItemParam._Id = itemParam.Id.ToInt(); @@ -494,7 +488,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("ItemParam query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas.cs index 8a064de..6bbec21 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/Control/SbmcItemMgr_Dbas.cs @@ -1,6 +1,4 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Core; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.BusinessMgr.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Base.Dbas; diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Address.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Address.cs index 23ad2c2..6f907a6 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Address.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Address.cs @@ -41,7 +41,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { // Check that this is the only primary address for the item. ClearErrorState(); - if (addressPrimary == null) return SetErrorState("item not specified"); + if (addressPrimary == null) return SetErrorState(Msg_ItemNotSpecified); if (!SysId.IsValid(addressPrimary.Id)) return SetErrorState("invalid item id"); if (!addressPrimary.IsPrimary) return SetErrorState("address is not primary"); if (Database == null) return SetErrorState("database not available"); @@ -71,7 +71,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -115,7 +115,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("Data item manager is not available"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -158,7 +158,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Addresses found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAddress address = null; @@ -175,7 +175,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -218,7 +218,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -256,7 +256,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -289,7 +289,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -393,7 +393,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasAddress; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmAddress column definition. @@ -750,7 +750,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Affiliate.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Affiliate.cs index fe288f8..6c3c51f 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Affiliate.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Affiliate.cs @@ -1,5 +1,7 @@ -using Sarand.BusinessMgr.Net.Standard.Base.App; +using Org.BouncyCastle.Asn1.Cmp; +using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; @@ -149,7 +151,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("Data item manager is not available"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -179,7 +181,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Contacts found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAffiliate affiliate = null; @@ -196,7 +198,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -313,7 +315,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -351,7 +353,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -384,7 +386,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -498,7 +500,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasAffiliate; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmAffiliate column definition. @@ -916,23 +918,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filter.Add($"{colAffiliate_Notes} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'"); // Status. - if (prm.StatusCat != SbmAffiliate.StatusCat.Any) - { - String colStatus = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Status, aliasAffiliate); - if (prm.StatusCat == SbmAffiliate.StatusCat.CurrentOnly) - filter.Add($"{colStatus}='{StatusCurrent}'"); - else if (prm.StatusCat == SbmAffiliate.StatusCat.OnHoldOnly) - filter.Add($"{colStatus}='{SacsSystem.GetStatusCode(SaStatus.OnHold)}'"); - else if (prm.StatusCat == SbmAffiliate.StatusCat.NotDeleted) - filter.Add($"{colStatus}!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'"); - else if (prm.StatusCat == SbmAffiliate.StatusCat.DeletedOnly) - filter.Add($"{colStatus}='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'"); - } + String statusCatCondition = GetAffiliateStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusCatCondition)) + filter.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_Status, aliasAffiliate)}{statusCatCondition}"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; } + internal static String GetAffiliateStatusCatFilterCondition(SbmAffiliate.StatusCat statusCat) + { + if (statusCat == SbmAffiliate.StatusCat.CurrentOnly) + return $"='{StatusCurrent}'"; + else if (statusCat == SbmAffiliate.StatusCat.OnHoldOnly) + return $"='{StatusOnHold}'"; + else if (statusCat == SbmAffiliate.StatusCat.NotDeleted) + return $"!='{StatusDeleted}'"; + else if (statusCat == SbmAffiliate.StatusCat.DeletedOnly) + return $"='{StatusDeleted}'"; + return ""; + } + //------------------------------------------------------------------- // Affiliate sort columns. public List GetAffiliateSortColumns(SbmAffiliate.Params prm) @@ -1029,7 +1035,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association-Utils.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association-Utils.cs new file mode 100644 index 0000000..ac47f00 --- /dev/null +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association-Utils.cs @@ -0,0 +1,258 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; +using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; +using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.CodeTypes; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Interfaces; +using Sarand.Net.Standard.Base.ItemDocs; +using Sarand.Net.Standard.Base.Utils; +using Sarand.Net.Standard.Dbas.Data; +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; +using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; + +namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr +{ + //======================================================================= + // Account manager - Associations - Utilities. + //======================================================================= + partial class SbmAccountMgr_Dbas + { + //------------------------------------------------------------------- + // Utilities. + private List GetLogProperties(SbmAssociation association) + { + return new List() + { + new StringPair("Id",SysId.ToString(association.Id)), + new StringPair("Code",association.Code), + new StringPair("Status",association.StatusCode) + }; + } + + //------------------------------------------------------------------- + // Association types in use. + public override List GetAssociationTypesInUse() + { + List types = new List(); + String colAssociation_Type = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Association_Type); + // Construct the query. + DbQuery qry = new DbQuery(Database.DbmsType); + qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); + qry.Columns.Add("DISTINCT " + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type), colAssociation_Type); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + AffiliateId_Owner.ToString()); + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.BuildQuery())) + { + if (dbResultSet != null && dbResultSet.NextRecord()) + { + NamedValue.Map values = dbResultSet.GetRecordValues(); + types.Add((Sbm.AssociationType)values.GetValue(colAssociation_Type).AsLong()); + } + } + return types; + } + + //------------------------------------------------------------------- + // Internal associations. + public override HashSet GetInternalAssociationAffiliateIdsOwner() + { + ClearErrorState(); + HashSet affiliateIdsOwner = new HashSet(); + String colAffIdOwner = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Association_AffIdOwner); + SbmAssociation.Params prmAssociation = new SbmAssociation.Params(); + prmAssociation.AssociationType = AssociationType.Internal; + prmAssociation.StatusCat = SbmAssociation.StatusCat.Active; + // Construct the query. + DbQuery qry = new DbQuery(Database.DbmsType); + qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation); + qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type, aliasAssociation), colAffIdOwner); + qry.Filters.AddRange(GetAssociationQueryFilter(prmAssociation)); + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.BuildQuery())) + { + if (dbResultSet != null && dbResultSet.NextRecord()) + { + NamedValue.Map values = dbResultSet.GetRecordValues(); + SysId affiliteIdOwner = new SysId(values.GetValue(colAffIdOwner).AsLong()); + if (SysId.IsValid(affiliteIdOwner)) + affiliateIdsOwner.Add(affiliteIdOwner); + } + } + return affiliateIdsOwner; + } + + public override List GetMemberTargetIds(SysId affiliateIdOwner) + { + List affiliateIncludeIds = new List(); + List affiliateExcludeIds = new List(); + return GetTargetIds(affiliateIdOwner, Sbm.AssociationType.Member, affiliateIncludeIds, affiliateExcludeIds); + } + public override List GetCustomerTargetIds(List affiliateIncludeIds, List affiliateExcludeIds) + { + return GetTargetIds(AffiliateId_Owner, Sbm.AssociationType.Customer, affiliateIncludeIds, affiliateExcludeIds); + } + public List GetTargetIds(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIncludeIds, List affiliateExcludeIds) + { + List affiliateIdsTarget = new List(); + if (Database == null) return affiliateIdsTarget; + bool validConfig = true; + if (!SysId.IsValid(affiliateIdOwner) || (int)associationType < 1) + { +#if _DEBUG + SATRACE("SapAssociationMgr_Odbc::GetTargetIds Invalid owner or association type.\n"); +#endif + validConfig = false; + } + else if (associationType == Sbm.AssociationType.Customer || associationType == Sbm.AssociationType.Supplier) + { + if (affiliateIdOwner != AffiliateId_Owner) + { +#if _DEBUG + SATRACE("SapAssociationMgr_Odbc::GetTargetIds Invalid customer/supplier owner.\n"); +#endif + validConfig = false; + } + } + if (validConfig) + { + String colAffiliateIdTarget = "AffIdTgt"; + DbQuery qry = new DbQuery(Database.DbmsType); + qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); + qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget), colAffiliateIdTarget); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + affiliateIdOwner.ToString()); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type) + "=" + ((int)associationType).ToString()); + if (affiliateIncludeIds.Count > 0) + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " IN(" + affiliateIncludeIds.Concat(",") + ")"); + if (affiliateExcludeIds.Count > 0) + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " NOT IN(" + affiliateExcludeIds.Concat(",") + ")"); + + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.ToString())) + { + if (dbResultSet != null && dbResultSet.NextRecord()) + { + NamedValue.Map values = dbResultSet.GetRecordValues(); + affiliateIdsTarget.Add(new SysId(StringUtil.ToInt(values.GetValue(colAffiliateIdTarget)))); + } + } + } + return affiliateIdsTarget; + } + public override List GetCustomerAssocIdsForTargets(List affiliateIdsTarget) + { + return GetAssocIdsForTargets(AffiliateId_Owner, Sbm.AssociationType.Customer, affiliateIdsTarget); + } + public override List GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIdsTarget) + { + List associations = new List(); + if (Database == null) return associations; + bool validConfig = true; + if (!SysId.IsValid(affiliateIdOwner) || (int)associationType < 1) + { +#if _DEBUG + SATRACE("SapAssociationMgr_Odbc::GetAssocIdsForTargets Invalid owner or association type.\n"); +#endif + validConfig = false; + } + else if (associationType == Sbm.AssociationType.Customer || associationType == Sbm.AssociationType.Supplier) + { + if (affiliateIdOwner != AffiliateId_Owner) + { +#if _DEBUG + SATRACE("SapAssociationMgr_Odbc::GetAssocIdsForTargets Invalid customer/supplier owner.\n"); +#endif + validConfig = false; + } + } + if (validConfig) + { + String colAssociationId = "AssocId"; + DbQuery qry = new DbQuery(Database.DbmsType); + qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); + qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id), colAssociationId); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + affiliateIdOwner.ToString()); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type) + "=" + ((int)associationType).ToString()); + qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " IN " + affiliateIdsTarget.Concat(",")); + + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.ToString())) + { + if (dbResultSet != null && dbResultSet.NextRecord()) + { + NamedValue.Map values = dbResultSet.GetRecordValues(); + associations.Add(new SysId(StringUtil.ToInt(values.GetValue(colAssociationId)))); + } + } + } + return associations; + } + + //------------------------------------------------------------------- + // Associated data. + public override bool AssociationHasTransactions(SysId associationId) + { + if (!SysId.IsValid(associationId)) return false; + String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_AssocId)}={associationId}"; + return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), filter) > 0; + } + public override bool AssociationHasRequirements(SysId associationId) + { + if (!SysId.IsValid(associationId)) return false; + String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_AssocId)}={associationId}"; + return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), filter) > 0; + } + public override bool AssociationHasConstituents(SysId associationId) + { + if (!SysId.IsValid(associationId)) return false; + String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_AssocId)}={associationId}"; + return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), filter) > 0; + } + public override bool AssociationIsDeliveryContractor(SysId associationId) + { + // Is associated with transaction for delivery. + if (!SysId.IsValid(associationId)) return false; + String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_AssIdDeliver)}={associationId}"; + return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), filter) > 0; + } + public override bool ClearAssociationDependentData(SbmAssociation association, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (association == null || !SysId.IsValid(association.Id)) return false; + + // Delete interface data items. + if (!HasErrorState()) + { + if (InterfaceConsole != null) + { + if (!InterfaceConsole.ClearInterfaceDataItems(association.GetItemId(), DbUpdateInfo)) + SetErrorState("Failed to clear interface data items - " + InterfaceConsole.ErrorStateMessage); + } + else SetErrorState("failed to initialise interface console"); + } + // Remove document references + if (!HasErrorState()) + { + if (ItemDocConsole != null) + { + if (!ItemDocConsole.ClearItemDocs(association.GetItemId(), DbUpdateInfo)) + SetErrorState(ItemDocConsole.ErrorStateMessage); + } + else SetErrorState("Failed to retrieve item document console"); + } + // Remove data item references. + if (!HasErrorState()) + { + if (!DataItemMgr.ClearDataItem(association.GetItemId(), dbUpdateInfo)) + SetErrorState(DataItemMgr.ErrorStateMessage); + } + return OK; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association.cs index 611274d..97dfcef 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-Association.cs @@ -16,6 +16,7 @@ using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; +using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -25,202 +26,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr partial class SbmAccountMgr_Dbas { //------------------------------------------------------------------- - // Utilities - Association List Target. - private List GetLogProperties(SbmAssociation association) - { - return new List() - { - new StringPair("Id",SysId.ToString(association.Id)), - new StringPair("Code",association.Code), - new StringPair("Status",association.StatusCode) - }; - } - - public override List GetAssociationTypesInUse() - { - List types = new List(); - // Construct the query. - DbQuery qry = new DbQuery(Database.DbmsType); - qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); - qry.Columns.Add("DISTINCT " + SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type)); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + AffiliateId_Owner.ToString()); - using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.ToString())) - { - if (dbResultSet != null && dbResultSet.NextRecord()) - { - NamedValue.Map values = dbResultSet.GetRecordValues(); - types.Add((Sbm.AssociationType)values.GetValue(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Association_Type)).AsLong()); - } - } - return types; - } - public override List GetMemberTargetIds(SysId affiliateIdOwner) - { - List affiliateIncludeIds = new List(); - List affiliateExcludeIds = new List(); - return GetTargetIds(affiliateIdOwner, Sbm.AssociationType.Member, affiliateIncludeIds, affiliateExcludeIds); - } - public override List GetCustomerTargetIds(List affiliateIncludeIds, List affiliateExcludeIds) - { - return GetTargetIds(AffiliateId_Owner, Sbm.AssociationType.Customer, affiliateIncludeIds, affiliateExcludeIds); - } - public List GetTargetIds(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIncludeIds, List affiliateExcludeIds) - { - List affiliateIdsTarget = new List(); - if (Database == null) return affiliateIdsTarget; - bool validConfig = true; - if (!SysId.IsValid(affiliateIdOwner) || (int)associationType < 1) - { -#if _DEBUG - SATRACE("SapAssociationMgr_Odbc::GetTargetIds Invalid owner or association type.\n"); -#endif - validConfig = false; - } - else if (associationType == Sbm.AssociationType.Customer || associationType == Sbm.AssociationType.Supplier) - { - if (affiliateIdOwner != AffiliateId_Owner) - { -#if _DEBUG - SATRACE("SapAssociationMgr_Odbc::GetTargetIds Invalid customer/supplier owner.\n"); -#endif - validConfig = false; - } - } - if (validConfig) - { - String colAffiliateIdTarget = "AffIdTgt"; - DbQuery qry = new DbQuery(Database.DbmsType); - qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); - qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget), colAffiliateIdTarget); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + affiliateIdOwner.ToString()); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type) + "=" + ((int)associationType).ToString()); - if (affiliateIncludeIds.Count > 0) - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " IN(" + affiliateIncludeIds.Concat(",") + ")"); - if (affiliateExcludeIds.Count > 0) - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " NOT IN(" + affiliateExcludeIds.Concat(",") + ")"); - - using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.ToString())) - { - if (dbResultSet != null && dbResultSet.NextRecord()) - { - NamedValue.Map values = dbResultSet.GetRecordValues(); - affiliateIdsTarget.Add(new SysId(StringUtil.ToInt(values.GetValue(colAffiliateIdTarget)))); - } - } - } - return affiliateIdsTarget; - } - public override List GetCustomerAssocIdsForTargets(List affiliateIdsTarget) - { - return GetAssocIdsForTargets(AffiliateId_Owner, Sbm.AssociationType.Customer, affiliateIdsTarget); - } - public override List GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List affiliateIdsTarget) - { - List associations = new List(); - if (Database == null) return associations; - bool validConfig = true; - if (!SysId.IsValid(affiliateIdOwner) || (int)associationType < 1) - { -#if _DEBUG - SATRACE("SapAssociationMgr_Odbc::GetAssocIdsForTargets Invalid owner or association type.\n"); -#endif - validConfig = false; - } - else if (associationType == Sbm.AssociationType.Customer || associationType == Sbm.AssociationType.Supplier) - { - if (affiliateIdOwner != AffiliateId_Owner) - { -#if _DEBUG - SATRACE("SapAssociationMgr_Odbc::GetAssocIdsForTargets Invalid customer/supplier owner.\n"); -#endif - validConfig = false; - } - } - if (validConfig) - { - String colAssociationId = "AssocId"; - DbQuery qry = new DbQuery(Database.DbmsType); - qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association)); - qry.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Id), colAssociationId); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdOwner) + "=" + affiliateIdOwner.ToString()); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Type) + "=" + ((int)associationType).ToString()); - qry.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_AffIdTarget) + " IN " + affiliateIdsTarget.Concat(",")); - - using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(Database, qry.ToString())) - { - if (dbResultSet != null && dbResultSet.NextRecord()) - { - NamedValue.Map values = dbResultSet.GetRecordValues(); - associations.Add(new SysId(StringUtil.ToInt(values.GetValue(colAssociationId)))); - } - } - } - return associations; - } - - //------------------------------------------------------------------- - // Associated data. - public override bool AssociationHasTransactions(SysId associationId) - { - if (!SysId.IsValid(associationId)) return false; - String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_AssocId)}={associationId}"; - return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), filter) > 0; - } - public override bool AssociationHasRequirements(SysId associationId) - { - if (!SysId.IsValid(associationId)) return false; - String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_AssocId)}={associationId}"; - return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), filter) > 0; - } - public override bool AssociationHasConstituents(SysId associationId) - { - if (!SysId.IsValid(associationId)) return false; - String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Constituent_AssocId)}={associationId}"; - return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Constituent), filter) > 0; - } - public override bool AssociationIsDeliveryContractor(SysId associationId) - { - // Is associated with transaction for delivery. - if (!SysId.IsValid(associationId)) return false; - String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_AssIdDeliver)}={associationId}"; - return Database.GetRowCount(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction), filter) > 0; - } - public override bool ClearAssociationDependentData(SbmAssociation association, DbUpdateInfo dbUpdateInfo) - { - ClearErrorState(); - if (association == null || !SysId.IsValid(association.Id)) return false; - - // Delete interface data items. - if (!HasErrorState()) - { - if (InterfaceConsole != null) - { - if (!InterfaceConsole.ClearInterfaceDataItems(association.GetItemId(), DbUpdateInfo)) - SetErrorState("Failed to clear interface data items - " + InterfaceConsole.ErrorStateMessage); - } - else SetErrorState("failed to initialise interface console"); - } - // Remove document references - if (!HasErrorState()) - { - if (ItemDocConsole != null) - { - if (!ItemDocConsole.ClearItemDocs(association.GetItemId(), DbUpdateInfo)) - SetErrorState(ItemDocConsole.ErrorStateMessage); - } - else SetErrorState("Failed to retrieve item document console"); - } - // Remove data item references. - if (!HasErrorState()) - { - if (!DataItemMgr.ClearDataItem(association.GetItemId(), dbUpdateInfo)) - SetErrorState(DataItemMgr.ErrorStateMessage); - } - return !HasErrorState(); - } - - //------------------------------------------------------------------- - // Create Association. + // Create Item. public override SbmAssociation CreateAssociation(SysId affiliateIdOwner, Sbm.AssociationType associationType, SysId affiliateIdTarget) { return new SbmAssociation_Dbas(null, affiliateIdOwner, associationType, affiliateIdTarget, 0); @@ -246,7 +52,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Associations found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAssociation association = null; @@ -263,7 +69,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -365,7 +171,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -403,7 +209,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -436,7 +242,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -747,7 +553,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasAssociation; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmAssociation column definition. @@ -1789,20 +1595,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filterTrans.Add(colTransaction_InProgress + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.TransactionActiveTo, 1))); } } - // Check whether a Transaction status has been specified: - String transtatuscatPending = TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Pending); - String transtatuscatOpen = TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Open); - String transtatuscatClosed = TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed); - if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotDeleted) - filterTrans.Add(colTransaction_Status + "<>'" + StatusDeleted + "'"); - else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.Completed) - filterTrans.Add(colTransaction_Status + "='" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Completed) + "'"); - else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotClosed) - filterTrans.Add(colTransaction_StatusCat + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'"); - else if (prm.TransactionStatusCat == SbmTransaction.StatusCat.NotCancelled) - filterTrans.Add(colTransaction_Status + "<>'" + StatusCancelled + "'"); - else if (!StringUtil.IsEmpty(TransactionStatusCats.GetCodeForType(prm.TransactionStatusCat))) - filterTrans.Add(colTransaction_StatusCat + "='" + TransactionStatusCats.GetCodeForType(prm.TransactionStatusCat) + "'"); + // Transaction status. + filterTrans.Add(SbmTransactionMgr_Dbas.GetTransactionStatusCatFilter(prm.TransactionStatusCat, "", TransactionStatusCats)); + filterTrans.RemoveBlanks(); filterTrans.RemoveDuplicatesCI(); if (!filterTrans.IsEmpty()) { @@ -1864,12 +1659,32 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } // Status. - if (prm.StatusCat == SbmAssociation.StatusCat.Active) - filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Status, aliasAssociation) + " = '" + StatusActive + "'"); + String statusCatCondition = GetAssociationStatusCatFilterCondition(prm.StatusCat); + if (!StringUtil.IsBlank(statusCatCondition)) + filter.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Association_Status, aliasAssociation)}{statusCatCondition}"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; } + + internal static String GetAssociationStatusCatFilterCondition(SbmAssociation.StatusCat statusCat) + { + if (statusCat == SbmAssociation.StatusCat.CurrentOnly) + return $"='{StatusCurrent}'"; + else if (statusCat == SbmAssociation.StatusCat.OnHoldOnly) + return $"='{StatusOnHold}'"; + else if (statusCat == SbmAssociation.StatusCat.Active) + return $" In('{StatusCurrent}','{StatusOnHold}')"; + else if (statusCat == SbmAssociation.StatusCat.DisabledOnly) + return $"='{StatusDisabled}'"; + else if (statusCat == SbmAssociation.StatusCat.NotDeleted) + return $"!='{StatusDeleted}'"; + else if (statusCat == SbmAssociation.StatusCat.DeletedOnly) + return $"='{StatusDeleted}'"; + return ""; + } + + //------------------------------------------------------------------- // Association sort columns. public List GetAssociationSortColumns(SbmAssociation.Params prm) { @@ -1927,7 +1742,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr DbQuery qry = new DbQuery(Database.DbmsType); qry.Tables.Add(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Association), aliasAssociation); Association_Db dbAssociation = new Association_Db(DbInfo); - qry.Columns.AddRange(dbAssociation.ExistingColumnNames); + qry.Columns.AddRange(dbAssociation.ExistingColumnNames.Select(col => $"[{col}]")); qry.Filters.AddRange(GetAssociationQueryFilter(prm)); qry.OrderBy.AddRange(GetAssociationSortColumns(prm)); // Query data. @@ -1950,7 +1765,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SysParam.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SysParam.cs index 7d9c57c..fea0e11 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SysParam.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SysParam.cs @@ -60,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Sys Params found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmSysParam sysParam = null; @@ -77,7 +77,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -120,7 +120,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -158,7 +158,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -191,7 +191,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -202,9 +202,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr dbSysParam._Cat = (short)sysparam.Category; dbSysParam._Name = sysparam.Name; dbSysParam._Value = sysparam.Value; - dbSysParam._AffIdOwner = sysparam.AffiliateIdOwner.ToInt(); - dbSysParam._AffIdTarget = sysparam.AffiliateIdTarget.ToInt(); - dbSysParam._AssocId = sysparam.AssociationId.ToInt(); + dbSysParam._AffIdOwner = SysId.ToInt(sysparam.AffiliateIdOwner); + dbSysParam._AffIdTarget = SysId.ToInt(sysparam.AffiliateIdTarget); + dbSysParam._AssocId = SysId.ToInt(sysparam.AssociationId); // Common properties. //dbSysParam._Notes = sysparam.Notes; dbSysParam._Status = SacsSystem.GetStatusCode(sysparam.Status); @@ -250,7 +250,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasSysParam; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmSysParam column definition. @@ -455,7 +455,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccount.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccount.cs index d2b640e..7810e51 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccount.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccount.cs @@ -83,7 +83,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple System Accounts found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmSystemAccount systemAccount = null; @@ -100,7 +100,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -143,7 +143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -181,7 +181,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -214,7 +214,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -282,7 +282,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasSystemAccount; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting SystemAccount column definition. @@ -504,7 +504,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccountUser.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccountUser.cs index cb69f5d..2dc69eb 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccountUser.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemAccountUser.cs @@ -60,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple System Account Users found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmSystemAccountUser SystemAccountUser = null; @@ -77,7 +77,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -114,7 +114,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -153,7 +153,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -186,7 +186,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -242,7 +242,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasSystemAccountUser; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting SystemAccountUser column definition. @@ -475,7 +475,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemUser.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemUser.cs index de2a43f..d02b42a 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemUser.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAccountMgr_Dbas-SystemUser.cs @@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple System Users found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmSystemUser SystemUser = null; @@ -80,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -123,7 +123,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -161,7 +161,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -194,7 +194,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -259,7 +259,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasSystemUser; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting SystemUser column definition. @@ -485,7 +485,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Asset.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Asset.cs index 0658b88..5ad64cc 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Asset.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Asset.cs @@ -108,7 +108,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("Failed to retrieve interface console"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -137,7 +137,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } SetErrorState(ProcessMgr.ErrorStateMessage); - return !HasErrorState(); + return OK; } public override bool PopulateAssetDefaultProcesses(SbmAsset asset) { @@ -150,7 +150,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr // Store this list of processes against this asset. if (!HasErrorState()) StoreAssetProcesses(asset, itemProcesses); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -210,7 +210,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr // Store these details. if (!DataItemMgr.StoreFromItemLinks(Sbm.ItemLinkType.ItemPrice, asset.GetItemId(), itemLinks, DbUpdateInfo)) SetErrorState("Failed to save asset price item links - " + DataItemMgr.ErrorStateMessage); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -226,7 +226,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Assets found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAsset asset = null; @@ -243,7 +243,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -305,7 +305,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -343,7 +343,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -376,7 +376,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -503,7 +503,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasAsset; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataCategoryId, align); if (dataCategoryId == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -798,7 +798,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetCategory.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetCategory.cs index 6e5bbc8..b9fcc6c 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetCategory.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetCategory.cs @@ -79,7 +79,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("Failed to retrieve interface console"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -96,7 +96,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr ClearErrorState(); if (!ProcessMgr.UpdateProcessesForItem(assetCategory.GetItemId(), itemProcesses, dbUpdateInfo)) SetErrorState(ProcessMgr.ErrorStateMessage); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -112,7 +112,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Asset Categories found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAssetCategory assetCategory = null; @@ -129,7 +129,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -232,7 +232,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -270,7 +270,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -303,7 +303,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -382,7 +382,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = AliasAssetCategory; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmAssetCategory column definition. @@ -596,7 +596,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetProcess.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetProcess.cs index ffd3452..ce62326 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetProcess.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-AssetProcess.cs @@ -49,7 +49,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Asset Processes found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmAssetProcess assetProcess = null; @@ -66,7 +66,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -128,7 +128,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -166,7 +166,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -199,7 +199,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -256,7 +256,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasAssetProcess; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prmAssetProcess column definition. @@ -428,7 +428,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Vehicle.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Vehicle.cs index 353e499..cca0558 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Vehicle.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-Vehicle.cs @@ -50,7 +50,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Vehicles found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmVehicle vehicle = null; @@ -67,7 +67,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -126,7 +126,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -164,7 +164,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -197,7 +197,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -304,7 +304,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasVehicle; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prm column definition. @@ -647,7 +647,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleClass.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleClass.cs index bb6d8db..c961b4d 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleClass.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleClass.cs @@ -128,7 +128,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Vehicle Classes found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmVehicleClass vehicleClass = null; @@ -145,7 +145,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -216,7 +216,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -254,7 +254,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -287,7 +287,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -372,7 +372,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasVehicleClass; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -648,7 +648,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleEvent.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleEvent.cs index 52ff0ec..bd5ee57 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleEvent.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleEvent.cs @@ -49,7 +49,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Vehicle Events found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmVehicleEvent vehicleEvent = null; @@ -66,7 +66,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -128,7 +128,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -166,7 +166,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -199,7 +199,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -274,7 +274,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasVehicleEvent; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prm column definition. @@ -499,7 +499,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleFeature.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleFeature.cs index e0957bf..82fd324 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleFeature.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmAssetMgr_Dbas-VehicleFeature.cs @@ -143,7 +143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Vehicle Features found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmVehicleFeature vehicleFeature = null; @@ -160,7 +160,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -218,7 +218,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -256,7 +256,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -289,7 +289,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -348,7 +348,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasVehicleFeature; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting prm column definition. @@ -548,7 +548,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity-Utils.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity-Utils.cs index 64e5c3e..151d683 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity-Utils.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity-Utils.cs @@ -199,8 +199,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ProductCode), commodity.Code, true); Database.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filter.Concat(" And ", "(", ")")); if (Database.HasErrorState()) - SetErrorState($"{Database.ErrorStateMessage}."); - return !HasErrorState(); + SetErrorState($"{Database.ErrorStateMessage.TrimEnd('.')}."); + return OK; } //------------------------------------------------------------------- @@ -279,7 +279,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (itemLinks != null) itemLinks.Clear(); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -315,7 +315,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (commodity.ItemProcesses != null) commodity.ItemProcesses.Clear(); // Copy all items from the specified list. commodity.ItemProcesses = itemProcessesNew.Clone(); - return !HasErrorState(); + return OK; } public override bool CommitCommodityProcesses(SbmCommodity commodity) { @@ -323,7 +323,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (commodity.ItemProcesses == null) return true; if (!ProcessMgr.StoreItemProcesses(commodity.GetItemId(), commodity.ItemProcesses, DbUpdateInfo)) SetErrorState(ProcessMgr.ErrorStateMessage); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity.cs index c401aef..53c1286 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Commodity.cs @@ -139,7 +139,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr public override bool UpdateReferencesToSalesTemplate(SbmCommodity commodity) { ClearErrorState(); - if (commodity == null) return SetErrorState("item not specified"); + if (commodity == null) return SetErrorState(Msg_ItemNotSpecified); // Build update query to refresh all commodities that refer to this template. List filters = new List(); @@ -189,7 +189,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (Database.HasErrorState()) SetErrorState($"{Database.ErrorStateMessage}"); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -575,7 +575,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Commodities found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmCommodity commodity = null; @@ -592,7 +592,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -649,7 +649,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -687,7 +687,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -720,7 +720,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -1066,7 +1066,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasCommodity; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting Commodity column definition. @@ -2691,7 +2691,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommodityCustomer.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommodityCustomer.cs index c335d71..5a27172 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommodityCustomer.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommodityCustomer.cs @@ -55,7 +55,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } public override bool StoreCommodityCustomersForCommodity(SysId commodityId, List commodityCustomers) @@ -68,7 +68,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr List commodityCustomersCopy = commodityCustomers; } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } public override bool StoreCommodityCustomersForCustomer(SysId assocIdCustomer, List commodityCustomers) @@ -81,7 +81,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr List commodityCustomersCopy = commodityCustomers; } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } public override bool Store(SbmCommodityCustomer commodityCustomer) @@ -108,7 +108,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } public override bool ClearCustomersForCommodity(SysId commodityId) @@ -126,7 +126,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } public override bool ClearCommoditiesForCustomer(SysId assocCustomerId) @@ -143,7 +143,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } else SetErrorState(msg_UnableToManageCommodityCustomers); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -159,7 +159,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Commodity Customer found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmCommodityCustomer prmCommodityCustomer = null; @@ -176,7 +176,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -227,7 +227,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -265,7 +265,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -298,7 +298,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -365,7 +365,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasCommodityCustomer; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } public override ColumnDfn GetCommodityCustomerColumnDfn(SbmCommodityCustomer.Column columnId, string caption = "", int width = 0) { @@ -614,7 +614,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommoditySupplier.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommoditySupplier.cs index 06cfbc9..2dfaa9d 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommoditySupplier.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-CommoditySupplier.cs @@ -52,7 +52,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Commodity Suppliers found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmCommoditySupplier commoditySupplier = null; @@ -69,7 +69,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -108,7 +108,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr foreach (SbmCommoditySupplier commoditySupplier in commoditySuppliers) { } - return !HasErrorState(); + return OK; } public override bool Store(SbmCommoditySupplier commoditySupplier) @@ -118,7 +118,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (Database != null && Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.CommoditySupplier))) { } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -142,7 +142,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -180,7 +180,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -213,7 +213,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -276,7 +276,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasCommoditySupplier; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } public override ColumnDfn GetCommoditySupplierColumnDfn(SbmCommoditySupplier.Column columnId, string caption = "", int width = 0) { @@ -515,7 +515,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Container.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Container.cs index 55b9dc8..5891173 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Container.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-Container.cs @@ -91,7 +91,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Container found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmContainer container = null; @@ -108,7 +108,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -165,7 +165,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -203,7 +203,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -236,7 +236,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -310,7 +310,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasContainer; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting Container column definition. @@ -602,7 +602,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-ContainerItem.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-ContainerItem.cs index 802bc29b..c97fbb0 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-ContainerItem.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-ContainerItem.cs @@ -84,7 +84,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple ContainerItem found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmContainerItem containerItem = null; @@ -101,7 +101,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -152,7 +152,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -190,7 +190,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -223,7 +223,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -300,7 +300,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasContainerItem; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting ContainerItem column definition. @@ -684,7 +684,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-PortfolioItem.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-PortfolioItem.cs index dd2d219..7e37309 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-PortfolioItem.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmCommodityMgr_Dbas-PortfolioItem.cs @@ -1,6 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Dbas.Bus; using Sarand.BusinessMgr.Net.Standard.Dbas.Internal; using Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog; @@ -16,7 +15,6 @@ using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm.Config; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -236,7 +234,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (!UpdatePortfolioItem(portfolioItem, DbUpdateInfo)) SetErrorState(ErrorStateMessage); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -297,7 +295,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (Database.HasErrorState()) return SetErrorState(Database.ErrorStateMessage); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -327,7 +325,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Portfolio Items found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmPortfolioItem portfolioItem = null; @@ -344,7 +342,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -390,7 +388,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -431,7 +429,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -507,7 +505,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr // Update the item's sequence. portfolioItem.Sequence = sequencePrev; } - return !HasErrorState(); + return OK; } public override bool MoveItemDown(SbmPortfolioItem portfolioItem, DbUpdateInfo dbUpdateInfo) { @@ -563,7 +561,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr // Update the item's sequence. portfolioItem.Sequence = sequenceNext; } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -599,7 +597,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -671,7 +669,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasPortfolioItem; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting PortfolioItem column definition. @@ -986,7 +984,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemBatch.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemBatch.cs index 912b648..25a5b9e 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemBatch.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemBatch.cs @@ -46,7 +46,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Item Batches found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmItemBatch itemBatch = null; @@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -125,7 +125,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -163,7 +163,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -196,7 +196,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -255,7 +255,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasItemBatch; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -443,7 +443,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink-Utils.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink-Utils.cs index 9806933..32a6f49 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink-Utils.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink-Utils.cs @@ -83,7 +83,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr SATRACE("\nSapDataItemMgr_Odbc::DoDbCleanup\n\tParent items found: " + String(iParentItemsFound) + "\n\tRows modified: " + String(iRowsModified) + "\n\n"); //--------------------------------------------------------------- }*/ - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -145,7 +145,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr return SetErrorState($"Failed to store associated items - {DataItemMgr.ErrorStateMessage}"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink.cs index 0057a7d..3b86bb5 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmDataItemMgr_Dbas-ItemLink.cs @@ -34,7 +34,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Item Links found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmItemLink itemLink = null; @@ -51,7 +51,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -123,7 +123,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -161,7 +161,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -222,7 +222,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("failed to add link"); } - return !HasErrorState(); + return OK; } public override bool StoreToItemLinks(Sbm.ItemLinkType itemLinkType, ItemId itemIdTo, List itemLinks, DbUpdateInfo dbUpdateInfo) @@ -274,7 +274,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("failed to add link"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -307,7 +307,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -370,7 +370,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasItemLink; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting ItemLink column definition. @@ -567,7 +567,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-Price.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-Price.cs index 20413d5..0994396 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-Price.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-Price.cs @@ -46,7 +46,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Prices found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmPrice price = null; @@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -116,7 +116,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -155,7 +155,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -188,7 +188,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -255,7 +255,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasPrice; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataCategoryId, align); if (dataCategoryId == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -505,7 +505,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-PriceSet.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-PriceSet.cs index c46c13c..ccea53e 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-PriceSet.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmPriceMgr_Dbas-PriceSet.cs @@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Price Sets found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmPriceSet priceSet = null; @@ -80,7 +80,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -138,7 +138,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -176,7 +176,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -209,7 +209,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -269,7 +269,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasPriceSet; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataCategoryId, align); if (dataCategoryId == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -477,7 +477,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmProcessMgr_Dbas-Process.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmProcessMgr_Dbas-Process.cs index 7e948ab..36e1d57 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmProcessMgr_Dbas-Process.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmProcessMgr_Dbas-Process.cs @@ -14,7 +14,6 @@ using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; -using static Sarand.BusinessMgr.Net.Standard.Base.Bus.SbmProcess; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -43,13 +42,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (!SysId.IsValid(processId)) return false; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Process, processId)); - prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Fixed_Unit)); - prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Fixed_Job)); - prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Labour_Unit)); - prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcessCostCode.Labour_Job)); + prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcess.SbmProcessCostCode.Fixed_Unit)); + prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcess.SbmProcessCostCode.Fixed_Job)); + prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcess.SbmProcessCostCode.Labour_Unit)); + prmItemData.DataTypesIncluded.Add(GetItemDataCodeForProcessCostCode(SbmProcess.SbmProcessCostCode.Labour_Job)); return ItemDataConsole.ItemDataExists(prmItemData); } - public override bool ProcessHasCostCodes(SysId processId, SbmProcessCostCode processCostCode) + public override bool ProcessHasCostCodes(SysId processId, SbmProcess.SbmProcessCostCode processCostCode) { ClearErrorState(); // Identify process code type code. @@ -65,7 +64,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } private const String processCodeDelim = ","; - public override List GetProcessCostCodes(SysId processId, SbmProcessCostCode processCostCode) + public override List GetProcessCostCodes(SysId processId, SbmProcess.SbmProcessCostCode processCostCode) { List costCodes = new List(); ClearErrorState(); @@ -87,7 +86,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } return costCodes; } - public override bool StoreProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, List costCodes, DbUpdateInfo dbUpdateInfo) + public override bool StoreProcessCostCodes(SbmProcess process, SbmProcess.SbmProcessCostCode processCostCode, List costCodes, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!costCodes.Any()) return ClearProcessCostCodes(process, processCostCode, dbUpdateInfo); @@ -117,9 +116,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr SetErrorState(ItemDataConsole.ErrorStateMessage); } } - return !HasErrorState(); + return OK; } - public override bool ClearProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, DbUpdateInfo dbUpdateInfo) + public override bool ClearProcessCostCodes(SbmProcess process, SbmProcess.SbmProcessCostCode processCostCode, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); // Identify process code type code. @@ -129,7 +128,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (!ItemDataConsole.ClearItemData(process.GetItemId(), itemDataTypeCode, dbUpdateInfo)) SetErrorState(ItemDataConsole.ErrorStateMessage); } - return !HasErrorState(); + return OK; } public override bool ClearAllProcessCostCodes(SbmProcess process, DbUpdateInfo dbUpdateInfo) { @@ -137,7 +136,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (process == null || !SysId.IsValid(process.Id)) return false; if (!ItemDataConsole.ClearItemData(process.GetItemId(), dbUpdateInfo)) SetErrorState(ItemDataConsole.ErrorStateMessage); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -161,11 +160,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr public override bool ClearProcessAssociatedData(SbmProcess process, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); - if (process == null || !SysId.IsValid(process.Id)) return SetErrorState("item not specified"); + if (process == null || !SysId.IsValid(process.Id)) return SetErrorState(Msg_ItemNotSpecified); // Clear Item data records. if (!ItemDataConsole.ClearItemData(process.GetItemId(), dbUpdateInfo)) SetErrorState(ItemDataConsole.ErrorStateMessage); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -223,7 +222,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Asset Processes found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmProcess prmProcess = null; @@ -240,7 +239,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -309,7 +308,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -347,7 +346,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -380,7 +379,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -437,7 +436,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasProcess; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting Process column definition. @@ -642,7 +641,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Location.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Location.cs index 992bb19..6fb00c0 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Location.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Location.cs @@ -76,7 +76,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Commodity Customer found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmLocation location = null; @@ -93,7 +93,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -150,7 +150,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -188,7 +188,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -221,7 +221,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -277,7 +277,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasLocation; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -498,7 +498,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Movement.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Movement.cs index d60570b..6f0957b 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Movement.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-Movement.cs @@ -76,7 +76,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr SetErrorState($"{Database.ErrorStateMessage}"); // ToDo CalculateStockLevels(commodityIds); > in Stock-MgrDbas - return !HasErrorState(); + return OK; } public override bool ClearMovementsForSourceItem(Sbm.ItemType itemType, SysId itemId) @@ -113,7 +113,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr Database.ExecuteDelete(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Movement), filtersSourceItem.Concat(" AND ", "(", ")")); // ToDo CalculateStockLevels(commodityIds); > in Stock-MgrDbas - return !HasErrorState(); + return OK; } // Check for references to source item. @@ -139,7 +139,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Movement found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmMovement movement = null; @@ -156,7 +156,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -213,7 +213,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -251,7 +251,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -284,7 +284,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -361,7 +361,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasMovement; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -833,7 +833,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-StockLevel.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-StockLevel.cs index 2a10abb..1e59f26 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-StockLevel.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas-StockLevel.cs @@ -8,13 +8,11 @@ using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Utils; -using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Data; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; -using static Sarand.Net.Standard.Dbas.Base.DatabaseDefinitionGenerator; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -49,7 +47,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple StockLevel found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmStockLevel stockLevel = null; @@ -66,7 +64,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -123,7 +121,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -161,7 +159,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -194,7 +192,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -263,7 +261,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasStockLevel; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -566,7 +564,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas.cs index dcc436a..05c9b59 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmStockMgr_Dbas.cs @@ -12,7 +12,6 @@ using Sarand.Net.Standard.Dbas.Base; using System; using System.Collections.Generic; using System.Linq; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm.Config; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -322,7 +321,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } //--------------------------------------------------------------------- - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Constituent.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Constituent.cs index ebb5783..69edd9a 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Constituent.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Constituent.cs @@ -322,7 +322,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Constituent found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmConstituent prmituent = null; @@ -339,7 +339,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -401,7 +401,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -439,7 +439,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -472,7 +472,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -601,7 +601,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasConstituent; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -963,7 +963,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Requirement.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Requirement.cs index 3845306..5287cf4 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Requirement.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Requirement.cs @@ -202,7 +202,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr public override bool ClearRequirementDependentData(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); - if (requirement == null||!SysId.IsValid(requirement.Id)) return SetErrorState(Msg_InvalidItemSpecified); + if (requirement == null || !SysId.IsValid(requirement.Id)) return SetErrorState(Msg_InvalidItemSpecified); // Clear any references to this requirement from other requirements. if (!HasErrorState()) ClearRequirementAssociatedRequirements(requirement, dbUpdateInfo); @@ -237,27 +237,27 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr SetErrorState(msg); } } - return !HasErrorState(); + return OK; } public override bool ClearRequirementAssociatedRequirements(SbmRequirement requirement, DbUpdateInfo dbUpdateInfo) { // Clear ReqntIdSource for any requirements that reference this one. ClearErrorState(); - if (requirement == null||!SysId.IsValid(requirement.Id)) return SetErrorState(Msg_InvalidItemSpecified); + if (requirement == null || !SysId.IsValid(requirement.Id)) return SetErrorState(Msg_InvalidItemSpecified); String filter = $"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource)}={SysId.ToLong(requirement.Id)}"; List values = new List(); SacsDatabase.AddValuePair(values, SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Requirement_ReqntIdSource), "0", false); Database.ExecuteUpdate(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Requirement), values, filter); if (Database.HasErrorState()) SetErrorState("Failed to clear requirement references"); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- public override bool CalculateTotal(SbmRequirement.Data requirement) { ClearErrorState(); - if (requirement == null) return SetErrorState("item not specified"); + if (requirement == null) return SetErrorState(Msg_ItemNotSpecified); int decimalsCurrency = 2; // Calculate intermediate amounts. @@ -287,7 +287,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr requirement.TaxRate = rateTax; requirement.AmountTax = Math.Round(amountTax, decimalsCurrency); requirement.AmountTot = Math.Round(amountTot, decimalsCurrency); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -397,7 +397,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { ClearErrorState(); // Do not attempt any updates unless the list has been populated. - if (requirement == null || !SysId.IsValid(requirement.Id)||requirement.Processes == null) return true; + if (requirement == null || !SysId.IsValid(requirement.Id) || requirement.Processes == null) return true; // Make a copy of the process list so that we can track those that have been updated. List itemProcesses = new List(requirement.Processes); @@ -449,7 +449,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } else SetErrorState("failed to create constituent - " + TransactionMgr.ErrorState); } - return !HasErrorState(); + return OK; } // Item Process - Constituent Interface. @@ -471,7 +471,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr public override bool SetTaxCode(SbmRequirement requirement, DateTime effective) { ClearErrorState(); - if (requirement == null) return SetErrorState("item not specified"); + if (requirement == null) return SetErrorState(Msg_ItemNotSpecified); if (!effective.IsValid()) return SetErrorState("invalid effective date specified"); // Locate the specified tax code in the list: @@ -492,7 +492,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } if (taxCodeApplicable != null) requirement.TaxCodeId = taxCodeApplicable.Id; - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -517,7 +517,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Requirements found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmRequirement prmRequirement = null; @@ -534,7 +534,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -596,7 +596,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -634,7 +634,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -666,7 +666,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -854,7 +854,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasRequirement; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -2307,7 +2307,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction-Utils.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction-Utils.cs index be43a8c..65df0fa 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction-Utils.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction-Utils.cs @@ -178,7 +178,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr ChangeTransactionsAssociation(transaction, transaction.AssociationId); // To reset changes. } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -190,7 +190,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr ClearErrorState(); if (transaction == null || !SysId.IsValid(transaction.Id)) return false; if (!HasErrorState()) CommitTransactionPayments(transaction, dbUpdateInfo); - return !HasErrorState(); + return OK; } public override bool TransactionHasPayments(SysId transactionId) { diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction.cs index 5b00244..4528b3f 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas-Transaction.cs @@ -7,7 +7,6 @@ using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Data; @@ -16,8 +15,6 @@ using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text.RegularExpressions; -using System.Transactions; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { @@ -158,7 +155,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } // Clean-up: requirementsNotUpdated.Clear(); - return !HasErrorState(); + return OK; } public override bool RefreshAssociatedData(SbmTransaction transaction, List requirements, DbUpdateInfo dbUpdateInfo) @@ -184,7 +181,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr UpdateTransaction(transaction, dbUpdateInfo); else SetErrorState(transaction.ErrorStateMessage); } - return !HasErrorState(); + return OK; } // Refresh associated transactions (eg. stock allocations on associated sames order when dispatch updated and stock actioned by dispatch). @@ -226,7 +223,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -481,7 +478,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (Database.HasErrorState()) SetErrorState($"{Database.ErrorStateMessage}"); } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -497,7 +494,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr if (count == 0) return null; if (count != 1) { - SetErrorState("Multiple Transactions found"); + SetErrorState(Msg_MultipleItemsFound); return null; } SbmTransaction prmTransaction = null; @@ -514,7 +511,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } @@ -607,7 +604,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -645,7 +642,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -655,7 +652,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr ClearErrorState(); if (!base.TransactionCanBeDeleted(transaction)) return false; - if (transaction == null) return SetErrorState("item not specified"); + if (transaction == null) return SetErrorState(Msg_ItemNotSpecified); // Associated transactions. if (TransactionIsReferencedByOtherTransactions(transaction.Id)) return SetErrorState("linked transactions are present"); @@ -706,7 +703,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { SetErrorState(exc.Message); } } - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- @@ -895,7 +892,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr alias = aliasTransaction; col.Set(caption, width, (int)dbCol, prefix + SbmDbDfn.GetColumnName(dbCol, false), SbmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SbmDbDfn.ColumnIdx.Unknown) - col.MaxLength = (int)SbmDbDfn.GetColTextLen(dbCol); + col.MaxLength = (int)Internals.GetColTextLen(dbCol); } //------------------------------------------------------------------- @@ -1366,8 +1363,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr String colTransaction_RefInt = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_RefInt, tableAlias); String colTransaction_RefExt = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_RefExt, tableAlias); String colTransaction_DescBrief = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_DescBrief, tableAlias); - String colTransaction_StatusCat = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat, tableAlias); - String colTransaction_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, tableAlias); String colTransaction_Notes = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Notes, tableAlias); //--------------------------------------------------------------- @@ -1565,16 +1560,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr filter.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_LocationIdStock, tableAlias) + "=" + SysId.ToString(prm.LocationIdStock)); // Transaction Status. - if (prm.StatusCat == SbmTransaction.StatusCat.NotDeleted) - filter.Add(colTransaction_Status + "<>'" + StatusDeleted + "'"); - else if (prm.StatusCat == SbmTransaction.StatusCat.Completed) - filter.Add(colTransaction_Status + "='" + StatusCompleted + "'"); - else if (prm.StatusCat == SbmTransaction.StatusCat.NotClosed) - filter.Add(colTransaction_StatusCat + "<>'" + TransactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed) + "'"); - else if (prm.StatusCat == SbmTransaction.StatusCat.NotCancelled) - filter.Add(colTransaction_Status + "<>'" + StatusCancelled + "'"); - else if (!StringUtil.IsEmpty(TransactionStatusCats.GetCodeForType(prm.StatusCat))) - filter.Add(colTransaction_StatusCat + "='" + TransactionStatusCats.GetCodeForType(prm.StatusCat) + "'"); + String statusCatCondition = GetTransactionStatusCatFilter(prm.StatusCat, tableAlias, TransactionStatusCats); + if (!StringUtil.IsBlank(statusCatCondition)) + filter.Add(statusCatCondition); //--------------------------------------------------------------- // Raised date. @@ -1776,6 +1764,24 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr return filter; } + internal static String GetTransactionStatusCatFilter(SbmTransaction.StatusCat statusCat, String aliasTransaction, List transactionStatusCats) + { + String colTransaction_StatusCat = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_StatusCat, aliasTransaction); + String colTransaction_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Transaction_Status, aliasTransaction); + + if (statusCat == SbmTransaction.StatusCat.NotDeleted) + return $"{colTransaction_Status}<>'{StatusDeleted}'"; + else if (statusCat == SbmTransaction.StatusCat.Completed) + return $"{colTransaction_Status}='{StatusCompleted}'"; + else if (statusCat == SbmTransaction.StatusCat.NotClosed) + return $"{colTransaction_StatusCat}<>'{transactionStatusCats.GetCodeForType(SbmTransaction.StatusCat.Closed)}'"; + else if (statusCat == SbmTransaction.StatusCat.NotCancelled) + return $"{colTransaction_Status}<>'{StatusCancelled}'"; + else if (!StringUtil.IsBlank(transactionStatusCats.GetCodeForType(statusCat))) + return $"{colTransaction_StatusCat}='{transactionStatusCats.GetCodeForType(statusCat)}'"; + return ""; + } + //------------------------------------------------------------------- // Sort columns. public List GetTransactionSortColumns(SbmTransaction.Params prm) @@ -1857,7 +1863,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr } catch (Exception exc) { - SetErrorState("Database query exception"); + SetErrorState(Msg_DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } diff --git a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas.cs b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas.cs index d733c66..205742b 100644 --- a/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas.cs +++ b/SaBusMgrStandardDbas/Dbas/Mgr/SbmTransactionMgr_Dbas.cs @@ -1,6 +1,5 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Dbas.Data; @@ -14,7 +13,6 @@ using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Data; using System; using System.Collections.Generic; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr { diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Address.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Address.cs index 7f59167..9355ba5 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Address.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Address.cs @@ -79,7 +79,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Address_Notes, address.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Address_Status, SacsSystem.GetStatusCode(address.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Affiliate.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Affiliate.cs index bfebca5..415ebda 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Affiliate.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Affiliate.cs @@ -78,7 +78,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Affiliate_Notes, affiliate.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Affiliate_Status, affiliate.StatusCode, newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Asset.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Asset.cs index 19c1b88..81f3d93 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Asset.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Asset.cs @@ -81,7 +81,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaAsset_Notes, asset.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaAsset_Status, SacsSystem.GetStatusCode(asset.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetCategory.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetCategory.cs index 5e25db5..853e3cf 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetCategory.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetCategory.cs @@ -69,7 +69,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaAssetCategory_Notes, assetCategory.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaAssetCategory_Status, SacsSystem.GetStatusCode(assetCategory.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetProcess.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetProcess.cs index f004e46..79fb984 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetProcess.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_AssetProcess.cs @@ -57,7 +57,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaAssetProcess_Notes, assetProcess.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaAssetProcess_Status, SacsSystem.GetStatusCode(assetProcess.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Association.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Association.cs index b567ea9..41b0b26 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Association.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Association.cs @@ -94,7 +94,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Association_Status, SacsSystem.GetStatusCode(uassociation.Status), newValues); */ - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Commodity.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Commodity.cs index 802bc296..15c4cb7 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Commodity.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Commodity.cs @@ -60,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Commodity_Notes, commodity.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Commodity_Status, SacsSystem.GetStatusCode(commodity.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommodityCustomer.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommodityCustomer.cs index 13c2b76..913de8e 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommodityCustomer.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommodityCustomer.cs @@ -54,7 +54,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.CommodityCustomer_Notes, commodityCustomer.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.CommodityCustomer_Status, SacsSystem.GetStatusCode(commodityCustomer.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommoditySupplier.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommoditySupplier.cs index 1489509..c230f52 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommoditySupplier.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_CommoditySupplier.cs @@ -53,7 +53,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.CommoditySupplier_Notes, commoditySupplier.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.CommoditySupplier_Status, SacsSystem.GetStatusCode(commoditySupplier.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Constituent.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Constituent.cs index 638fbb7..6efa5ea 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Constituent.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Constituent.cs @@ -86,7 +86,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Constituent_Notes, constituent.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Constituent_Status, SacsSystem.GetStatusCode(constituent.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Container.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Container.cs index 544e5ad..7f7ba39 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Container.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Container.cs @@ -62,7 +62,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Container_Notes, container.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Container_Status, SacsSystem.GetStatusCode(container.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ContainerItem.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ContainerItem.cs index 8e7952b..79e85c5 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ContainerItem.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ContainerItem.cs @@ -61,7 +61,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.ContainerItem_Notes, containerItem.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.ContainerItem_Status, SacsSystem.GetStatusCode(containerItem.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemBatch.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemBatch.cs index 79d3624..0ac363f 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemBatch.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemBatch.cs @@ -57,7 +57,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.ItemBatch_Notes, itemBatch.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.ItemBatch_Status, SacsSystem.GetStatusCode(itemBatch.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemLink.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemLink.cs index 4a14424..ab78ca0 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemLink.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemLink.cs @@ -61,7 +61,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.ItemLink_Notes, itemLink.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.ItemLink_Status, SacsSystem.GetStatusCode(itemLink.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemProcess.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemProcess.cs index 7830c50..573ccb3 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemProcess.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_ItemProcess.cs @@ -54,7 +54,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.ItemProcess_Notes, itemProcess.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.ItemProcess_Status, SacsSystem.GetStatusCode(itemProcess.Status), newValues); */ - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Location.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Location.cs index 465fe4c..e2c59e6 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Location.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Location.cs @@ -56,7 +56,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Location_Notes, location.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Location_Status, SacsSystem.GetStatusCode(location.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Movement.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Movement.cs index 0af1386..6ecd7e3 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Movement.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Movement.cs @@ -63,7 +63,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Movement_Notes, movement.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Movement_Status, SacsSystem.GetStatusCode(movement.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PortfolioItem.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PortfolioItem.cs index c7f06f3..e66a3f9 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PortfolioItem.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PortfolioItem.cs @@ -60,7 +60,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.PortfolioItem_Notes, portfolioItem.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.PortfolioItem_Status, SacsSystem.GetStatusCode(portfolioItem.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Price.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Price.cs index 7f2303c..390f11d 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Price.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Price.cs @@ -56,7 +56,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaPrice_Notes, price.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaPrice_Status, SacsSystem.GetStatusCode(price.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PriceSet.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PriceSet.cs index a26787b..02d57e3 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PriceSet.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_PriceSet.cs @@ -51,7 +51,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaPriceSet_Notes, priceSet.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaPriceSet_Status, SacsSystem.GetStatusCode(priceSet.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Process.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Process.cs index ab8a9f0..095b084 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Process.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Process.cs @@ -59,7 +59,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Process_Notes, process.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Process_Status, SacsSystem.GetStatusCode(process.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Requirement.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Requirement.cs index 817f997..f98a262 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Requirement.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Requirement.cs @@ -101,7 +101,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Requirement_Notes, requirement.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Requirement_Status, SacsSystem.GetStatusCode(requirement.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_StockLevel.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_StockLevel.cs index 5f423d6..f8f6ed3 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_StockLevel.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_StockLevel.cs @@ -58,7 +58,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.StockLevel_Notes, stockLevel.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.StockLevel_Status, SacsSystem.GetStatusCode(stockLevel.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_SysParam.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_SysParam.cs index cceac20..25e6d0f 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_SysParam.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_SysParam.cs @@ -59,7 +59,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SysParam_Status, SacsSystem.GetStatusCode(sysParam.Status), newValues); */ - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Transaction.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Transaction.cs index 3a2bc2d..7c51e0e 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Transaction.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Transaction.cs @@ -112,7 +112,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.Transaction_Notes, transaction.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.Transaction_Status, SacsSystem.GetStatusCode(transaction.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Vehicle.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Vehicle.cs index 5e12bc0..3831ac1 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Vehicle.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_Vehicle.cs @@ -76,7 +76,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicle_Notes, vehicle.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicle_Status, SacsSystem.GetStatusCode(vehicle.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleClass.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleClass.cs index e0d5e54..db8b243 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleClass.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleClass.cs @@ -72,7 +72,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleClass_Notes, vehicleClass.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleClass_Status, SacsSystem.GetStatusCode(vehicleClass.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleEvent.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleEvent.cs index 9d5d13a..ef9236e 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleEvent.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleEvent.cs @@ -64,7 +64,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleEvent_Notes, vehicleEvent.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleEvent_Status, SacsSystem.GetStatusCode(vehicleEvent.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleFeature.cs b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleFeature.cs index 963ce13..1cbc5fe 100644 --- a/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleFeature.cs +++ b/SaBusMgrStandardDbas/Dbas/UpdateLog/SbmUpdateLogItemMonitor_VehicleFeature.cs @@ -58,7 +58,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.UpdateLog RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleFeature_Notes, vehicleFeature.Notes, newValues); RecordAttrValue(SbmDbDfn.ColumnIdx.SaVehicleFeature_Status, SacsSystem.GetStatusCode(vehicleFeature.Status), newValues); - return !HasErrorState(); + return OK; } //------------------------------------------------------------------- diff --git a/SaBusMgrStandardDbas/Dbas/Utils/SbmDbDfnGenerator.cs b/SaBusMgrStandardDbas/Dbas/Utils/SbmDbDfnGenerator.cs index 28a15ea..20b0ff8 100644 --- a/SaBusMgrStandardDbas/Dbas/Utils/SbmDbDfnGenerator.cs +++ b/SaBusMgrStandardDbas/Dbas/Utils/SbmDbDfnGenerator.cs @@ -63,7 +63,11 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Utils OutputDirectory = directory }; // Schema - Tables. - config.Schema.Tables_Excluded.UnionWith(new String[] { "NextId", "SaCode", "SaCodeType", "SaSecItem", "SaSecurityItem", "SaSecLink", "SaSecurityLink", "SaItemData", "SaItemDoc", "SaItemOption", "SaInterface", "SaInterfaceProcess", "SaInterfaceProcessMessage", "SaInterfaceDataItem", "SaInterfaceProcessDataItem", "SaAttrUpdate" }); + config.Schema.Tables_ExcludedFromDatabaseDefinitionClass.UnionWith(new String[] { "IndexDefragLog", "NextId" }); + config.Schema.Tables_ExcludedFromTableInterfaceClasses.UnionWith(new String[] { "IndexDefragLog", "NextId" }); + config.Schema.Tables_ExcludedFromTableInterfaceClasses.UnionWith(new String[] { "SaCode", "SaCodeType", "SaSecItem", "SaSecurityItem", "SaSecLink", "SaSecurityLink", "SaItemData", "SaItemDoc", "SaItemOption", "SaAttrUpdate" }); + config.Schema.Tables_ExcludedFromTableInterfaceClasses.UnionWith(new String[] { "Interface", "SaInterface", "InterfaceProcess", "SaInterfaceProcess", "InterfaceProcessMessage", "SaInterfaceProcessMessage", "InterfaceDataItem", "SaInterfaceDataItem", "InterfaceProcessDataItem", "SaInterfaceProcessDataItem" }); + config.Schema.Tables_ExcludedFromTableInterfaceClasses.UnionWith(new String[] { "Currency", "Language", "Region", "TaxCode", "UnitMeasure" }); // Schema - Columns. config.Schema.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost"); // Database definition class. diff --git a/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn.xml b/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn.xml index a7cf031..69d7772 100644 --- a/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn.xml +++ b/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn.xml @@ -11793,6 +11793,171 @@ + + dbo + NextId + + + + dbo + NextId
+ 1 + Object + VarChar + + -9 + nvarchar + false + 50 + 100 + 0 + NoNulls + false + +
+ + dbo + NextId
+ 2 + NextId + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + NextId
+ 3 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + NextId
+ 4 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + NextId
+ 5 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + NextId
+ 6 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + NextId
+ 7 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + NextId
+ 8 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + NextId
+ PK_NextId + 1 + true + false + false + false + 1 + 5 + false + + + 1 + Object + true + + +
+
+
dbo PortfolioItem @@ -16010,6 +16175,1053 @@ + + dbo + SaAttrUpdate + + + + dbo + SaAttrUpdate
+ 1 + ItemType + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaAttrUpdate
+ 2 + ItemId + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaAttrUpdate
+ 3 + Logged + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaAttrUpdate
+ 4 + Attribute + VarChar + + 12 + varchar + false + 32 + 32 + 0 + NoNulls + false + +
+ + dbo + SaAttrUpdate
+ 5 + DataBefore + VarChar + + -9 + nvarchar + false + 1024 + 2048 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 6 + DataAfter + VarChar + + -9 + nvarchar + false + 1024 + 2048 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 7 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 8 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 9 + Status + VarChar + + 12 + varchar + false + 3 + 3 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 10 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 11 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 12 + CreateHost + VarChar + + 12 + varchar + false + 64 + 64 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 13 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 14 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaAttrUpdate
+ 15 + UpdateHost + VarChar + + 12 + varchar + false + 64 + 64 + 0 + Nullable + true + +
+
+ + + dbo + SaAttrUpdate
+ PK_SaAttrUpdate + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Logged + true + + + 2 + ItemType + true + + + 3 + ItemId + true + + + 4 + Attribute + true + + +
+ + dbo + SaAttrUpdate
+ IDX_SaAttrUpdate_Item + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + + 3 + Logged + true + + + 4 + Attribute + true + + +
+ + dbo + SaAttrUpdate
+ IDX_SaAttrUpdate_ItemAttr + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + + 3 + Attribute + true + + + 4 + Logged + true + + +
+
+
+ + dbo + SaCode + + + + dbo + SaCode
+ 1 + Id + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 2 + CodeTypeId + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 3 + Code + VarChar + + -9 + nvarchar + false + 32 + 64 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 4 + Description + VarChar + + -9 + nvarchar + false + 128 + 256 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 5 + Seq + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 6 + Data + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 7 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 8 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 9 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 10 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaCode
+ 11 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 12 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaCode
+ 13 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaCode
+ 14 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCode
+ 15 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaCode
+ PK_SaCode + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Id + true + + +
+ + dbo + SaCode
+ IDX_SaCode_TypeCode + 3 + true + false + false + false + 0 + 0 + false + + + 1 + CodeTypeId + true + + + 2 + Code + true + + +
+ + dbo + SaCode
+ IDX_SaCode_Status + 3 + false + false + false + false + 0 + 0 + false + + + 1 + Status + true + + +
+ + dbo + SaCode
+ IDX_SaCode_Type + 3 + false + false + false + false + 0 + 0 + false + + + 1 + CodeTypeId + true + + +
+ + dbo + SaCode
+ IDX_SaCode_TypeSeq + 3 + false + false + false + false + 0 + 0 + false + + + 1 + CodeTypeId + true + + + 2 + Seq + true + + +
+
+
+ + dbo + SaCodeType + + + + dbo + SaCodeType
+ 1 + Id + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 2 + Code + VarChar + + -9 + nvarchar + false + 32 + 64 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 3 + Name + VarChar + + -9 + nvarchar + false + 128 + 256 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 4 + MaxCodeLen + TinyInt + + -6 + tinyint + false + 3 + 1 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 5 + CodeFormat + VarChar + + -9 + nvarchar + false + 32 + 64 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 6 + NextCode + VarChar + + -9 + nvarchar + false + 32 + 64 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 7 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 8 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 9 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 10 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaCodeType
+ 11 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 12 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaCodeType
+ 13 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaCodeType
+ 14 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaCodeType
+ 15 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaCodeType
+ PK_SaCodeType + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Id + true + + +
+ + dbo + SaCodeType
+ IDX_SaCodeType_Code + 3 + true + false + false + false + 0 + 0 + false + + + 1 + Code + true + + +
+
+
dbo SaDiaryEntry @@ -16594,6 +17806,1007 @@ + + dbo + SaItemData + + + + dbo + SaItemData
+ 1 + Id + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemData
+ 2 + ItemType + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaItemData
+ 3 + ItemId + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemData
+ 4 + DataType + VarChar + + -9 + nvarchar + false + 50 + 100 + 0 + NoNulls + false + +
+ + dbo + SaItemData
+ 5 + ItemData + VarChar + + -9 + nvarchar + false + 0 + 0 + 0 + NoNulls + false + +
+ + dbo + SaItemData
+ 6 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 7 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 8 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 9 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaItemData
+ 10 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 11 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 12 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaItemData
+ 13 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaItemData
+ 14 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaItemData
+ PK_SaItemData + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Id + true + + +
+
+
+ + dbo + SaItemDoc + + + + dbo + SaItemDoc
+ 1 + Id + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemDoc
+ 2 + ItemType + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaItemDoc
+ 3 + ItemId + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemDoc
+ 4 + Category + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 5 + Type + VarChar + + -9 + nvarchar + false + 16 + 32 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 6 + DescBrief + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 7 + Folder + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 8 + Filename + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 9 + MimeType + VarChar + + -9 + nvarchar + false + 32 + 64 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 10 + ItemTypeAutoAssign + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 11 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 12 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 13 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 14 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaItemDoc
+ 15 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 16 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 17 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaItemDoc
+ 18 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaItemDoc
+ 19 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaItemDoc
+ PK_SaItemDoc + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Id + true + + +
+ + dbo + SaItemDoc
+ IDX_SaItemDoc_Item + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + +
+
+
+ + dbo + SaItemOption + + + + dbo + SaItemOption
+ 1 + ItemType + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 2 + ItemId + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 3 + Name + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 4 + Context + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 5 + Value + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 6 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 7 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 8 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 9 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaItemOption
+ 10 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 11 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaItemOption
+ 12 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaItemOption
+ 13 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaItemOption
+ 14 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaItemOption
+ PK_SaItemOption + 1 + true + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + + 3 + Name + true + + + 4 + Context + true + + +
+ + dbo + SaItemOption
+ IDX_SaItemOption_Item + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + +
+ + dbo + SaItemOption
+ IDX_SaItemOption_ItemName + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + + 3 + Name + true + + +
+ + dbo + SaItemOption
+ IDX_SaItemOption_Name + 3 + false + false + false + false + 0 + 0 + false + + + 1 + Name + true + + +
+
+
dbo SaPrice @@ -17343,6 +19556,862 @@ + + dbo + SaSecItem + + + + dbo + SaSecItem
+ 1 + Id + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 2 + Code + VarChar + + -9 + nvarchar + false + 128 + 256 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 3 + Description + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 4 + Type + TinyInt + + -6 + tinyint + false + 3 + 1 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 5 + EmailAddress + VarChar + + -9 + nvarchar + false + 128 + 256 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 6 + Location + VarChar + + -9 + nvarchar + false + 50 + 100 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 7 + DataItemType + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 8 + EncPword + VarChar + + -9 + nvarchar + false + 128 + 256 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 9 + PwordSalt + VarChar + + -9 + nvarchar + false + 16 + 32 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 10 + PwordHash + VarChar + + -9 + nvarchar + false + 200 + 400 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 11 + PasswordToken + VarChar + + 12 + varchar + false + 32 + 32 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 12 + PasswordHistory + VarChar + + -9 + nvarchar + false + 0 + 0 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 13 + PasswordChangedAt + DateTime + + 93 + smalldatetime + false + 16 + 16 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 14 + LastLogin + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaSecItem
+ 15 + LastInvalidLoginAt + DateTime + + 93 + smalldatetime + false + 16 + 16 + 0 + Nullable + true + +
+ + dbo + SaSecItem
+ 16 + InvalidLoginCount + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 17 + Notes + VarChar + + -9 + nvarchar + false + 255 + 510 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 18 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 19 + Status + VarChar + + 12 + varchar + false + 3 + 3 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 20 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaSecItem
+ 21 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 22 + CreateHost + VarChar + + 12 + varchar + false + 64 + 64 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 23 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + SaSecItem
+ 24 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecItem
+ 25 + UpdateHost + VarChar + + 12 + varchar + false + 64 + 64 + 0 + NoNulls + false + +
+
+ + + dbo + SaSecItem
+ PK_SaSecItem + 1 + true + false + false + false + 0 + 0 + false + + + 1 + Id + true + + +
+ + dbo + SaSecItem
+ IDX_SaSecItem_TypeCode + 3 + true + false + false + false + 0 + 0 + false + + + 1 + Type + true + + + 2 + Code + true + + +
+ + dbo + SaSecItem
+ IDX_SaSecItem_Code + 3 + false + false + false + false + 0 + 0 + false + + + 1 + Code + true + + +
+ + dbo + SaSecItem
+ IDX_SaSecItem_Desc + 3 + false + false + false + false + 0 + 0 + false + + + 1 + Description + true + + +
+
+
+ + dbo + SaSecLink + + + + dbo + SaSecLink
+ 1 + ItemOwner + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecLink
+ 2 + ItemTarget + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecLink
+ 3 + ItemContext + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + SaSecLink
+ 4 + DayApplic + VarChar + + -9 + nvarchar + false + 50 + 100 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 5 + DateApplicFrom + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 6 + DateApplicTo + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 7 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 8 + Status + VarChar + + -9 + nvarchar + false + 3 + 6 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 9 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaSecLink
+ 10 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 11 + CreateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 12 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + SaSecLink
+ 13 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + Nullable + true + +
+ + dbo + SaSecLink
+ 14 + UpdateHost + VarChar + + -9 + nvarchar + false + 64 + 128 + 0 + Nullable + true + +
+
+ + + dbo + SaSecLink
+ PK_SaSecLink + 1 + true + false + false + false + 0 + 0 + false + + + 1 + ItemOwner + true + + + 2 + ItemTarget + true + + + 3 + ItemContext + true + + +
+ + dbo + SaSecLink
+ IDX_SaSecLink_ItemContext + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemContext + true + + +
+ + dbo + SaSecLink
+ IDX_SaSecLink_ItemOwner + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemOwner + true + + +
+ + dbo + SaSecLink
+ IDX_SaSecLink_ItemTarget + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemTarget + true + + +
+
+
dbo SaVehicle diff --git a/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn_Control.xml b/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn_Control.xml index c421e5c..b7f0a7a 100644 --- a/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn_Control.xml +++ b/SaBusMgrStandardDbas/Resources/Database/SbmDbDfn_Control.xml @@ -1,6 +1,457 @@ + + dbo + AccountRegistration + + + + dbo + AccountRegistration
+ 1 + Id + Int + + 4 + int + true + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 2 + EmailAddress + VarChar + + -9 + nvarchar + false + 200 + 400 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 3 + FirstName + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 4 + LastName + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 5 + PhoneMain + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + Nullable + true + +
+ + dbo + AccountRegistration
+ 6 + PhoneAlt + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + Nullable + true + +
+ + dbo + AccountRegistration
+ 7 + InstanceContext + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 8 + RequestAccountAt + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 9 + RegisterAccountToken + Guid + + -11 + uniqueidentifier + false + 36 + 16 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 10 + RegisterAccountAt + DateTime + + 93 + datetime + false + 23 + 16 + 3 + Nullable + true + +
+ + dbo + AccountRegistration
+ 11 + AccountPasswordSalt + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + Nullable + true + +
+ + dbo + AccountRegistration
+ 12 + AccountPasswordHash + VarChar + + -9 + nvarchar + false + 100 + 200 + 0 + Nullable + true + +
+ + dbo + AccountRegistration
+ 13 + Notes + VarChar + + -9 + nvarchar + false + 4000 + 8000 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 14 + Flags + SmallInt + + 5 + smallint + false + 5 + 2 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 15 + Status + VarChar + + 12 + varchar + false + 3 + 3 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 16 + CreateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 17 + CreateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 18 + CreateHost + VarChar + + 12 + varchar + false + 100 + 100 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 19 + UpdateOn + DateTime + + 93 + datetime + false + 23 + 16 + 3 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 20 + UpdateBy + Int + + 4 + int + false + 10 + 4 + 0 + NoNulls + false + +
+ + dbo + AccountRegistration
+ 21 + UpdateHost + VarChar + + 12 + varchar + false + 100 + 100 + 0 + NoNulls + false + +
+
+ + + dbo + AccountRegistration
+ PK_AccountRegistration + 1 + true + false + false + false + 1 + 1 + false + + + 1 + Id + true + + +
+ + dbo + AccountRegistration
+ IX_AccountRegistration_RegisterAccountToken + 3 + true + false + false + false + 0 + 0 + false + + + 1 + RegisterAccountToken + true + + +
+ + dbo + AccountRegistration
+ IX_AccountRegistration_Email + 3 + false + false + false + false + 0 + 0 + false + + + 1 + EmailAddress + true + + +
+ + dbo + AccountRegistration
+ IX_AccountRegistration_Email_Status + 3 + false + false + false + false + 0 + 0 + false + + + 1 + EmailAddress + true + + + 2 + Status + true + + +
+
+
dbo ItemParam @@ -272,8 +723,8 @@ false false false - 1 - 2 + 3 + 97 false @@ -283,6 +734,66 @@ + + dbo + ItemParam
+ IX_ItemParam_Item_Context_Name + 3 + true + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + + 3 + Context + true + + + 4 + Name + true + + +
+ + dbo + ItemParam
+ IX_ItemParam_Item + 3 + false + false + false + false + 0 + 0 + false + + + 1 + ItemType + true + + + 2 + ItemId + true + + +
@@ -557,7 +1068,7 @@ false false 1 - 4 + 5 false @@ -875,7 +1386,7 @@ false false 1 - 4 + 7 false @@ -885,6 +1396,46 @@ + + dbo + Repository
+ IX_Repository_Context + 3 + true + false + false + false + 0 + 0 + false + + + 1 + Context + true + + +
+ + dbo + Repository
+ IX_Repository_Owner + 3 + false + false + false + false + 0 + 0 + false + + + 1 + OwnerId + true + + +
diff --git a/SaBusMgrStandardDbas/SaBusMgrStandardDbas.csproj b/SaBusMgrStandardDbas/SaBusMgrStandardDbas.csproj index 7213c7e..eeeb7f8 100644 --- a/SaBusMgrStandardDbas/SaBusMgrStandardDbas.csproj +++ b/SaBusMgrStandardDbas/SaBusMgrStandardDbas.csproj @@ -16,6 +16,10 @@ + + + + diff --git a/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester.cs b/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester.cs index 1b29a6d..a6f848c 100644 --- a/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester.cs +++ b/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester.cs @@ -90,7 +90,7 @@ namespace Sarand.BusinessMgr.Test.Web.Control.App Assert.IsNotNull(repository); // Instance console. - SbmCoreInstanceConsole_Base instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); + SbmCoreInstanceConsole instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); disposables.Add(instanceConsole); Assert.IsNotNull(instanceConsole); } @@ -109,7 +109,7 @@ namespace Sarand.BusinessMgr.Test.Web.Control.App Assert.IsNotNull(repository); // Instance console. - SbmCoreInstanceConsole_Base instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); + SbmCoreInstanceConsole instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); disposables.Add(instanceConsole); Assert.IsNotNull(instanceConsole); } @@ -127,7 +127,7 @@ namespace Sarand.BusinessMgr.Test.Web.Control.App disposables.Add(repository); Assert.IsNotNull(repository); - SbmCoreInstanceConsole_Base instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); + SbmCoreInstanceConsole instanceConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); disposables.Add(instanceConsole); Assert.IsNotNull(instanceConsole); diff --git a/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester_Base.cs b/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester_Base.cs index 379f321..7b7254d 100644 --- a/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester_Base.cs +++ b/SaBusMgrTest_Control/Web/Control/App/SbmApplication_Tester_Base.cs @@ -47,7 +47,7 @@ namespace Sarand.BusinessMgr.Test.Web.Control.App Internals_Control = new SbmInternals_Control(); // Control session data. - //SessionData_Control = null; + //SessionData_Control = new SbmSessionData_Control(); } protected override void Dispose(bool disposing) diff --git a/SaBusMgrTest_Portal/Base/Helpers/SbmResourceHelper_Tester.cs b/SaBusMgrTest_Portal/Base/Helpers/SbmResourceHelper_Tester.cs new file mode 100644 index 0000000..5f6a85b --- /dev/null +++ b/SaBusMgrTest_Portal/Base/Helpers/SbmResourceHelper_Tester.cs @@ -0,0 +1,57 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Sarand.BusinessMgr.Net.Standard.Base.Helpers; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Test.Base.Helpers +{ + //======================================================================= + [TestClass] + public class SbmResourceHelper_Tester + { + //------------------------------------------------------------------- + // Text resources. + + [TestMethod] + public void Test_GetResourceText_Email() + { + // Email resources. + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Header_Html)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Header_Html).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Footer_Html)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Footer_Html).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Main_Css)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_Main_Css).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_DemoAccountRequest_Html)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_DemoAccountRequest_Html).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_RequestPassword_Html)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_RequestPassword_Html).Length > 0); + } + + [TestMethod] + public void Test_GetResourceText_Html() + { + // Email resources. + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SaBaseCss)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SaBaseCss).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseCss)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseCss).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseJs)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseJs).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseJs)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.SbmBaseJs).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryJs)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryJs).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryUiCss)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryUiCss).Length > 0); + Assert.IsNotNull(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryUiJs)); + Assert.IsTrue(SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.JQueryUiJs).Length > 0); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusMgrTest_Portal/Web/Portal/App/SbmApplication_SessionData_Tester.cs b/SaBusMgrTest_Portal/Web/Portal/App/SbmApplication_SessionData_Tester.cs index 9609470..c18ce1c 100644 --- a/SaBusMgrTest_Portal/Web/Portal/App/SbmApplication_SessionData_Tester.cs +++ b/SaBusMgrTest_Portal/Web/Portal/App/SbmApplication_SessionData_Tester.cs @@ -53,7 +53,7 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App Assert.IsNotNull(accountMgr); // Session Console. - SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(internals.UserContext); + SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(internals); // Security item. SaSecurityItem securityItemUser = securityConsole.GetUserByEmail("andy@sarand.com"); @@ -70,7 +70,7 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App Assert.IsNotNull(supervisedOrganisations); Assert.IsTrue(supervisedOrganisations.Count > 0); SysId affiliateIdOrganisation = supervisedOrganisations[0].Id; - SbmAssociation associationOrganisation = accountMgr.GetAssociationByOwnerTypeTarget(affiliateIdOrganisation, Sbm.AssociationType.Internal, affiliateIdOrganisation); + SbmAssociation associationOrganisation = accountMgr.GetInternalAssociation(affiliateIdOrganisation); Assert.IsNotNull(associationOrganisation); SbmAffiliate affiliateOrganisation = accountMgr.GetAffiliateById(affiliateIdOrganisation); Assert.IsNotNull(affiliateOrganisation); @@ -185,7 +185,7 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App Assert.IsNotNull(accountMgr); // Session Console. - SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(internals.UserContext); + SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(internals); //----------------------------------------------------------- // Quering. @@ -203,7 +203,7 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App Assert.IsNotNull(supervisedOrganisations); Assert.IsTrue(supervisedOrganisations.Count > 0); SysId affiliateIdOrganisation = supervisedOrganisations[0].Id; - SbmAssociation associationOrganisation = accountMgr.GetAssociationByOwnerTypeTarget(affiliateIdOrganisation, Sbm.AssociationType.Internal, affiliateIdOrganisation); + SbmAssociation associationOrganisation = accountMgr.GetInternalAssociation(affiliateIdOrganisation); Assert.IsNotNull(associationOrganisation); SbmAffiliate affiliateOrganisation = accountMgr.GetAffiliateById(affiliateIdOrganisation); Assert.IsNotNull(affiliateOrganisation); diff --git a/SaBusinessMgrCoreWebControl/Control/App/SbmApplication_Control.cs b/SaBusinessMgrCoreWebControl/Control/App/SbmApplication_Control.cs index 86cf3d1..75357b8 100644 --- a/SaBusinessMgrCoreWebControl/Control/App/SbmApplication_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/App/SbmApplication_Control.cs @@ -9,6 +9,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control; using Sarand.BusinessMgr.Net.Standard.Dbas.App; +using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; using Sarand.BusinessMgr.Net.Standard.Dbas.Utils; using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.Net.Standard.Base.App; @@ -18,6 +19,9 @@ using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.IO; using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Dbas.Base; +using Sarand.Net.Standard.Dbas.CodeType; +using Sarand.Net.Standard.Dbas.ItemOptions; +using Sarand.Net.Standard.Dbas.Security; using System; using System.Collections.Generic; using System.Linq; @@ -28,9 +32,15 @@ namespace Sarand.BusinessMgr.Web.Control.App public class SbmApplication_Control : SbmApplication_Web { //------------------------------------------------------------------- - // Data members. + // Processing indicators. private bool generateDatabaseDefinitions_Control = false; private bool generateDatabaseDefinitions_BusMgr = false; + private bool generateDatabaseDefinitions_Security = false; + private bool generateDatabaseDefinitions_CodeTypes = false; + private bool generateDatabaseDefinitions_ItemOptions = false; + + //------------------------------------------------------------------- + // Data members. private static SbmApplication_Control appInstance; private PropertySet propertySet; private Dictionary appConfigs = new Dictionary(); @@ -136,7 +146,7 @@ namespace Sarand.BusinessMgr.Web.Control.App if (repository != null) { // Core database connection. - SacsDatabaseConsole.OdbcConfig odbcConfig = SbmCoreInstanceConsole_Control.GetRepositoryOdbcConfig(repository); + SacsDatabaseConsole.OdbcConfig odbcConfig = SbmCoreInstanceConsole_Dbas.GetRepositoryOdbcConfig(repository); SacsDatabase busMgrDatabase = SacsDatabaseConsole.OpenOdbcDatabase(odbcConfig); if (busMgrDatabase.HasErrorState()) SaLogger.Warn($"{SysUtil.Fn} BusMgr Database: " + busMgrDatabase.DatabaseName + ". Initialisation error: " + busMgrDatabase.ErrorStateMessage); @@ -222,7 +232,7 @@ namespace Sarand.BusinessMgr.Web.Control.App // Application configuration. appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs")); - emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email/Configs")); + emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email").GetSection("Configs")); LoggingRootFolder = AppConfig.Logging.RootFolder; // Application instance. @@ -279,6 +289,18 @@ namespace Sarand.BusinessMgr.Web.Control.App config.Password = AppConfig.TemplateDatabase.Password; GenerateDatabaseDefinition(SbmDbDfnGenerator.DatabaseInstance.Core, GetTemplateDatabase()); } + if (generateDatabaseDefinitions_Security) + { + SaSecurityDbDfnGenerator.Generate(GetTemplateDatabase()?.ConnectionString ?? ""); + } + if (generateDatabaseDefinitions_CodeTypes) + { + SaCodeTypeDbDfnGenerator.Generate(GetTemplateDatabase()?.ConnectionString ?? ""); + } + if (generateDatabaseDefinitions_ItemOptions) + { + SaItemOptionsDbDfnGenerator.Generate(GetTemplateDatabase()?.ConnectionString ?? ""); + } } //------------------------------------------------------------------- diff --git a/SaBusinessMgrCoreWebControl/Control/App/SbmSystem_Control.cs b/SaBusinessMgrCoreWebControl/Control/App/SbmSystem_Control.cs index 33d3914..2106caf 100644 --- a/SaBusinessMgrCoreWebControl/Control/App/SbmSystem_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/App/SbmSystem_Control.cs @@ -1,5 +1,6 @@ using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.Consoles; +using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; @@ -36,57 +37,57 @@ namespace Sarand.BusinessMgr.Web.Control.App // Consoles. //------------------------------------------------------------------- - public override SbmSessionConsole CreateSessionConsole(ISbmUserOrganisationContext userContext) + public override SbmSessionConsole CreateSessionConsole(SbmInternals internals) { - return SbmSessionConsole.CreateConsole(userContext); + return SbmSessionConsole.CreateConsole(internals); } - public override SaDiaryConsole CreateDiaryConsole(ISbmUserOrganisationContext userContext) + public override SaDiaryConsole CreateDiaryConsole(SbmInternals internals) { throw new NotImplementedException(); } - public override SaCodeTypeConsole CreateCodeTypeConsole(ISbmUserOrganisationContext userContext) + public override SaCodeTypeConsole CreateCodeTypeConsole(SbmInternals internals) { - return new SbmCodeTypeConsole_Web(userContext); + return new SbmCodeTypeConsole_Web(internals); } - public override SaItemDataConsole CreateItemDataConsole(ISbmUserOrganisationContext userContext) + public override SaItemDataConsole CreateItemDataConsole(SbmInternals internals) { throw new NotImplementedException(); } - public override SaItemDocConsole CreateItemDocConsole(ISbmUserOrganisationContext userContext) + public override SaItemDocConsole CreateItemDocConsole(SbmInternals internals) { throw new NotImplementedException(); } - public override SaItemOptionConsole CreateItemOptionConsole(ISbmUserOrganisationContext userContext) + public override SaItemOptionConsole CreateItemOptionConsole(SbmInternals internals) { - return new SbmItemOptionConsole_Web(userContext); + return new SbmItemOptionConsole_Web(internals); } - public override SaInterfaceConsole CreateInterfaceConsole(ISbmUserOrganisationContext userContext) + public override SaInterfaceConsole CreateInterfaceConsole(SbmInternals internals) { - return new SbmInterfaceConsole_Web(userContext); + return new SbmInterfaceConsole_Web(internals); } - public override SaUpdateLogConsole CreateUpdateLogConsole(ISbmUserOrganisationContext userContext) + public override SaUpdateLogConsole CreateUpdateLogConsole(SbmInternals internals) { - return new SbmUpdateLogConsole_Web(userContext); + return new SbmUpdateLogConsole_Web(internals); } - public override SaSecurityConsole CreateSecurityConsole(ISbmUserOrganisationContext userContext) + public override SaSecurityConsole CreateSecurityConsole(SbmInternals internals) { - return new SbmSecurityConsole_Web(userContext); + return new SbmSecurityConsole_Web(internals); } - public override SaReferenceDataConsole CreateReferenceDataConsole(ISbmUserOrganisationContext userContext) + public override SaReferenceDataConsole CreateReferenceDataConsole(SbmInternals internals) { - return new SbmReferenceDataConsole_Control(userContext); + return new SbmReferenceDataConsole_Control(internals); } - public override SbmEmailConsole CreateEmailConsole(ISbmUserOrganisationContext userContext, SbmEmailConfig emailConfig) + public override SbmEmailConsole CreateEmailConsole(SbmEmailConfig emailConfig) { return SbmApplication_Control.CreateEmailConsole_Control(emailConfig); } diff --git a/SaBusinessMgrCoreWebControl/Control/Components/SbmController_Control.cs b/SaBusinessMgrCoreWebControl/Control/Components/SbmController_Control.cs index f79ef29..8140a8c 100644 --- a/SaBusinessMgrCoreWebControl/Control/Components/SbmController_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/Components/SbmController_Control.cs @@ -26,7 +26,6 @@ namespace Sarand.BusinessMgr.Web.Control.Components { //------------------------------------------------------------------- // Data members. - private SbmInternals_Control internals_Control; private SbmEmailConsole_Control emailConsole; //------------------------------------------------------------------- @@ -38,17 +37,12 @@ namespace Sarand.BusinessMgr.Web.Control.Components { if (disposing) { - if (internals_Control != null) internals_Control.Dispose(); internals_Control = null; } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public SbmInternals_Control Internals_Control { get { if (internals_Control == null) { internals_Control = new SbmInternals_Control(); } return internals_Control; } } - protected SbmcAccountMgr ControlAccountMgr { get { return Internals_Control.ControlAccountMgr; } } - protected SbmcInstanceMgr ControlInstanceMgr { get { return Internals_Control.ControlInstanceMgr; } } - protected SbmcItemMgr ControlItemMgr { get { return Internals_Control.ControlItemMgr; } } //------------------------------------------------------------------- // Session data. @@ -98,7 +92,7 @@ namespace Sarand.BusinessMgr.Web.Control.Components } if (!userAccount.IsStatusActive) { - SaLogger.Error($"{SysUtil.Fn} Unable to sign account in - user account is not active. Email: " + userAccount.EmailAddress); + SaLogger.Error($"{SysUtil.Fn} Unable to sign account in - user account is not active. Email: {userAccount.EmailAddress}"); errorMessage = Localiser["security.msg.signin.invalid"]; return false; } @@ -112,11 +106,11 @@ namespace Sarand.BusinessMgr.Web.Control.Components userAccount.LastInvalidLoginAt = null; if (!ControlAccountMgr.UpdateUserAccount(userAccount, DbUpdateInfo)) { - SaLogger.Warn($"{SysUtil.Fn} Failed to update User Account for " + userAccount.EmailAddress + ": " + ControlAccountMgr.ErrorStateMessage); + SaLogger.Warn($"{SysUtil.Fn} Failed to update User Account for {userAccount.EmailAddress}: {ControlAccountMgr.ErrorStateMessage}"); errorMessage = Localiser["security.msg.signin.invalid"]; return false; } - SaLogger.Info($"{SysUtil.Fn} User session opened for " + userAccount.EmailAddress, true); + SaLogger.Info($"{SysUtil.Fn} User session opened for {userAccount.EmailAddress}", true); // Create session. OpenUserSession(SessionContext, userAccount); @@ -176,14 +170,14 @@ namespace Sarand.BusinessMgr.Web.Control.Components if (SignUserIn(userAccount, true, ref errorMessage)) { // Successful login. - SaLogger.Info($"{SysUtil.Fn} Keep Logged In cookie found." + logSuffix); + SaLogger.Info($"{SysUtil.Fn} Keep Logged In cookie found.{logSuffix}"); return true; } - else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but failed to sign user in: " + errorMessage + "." + logSuffix); + else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but failed to sign user in: {errorMessage}.{logSuffix}"); } - else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but UserAccount is not active." + logSuffix); + else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but UserAccount is not active.{logSuffix}"); } - else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but UserAccount not found." + logSuffix); + else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but UserAccount not found.{logSuffix}"); } } ClearKeepLoggedInCookie(); @@ -197,7 +191,7 @@ namespace Sarand.BusinessMgr.Web.Control.Components string keepLoggedInCookieValue = GenerateKeepLoggedInCookieValue(); int cookieExpiresDays = Math.Max(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Min, Math.Min(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Max, AppConfig.Security.SignIn.KeepLoggedIn.CookieExpiresDays)); SetResponseCookie(KeepLoggedIn.CookieName, keepLoggedInCookieValue, DateTime.Now.AddDays(cookieExpiresDays), true); - SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Value: " + keepLoggedInCookieValue); + SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Value: {keepLoggedInCookieValue}"); } /// Set the 'Keep Logged In' response cookie to expired with no data. @@ -242,7 +236,7 @@ namespace Sarand.BusinessMgr.Web.Control.Components { List values = new List(); if (SysId.IsValid(UserAccountId)) - values.Add("UserAccountId: " + SysId.ToString(UserAccountId)); + values.Add("UserAccountId: {SysId.ToLong(UserAccountId)}."); return values; } /// Verifiy that the account details are populated. @@ -260,7 +254,7 @@ namespace Sarand.BusinessMgr.Web.Control.Components NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key); keepLoggedInParams.UserAccountId = new SysId(linkParams.Get(ParamName_KeepLoggedIn_UserAccountId).ToInt()); } - if (DebugMode) SaLogger.Info($"{SysUtil.Fn} UserAccountId: " + SysId.ToString(keepLoggedInParams.UserAccountId)); + if (DebugMode && SysId.IsValid(keepLoggedInParams.UserAccountId)) SaLogger.Info($"{SysUtil.Fn} UserAccountId: {SysId.ToLong(keepLoggedInParams.UserAccountId)}."); return keepLoggedInParams; } @@ -269,7 +263,7 @@ namespace Sarand.BusinessMgr.Web.Control.Components //------------------------------------------------------------------- // Encryption key is the same for all users each time the application is started, // but a different IV value is generated for each session so that the links/parameters cannot be shared. - public static string Base64Key_ControlApp { get; } = SacsEncryptionHelper.EncodePlainKey("BusinessMgr=Control&Encryption-" + DateTime.Today.Format("ddMMyy"), SacsEncryptionHelper.KeyLength); + public static string Base64Key_ControlApp { get; } = SacsEncryptionHelper.EncodePlainKey($"BusinessMgr=Control&Encryption-{DateTime.Today.Format("ddMMyy")}", SacsEncryptionHelper.KeyLength); protected string EncryptSessionParams(NameValueCollection parameters) { return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Control.Base64IV_ControlApp, Base64Key_ControlApp)); diff --git a/SaBusinessMgrCoreWebControl/Control/Components/SbmModel_Control.cs b/SaBusinessMgrCoreWebControl/Control/Components/SbmModel_Control.cs index 0ac74a5..e055ccd 100644 --- a/SaBusinessMgrCoreWebControl/Control/Components/SbmModel_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/Components/SbmModel_Control.cs @@ -3,6 +3,7 @@ using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.Components; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Web.Control.App; using Sarand.Net.Standard.Base.Core; @@ -26,6 +27,10 @@ namespace Sarand.BusinessMgr.Web.Control.Components protected SbmApplication_Control App_Control { get { return SbmApplication_Control.Instance; } } protected SbmSessionData_Control SessionData_Control { get { return SessionData_Web as SbmSessionData_Control; } } + // Core instance properties. + public SbmInternals CoreInternals { get; set; } + protected override SbmInstanceSchemaConsole InstanceSchemaConsole { get { if (CoreInternals != null) { return CoreInternals.InstanceSchemaConsole; } return null; } } + //------------------------------------------------------------------- public IEnumerable GetInstanceContextsForSelect() { diff --git a/SaBusinessMgrCoreWebControl/Control/Consoles/SbmCoreInstanceConsole_Control.cs b/SaBusinessMgrCoreWebControl/Control/Consoles/SbmCoreInstanceConsole_Control.cs index 7e8b53d..442f91f 100644 --- a/SaBusinessMgrCoreWebControl/Control/Consoles/SbmCoreInstanceConsole_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/Consoles/SbmCoreInstanceConsole_Control.cs @@ -3,6 +3,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; using Sarand.BusinessMgr.Web.Control.App; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; @@ -18,64 +19,52 @@ using System.Linq; namespace Sarand.BusinessMgr.Web.Control.Consoles { //======================================================================= - public class SbmCoreInstanceConsole_Control : SbmCoreInstanceConsole_Base + public class SbmCoreInstanceConsole_Control : SbmCoreInstanceConsole_Dbas { //------------------------------------------------------------------- // Definitions. //------------------------------------------------------------------- // Data members. - private readonly SacsDatabase coreDatabase; - private readonly SysId ownerId; - private readonly SysId repositoryId; - private SbmInternals internals; + private class DataMembers + { + public SysId OwnerId { get; set; } + public SysId RepositoryId { get; set; } + public SbmInternals Internals { get; set; } + } + private DataMembers mbr { get; } //------------------------------------------------------------------- // Construction. public SbmCoreInstanceConsole_Control(SbmSessionData_Control sessionData_Control, SbmcRepository repository) { - ownerId = repository.OwnerId; - repositoryId = repository.Id; + mbr = new DataMembers(); + mbr.OwnerId = repository.OwnerId; + mbr.RepositoryId = repository.Id; this.SessionData_Control = sessionData_Control; - - // Repository connection. - SacsDatabaseConsole.OdbcConfig config = GetRepositoryOdbcConfig(repository); - coreDatabase = SacsDatabaseConsole.OpenOdbcDatabase(config); - if (coreDatabase.HasErrorState()) - SetErrorState(coreDatabase.ErrorStateMessage); } protected override void Dispose(bool disposing) { if (disposing) { + if (mbr.Internals != null) mbr.Internals.Dispose(); } base.Dispose(disposing); } //------------------------------------------------------------------- // Properties. - public static SbmApplication_Control App_Control { get { return SbmApplication_Control.Instance; } } - public SbmSessionData_Control SessionData_Control { get; } - public override ISacsDatabase Database_Core { get { return coreDatabase; } } - public override SbmInternals Internals_Core { get { if (internals == null) { internals = CreateCoreInternals(); } return internals; } } - public override DbUpdateInfo DbUpdateInfo_Core { get { return Internals_Core.DbUpdateInfo; } } + private static SbmApplication_Control App_Control { get { return SbmApplication_Control.Instance; } } + private SbmSessionData_Control SessionData_Control { get; } + public override SbmInternals Internals { get { if (mbr.Internals == null) { mbr.Internals = CreateCoreInternals(); } return mbr.Internals; } } //------------------------------------------------------------------- // Utilities. - public static SacsDatabaseConsole.OdbcConfig GetRepositoryOdbcConfig(SbmcRepository repository) - { - SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig(); - config.Location = $"MsSql:{repository.ServerName}\\{repository.InstanceName}.{repository.DatabaseName}"; - config.User = repository.UserName; - config.Password = repository.Password; - return config; - } - /// Core internals for accessing core managers etc. protected SbmInternals CreateCoreInternals() { - ushort sessionIndex = App_Control.GetCoreSessionIndexForControlRepository(ownerId, repositoryId); + ushort sessionIndex = App_Control.GetCoreSessionIndexForControlRepository(mbr.OwnerId, mbr.RepositoryId); SbmSessionContext sessionContext = App_Control.GetSessionContextByIndex(sessionIndex); return new SbmInternals(sessionContext); } diff --git a/SaBusinessMgrCoreWebControl/Control/Consoles/SbmReferenceDataConsole_Control.cs b/SaBusinessMgrCoreWebControl/Control/Consoles/SbmReferenceDataConsole_Control.cs index 8c18cec..916b234 100644 --- a/SaBusinessMgrCoreWebControl/Control/Consoles/SbmReferenceDataConsole_Control.cs +++ b/SaBusinessMgrCoreWebControl/Control/Consoles/SbmReferenceDataConsole_Control.cs @@ -1,4 +1,5 @@ -using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; namespace Sarand.BusinessMgr.Web.Control.Consoles @@ -12,8 +13,8 @@ namespace Sarand.BusinessMgr.Web.Control.Consoles //------------------------------------------------------------------- // Construction. - public SbmReferenceDataConsole_Control(ISbmUserOrganisationContext userContext) : - base(userContext) + public SbmReferenceDataConsole_Control(SbmInternals internals) : + base(internals) { } protected override void Dispose(bool disposing) diff --git a/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/CoreDatabaseController-Ajax.cs b/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/CoreDatabaseController-Ajax.cs index 1d8f42f..073d9b0 100644 --- a/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/CoreDatabaseController-Ajax.cs +++ b/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/CoreDatabaseController-Ajax.cs @@ -107,7 +107,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance }; // Query items. - using (DbResultSet resultSet = instanceConsole.Database_Core.ExecuteQuery(String.Join("\n", sql))) + using (DbResultSet resultSet = instanceConsole.Database.ExecuteQuery(String.Join("\n", sql))) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { diff --git a/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/RepositoryInitController-Ajax.cs b/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/RepositoryInitController-Ajax.cs index afc7f45..8e82bdd 100644 --- a/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/RepositoryInitController-Ajax.cs +++ b/SaBusinessMgrCoreWebControl/Control/Controllers/Instance/RepositoryInitController-Ajax.cs @@ -6,6 +6,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; +using Sarand.BusinessMgr.Net.Standard.Base.Data; using Sarand.BusinessMgr.Web.Control.Components; using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.BusinessMgr.Web.Control.Models.Instance; @@ -135,12 +136,12 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance // Query Organisations. SbmAssociation.Params prm = new SbmAssociation.Params(); prm.AssociationType = Sbm.AssociationType.Internal; - prm.StatusCat = SbmAssociation.StatusCat.Current; - foreach (SbmAssociation association in instanceConsole.Internals_Core.AccountMgr.GetAssociationList(prm)) + prm.StatusCat = SbmAssociation.StatusCat.CurrentOnly; + foreach (SbmAssociation association in instanceConsole.Internals.AccountMgr.GetAssociationList(prm)) { // Retrieve Organisation details. disposables.Add(association); - SbmAffiliate affiliateOrganisation = instanceConsole.Internals_Core.AccountMgr.GetAffiliateById(association.AffiliateIdOwner); + SbmAffiliate affiliateOrganisation = instanceConsole.Internals.AccountMgr.GetAffiliateById(association.AffiliateIdOwner); disposables.Add(affiliateOrganisation); // Organisation details. @@ -159,19 +160,19 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance prmAffiliateUser.AffiliateIdAssocOwner = affiliateOrganisation.Id; prmAffiliateUser.AssociationType = Sbm.AssociationType.Member; prmAffiliateUser.StatusCat = SbmAffiliate.StatusCat.CurrentOnly; - prmAffiliateUser.SortColumns.Add(instanceConsole.Internals_Core.AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.Id)); - foreach (SbmAffiliate affiliateUser in instanceConsole.Internals_Core.AccountMgr.GetAffiliateList(prmAffiliateUser)) + prmAffiliateUser.SortColumns.Add(instanceConsole.Internals.AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.Id)); + foreach (SbmAffiliate affiliateUser in instanceConsole.Internals.AccountMgr.GetAffiliateList(prmAffiliateUser)) { disposables.Add(affiliateUser); // Lookup security details. if (!SysId.IsValid(affiliateUser.UserId)) continue; - SaSecurityItem securityItemUser = instanceConsole.Internals_Core.SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, affiliateUser.UserId); + SaSecurityItem securityItemUser = instanceConsole.Internals.SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, affiliateUser.UserId); disposables.Add(securityItemUser); if (securityItemUser == null) continue; // Confirm security rights (SuperUser). - SaSecurityProfile securityProfile = instanceConsole.Internals_Core.SecurityConsole.GetUserSecurityProfile(securityItemUser.Id); + SaSecurityProfile securityProfile = instanceConsole.Internals.SecurityConsole.GetUserSecurityProfile(securityItemUser.Id); if (!securityProfile.Groups.Any(group => group.Code.EqualsCI(SaSecurityConsole.GroupCode_Super))) continue; // Add User to the Organisation. @@ -252,7 +253,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance } // Validate Organisation Affiliate. - SbmAffiliate affiliateOrganisation = instanceConsole.Internals_Core.AccountMgr.GetAffiliateById(affiliateIdOrganisation); + SbmAffiliate affiliateOrganisation = instanceConsole.Internals.AccountMgr.GetAffiliateById(affiliateIdOrganisation); disposables.Add(affiliateOrganisation); if (affiliateOrganisation == null) { @@ -276,7 +277,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance else { // Validate Internal Association. - SbmAssociation associationOrganisation = instanceConsole.Internals_Core.AccountMgr.GetAssociationById(associationIdInternal); + SbmAssociation associationOrganisation = instanceConsole.Internals.AccountMgr.GetAssociationById(associationIdInternal); disposables.Add(associationOrganisation); if (associationOrganisation == null) { @@ -303,12 +304,12 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance else { // Organisation does not exist. - if (!SysId.IsValid(SysId.ToSysId(model.Organisation.AffiliateId))) + if (SysId.IsValid(SysId.ToSysId(model.Organisation.AffiliateId))) { SaLogger.Warn($"{SysUtil.Fn} Affiliate Id specified for new Organisation. Id: {model.Organisation.AffiliateId}."); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); } - if (!SysId.IsValid(SysId.ToSysId(model.Organisation.AssociationId))) + if (SysId.IsValid(SysId.ToSysId(model.Organisation.AssociationId))) { SaLogger.Warn($"{SysUtil.Fn} Association Id specified for new Organisation. Id: {model.Organisation.AssociationId}."); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); @@ -327,7 +328,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance } // Validate User Affiliate. - SbmAffiliate affiliateUser = instanceConsole.Internals_Core.AccountMgr.GetAffiliateById(affiliateIdUser); + SbmAffiliate affiliateUser = instanceConsole.Internals.AccountMgr.GetAffiliateById(affiliateIdUser); disposables.Add(affiliateUser); if (affiliateUser == null) { @@ -350,7 +351,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance else { // Validate User Security Item. - SaSecurityItem securityItemUser = instanceConsole.Internals_Core.SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, secItemIdUser); + SaSecurityItem securityItemUser = instanceConsole.Internals.SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, secItemIdUser); disposables.Add(securityItemUser); if (securityItemUser == null) { @@ -367,12 +368,12 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance else { // User does not exist. - if (!SysId.IsValid(SysId.ToSysId(model.User.AffiliateId))) + if (SysId.IsValid(SysId.ToSysId(model.User.AffiliateId))) { SaLogger.Warn($"{SysUtil.Fn} Affiliate Id specified for new User. Id: {model.User.AffiliateId}."); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); } - if (!SysId.IsValid(SysId.ToSysId(model.User.SecurityItemId))) + if (SysId.IsValid(SysId.ToSysId(model.User.SecurityItemId))) { SaLogger.Warn($"{SysUtil.Fn} Security Item Id specified for new User. Id: {model.User.SecurityItemId}."); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); @@ -388,7 +389,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance SbmCoreInstanceConsole_Control repositoryConsole = new SbmCoreInstanceConsole_Control(SessionData_Control, repository); disposables.Add(repositoryConsole); - SbmCoreInstanceConsole_Base.RepositoryInitialisationData repoInitData = new SbmCoreInstanceConsole_Base.RepositoryInitialisationData(); + SbmRepositoryInitialisationData repoInitData = new SbmRepositoryInitialisationData(); repoInitData.Organisation.AffiliateId = SysId.ToSysId(model.Organisation.AffiliateId); repoInitData.Organisation.AssociationId = SysId.ToSysId(model.Organisation.AssociationId); repoInitData.Organisation.Name = model.Organisation.Name; @@ -400,7 +401,8 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance repoInitData.User.LastName = model.User.LastName; repoInitData.User.Email = model.User.Email; repoInitData.User.SecurityItemId = SysId.ToSysId(model.User.SecurityItemId); - repoInitData.User.Code = model.User.Code; + // User Email is used for the Security Item Code for login. + repoInitData.User.Code = model.User.Email; repoInitData.User.Password = model.User.Password; repoInitData.User.PasswordSet = StringUtil.ToBool(model.User.PasswordSet); if (!repositoryConsole.InitialiseRepository(repoInitData)) diff --git a/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController-Ajax-Database.cs b/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController-Ajax-Database.cs new file mode 100644 index 0000000..6dc4bf2 --- /dev/null +++ b/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController-Ajax-Database.cs @@ -0,0 +1,489 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using NPOI.SS.Formula.Functions; +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Net.Standard.Dbas.App; +using Sarand.BusinessMgr.Web.Control.Components; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Helpers; +using Sarand.Net.Standard.Base.Utils; +using Sarand.Net.Standard.Dbas.Data; +using Sarand.Net.Standard.Dbas.Proc; +using System.Collections.Generic; +using System; +using Sarand.BusinessMgr.Web.Control.Models.System; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using DocumentFormat.OpenXml.EMMA; +using System.Linq; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.Net.Standard.Dbas.Base; +using Sarand.BusinessMgr.Web.Control.Consoles; +using System.Reflection; +using static Sarand.BusinessMgr.Net.Standard.Dbas.Utils.SbmDbDfnGenerator; +using Sarand.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; + +namespace Sarand.BusinessMgr.Web.Control.Controllers.System +{ + //====================================================================== + // System Controller - Ajax - Database. + //====================================================================== + partial class SystemController + { + //------------------------------------------------------------------- + // Database data. + private class DatabaseTableData + { + public String SchemaName { get; set; } + public String TableName { get; set; } + public String QualifiedName { get; set; } + public int RowCount { get; set; } + public int ColumnCount { get; set; } + public int IndexCount { get; set; } + } + + //------------------------------------------------------------------- + // Get Database Table List ajax request. + //------------------------------------------------------------------- + private class AjaxResponse_DatabaseTableList : AjaxResponse_Data + { + // Construction. + public AjaxResponse_DatabaseTableList(SbmModel_Control model) : base(model) { } + // Table list. + public List Tables { get; } = new List(); + } + //------------------------------------------------------------------- + [HttpPost] + [Route("System/Ajax/GetDatabaseTables")] + public IActionResult Ajax_GetDatabaseTables(Model_System model) + { + String messageTitle = Localiser["system.caption.database"]; + AjaxResponse_DatabaseTableList responseData = new AjaxResponse_DatabaseTableList(model); + + // Validate session. + if (!ValidUserSession) + return GetAjaxResult_InvalidSession(responseData); + + // Record disposable items as they are created so all can be disposed when needed. + using (DisposableCollection disposableItems = new DisposableCollection()) + { + // Database connection. + Sbm.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseFilter.Instance), Sbm.Database.Unknown); + if (databaseInstance <= 0) + return Json(responseData.SetMessage(messageTitle, $"Database instance must be specified.")); + ISacsDatabase db = GetDatabase(databaseInstance); + if (db == null) + return Json(responseData.SetMessage(messageTitle, $"Database unavailable for instance '{databaseInstance}'.")); + + // Database table row counts. + Dictionary tableRowCounts = new Dictionary(StringComparer.OrdinalIgnoreCase); + String query = + "SELECT QUOTENAME(SCHEMA_NAME(sOBJ.schema_id)) + '.' + QUOTENAME(sOBJ.name) As [TableName], SUM(sPTN.Rows) As [RowCount] " + + "FROM sys.objects AS sOBJ " + + "INNER JOIN sys.partitions AS sPTN ON sOBJ.object_id = sPTN.object_id " + + "WHERE sOBJ.type = 'U' AND sOBJ.is_ms_shipped = 0x0 AND index_id< 2 /*Index Id: 0:Heap,1:Clustered*/ " + + "GROUP BY sOBJ.schema_id, sOBJ.name"; + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, query)) + { + while (dbResultSet != null && dbResultSet.NextRecord()) + { + tableRowCounts.Add(dbResultSet.GetRecordValues().GetValue("TableName").ToString(), (int)dbResultSet.GetRecordValues().GetValue("RowCount").AsLong()); + } + } + + // Database tables. + List tableDfns = db.GetTableDfns(); + foreach (DbDfnTable tableDfn in tableDfns.OrderBy(item => item.Name)) + { + // Filter by table name. + if (!StringUtil.IsEmpty(model.DatabaseFilter.Search) && !tableDfn.Name.ContainsCI(model.DatabaseFilter.Search)) + continue; + + DatabaseTableData tableData = new DatabaseTableData(); + tableData.SchemaName = tableDfn.Schema; + tableData.TableName = tableDfn.Name; + tableData.QualifiedName = tableDfn.QualifiedName; + tableData.ColumnCount = tableDfn.ColumnCount; + tableData.IndexCount = tableDfn.IndexCount; + + // Row count. + tableData.RowCount = tableRowCounts.GetValueOrDefault(tableDfn.QuotedQualifiedName, 0); + + responseData.Tables.Add(tableData); + } + } + + // Complete response. + responseData.Success = true; + return Json(responseData); + } + + //------------------------------------------------------------------- + /// + /// Get database by type. + /// + private ISacsDatabase GetDatabase(Sbm.Database databaseInstance) + { + switch (databaseInstance) + { + case Sbm.Database.Control: + return App.GetControlDatabase(); + case Sbm.Database.Template: + return GetDatabaseByContext(Sbm.RepositoryContext_Template); + case Sbm.Database.Demo: + return GetDatabaseByContext(Sbm.RepositoryContext_Demo); + } + return null; + } + /// + /// Get database by Instance Context. + /// + private ISacsDatabase GetDatabaseByContext(String instanceContext) + { + SbmcRepository repository = ControlInstanceMgr.GetRepositoryByContext(instanceContext); + if (repository != null) + { + SacsDatabaseConsole.OdbcConfig config = SbmCoreInstanceConsole_Dbas.GetRepositoryOdbcConfig(repository); + return SacsDatabaseConsole.OpenOdbcDatabase(config); + } + return null; + } + + //------------------------------------------------------------------- + // Validate Database Schema ajax request. + //------------------------------------------------------------------- + private class DbSchemaItemResponseData + { + public int Id { get; set; } + public String SchemaName { get; set; } + public String TableName { get; set; } + public String ColumnName { get; set; } + public int ColumnPosition { get; set; } + public String IndexName { get; set; } + public String Comment { get; set; } + } + private class AjaxResponse_ValidateDatabaseSchema : AjaxResponse_Data + { + // Construction. + public AjaxResponse_ValidateDatabaseSchema(SbmModel_Control model) : base(model) { } + // Database instance. + public String Instance { get; set; } + // Schema validation list. + public List Items { get; } = new List(); + } + //------------------------------------------------------------------- + [HttpPost] + [Route("System/Ajax/ValidateDatabaseSchema")] + public IActionResult Ajax_ValidateDatabaseSchema(Model_System model) + { + String messageTitle = Localiser["system.caption.database"]; + AjaxResponse_ValidateDatabaseSchema responseData = new AjaxResponse_ValidateDatabaseSchema(model); + + // Validate session. + if (!ValidUserSession) + return GetAjaxResult_InvalidSession(responseData); + + // Record disposable items as they are created so all can be disposed when needed. + using (DisposableCollection disposableItems = new DisposableCollection()) + { + + // Database instance. + Sbm.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseFilter.Instance), Sbm.Database.Unknown); + if (databaseInstance <= 0) + return Json(responseData.SetMessage(messageTitle, "Database instance must be specified")); + responseData.Instance = databaseInstance.ToString(); + + // Database connection. + ISacsDatabase db = GetDatabase(databaseInstance); + if (db == null) + return Json(responseData.SetMessage(messageTitle, $"Unrecognised database instance specified: '{model.DatabaseFilter.Instance}'.")); + + // Retrieve XML database schema definition. + Dictionary xmlSchemas = GetSmlSchema(databaseInstance); + if (!xmlSchemas.Any()) + return Json(responseData.SetMessage(messageTitle, "Failed to extract XML schema definitions.")); + + // Extract schema from XML definition. + SaDbProcess_ConvertDbSchema.Config cfgSchemaConvert = new SaDbProcess_ConvertDbSchema.Config(); + SaDbProcess_ConvertDbSchema procSchemaConvert = new SaDbProcess_ConvertDbSchema(cfgSchemaConvert); + List tables = new List(); + foreach (String schemaName in xmlSchemas.Keys) + { + String xmlSchema = xmlSchemas[schemaName]; + foreach (DbDfnTable table in procSchemaConvert.ConvertXmlToTables(xmlSchema)) + { + if (tables.Any(item => item.Matches(table))) + { + SaLogger.Debug($"{SysUtil.Fn} Duplicate table '{table.QualifiedName}' found in schema '{schemaName}'."); + continue; + } + tables.Add(table); + } + if (procSchemaConvert.HasErrorMessage()) + return Json(responseData.SetMessage(messageTitle, $"Failed to convert XML schema '{schemaName}': {procSchemaConvert.GetErrorMessage().TrimEnd('.')}.")); + } + + SaDbProcess_CompareDatabaseSchemas.Config cfgSchemaCompare = new SaDbProcess_CompareDatabaseSchemas.Config(tables, db); + cfgSchemaCompare.HideIdenticalObjects = true; + cfgSchemaCompare.IgnorePosition = true; + SaDbProcess_CompareDatabaseSchemas procSchemaCompare = new SaDbProcess_CompareDatabaseSchemas(cfgSchemaCompare); + procSchemaCompare.OnSchemaComparisonItemAdded += OnSchemaComparisonItemAdded; + procSchemaCompare.RunProcess(); + + List schemaComparisonItems = procSchemaCompare.GetSchemaComparisonItems(); + foreach (SaDbProcess_CompareDatabaseSchemas.SchemaComparisonItem schemaComparisonItem in schemaComparisonItems) + { + DbSchemaItemResponseData item = new DbSchemaItemResponseData() + { + Id = schemaComparisonItem.Id, + SchemaName = schemaComparisonItem.SchemaName, + TableName = schemaComparisonItem.TableName, + ColumnName = schemaComparisonItem.ColumnName, + ColumnPosition = schemaComparisonItem.ColumnPosition, + IndexName = schemaComparisonItem.IndexName, + Comment = schemaComparisonItem.Comment + }; + responseData.Items.Add(item); + } + } + + // Complete response. + responseData.Success = true; + return Json(responseData); + } + + private Dictionary GetSmlSchema(Sbm.Database databaseInstance) + { + Dictionary schemas = new Dictionary(); + switch (databaseInstance) + { + case Sbm.Database.Control: + { + var assembly = typeof(SbmSystem_Dbas).GetTypeInfo().Assembly; + schemas.Add("SbmDbDfn_Control.xml", SacsResourceHelper.GetManifestResourceAsText(assembly, "", "SbmDbDfn_Control.xml")); + break; + } + case Sbm.Database.Template: + case Sbm.Database.Demo: + { + var assembly = typeof(SbmSystem_Dbas).GetTypeInfo().Assembly; + schemas.Add("SbmDbDfn.xml", SacsResourceHelper.GetManifestResourceAsText(assembly, "", "SbmDbDfn.xml")); + assembly = typeof(SacsDatabase).GetTypeInfo().Assembly; + HashSet schemaNames = new HashSet() + { + // Originally included common database definitions but these tables are now in the main BusMgr schema definition. + //"SaSecurityDbDfn.xml","SaCodeTypeDbDfn.xml", "SaReferenceDataDbDfn.xml", "SaItemOptionDbDfn.xml", + //"SaInterfaceDbDfn.xml", "SaItemDataDbDfn.xml", "SaItemDocsDbDfn.xml", "SaUpdateLogDbDfn.xml" + }; + foreach (String schemaName in schemaNames) + schemas.Add(schemaName, SacsResourceHelper.GetManifestResourceAsText(assembly, "", schemaName)); + break; + } + } + return schemas; + } + + + // Processing events. + public void OnSchemaComparisonItemAdded(object sender, SaDbProcess_CompareDatabaseSchemas.SchemaComparisonItemAddedEventArgs e) + { + SaDbProcess_CompareDatabaseSchemas proc = sender as SaDbProcess_CompareDatabaseSchemas; + } + + //------------------------------------------------------------------- + // Database Table ajax request. + //------------------------------------------------------------------- + private class AjaxResponseData_Table + { + public AjaxResponseData_Table(DbDfnTable tableDfn) + { + Schema = tableDfn.Schema; + Name = tableDfn.Name; + if (!StringUtil.IsEmpty(tableDfn.Remarks)) + Remarks = tableDfn.Remarks; + foreach (DbDfnColumn columnDfn in tableDfn.Columns) + Columns.Add(new AjaxResponseData_Column(columnDfn)); + foreach (DbDfnIndex indexDfn in tableDfn.Indices) + Indices.Add(new AjaxResponseData_Index(indexDfn)); + } + public String Schema { get; } + public String Name { get; } + public String QualifiedName { get { return (!StringUtil.IsEmpty(Schema) ? Schema + "." : "") + Name; } } + public String QuotedQualifiedName { get { return (!StringUtil.IsEmpty(Schema) ? "[" + Schema + "]." : "") + "[" + Name + "]"; } } + public String Remarks { get; set; } = String.Empty; + public List Properties { get; } = new List(); + public List Columns { get; } = new List(); + public List Indices { get; } = new List(); + } + private class AjaxResponseData_Column + { + public int Pos { get; } + public String Name { get; } + public String Format { get; } + public String DataTypeName { get; } + public short? DataTypeNative { get; } + public String DataTypeNameNative { get; } + public bool? IsIdentity { get; } + public long? Size { get; } + public long? BufferLen { get; } + public short? DecimalDigits { get; } + public bool? Nullable { get; } + public bool? IsNullable { get; } + public String Remarks { get; } + public AjaxResponseData_Column(DbDfnColumn columnDfn) + { + Pos = columnDfn.Pos; + Name = columnDfn.Name; + Format = columnDfn.GetFormat(); + if (!StringUtil.IsEmpty(columnDfn.DataTypeName)) + DataTypeName = columnDfn.DataTypeName; + if (columnDfn.DataTypeNative > 0) + DataTypeNative = columnDfn.DataTypeNative; + if (!StringUtil.IsEmpty(columnDfn.DataTypeNameNative)) + DataTypeNameNative = columnDfn.DataTypeNameNative; + if (columnDfn.IsIdentity) + IsIdentity = columnDfn.IsIdentity; + if (columnDfn.Size > 0) + Size = columnDfn.Size; + if (columnDfn.BufferLen > 0) + BufferLen = columnDfn.BufferLen; + if (columnDfn.DecimalDigits > 0) + DecimalDigits = columnDfn.DecimalDigits; + if (columnDfn.Nullable == DbColumnNullable.Nullable) + Nullable = true; + if (columnDfn.IsNullable) + IsNullable = columnDfn.IsNullable; + if (!StringUtil.IsEmpty(columnDfn.Remarks)) + Remarks = columnDfn.Remarks; + } + } + private class AjaxResponseData_Index + { + public String Name { get; } + public int? IndexType { get; } + public bool? Unique { get; } + public bool? Primary { get; } + public bool? Clustered { get; } + public bool? Nullable { get; } + public int? Pages { get; } + public int? UniqueValues { get; } + public List Columns { get; } = new List(); + public AjaxResponseData_Index(DbDfnIndex indexDfn) + { + Name = indexDfn.Name; + if (indexDfn.IndexType > 0) + IndexType = indexDfn.IndexType; + if (indexDfn.Unique) + Unique = indexDfn.Unique; + if (indexDfn.Primary) + Primary = indexDfn.Primary; + if (indexDfn.Clustered) + Clustered = indexDfn.Clustered; + if (indexDfn.Nullable) + Nullable = indexDfn.Nullable; + if (indexDfn.Pages > 0) + Pages = indexDfn.Pages; + if (indexDfn.UniqueValues > 0) + UniqueValues = indexDfn.UniqueValues; + foreach (DbDfnIndexColumn indexColumnDfn in indexDfn.Columns) + Columns.Add(new AjaxResponseData_IndexColumn(indexColumnDfn)); + } + } + private class AjaxResponseData_IndexColumn + { + public short Seq { get; } + public String Name { get; } + public bool? Desc { get; } + public AjaxResponseData_IndexColumn(DbDfnIndexColumn indexColumnDfn) + { + Seq = indexColumnDfn.Seq; + Name = indexColumnDfn.Name; + if (!indexColumnDfn.Ascend) + Desc = true; + } + } + private class AjaxResponse_DatabaseTable : AjaxResponse_Data + { + // Construction. + public AjaxResponse_DatabaseTable(SbmModel_Control model) : base(model) { } + // Database table. + public String PopupTitle { get; set; } + public AjaxResponseData_Table Table { get; set; } + } + //------------------------------------------------------------------- + [HttpPost] + [Route("System/Ajax/GetDatabaseTable")] + public IActionResult Ajax_GetDatabaseTable(Model_System model) + { + String messageTitle = Localiser["system.caption.database"]; + AjaxResponse_DatabaseTable responseData = new AjaxResponse_DatabaseTable(model); + + // Validate session. + if (!ValidUserSession) + return GetAjaxResult_InvalidSession(responseData); + + // Record disposable items as they are created so all can be disposed when needed. + using (DisposableCollection disposableItems = new DisposableCollection()) + { + + // Parameters. + if (StringUtil.IsEmpty(model.DatabaseTable.Name)) + return Json(responseData.SetMessage(messageTitle, "Table name must be supplied.")); + + // Database instance. + Sbm.Database databaseInstance = EnumUtil.ParseEnum(StringUtil.EmptyOnNull(model.DatabaseTable.Instance), Sbm.Database.Unknown); + if (databaseInstance <= 0) + return Json(responseData.SetMessage(messageTitle, "Database instance must be specified")); + + // Database connection. + ISacsDatabase db = GetDatabase(databaseInstance); + + // Table definition. + DbDfnTable tableDfn = db.GetTableDfn(model.DatabaseTable.Name, true); + if (tableDfn == null) + return Json(responseData.SetMessage(messageTitle, "Invalid Table name supplied.")); + + // Populate table response. + responseData.Table = new AjaxResponseData_Table(tableDfn); + responseData.PopupTitle = Localiser["label.table"] + ": " + tableDfn.Name; + + // Database sizing. + String query = "Exec sp_SpaceUsed [" + tableDfn.QualifiedName + "];"; + using (DbResultSet dbResultSet = DbResultSet_DataReader.ExecuteQuery(db, query)) + { + if (dbResultSet != null && dbResultSet.NextRecord()) + { + // Row count. + long rows = StringUtil.ToLong(dbResultSet.GetRecordValues().GetValue("rows").ToString()); + if (rows > 0) + responseData.Table.Properties.Add(new AjaxResponse_Data.ItemLabelValue() { Label = "Rows", Value = rows.ToString() }); + // Reserved space. + String reserved = dbResultSet.GetRecordValues().GetValue("reserved").AsString(); + if (!StringUtil.IsEmpty(reserved)) + responseData.Table.Properties.Add(new AjaxResponse_Data.ItemLabelValue() { Label = "Reserved", Value = reserved }); + // Data space. + String data = dbResultSet.GetRecordValues().GetValue("data").AsString(); + if (!StringUtil.IsEmpty(data)) + responseData.Table.Properties.Add(new AjaxResponse_Data.ItemLabelValue() { Label = "Data", Value = data }); + // Index space. + String index = dbResultSet.GetRecordValues().GetValue("index_size").AsString(); + if (!StringUtil.IsEmpty(index)) + responseData.Table.Properties.Add(new AjaxResponse_Data.ItemLabelValue() { Label = "Indices", Value = index }); + // Unused space. + String unused = dbResultSet.GetRecordValues().GetValue("unused").AsString(); + if (!StringUtil.IsEmpty(unused)) + responseData.Table.Properties.Add(new AjaxResponse_Data.ItemLabelValue() { Label = "Unused", Value = unused }); + } + } + } + + // Complete response. + responseData.Success = true; + return Json(responseData); + } + + //------------------------------------------------------------------- + } + //====================================================================== +} diff --git a/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController.cs b/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController.cs new file mode 100644 index 0000000..f777c8a --- /dev/null +++ b/SaBusinessMgrCoreWebControl/Control/Controllers/System/SystemController.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Web.Control.Components; + +namespace Sarand.BusinessMgr.Web.Control.Controllers.System +{ + //====================================================================== + public partial class SystemController : SbmController_Control + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public SystemController(SbmLocaliser localiser, ILogger logger) : + base(localiser, logger) + { + } + + //------------------------------------------------------------------- + /// + /// System - Home. + /// - No 'System' home page for now, redirect to home page. + /// + [HttpGet] + public IActionResult Index() + { + return RedirectToAction("", ""); + } + + //------------------------------------------------------------------- + } + //====================================================================== +} diff --git a/SaBusinessMgrCoreWebControl/Control/Models/Instance/Model_RepositoryInit.cs b/SaBusinessMgrCoreWebControl/Control/Models/Instance/Model_RepositoryInit.cs index 9653a66..b320bc2 100644 --- a/SaBusinessMgrCoreWebControl/Control/Models/Instance/Model_RepositoryInit.cs +++ b/SaBusinessMgrCoreWebControl/Control/Models/Instance/Model_RepositoryInit.cs @@ -34,8 +34,8 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance UserFirstName, UserLastName, UserEmail, - UserCode, UserPassword, + UserPasswordConfirm, } //------------------------------------------------------------------- @@ -89,8 +89,8 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance public String FirstName { get; set; } public String LastName { get; set; } public String Email { get; set; } - public String Code { get; set; } public String Password { get; set; } + public String PasswordConfirm { get; set; } public String PasswordSet { get; set; } } public UserData User { get; } = new UserData(); @@ -139,7 +139,7 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance else { // Check that organisation name is not already in use. - if (instanceConsole.Internals_Core.AccountMgr.OrganisationExistsByName(Organisation.Name, GetOrganisationAffiliateId())) + if (instanceConsole.Internals.AccountMgr.OrganisationExistsByName(Organisation.Name, GetOrganisationAffiliateId())) responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]); } } @@ -198,30 +198,30 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance if (User.Email != null) { String controlName = GetControlName(Control.UserEmail); + User.Email = User.Email.ToLowerInvariant(); responseData.SetControlValue(controlName, User.Email); if (StringUtil.IsBlank(User.Email)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); - else if (StringUtil.GetLength(User.Email) > GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email)) + else if (!SacsDataValidationHelper.IsValidEmailAddress(User.Email)) + responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); + // Email address must fit in both the Security Item Email and Code fields. + else if (StringUtil.GetLength(User.Email) > GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress) || StringUtil.GetLength(User.Email) > GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_Code)) responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email)]); - } - - // User Code. - if (User.Code != null) - { - String controlName = GetControlName(Control.UserCode); - responseData.SetControlValue(controlName, User.Code); - if (StringUtil.IsBlank(User.Code)) - responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); - else if (StringUtil.GetLength(User.Code) > GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_Code)) - responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_Code)]); else { - // Ensure that user name is not already in use. - SysId securityItemId = instanceConsole.Internals_Core.SecurityConsole.GetIdForItemCode(SaSecurity.ItemType.User, User.Code); + // Ensure that Email is not already in use as a User Code. + SysId securityItemId = instanceConsole.Internals.SecurityConsole.GetIdForItemCode(SaSecurity.ItemType.User, User.Email); if (SysId.IsValid(securityItemId) && !securityItemId.Equals(GetUserSecurityItemId())) - { + responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]); - } + // Ensure that Email is not already in use as a User Email. + SaSecurityItem.Params prmSecurityItem = new SaSecurityItem.Params(); + prmSecurityItem.IdsExcluded.AddId(GetUserSecurityItemId()); + prmSecurityItem.SecurityItemType = SaSecurity.ItemType.User; + prmSecurityItem.EmailAddress = User.Email; + prmSecurityItem.StatusCat = SaSecurityItem.StatusCat.Any; + if (instanceConsole.Internals.SecurityConsole.GetSecurityItemCount(prmSecurityItem) > 0) + responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]); } } @@ -229,7 +229,6 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance if (User.Password != null && (StringUtil.ToBool(User.PasswordSet) || !StringUtil.ToBool(User.Exists))) { String controlName = GetControlName(Control.UserPassword); - responseData.SetControlValue(controlName, User.Password); if (StringUtil.IsBlank(User.Password)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (StringUtil.GetLength(User.Password) < Sbm.Config.Security.Password.MinLength) @@ -238,6 +237,14 @@ namespace Sarand.BusinessMgr.Web.Control.Models.Instance responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", Sbm.Config.Security.Password.MaxLength]); } + // User Password. + if (User.PasswordConfirm != null && User.Password != null && (StringUtil.ToBool(User.PasswordSet) || !StringUtil.ToBool(User.Exists))) + { + String controlName = GetControlName(Control.UserPasswordConfirm); + if (!User.PasswordConfirm.Equals(User.Password)) + responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); + } + //----------------------------------------------------------- } diff --git a/SaBusinessMgrCoreWebControl/Control/Models/System/Model_System.cs b/SaBusinessMgrCoreWebControl/Control/Models/System/Model_System.cs new file mode 100644 index 0000000..2a5c7c3 --- /dev/null +++ b/SaBusinessMgrCoreWebControl/Control/Models/System/Model_System.cs @@ -0,0 +1,68 @@ +using Microsoft.AspNetCore.Mvc.Rendering; +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Web.Control.Components; +using Sarand.Net.Standard.Base.Core; +using System.Collections.Generic; +using System; +using Sarand.Net.Standard.Base.App; +using System.Text.RegularExpressions; + +namespace Sarand.BusinessMgr.Web.Control.Models.System +{ + //======================================================================= + public class Model_System : SbmModel_Control + { + //------------------------------------------------------------------- + // Construction. + public Model_System(SbmLocaliser localiser) : + base(localiser) + { + } + + //------------------------------------------------------------------- + // Properties. + + //------------------------------------------------------------------- + // Database page properties. + public class DatabaseFilterData + { + public String Instance { get; set; } + public String Search { get; set; } + } + public DatabaseFilterData DatabaseFilter { get; } = new DatabaseFilterData(); + public class DatabaseTableData + { + public String Instance { get; set; } + public String Name { get; set; } + } + public DatabaseTableData DatabaseTable { get; } = new DatabaseTableData(); + + public IEnumerable GetDatabases() + { + List items = new List(); + if (ValidUserSession) + { + items.Add("Core", Localiser["label.core"]); + items.Add("Reference", Localiser["label.reference"]); + items.Add("Support", Localiser["label.support"]); + } + return new SelectList(items, "Code", "Desc"); + } + + //------------------------------------------------------------------- + // Logs page properties. + public String LoggingRootFolder { get; } = Regex.Replace(SaLogger.LogFolder, "[\\\\/]Admin$", ""); + // Log file filter. + public class LogsFilterData + { + public String Folder { get; set; } + public String Year { get; set; } + public String Month { get; set; } + public String Filename { get; set; } + } + public LogsFilterData LogsFilter { get; } = new LogsFilterData(); + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebControl/Localisation/SbmControlProperties.resx b/SaBusinessMgrCoreWebControl/Localisation/SbmControlProperties.resx index a552a00..b51001b 100644 --- a/SaBusinessMgrCoreWebControl/Localisation/SbmControlProperties.resx +++ b/SaBusinessMgrCoreWebControl/Localisation/SbmControlProperties.resx @@ -471,4 +471,40 @@ Count + + Password confirm + + + Database Schemas + + + Control Database + + + Template Database + + + Demo Database + + + Database schema is valid. + + + Column + + + Comment + + + Index + + + Password must be a minimum of {0} characters with upper and lower case letters, at least one number and special character unless at least {1} characters long. + + + Current password + + + Strength + \ No newline at end of file diff --git a/SaBusinessMgrCoreWebControl/SaBusinessMgrCoreWebControl.csproj b/SaBusinessMgrCoreWebControl/SaBusinessMgrCoreWebControl.csproj index 0fc1db2..67f6d61 100644 --- a/SaBusinessMgrCoreWebControl/SaBusinessMgrCoreWebControl.csproj +++ b/SaBusinessMgrCoreWebControl/SaBusinessMgrCoreWebControl.csproj @@ -26,8 +26,6 @@ - - diff --git a/SaBusinessMgrCoreWebControl/Views/Home/Index.cshtml b/SaBusinessMgrCoreWebControl/Views/Home/Index.cshtml index 6dd8a59..53fd381 100644 --- a/SaBusinessMgrCoreWebControl/Views/Home/Index.cshtml +++ b/SaBusinessMgrCoreWebControl/Views/Home/Index.cshtml @@ -2,6 +2,7 @@ @inject SbmLocaliser Localiser @{ ViewData["Title"] = "Home Page"; + Model.AdditionalFiles_JS.Add("js/sbc-home.js"); }
@@ -54,3 +55,98 @@
+ +@* Database Schema form. *@ + +@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmDatabaseSchema" })) +{ + +} + + + +@* Database Schema Verification *@ +
+ +
+
@Localiser["caption.database.schemas"]
+
+
+ + @* Database Schema - Control *@ +
+
+
@Localiser["caption.database.control"]
+
+
+
+ + @* Database Schema - Template *@ +
+
+
@Localiser["caption.database.template"]
+
+
+
+ + @* Database Schema - Demo *@ +
+
+
@Localiser["caption.database.demo"]
+
+
+
+ + @* Db Schema templates *@ +
+ @* Db Schema table template *@ +
+ + + + + + + + + + + +
@Localiser["label.schema"]@Localiser["label.table"]@Localiser["label.column"]@Localiser["label.index"]@Localiser["label.comment"]
+
+ @* Db Schema Item row *@ + + + + + + + + +
+
+
+ +
diff --git a/SaBusinessMgrCoreWebControl/Views/Instance/Repository/Initialise.cshtml b/SaBusinessMgrCoreWebControl/Views/Instance/Repository/Initialise.cshtml index 9a3559f..a658e08 100644 --- a/SaBusinessMgrCoreWebControl/Views/Instance/Repository/Initialise.cshtml +++ b/SaBusinessMgrCoreWebControl/Views/Instance/Repository/Initialise.cshtml @@ -139,7 +139,7 @@
- +
@@ -156,7 +156,7 @@
- +
@@ -173,29 +173,12 @@
- +
- @Html.TextBox("User.Email", "", new { @id = "", @class = "UserEmail sbc-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email) }) -
-
-
-
-
- - @* User Code *@ -
-
-
-
- -
-
-
-
- @Html.TextBox("User.Code", "", new { @id = "", @class = "UserCode sbc-input", @maxlength = @Model.GetControlMaxLength(Sarand.Net.Standard.Base.Security.SaSecurityDbDfn.ColumnIdx.SaSecItem_Code) }) + @Html.TextBox("User.Email", "", new { @id = "", @class = "UserEmail sbc-input lower", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_Email) })
@@ -207,7 +190,7 @@
- +
@@ -220,6 +203,23 @@
+ @* User Password Confirm *@ +
+
+
+
+ +
+
+
+
+ @Html.Password("User.PasswordConfirm", "", new { @id = "", @class = "UserPasswordConfirm sbc-input", @maxlength = Sbm.Config.Security.Password.MaxLength }) +
+
+
+
+
+ }
diff --git a/SaBusinessMgrCoreWebControl/Views/Security/ChangePassword.cshtml b/SaBusinessMgrCoreWebControl/Views/Security/ChangePassword.cshtml index 40290cf..f814262 100644 --- a/SaBusinessMgrCoreWebControl/Views/Security/ChangePassword.cshtml +++ b/SaBusinessMgrCoreWebControl/Views/Security/ChangePassword.cshtml @@ -41,7 +41,7 @@
@Localiser["label.strength"] 
-
+
diff --git a/SaBusinessMgrCoreWebControl/Views/Shared/_Layout.cshtml b/SaBusinessMgrCoreWebControl/Views/Shared/_Layout.cshtml index 796055a..12a3738 100644 --- a/SaBusinessMgrCoreWebControl/Views/Shared/_Layout.cshtml +++ b/SaBusinessMgrCoreWebControl/Views/Shared/_Layout.cshtml @@ -183,12 +183,15 @@ @* Footer *@
- @(Model.CopyrightNotice) - Sarand BusinessMgr +
+
BusinessMgr v@(Sbm.Version.GetAppVersion())
+
@(Model.CopyrightNotice) - Sarand
+
@* Form to allow page navigation. *@ - @using (@Html.BeginForm(FormMethod.Post, new { @id = "frmNavigate" })) { } + @using (@Html.BeginForm("", null, FormMethod.Post, new { @id = "frmNavigate" })) { }
@* Scripts *@ diff --git a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-base.css b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-base.css index 114f106..55615bc 100644 --- a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-base.css +++ b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-base.css @@ -235,7 +235,7 @@ td.action width: 25%; } -.width50pc +.halfwidth, .width50pc { width: 50%; } @@ -245,7 +245,17 @@ td.action width: 100%; } -.fullheight +.height25pc +{ + height: 25%; +} + +.halfheight, .height50pc +{ + height: 50%; +} + +.fullheight, .height100pc { height: 100%; } diff --git a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-data.css b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-data.css index 511e2d2..d870800 100644 --- a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-data.css +++ b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-data.css @@ -311,7 +311,7 @@ ul.nav.sbc-burger ul.sbc-dropdown-menu li.sbc-action.sbc-dropdown-item:hover .sb .sbc-panel-messages { - margin: 8px 16px; + margin: 5px 12px; padding: 2px 12px 2px 8px; font-size: 16px; } diff --git a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-form.css b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-form.css index 8e6768c..9f9ec72 100644 --- a/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-form.css +++ b/SaBusinessMgrCoreWebControl/wwwroot/css/sbc-form.css @@ -248,9 +248,9 @@ /* Password strength */ -#prgPasswordStrength +.sbc-password-strength { - width: 200px; + width: 96%; height: 18px; margin: 6px 24px; border-color: #595959; @@ -259,7 +259,7 @@ overflow: hidden; } -#prgPasswordStrength .ui-widget-header +.sbc-password-strength .ui-widget-header { margin: 0; height: 20px; @@ -269,19 +269,19 @@ border-radius: 0; } -#prgPasswordStrength.amber .ui-widget-header +.sbc-password-strength.amber .ui-widget-header { background-color: #FFBF00; border-color: #FFBF00; } -#prgPasswordStrength.green .ui-widget-header +.sbc-password-strength.green .ui-widget-header { background-color: #238823; border-color: #238823; } -#prgPasswordStrength.ui-corner-all +.sbc-password-strength.ui-corner-all { border-radius: 8px; } diff --git a/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-home.js b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-home.js new file mode 100644 index 0000000..29bd5e0 --- /dev/null +++ b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-home.js @@ -0,0 +1,90 @@ +/* + * BusMgr Control - Home scripts. + */ + +(function (win, doc, undef) +{ + "use strict"; + let ch = sbc.controlHome = {}; + let $pnl = ch.$pnl = {}, $dlg = ch.$dlg = {}, $frm = ch.$frm = {}; + + //-------------------------------------------------------------- + ch.refreshApplicationStats = function (delay) + { + } + ch.handleStatsResponse = function (response) + { + } + + //-------------------------------------------------------------- + ch.refreshDbSchema = function (instance, delay) + { + if (sbc.awaitingLogin) return; + if (!ch.awaitingSchemaResponse) + { + let $pnlSchema = $('.sbc-panel-results .sbc-panel-info.DbSchema.' + instance); + var $items = $('.sbc-panel-item-list', $pnlSchema).fadeOut(200).empty(); + var $msgs = $('.sbc-panel-messages', $pnlSchema).hide().empty().append($('
' + sbc.msg.dataQuerying + '
')).fadeIn(200); + } + $('.DatabaseInstance', $frm.dbSchema).val(instance); + sbc.ajax.dbSchema = sbc.ajax.dbSchema || { url: sbc.url.base + 'System/Ajax/ValidateDatabaseSchema', formId: $frm.dbSchema.prop('id'), callbackFn: ch.handleDbSchemaResponse, noWaitIcon: true }; + sbc.doAjaxRequest(sbc.ajax.dbSchema, delay || 50); + ch.awaitingSchemaResponse = true; + } + ch.handleDbSchemaResponse = function (response) + { + sbc.debug('handleDbSchemaResponse', response); + delete ch.awaitingSchemaResponse; + let $pnlSchema = $('.sbc-panel-results .sbc-panel-info.DbSchema.' + response.instance); + var $msgs = $('.sbc-panel-messages', $pnlSchema).hide().empty(); + var $tablePanel = $('.sbc-panel-item-table', $pnlSchema).hide(); + var $table = $('table.sbc-item-list', $tablePanel); + sbc.debug($table); + $('tbody tr', $table).remove(); + if (!response.success) return; + if (response.instance == 'Control') ch.toSchema = setTimeout(function () { ch.refreshDbSchema('Template'); }, 250); + if (response.instance == 'Template') ch.toSchema = setTimeout(function () { ch.refreshDbSchema('Demo'); }, 250); + // Items. + var items = response.items; + if (!items.length) + return $msgs.append($('
' + sbc.msg.dbSchemaValid + '
')).fadeIn(500); + for (let itemIdx = 0; itemIdx < items.length; itemIdx++) + $table.append(ch.populateDbSchemaItem(ch.getDbSchemaRowTemplate(), items[itemIdx])); + $tablePanel.show(); + } + ch.getDbSchemaTableTemplate = function () + { + return $('.sbc-panel-results .sbc-panel-item-template .sbc-panel-item-table.DbSchema').clone().hide(); + } + ch.getDbSchemaRowTemplate = function () + { + return $('.sbc-panel-results .sbc-panel-item-template .sbc-row-item.DbSchemaItem').clone(); + } + ch.populateDbSchemaItem = function ($item, item) + { + if (!item) return; + $item.prop('id', sbc.itemIdPrefix + item.id); + $('.SchemaName', $item).text(item.schemaName); + $('.TableName', $item).text(item.tableName); + $('.IndexName', $item).text(item.indexName); + $('.ColumnName', $item).text(item.columnName); + $('.Comment', $item).text(item.comment); + return $item; + } + + //-------------------------------------------------------------- + $(function () + { + $frm.dbSchema = $('#frmDatabaseSchema'); + $pnl.dbSchemaControl = $('.sbc-panel-info.DbSchema.Control').append(ch.getDbSchemaTableTemplate()); + $pnl.dbSchemaTemplate = $('.sbc-panel-info.DbSchema.Template'); $pnl.dbSchemaTemplate.append(ch.getDbSchemaTableTemplate()); + $pnl.dbSchemaDemo = $('.sbc-panel-info.DbSchema.Demo').append(ch.getDbSchemaTableTemplate()); + + ch.toSchema = setTimeout(function () { ch.refreshDbSchema('Control'); }, 600); + // NB Can only request one of the database schemas at a time as they share the same ajax config. + }); + + //-------------------------------------------------------------- +}(window, window.document)); + +/* The End */ \ No newline at end of file diff --git a/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-main.js b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-main.js index 92ebb9e..b6b8c19 100644 --- a/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-main.js +++ b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-main.js @@ -255,7 +255,7 @@ var opt = sbc.dlgOpts(); sbc.$dlg.alert = $('
').dialog(opt); } - $('#dlgAlertMsg', sbc.$dlg.alert).html(msg.replace(/\\n/g, '
')); + $('#dlgAlertMsg', sbc.$dlg.alert).html(msg.replace(/\n/g, '
')); let btns = {}; btns[sbc.lbl.ok] = function () { $(this).dialog('close'); if (onOk) onOk(); }; sbc.$dlg.alert.dialog('option', { title: title || sbc.dlg.title.alert, buttons: btns }); @@ -277,7 +277,7 @@ btns[sbc.lbl.yes] = function () { $(this).dialog('close'); if (onOk) onOk(); }; btns[sbc.lbl.no] = function () { $(this).dialog('close'); if (onCancel) onCancel(); }; sbc.$dlg.confirm.dialog('option', { title: title || sbc.dlg.title.confirm, buttons: btns }); - $('#dlgConfirmMsg').html(msg.replace(/\\n/g, '
')); + $('#dlgConfirmMsg').html(msg.replace(/\n/g, '
')); sbc.openDialog(sbc.$dlg.confirm); } sbc.doProgress = function (title, msg, delay) @@ -295,7 +295,7 @@ opt.hide = { effect: 'fade', duration: 200 }; sbc.$dlg.progress = $('
').dialog(opt); } - $('#dlgProgressMsg').html(msg.replace(/\\n/g, '
')); + $('#dlgProgressMsg').html(msg.replace(/\n/g, '
')); sbc.$dlg.progress.dialog('option', { title: title || sbc.dlg.title.progress }); if (delay > 0) sbc.toShowProgress = setTimeout(function () { sbc.$dlg.progress.dialog('open'); }, delay); else sbc.$dlg.progress.dialog('open'); diff --git a/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-sec.js b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-sec.js index bab04f5..bd2c37a 100644 --- a/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-sec.js +++ b/SaBusinessMgrCoreWebControl/wwwroot/js/sbc-sec.js @@ -76,11 +76,11 @@ $('#ifEmailAddress,#ifPasswordCurrent,#ifPassword,#ifPasswordConfirm').on('input', function () { sbc.clearControlError(this); }); sbc.$frm.signIn = $('#frmSignIn'); sbc.$frm.signIn.on('keypress', '#ifEmailAddress,#ifPassword,#chkKeepMeSignedIn', function (e) { if (e.which == 13 && $('#ifEmailAddress', sbc.$frm.signIn).val() && $('#ifPassword', sbc.$frm.signIn).val()) sbc.doSignin(); }); - sbc.$frm.signIn.on('click', '#pbSignIn', function () { sbc.doSignin(); }).on('keypress', '#pbSignIn', function (e) { if (e.which == 13) sbc.doSignin(); });; + sbc.$frm.signIn.on('click', '#pbSignIn', function () { sbc.doSignin(); }).on('keypress', '#pbSignIn', function (e) { if (e.which == 13) sbc.doSignin(); }); sbc.$frm.chgPword = $('#frmChangePassword'); sbc.$frm.chgPword.on('keypress', '#ifPasswordCurrent,#ifPassword,#ifPasswordConfirm', function (e) { if (e.which == 13) sbc.doChangePassword(); }); sbc.$frm.chgPword.on('keyup', '#ifPassword', sbc.doScorePassword); - sbc.$prgPwordStrength = $('#prgPasswordStrength', sbc.$frm.chgPword).progressbar({ 'max': 5 }); + sbc.$prgPwordStrength = $('.sbc-password-strength', sbc.$frm.chgPword).progressbar({ 'max': 5 }); $('#pbChangePassword', sbc.$frm.chgPword).on('click', function () { sbc.doChangePassword(); }).on('keypress', function (e) { if (e.which == 13) sbc.doChangePassword(); }); sbc.$frm.reqPword = $('#frmRequestPassword'); sbc.$frm.reqPword.on('keypress', '#ifEmailAddress', function (e) { if (e.which == 13) sbc.doRequestPassword(); }); diff --git a/SaBusinessMgrCoreWebPortal/Localisation/SbmPortalProperties.resx b/SaBusinessMgrCoreWebPortal/Localisation/SbmPortalProperties.resx index aaedccf..89c01ac 100644 --- a/SaBusinessMgrCoreWebPortal/Localisation/SbmPortalProperties.resx +++ b/SaBusinessMgrCoreWebPortal/Localisation/SbmPortalProperties.resx @@ -720,4 +720,28 @@ Count + + Register Demo Account + + + Request Demo Account + + + Register + + + Request + + + Password confirm + + + Password must be a minimum of {0} characters with upper and lower case letters, at least one number and special character unless at least {1} characters long. + + + Current password + + + Strength + \ No newline at end of file diff --git a/SaBusinessMgrCoreWebPortal/Portal/App/SbmApplication_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/App/SbmApplication_Portal.cs index 7d66a14..dd89271 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/App/SbmApplication_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/App/SbmApplication_Portal.cs @@ -147,7 +147,7 @@ namespace Sarand.BusinessMgr.Web.Portal.App } public override ISacsDatabase GetBusMgrDatabase(SbmSessionContext sessionContext) { - return sessionContexts.GetValue(sessionContext.Index, null)?.BusMgrDatabase; + return sessionContexts.GetValue(sessionContext?.Index ?? 0, null)?.BusMgrDatabase; } // Instance configuration. public override SbmInstanceConfig GetInstanceConfig(SbmSessionContext sessionContext) @@ -169,47 +169,11 @@ namespace Sarand.BusinessMgr.Web.Portal.App //------------------------------------------------------------------- // Create consoles. - public SbmSessionConsole CreateSessionConsole(ISbmUserOrganisationContext userContext) + public SbmDemoInstanceConsole CreateDemoInstanceConsole() { - return SbmSessionConsole.CreateConsole(userContext); + return new SbmDemoInstanceConsole_Portal(SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(Sbm.RepositoryContext_Demo)); } - public SaDiaryConsole CreateDiaryConsole(ISbmUserOrganisationContext userContext) - { - return null; - } - public SaSecurityConsole CreateSecurityConsole(ISbmUserOrganisationContext userContext) - { - return new SbmSecurityConsole_Web(userContext); - } - public SaCodeTypeConsole CreateCodeTypeConsole(ISbmUserOrganisationContext userContext) - { - return new SbmCodeTypeConsole_Web(userContext); - } - public SaItemDataConsole CreateItemDataConsole(ISbmUserOrganisationContext userContext) - { - return null; - } - public SaItemDocConsole CreateItemDocConsole(ISbmUserOrganisationContext userContext) - { - return null; - } - public SaItemOptionConsole CreateItemOptionConsole(ISbmUserOrganisationContext userContext) - { - return new SbmItemOptionConsole_Web(userContext); - } - public SaInterfaceConsole CreateInterfaceConsole(ISbmUserOrganisationContext userContext) - { - return null; - } - public SaUpdateLogConsole CreateUpdateLogConsole(ISbmUserOrganisationContext userContext) - { - return new SbmUpdateLogConsole_Web(userContext); - } - public SaReferenceDataConsole CreateReferenceDataConsole(ISbmUserOrganisationContext userContext) - { - return new SbmReferenceDataConsole_Portal(userContext); - } - public SbmEmailConsole CreateEmailConsole(ISbmUserOrganisationContext userContext) + public SbmEmailConsole CreateEmailConsole() { return new SbmEmailConsole_Portal(EmailConfig); } @@ -243,7 +207,7 @@ namespace Sarand.BusinessMgr.Web.Portal.App // Application configuration. appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs")); - emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email/Configs")); + emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email").GetSection("Configs")); LoggingRootFolder = AppConfig.Logging.RootFolder; // Application instance. @@ -306,10 +270,7 @@ namespace Sarand.BusinessMgr.Web.Portal.App if (owner.IsStatusActive && repository.IsStatusActive) { // Configure Core database. - SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig(); - config.Location = $"MsSql:{repository.ServerName}\\{repository.InstanceName}.{repository.DatabaseName}"; - config.User = repository.UserName; - config.Password = repository.Password; + SacsDatabaseConsole.OdbcConfig config = SbmCoreInstanceConsole_Dbas.GetRepositoryOdbcConfig(repository); SacsDatabase coreDatabase = SacsDatabaseConsole.OpenOdbcDatabase(config); if (!coreDatabase.HasErrorState()) diff --git a/SaBusinessMgrCoreWebPortal/Portal/App/SbmSystem_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/App/SbmSystem_Portal.cs index eae6156..fea2100 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/App/SbmSystem_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/App/SbmSystem_Portal.cs @@ -1,6 +1,7 @@ using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.Consoles; using Sarand.BusinessMgr.Net.Core.Web.Control.Consoles; +using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Web.Portal.Consoles; @@ -31,47 +32,47 @@ namespace Sarand.BusinessMgr.Web.Portal.App //------------------------------------------------------------------- // Create consoles. - public override SbmSessionConsole CreateSessionConsole(ISbmUserOrganisationContext userContext) + public override SbmSessionConsole CreateSessionConsole(SbmInternals internals) { - return SbmSessionConsole.CreateConsole(userContext); + return SbmSessionConsole.CreateConsole(internals); } - public override SaDiaryConsole CreateDiaryConsole(ISbmUserOrganisationContext userContext) + public override SaDiaryConsole CreateDiaryConsole(SbmInternals internals) { return null; } - public override SaSecurityConsole CreateSecurityConsole(ISbmUserOrganisationContext userContext) + public override SaSecurityConsole CreateSecurityConsole(SbmInternals internals) { - return new SbmSecurityConsole_Web(userContext); + return new SbmSecurityConsole_Web(internals); } - public override SaCodeTypeConsole CreateCodeTypeConsole(ISbmUserOrganisationContext userContext) + public override SaCodeTypeConsole CreateCodeTypeConsole(SbmInternals internals) { - return new SbmCodeTypeConsole_Web(userContext); + return new SbmCodeTypeConsole_Web(internals); } - public override SaItemDataConsole CreateItemDataConsole(ISbmUserOrganisationContext userContext) + public override SaItemDataConsole CreateItemDataConsole(SbmInternals internals) { return null; } - public override SaItemDocConsole CreateItemDocConsole(ISbmUserOrganisationContext userContext) + public override SaItemDocConsole CreateItemDocConsole(SbmInternals internals) { return null; } - public override SaItemOptionConsole CreateItemOptionConsole(ISbmUserOrganisationContext userContext) + public override SaItemOptionConsole CreateItemOptionConsole(SbmInternals internals) { - return new SbmItemOptionConsole_Web(userContext); + return new SbmItemOptionConsole_Web(internals); } - public override SaInterfaceConsole CreateInterfaceConsole(ISbmUserOrganisationContext userContext) + public override SaInterfaceConsole CreateInterfaceConsole(SbmInternals internals) { - return new SbmInterfaceConsole_Web(userContext); + return new SbmInterfaceConsole_Web(internals); } - public override SaUpdateLogConsole CreateUpdateLogConsole(ISbmUserOrganisationContext userContext) + public override SaUpdateLogConsole CreateUpdateLogConsole(SbmInternals internals) { - return new SbmUpdateLogConsole_Web(userContext); + return new SbmUpdateLogConsole_Web(internals); } - public override SaReferenceDataConsole CreateReferenceDataConsole(ISbmUserOrganisationContext userContext) + public override SaReferenceDataConsole CreateReferenceDataConsole(SbmInternals internals) { - return new SbmReferenceDataConsole_Portal(userContext); + return new SbmReferenceDataConsole_Portal(internals); } - public override SbmEmailConsole CreateEmailConsole(ISbmUserOrganisationContext userContext, SbmEmailConfig emailConfig) + public override SbmEmailConsole CreateEmailConsole(SbmEmailConfig emailConfig) { return new SbmEmailConsole_Portal(emailConfig); } diff --git a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmController_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmController_Portal.cs index f626548..4c66d03 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmController_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmController_Portal.cs @@ -108,7 +108,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components // Properties. // Business components. - protected SbmSysParamCache SysParamCache { get { if (sysParamCache == null) sysParamCache = new SbmSysParamCache(UserContext_Core, SessionData_Portal.User.AffiliateId); return sysParamCache; } } + protected SbmSysParamCache SysParamCache { get { if (sysParamCache == null) sysParamCache = new SbmSysParamCache(Internals, SessionData_Portal.User.AffiliateId); return sysParamCache; } } //------------------------------------------------------------------- // User Session. @@ -317,7 +317,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components if (keepLoggedInParams.IsValid()) { // Instance Repository configured on Control database identified by Context. - SbmSessionContext sessionContext = SbmSessionContextHelper_Portal.GetControlSessionContextByRepositoryContext(keepLoggedInParams.RepositoryContext); + SbmSessionContext sessionContext = SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(keepLoggedInParams.RepositoryContext); if (sessionContext != null) { // Consoles and Managers must be associated with the specific context. @@ -390,7 +390,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components // NB - 'Keep Logged In' is termed 'Remember Me' in the Portal application. public static class KeepLoggedIn { - public static string CookieName = "sbprm"; + public static string CookieName = "BMKLI"; public static string Base64Key = SacsEncryptionHelper.EncodePlainKey("<=SaBusMgr^P0rt4L{KeepLoggedIn}~", SacsEncryptionHelper.KeyLength); //private static String KeepLoggedIn.Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key); public static string Base64IV = "m47AMcMgACp3aoQVc0Y92A=="; @@ -461,7 +461,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components keepLoggedInParams.AffiliateIdUser = SysId.ToSysId(linkParams.Get(ParamName_KeepLoggedIn_AffiliateIdUser)); keepLoggedInParams.AssociationIdOrganisation = SysId.ToSysId(linkParams.Get(ParamName_KeepLoggedIn_AssociationIdOrganisation)); } - if (DebugMode) SaLogger.Info($"{SysUtil.Fn} UserAccountId: {SysId.ToString(keepLoggedInParams.AffiliateIdUser)}"); + if (DebugMode && SysId.IsValid(keepLoggedInParams.AffiliateIdUser)) SaLogger.Info($"{SysUtil.Fn} UserAccountId: {SysId.ToString(keepLoggedInParams.AffiliateIdUser)}"); return keepLoggedInParams; } diff --git a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmCoreInstanceConsole_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmCoreInstanceConsole_Portal.cs new file mode 100644 index 0000000..370c61d --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmCoreInstanceConsole_Portal.cs @@ -0,0 +1,54 @@ +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; +using Sarand.BusinessMgr.Net.Standard.Dbas.Consoles; +using Sarand.BusinessMgr.Web.Portal.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Dbas.Base; + +namespace Sarand.BusinessMgr.Web.Portal.Components +{ + public class SbmCoreInstanceConsole_Portal : SbmCoreInstanceConsole_Dbas + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private class DataMembers + { + public DataMembers(SbmSessionContext sessionContext) + { + this.SessionContext = sessionContext; + } + public SbmSessionContext SessionContext { get; } + public SbmInternals Internals { get; set; } + } + private DataMembers mbr { get; } + + //------------------------------------------------------------------- + // Construction. + public SbmCoreInstanceConsole_Portal(SbmSessionContext sessionContext) + { + mbr = new DataMembers(sessionContext); + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (mbr.Internals != null) mbr.Internals.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + private static SbmApplication_Portal App_Portal { get { return SbmApplication_Portal.Instance; } } + public override SbmInternals Internals { get { if (mbr.Internals == null) { mbr.Internals = new SbmInternals(mbr.SessionContext); } return mbr.Internals; } } + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + } +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs index 4310286..7546a7f 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Components/SbmModel_Portal.cs @@ -17,10 +17,8 @@ using Sarand.Net.Standard.Base.ReferenceData; using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.UpdateLog; using Sarand.Net.Standard.Base.Utils; -using System; using System.Collections.Generic; using System.Linq; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; namespace Sarand.BusinessMgr.Web.Portal.Components { @@ -51,16 +49,17 @@ namespace Sarand.BusinessMgr.Web.Portal.Components // Properties. protected SbmSessionData_Portal SessionData_Portal { get { return SessionData_Web as SbmSessionData_Portal; } } public string OrganisationName { get { return SessionData_Portal?.Organisation?.DisplayName ?? ""; } } + protected override SbmInstanceSchemaConsole InstanceSchemaConsole { get { return Internals.InstanceSchemaConsole; } } //------------------------------------------------------------------- // Security profile. public bool UserCanViewFinancials() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(); } - public bool UserCanViewCommodityFinancials_Supply() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(FinancialType.CommoditySupply); } - public bool UserCanViewCommodityFinancials_Sales() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(FinancialType.CommoditySales); } + public bool UserCanViewCommodityFinancials_Supply() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply); } + public bool UserCanViewCommodityFinancials_Sales() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales); } public bool UserCanUpdateFinancials() { return SessionData_Portal.SecurityProfile.UserCanUpdateFinancials(); } - public bool UserCanStockTake() { return SessionData_Portal.SecurityProfile.UserHasSecurityRight(SecurityRight.StockTake); } - public bool UserCanCreateItem(ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanCreateItemType(itemType); } - public bool UserCanUpdateItem(ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanUpdateItemType(itemType); } + public bool UserCanStockTake() { return SessionData_Portal.SecurityProfile.UserHasSecurityRight(Sbm.SecurityRight.StockTake); } + public bool UserCanCreateItem(Sbm.ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanCreateItemType(itemType); } + public bool UserCanUpdateItem(Sbm.ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanUpdateItemType(itemType); } //------------------------------------------------------------------- // Business components. @@ -90,7 +89,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components protected SbmStockControlConfig StockControlConfig { get { return Internals.StockControlConfig; } } protected SbmRequirementCostingConfig RequirementCostingConfig { get { return Internals.RequirementCostingConfig; } } // System codes. - protected List GetCodesOfType(SystemCode systemCode) { return Internals.GetSystemCodes(systemCode); } + protected List GetCodesOfType(Sbm.SystemCode systemCode) { return Internals.GetSystemCodes(systemCode); } //------------------------------------------------------------------- // Page menu options. @@ -122,7 +121,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components // Contacts. MenuItemData contactsItem = new MenuItemData() { Caption = @Localiser["label.contacts"] }; - if (SessionConsole.AllowOption(ConfigOption.Contacts)) + if (SessionConsole.AllowOption(Sbm.ConfigOption.Contacts)) { contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.contacts"], Page = "Contacts" }); contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.customers"], Page = "Customers" }); @@ -134,13 +133,13 @@ namespace Sarand.BusinessMgr.Web.Portal.Components // Commodities. MenuItemData commoditiesItem = new MenuItemData() { Caption = @Localiser["label.commodities"] }; - if (SessionConsole.AllowOption(ConfigOption.Commodities)) + if (SessionConsole.AllowOption(Sbm.ConfigOption.Commodities)) commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.commodities"], Page = "Commodity" }); - if (SessionConsole.AllowOption(ConfigOption.Assets)) + if (SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) { commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.asset.categories"], Page = "Assets/AssetCategory" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.assets"], Page = "Assets/Asset" }); - if (SessionConsole.AllowOption(ConfigOption.Vehicles)) + if (SessionConsole.AllowOption(Sbm.ConfigOption.Vehicles)) { commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.vehicle.classes"], Page = "Vehicles/VehicleClass" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.vehicles"], Page = "Vehicles/Vehicle" }); @@ -175,7 +174,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components } /// List of Code Type Codes for dropdown. - public IEnumerable GetCodeTypeCodesForSelect(ApplCodeType codeType, bool activeOnly = true) + public IEnumerable GetCodeTypeCodesForSelect(Sbm.ApplCodeType codeType, bool activeOnly = true) { List codes = new List(); foreach (SaCode code in CodeTypeConsole.GetCodesForCodeType(SbmSystem.GetCodeTypeCode(codeType), activeOnly)) @@ -192,10 +191,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Components ///
public IEnumerable GetAffiliateTypeCodesForFilterDropdown() { - List affiliateTypes = GetCodesOfType(SystemCode.AffiliateType); - if (!affiliateTypes.Any(item => item.Type == (int)AffiliateType.AnyOrganisation)) - affiliateTypes.Insert(0, new TypeCodeDesc((int)AffiliateType.AnyOrganisation, ((short)AffiliateType.AnyOrganisation).ToString(), Localiser["label.organisation"])); - affiliateTypes.Insert(0, AffiliateType.Any, "", Localiser["label.any"]); + List affiliateTypes = GetCodesOfType(Sbm.SystemCode.AffiliateType); + if (!affiliateTypes.Any(item => item.Type == (int)Sbm.AffiliateType.AnyOrganisation)) + affiliateTypes.Insert(0, new TypeCodeDesc((int)Sbm.AffiliateType.AnyOrganisation, ((short)Sbm.AffiliateType.AnyOrganisation).ToString(), Localiser["label.organisation"])); + affiliateTypes.Insert(0, Sbm.AffiliateType.Any, "", Localiser["label.any"]); return new SelectList(affiliateTypes, "Code", "Desc"); } @@ -205,10 +204,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Components ///
public IEnumerable GetAssociationTypeCodesForFilterDropdown() { - List associationTypes = GetCodesOfType(SystemCode.AssociationType); - associationTypes.Insert(0, AssociationType.Any, "", Localiser["label.any"]); - associationTypes.RemoveAll(item => item.Type == (short)AssociationType.Internal); - foreach (AssociationType associationType in EnumUtil.GetValues()) + List associationTypes = GetCodesOfType(Sbm.SystemCode.AssociationType); + associationTypes.Insert(0, Sbm.AssociationType.Any, "", Localiser["label.any"]); + associationTypes.RemoveAll(item => item.Type == (short)Sbm.AssociationType.Internal); + foreach (Sbm.AssociationType associationType in EnumUtil.GetValues()) { if (!SessionConsole.AllowAssociationType(associationType)) associationTypes.RemoveAll(item => item.Type == (short)associationType); @@ -225,10 +224,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetCommodityTypeCodesForFilterDropdown() { List commodityTypes = new List(); - commodityTypes.Add(CommodityType.Any, "", Localiser["label.any"]); - foreach (TypeCodeDesc commodityType in GetCodesOfType(SystemCode.CommodityType)) + commodityTypes.Add(Sbm.CommodityType.Any, "", Localiser["label.any"]); + foreach (TypeCodeDesc commodityType in GetCodesOfType(Sbm.SystemCode.CommodityType)) { - if (commodityType.Type == (int)CommodityType.Asset && !SessionConsole.AllowOption(ConfigOption.Assets)) continue; + if (commodityType.Type == (int)Sbm.CommodityType.Asset && !SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) continue; commodityTypes.Add(commodityType); } return new SelectList(commodityTypes, "Code", "Desc"); @@ -240,9 +239,9 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetCommodityTypeCodesForDropdown() { List commodityTypes = new List(); - foreach (TypeCodeDesc commodityType in GetCodesOfType(SystemCode.CommodityType)) + foreach (TypeCodeDesc commodityType in GetCodesOfType(Sbm.SystemCode.CommodityType)) { - if (commodityType.Type == (int)CommodityType.Asset && !SessionConsole.AllowOption(ConfigOption.Assets)) continue; + if (commodityType.Type == (int)Sbm.CommodityType.Asset && !SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) continue; commodityTypes.Add(commodityType); } return new SelectList(commodityTypes, "Code", "Desc"); @@ -254,8 +253,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetAssetTypeCodesForFilterDropdown() { List assetTypes = new List(); - assetTypes.Add(AssetType.Any, "", Localiser["label.any"]); - foreach (TypeCodeDesc assetType in GetCodesOfType(SystemCode.AssetType)) + assetTypes.Add(Sbm.AssetType.Any, "", Localiser["label.any"]); + foreach (TypeCodeDesc assetType in GetCodesOfType(Sbm.SystemCode.AssetType)) { assetTypes.Add(assetType); } @@ -268,7 +267,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetAssetTypeCodesForDropdown() { List assetTypes = new List(); - foreach (TypeCodeDesc assetType in GetCodesOfType(SystemCode.AssetType)) + foreach (TypeCodeDesc assetType in GetCodesOfType(Sbm.SystemCode.AssetType)) { assetTypes.Add(assetType); } @@ -284,11 +283,11 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetTransactionTypeCodesForFilterDropdown() { List transactionTypes = new List(); - transactionTypes.Add(TransactionType.Any, "", Localiser["label.any"]); - foreach (TypeCodeDesc transactionType in GetCodesOfType(SystemCode.TransactionType)) + transactionTypes.Add(Sbm.TransactionType.Any, "", Localiser["label.any"]); + foreach (TypeCodeDesc transactionType in GetCodesOfType(Sbm.SystemCode.TransactionType)) { - if (!SessionConsole.AllowTransactionType((TransactionType)transactionType.Type)) continue; - string description = SessionConsole.GetOwnerOption_Caption(TransTypeToOrgOption((TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((TransactionType)transactionType.Type)); + if (!SessionConsole.AllowTransactionType((Sbm.TransactionType)transactionType.Type)) continue; + string description = SessionConsole.GetOwnerOption_Caption(Sbm.TransTypeToOrgOption((Sbm.TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((Sbm.TransactionType)transactionType.Type)); transactionTypes.Add(transactionType.Type, transactionType.Code, description); } return new SelectList(transactionTypes, "Code", "Desc"); @@ -300,10 +299,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Components public IEnumerable GetTransactionTypeCodesForDropdown() { List transactionTypes = new List(); - foreach (TypeCodeDesc transactionType in GetCodesOfType(SystemCode.TransactionType)) + foreach (TypeCodeDesc transactionType in GetCodesOfType(Sbm.SystemCode.TransactionType)) { - if (!SessionConsole.AllowTransactionType((TransactionType)transactionType.Type)) continue; - string description = SessionConsole.GetOwnerOption_Caption(TransTypeToOrgOption((TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((TransactionType)transactionType.Type)); + if (!SessionConsole.AllowTransactionType((Sbm.TransactionType)transactionType.Type)) continue; + string description = SessionConsole.GetOwnerOption_Caption(Sbm.TransTypeToOrgOption((Sbm.TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((Sbm.TransactionType)transactionType.Type)); transactionTypes.Add(transactionType.Type, transactionType.Code, description); } return new SelectList(transactionTypes, "Code", "Desc"); diff --git a/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmDemoInstanceConsole_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmDemoInstanceConsole_Portal.cs new file mode 100644 index 0000000..77393f9 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmDemoInstanceConsole_Portal.cs @@ -0,0 +1,378 @@ +using Microsoft.Extensions.Logging.Abstractions; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; +using Sarand.BusinessMgr.Net.Standard.Base.Core; +using Sarand.BusinessMgr.Net.Standard.Base.Data; +using Sarand.BusinessMgr.Web.Portal.App; +using Sarand.BusinessMgr.Web.Portal.Components; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; + +namespace Sarand.BusinessMgr.Web.Portal.Consoles +{ + //======================================================================= + public class SbmDemoInstanceConsole_Portal : SbmDemoInstanceConsole + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private class DataMembers + { + public DataMembers(SbmSessionContext sessionContext) + { + this.SessionContext = sessionContext; + SessionData = new SbmSessionData_Portal(sessionContext); + } + public SbmSessionContext SessionContext { get; } + public SbmSessionData_Portal SessionData { get; } + public SbmInternals Internals { get; set; } + public SbmCoreInstanceConsole InstanceConsole { get; set; } + } + private DataMembers mbr { get; } + + //------------------------------------------------------------------- + // Construction. + public SbmDemoInstanceConsole_Portal(SbmSessionContext sessionContext) + { + mbr = new DataMembers(sessionContext); + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (mbr.Internals != null) mbr.Internals.Dispose(); + if (mbr.InstanceConsole != null) mbr.InstanceConsole.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + protected override SbmInternals Internals { get { if (mbr.Internals == null) { mbr.Internals = new SbmInternals(mbr.SessionData); } return mbr.Internals; } } + protected override SbmCoreInstanceConsole InstanceConsole { get { if (mbr.InstanceConsole == null) { mbr.InstanceConsole = new SbmCoreInstanceConsole_Portal(mbr.SessionContext); } return mbr.InstanceConsole; } } + + //------------------------------------------------------------------- + // Utilities. + + //------------------------------------------------------------------- + // Repository population data preparation. + + /// + /// Prepare a suitable batch of data to populate the demo database. + ///
- Randomly crafted. + ///
- Selected from data stored on the Control database. + ///
+ public override SbmRepositoryPopulationData PrepareDemoPopulationData() + { + SbmRepositoryPopulationData data = new SbmRepositoryPopulationData(); + + // Owner. + data.InitData.Organisation.Name = "Board Game Outlet"; + data.InitData.Organisation.Website = "http://www.boardgameoutlet.co.uk/"; + data.InitData.User.FirstName = "Awesome"; + data.InitData.User.LastName = "Player"; + data.InitData.User.Email = "ap@www.boardgameoutlet.co.uk"; + data.InitData.User.Code = data.InitData.User.Email; + data.InitData.User.Password = "ap@www.boardgameoutlet.co.uk"; + + // Contacts - Organisations. + SbmRepositoryPopulationData.OrganisationData organisation01 = new SbmRepositoryPopulationData.CommercialOrganisationData() { Name = "Online Board Games" }; + organisation01.SetCustomer("CUST123"); + SbmRepositoryPopulationData.OrganisationData organisation02 = new SbmRepositoryPopulationData.CommercialOrganisationData() { Name = "Traditional Pastimes Ltd" }; + organisation02.SetCustomer("CUST017"); + SbmRepositoryPopulationData.OrganisationData organisation03 = new SbmRepositoryPopulationData.CommercialOrganisationData() { Name = "Surplus Stock Ltd" }; + organisation02.SetSupplier("SUPP012"); + SbmRepositoryPopulationData.OrganisationData organisation04 = new SbmRepositoryPopulationData.CharityOrganisationData() { Name = "Ethical Game Redistribution" }; + organisation04.SetCustomer("CUST1234"); + organisation04.SetSupplier("SUPP018"); + data.Organisations.AddRange(new List() { organisation01, organisation02, organisation03, organisation04 }); + + // Contact - Individuals. + SbmRepositoryPopulationData.IndividualData individual01 = new SbmRepositoryPopulationData.IndividualData() { FirstName = "Billy", LastName = "Sparks", Email = "bs@www.boardgameoutlet.co.uk" }; + individual01.SetMember("OBG110", "Dice Cleaner"); + SbmRepositoryPopulationData.IndividualData individual02 = new SbmRepositoryPopulationData.IndividualData() { FirstName = "Sally", LastName = "Sparks", Email = "ss@www.boardgameoutlet.co.uk" }; + individual02.SetMember("OBG120", "Banker"); + data.Individuals.AddRange(new List() { individual01, individual02 }); + + // Commodities. + SbmRepositoryPopulationData.CommodityData commodity01 = new SbmRepositoryPopulationData.StockCommodityData() { Code = "MONOPOLY-STD", Caption = "Monopoly", SalePrice = 24.75m }; + SbmRepositoryPopulationData.CommodityData commodity02 = new SbmRepositoryPopulationData.StockCommodityData() { Code = "MONOPOLY-DEL", Caption = "Monopoly Deluxe", SalePrice = 32.45m }; + SbmRepositoryPopulationData.CommodityData commodity03 = new SbmRepositoryPopulationData.StockCommodityData() { Code = "CLUEDO-STD", Caption = "Cluedo", SalePrice = 18.25m }; + SbmRepositoryPopulationData.CommodityData commodity04 = new SbmRepositoryPopulationData.StockCommodityData() { Code = "RISK-STD", Caption = "Risk", SalePrice = 21.50m }; + data.Commodities.AddRange(new List() { commodity01, commodity02, commodity03, commodity04 }); + + return data; + } + + //------------------------------------------------------------------- + // Populate Repository. + + /// + /// Populate repository. + ///
- Initialise repository: Organisation contact, Internal association, Security item and 'Super' group, User contact, User member association. + ///
- Demo specific security. + ///
- Populate demo data, including Repository configuration. + ///
+ public override bool PopulateRepository(SbmRepositoryPopulationData data) + { + ClearErrorState(); + if (InstanceConsole.IsRepositoryInitialised()) + return true; + + // Populate initialisation data. + InstanceConsole.InitialiseRepository(data.InitData); + if (InstanceConsole.HasErrorState()) + return SetErrorState(InstanceConsole.ErrorStateMessage); + + // Retrieve the initialised business objects to refresh the session data. + // This ensures that remaining data population is done in the context of the initial user account. + SbmAffiliate affiliateOrganisation = Internals.AccountMgr.GetAffiliateById(data.InitData.Organisation.AffiliateId); + SbmAssociation associationInternal = Internals.AccountMgr.GetAssociationById(data.InitData.Organisation.AssociationId); + SbmAffiliate affiliateUser = Internals.AccountMgr.GetAffiliateById(data.InitData.User.AffiliateId); + SaSecurityItem securityItemUser = Internals.SecurityConsole.GetSecurityItemById(SaSecurity.ItemType.User, data.InitData.User.SecurityItemId); + if (affiliateOrganisation == null || associationInternal == null) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Organisation Affiliate [{data.InitData.Organisation.AffiliateId}] and Internal Association [{data.InitData.Organisation.AssociationId}]."); + return SetErrorState($"Repository initialisation failed (Organisation)."); + } + if (affiliateUser == null || securityItemUser == null) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve User Affiliate [{data.InitData.User.AffiliateId}] and Security Item [{data.InitData.User.SecurityItemId}]."); + return SetErrorState($"Repository initialisation failed (User)."); + } + mbr.SessionData.Refresh(securityItemUser, affiliateUser, associationInternal, affiliateOrganisation); + + // Configure Demo Security components. + if (!ConfigureSecurityComponents()) return false; + + // Populate demo data. + if (!PopulateCommodities(data)) return false; + if (!PopulateContacts(data)) return false; + + return OK; + } + + //------------------------------------------------------------------- + private bool ConfigureSecurityComponents() + { + if (!AddDemoSecurityGroups()) + return false; + return OK; + } + private bool AddDemoSecurityGroups() + { + // Registered rights. + List securityRights = Internals.SecurityConsole.GetRegisteredRights(); + HashSet adminRights = new HashSet() + { + Sbm.SecurityRight.Security_Admin, Sbm.SecurityRight.Database_Admin, Sbm.SecurityRight.ReferenceData_Admin, + Sbm.SecurityRight.InterfaceConfig, Sbm.SecurityRight.TimesheetManager, Sbm.SecurityRight.TaskManager + }; + + // 'Standard' security group. + List securityRights_Standard = securityRights.Where(right => !adminRights.Contains((Sbm.SecurityRight)right.Type)).ToList(); + if (!AddSecurityGroup(GetSecurityGroupCode(ISbmDemoInstanceConsole.SecurityGroup.Standard), "Standard", securityRights_Standard)) + return false; + + return OK; + } + private bool AddSecurityGroup(String groupCode, String groupCaption, List rights) + { + ClearErrorState(); + SaSecurityItem securityGroup = Internals.SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.Group, groupCode); + if (securityGroup == null) + { + if (!Internals.SecurityConsole.CreateGroup(groupCode, groupCaption, DbUpdateInfo)) + return SetErrorState($"Failed to create Standard Security Group - {Internals.SecurityConsole.ErrorStateMessage.TrimEnd('.')}."); + } + securityGroup = Internals.SecurityConsole.GetSecurityItemByCode(SaSecurity.ItemType.Group, groupCode); + if (securityGroup == null) + return SetErrorState($"Failed to retrieve Standard Security Group."); + if (securityGroup != null) + { + // Create a link with each right in the list. + SaSecurityItem.Params prmSecItem = new SaSecurityItem.Params(); + prmSecItem.SecurityItemType = SaSecurity.ItemType.Right; + foreach (SaSecurityItem securityRight in Internals.SecurityConsole.GetSecurityItemList(prmSecItem)) + { + // Exclude rights not in the supplied list. + if (!rights.Any(right => right.Code.EqualsCI(securityRight.Code))) continue; + // Exclude right that are associated with a Data Item. + if (securityRight.DataItemType > 0) continue; + // Assign right to the Security Group. + if (!Internals.SecurityConsole.AssignRightToGroup(securityRight.Code, securityGroup.Code, DbUpdateInfo)) + return SetErrorState(Internals.SecurityConsole.ErrorStateMessage); + } + } + return OK; + } + + //------------------------------------------------------------------- + // Populate demo commodities. + private bool PopulateCommodities(SbmRepositoryPopulationData data) + { + if (HasErrorState()) return false; + SysId affilliateIdOwner = data.AffiliateIdOrganisation; + + foreach (var commodityData in data.Commodities) + { + SbmCommodity commodity = Internals.CommodityMgr.CreateCommodity(commodityData.Type, commodityData.Code); + commodity.DescBrief = commodityData.Caption; + commodity.SalesPrice = commodityData.SalePrice; + if (!Internals.CommodityMgr.InsertCommodity(commodity, DbUpdateInfo)) + { + string msg = "Repository population failed (Commodity)."; + SaLogger.Warn($"{SysUtil.Fn} {msg} {Internals.CommodityMgr.ErrorStateMessage.TrimEnd('.')}."); + return SetErrorState($"{msg}"); + } + } + return OK; + } + + //------------------------------------------------------------------- + // Populate demo contacts. + private bool PopulateContacts(SbmRepositoryPopulationData data) + { + if (HasErrorState()) return false; + if (!SysId.IsValid(data.AffiliateIdOrganisation)) + { + string msg = "Repository population failed (Owner Id)."; + SaLogger.Warn($"{SysUtil.Fn} {msg}"); + return SetErrorState($"{msg}"); + } + + // Organisations. + foreach (var organisation in data.Organisations) + { + SbmAffiliate affiliate = Internals.AccountMgr.CreateAffiliate(organisation.Type); + affiliate.Name = organisation.Name; + affiliate.Abbr = organisation.Abbr; + affiliate.Nature = organisation.Nature; + affiliate.Contact = organisation.Contact; + affiliate.PhoneMain = organisation.PhoneMain; + affiliate.PhoneAlt = organisation.PhoneAlt; + affiliate.CompanyNo = organisation.CompanyNo; + affiliate.VatReg = organisation.VatReg; + affiliate.Website = organisation.Website; + if (Internals.AccountMgr.InsertAffiliate(affiliate, DbUpdateInfo)) + { + if (!PopulateAffiliate(data.AffiliateIdOrganisation, affiliate, organisation)) + return false; + } + else + { + string msg = "Repository population failed (Individual)."; + SaLogger.Warn($"{SysUtil.Fn} {msg} {Internals.AccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return SetErrorState($"{msg}"); + } + } + + // Individuals. + foreach (var individual in data.Individuals) + { + SbmAffiliate affiliate = Internals.AccountMgr.CreateAffiliate(individual.Type); + affiliate.FirstName = individual.FirstName; + affiliate.LastName = individual.LastName; + affiliate.Email = individual.Email; + affiliate.PhoneMain = individual.PhoneMain; + affiliate.PhoneMobile = individual.PhoneMobile; + if (Internals.AccountMgr.InsertAffiliate(affiliate, DbUpdateInfo)) + { + if (!PopulateAffiliate(data.AffiliateIdOrganisation, affiliate, individual)) + return false; + } + else + { + string msg = "Repository population failed (Individual)."; + SaLogger.Warn($"{SysUtil.Fn} {msg} {Internals.AccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return SetErrorState($"{msg}"); + } + } + + return OK; + } + + // Populate Affiliate. + private bool PopulateAffiliate(SysId affilliateIdOwner, SbmAffiliate affiliate, SbmRepositoryPopulationData.AffiliateData affiliateData) + { + if (HasErrorState()) return false; + + foreach (var addressData in affiliateData.Addresses) + { + SbmAddress address = Internals.AccountMgr.CreateAddress(Sbm.ItemType.Affiliate, affiliate.Id, addressData.Type); + address.Line1 = address.Line1; + address.Line2 = address.Line2; + address.Line3 = address.Line3; + address.City = address.City; + address.Province = address.Province; + address.Postcode = address.Postcode; + address.Country = address.Country; + if (!Internals.AccountMgr.InsertAddress(address, DbUpdateInfo)) + { + string msg = "Repository population failed (Address)."; + SaLogger.Warn($"{SysUtil.Fn} {msg} {Internals.AccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return SetErrorState($"{msg}"); + } + } + // Associations. + if (!PopulateAssociation(affilliateIdOwner, affiliate, affiliateData.Customer)) + { + string msg = "Repository population failed (Customer)."; + SaLogger.Warn($"{SysUtil.Fn} {msg}"); + return SetErrorState($"{msg}"); + } + if (!PopulateAssociation(affilliateIdOwner, affiliate, affiliateData.Supplier)) + { + string msg = "Repository population failed (Supplier)."; + SaLogger.Warn($"{SysUtil.Fn} {msg}"); + return SetErrorState($"{msg}"); + } + if (!PopulateAssociation(affilliateIdOwner, affiliate, affiliateData.Member)) + { + string msg = "Repository population failed (Member)."; + SaLogger.Warn($"{SysUtil.Fn} {msg}"); + return SetErrorState($"{msg}"); + } + + return OK; + } + + // Populate Association. + private bool PopulateAssociation(SysId affilliateIdOwner, SbmAffiliate affiliate, SbmRepositoryPopulationData.AssociationData associationData) + { + if (HasErrorState()) return false; + if (associationData == null) return true; + + SbmAssociation association = Internals.AccountMgr.CreateAssociation(affilliateIdOwner, associationData.Type, affiliate.Id); + association.Code = associationData.Code; + association.Location = associationData.Location; + association.Role = associationData.Role; + association.PhoneMain = associationData.PhoneMain; + if (Internals.AccountMgr.InsertAssociation(association, DbUpdateInfo)) + { + // ToDo Populate Transactions. + } + else + { + string msg = $"Repository population failed ({associationData.Type})."; + SaLogger.Warn($"{SysUtil.Fn} {msg} {Internals.AccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return SetErrorState($"{msg}"); + } + + return OK; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmReferenceDataConsole_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmReferenceDataConsole_Portal.cs index 216717d..ec3c2ad 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmReferenceDataConsole_Portal.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Consoles/SbmReferenceDataConsole_Portal.cs @@ -14,8 +14,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Consoles //------------------------------------------------------------------- // Construction. - public SbmReferenceDataConsole_Portal(ISbmUserOrganisationContext userContext) : - base(userContext) + public SbmReferenceDataConsole_Portal(SbmInternals internals) : + base(internals) { } protected override void Dispose(bool disposing) diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetCategoryController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetCategoryController-Ajax.cs index 6fcaa30..72cc5a7 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetCategoryController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetCategoryController-Ajax.cs @@ -3,7 +3,6 @@ using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Web.Portal.Components; using Sarand.BusinessMgr.Web.Portal.Models.Assets; -using Sarand.BusinessMgr.Web.Portal.Models.Commodities; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -11,7 +10,6 @@ using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets { @@ -28,7 +26,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets public String Code { get; set; } public String Caption { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private class AssetCategoryItemData : AssetCategoryListData { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetController-Ajax.cs index 5a14255..6f04adc 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Assets/AssetController-Ajax.cs @@ -1,7 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Web.Portal.Components; using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.Net.Standard.Base.App; @@ -11,9 +10,6 @@ using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; -using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; -using static Sarand.BusinessMgr.Web.Portal.Models.Assets.Model_AssetCategory; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets { @@ -29,7 +25,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Assets public String CategoryDesc { get; set; } public String Caption { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private class AssetItemData : AssetListData { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController-Ajax.cs index 3826eb8..e958196 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController-Ajax.cs @@ -12,7 +12,6 @@ using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities { @@ -29,7 +28,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities public String Code { get; set; } public String Caption { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private enum CommodityDataGroup { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController.cs index 6dd3135..8395ec7 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Commodities/CommodityController.cs @@ -19,6 +19,8 @@ using Sarand.BusinessMgr.Web.Portal.Components; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities { + //======================================================================= + // Portal Commodity Controller. //======================================================================= public partial class CommodityController : SbmController_Portal { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/AssociationController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/AssociationController-Ajax.cs index 3ae4cca..21d360f 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/AssociationController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/AssociationController-Ajax.cs @@ -13,7 +13,6 @@ using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts { @@ -32,7 +31,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts // Address. public String AddressSummary { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private class AssociationItemData : AssociationListData { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/ContactController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/ContactController-Ajax.cs index 36c1e44..6d1fa76 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/ContactController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Contacts/ContactController-Ajax.cs @@ -15,7 +15,6 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Linq; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts { @@ -33,7 +32,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts // Affiliate properties for list with specific handling. public long? AssociationCount { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private class AffiliateItemData : AffiliateListData { @@ -44,6 +43,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts private void PopulateAffiliateResponseListData(Model_Contact model, SbmAffiliate affiliate, AffiliateListData data) { data.Id = SysId.ToString(affiliate.Id); + data.AssociationCount = AccountMgr.GetAffiliateTargetAssociationCount(affiliate.Id, Sbm.AssociationType.NotInternal); } private void PopulateAffiliateResponseItemData(Model_Contact model, SbmAffiliate affiliate, AffiliateItemData data) { @@ -230,7 +230,6 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts ColumnDfn colPhoneMobile = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.PhoneMobile); ColumnDfn colPhoneDirect = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.PhoneDirect); ColumnDfn colEmail = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.Email); - ColumnDfn colAssocOwnerCount = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.AssociationOwner_Count); ColumnDfn colAssocTargetCount = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.AssociationTarget_Count); ColumnDfn colNotes = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.Notes); ColumnDfn colStatus = AccountMgr.GetAffiliateColumnDfn(SbmAffiliate.Column.Status); @@ -239,7 +238,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts List columns = new List() { colId, colName, colAffiliateType, - colAddress, colContact, colPhoneMain, colPhoneAlt, colPhoneMobile, colPhoneDirect, colEmail, colAssocOwnerCount, colAssocTargetCount, + colAddress, colContact, colPhoneMain, colPhoneAlt, colPhoneMobile, colPhoneDirect, colEmail, colAssocTargetCount, colNotes, colStatus, colCreatedOn, colUpdatedOn }; if (responseData.Config.Column.Hide.Contains($"{Model_Contact.ItemField.Address}")) @@ -247,7 +246,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts if (responseData.Config.Column.Hide.Contains($"{Model_Contact.ItemField.Email}")) columns.Remove(colEmail); if (responseData.Config.Column.Hide.Contains($"{Model_Contact.ItemField.Associations}")) - columns.Remove(colAssocOwnerCount); + columns.Remove(colAssocTargetCount); // Sort Columns. if (!prmAffiliate.SortColumns.Any()) @@ -276,9 +275,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts affiliateData.Field.Value.Add($"{Model_Contact.ItemField.Status}", SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))); affiliateData.Field.Value.Add($"{Model_Contact.ItemField.CreatedOn}", Localiser.FormatDate(values.GetDate(colCreatedOn.DataName))); affiliateData.Field.Value.Add($"{Model_Contact.ItemField.UpdatedOn}", Localiser.FormatDate(values.GetDate(colUpdatedOn.DataName))); - long assocOwnerCount = values.GetLong(colAssocOwnerCount.DataName); - long assocTargetCount = values.GetLong(colAssocTargetCount.DataName); - long assocCount = assocOwnerCount + assocTargetCount; + long assocCount = values.GetLong(colAssocTargetCount.DataName); if (assocCount > 0) affiliateData.AssociationCount = assocCount; // Cleanse item values. diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController-Ajax.cs new file mode 100644 index 0000000..0823047 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController-Ajax.cs @@ -0,0 +1,339 @@ +using Microsoft.AspNetCore.Mvc; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; +using Sarand.BusinessMgr.Net.Standard.Base.Consoles; +using Sarand.BusinessMgr.Net.Standard.Base.Data; +using Sarand.BusinessMgr.Net.Standard.Base.Helpers; +using Sarand.BusinessMgr.Web.Portal.App; +using Sarand.BusinessMgr.Web.Portal.Models.Security; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Email; +using Sarand.Net.Standard.Base.Helpers; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Linq; +using System.Web; +using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData; + +namespace Sarand.BusinessMgr.Web.Portal.Controllers.Home +{ + //======================================================================= + // Portal Demo Controller - Ajax Actions. + //======================================================================= + partial class DemoController + { + //------------------------------------------------------------------- + // Demo Account Request. + //------------------------------------------------------------------- + private class AjaxResponse_DemoAccountRequest : AjaxResponse_Data + { + // Construction. + public AjaxResponse_DemoAccountRequest(Model_Demo model) : base(model) { } + } + // Ajax request. + [HttpPost] + [Route("Demo/Ajax/Request")] + public IActionResult Ajax_DemoAccountRequest(Model_Demo model) + { + AjaxResponse_DemoAccountRequest responseData = new AjaxResponse_DemoAccountRequest(model); + String messageTitle = Localiser["caption.request.demo.account"]; + + // Validate session and referrer. + if (ValidUserSession) return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + RefreshModel(model); + + // Validate item properties. + model.ValidateRequestData(responseData); + if (responseData.HasControlErrors()) + return Json(responseData); + + // Retrieve existing incomplete Account Request. + SbmcAccountRegistration accountRegistration = ControlAccountMgr.GetAccountRegistrationByEmailStatus(model.EmailAddress, SbmcAccountRegistration.StatusCat.AwaitingOnly); + if (accountRegistration == null) + { + accountRegistration = ControlAccountMgr.CreateAccountRegistration(model.EmailAddress, Guid.NewGuid()); + if (!ControlAccountMgr.InsertAccountRegistration(accountRegistration, new DbUpdateInfo(null, "Registration", SacsSystem.ComputerName))) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to insert Account Registration - {ControlAccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + } + else + { + // Reset requested time on existing registration. + accountRegistration.RequestAccountAt = DateTime.Now; + if (!ControlAccountMgr.UpdateAccountRegistration(accountRegistration, new DbUpdateInfo(null, "Registration", SacsSystem.ComputerName))) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to update Account Registration - {ControlAccountMgr.ErrorStateMessage.TrimEnd('.')}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + } + + // Construct email. + SbmEmailConsole emailConsole = SbmApplication_Portal.Instance.CreateEmailConsole(); + + // Demo Account Registration email. + SaEmailData emailData = new SaEmailData(); + emailData.Config = App.EmailConfig; + emailData.AddressesTo.Add(model.EmailAddress); + emailData.Subject = $"BusinessMgr - {Localiser["caption.register.demo.account"]}"; + emailData.MessageBody = SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_DemoAccountRequest_Html); + emailData.HtmlBody = true; + emailConsole.ReplaceDynamicEmailBodyTags(emailData, null); + SaEmailConsole.ReplaceDynamicEmailTag(emailData, "[#Link.DemoAccountRegister]", GenerateRegisterDemoAccountLink(model.EmailAddress, accountRegistration.RegisterAccountToken)); + SaEmailConsole.ReplaceDynamicEmailTag(emailData, "[#Link.ExpiresMinutes]", GetRegisterDemoAccountLinkExpiresMinutes().ToString()); + if (emailConsole.SendEmail(emailData)) + SaLogger.Info($"{SysUtil.Fn} Demo Account Registration email sent to {model.EmailAddress}.", true); + else + { + SaLogger.Warn($"{SysUtil.Fn} Failed to send Demo Account Registration email to {model.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, "Unfortunately it has not been possible to send your Demo Account Registration email. Please try again at a later time.")); + } + + // Complete response. + responseData.Success = true; + return Json(responseData.SetConfirmMessage(messageTitle, "Demo Account Registration link has been sent to your email account.\n\nUse the link in this email to complete your registration details.")); + } + + //------------------------------------------------------------------- + // Demo Account Register. + //------------------------------------------------------------------- + private class AjaxResponse_DemoAccountRegister : AjaxResponse_Data + { + // Construction. + public AjaxResponse_DemoAccountRegister(Model_Demo model) : base(model) { } + } + // Ajax register. + [HttpPost] + [Route("Demo/Ajax/Register")] + public IActionResult Ajax_DemoAccountRegister(Model_Demo model) + { + AjaxResponse_DemoAccountRegister responseData = new AjaxResponse_DemoAccountRegister(model); + String messageTitle = Localiser["caption.register.demo.account"]; + + // Validate session and referrer. + if (ValidUserSession) return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + RefreshModel(model); + + // Validate item properties. + model.ValidateRegisterData(responseData); + if (responseData.HasControlErrors()) + return Json(responseData); + + using (DisposableCollection disposables = new DisposableCollection()) + { + + //--------------------------------------------------------------- + // Extract Request Parameters. + RegisterDemoAccountParams requestParams = ExtractRegisterDemoAccountParams(model.RequestParams); + if (!requestParams.IsValid()) + { + SaLogger.Warn($"{SysUtil.Fn} Incomplete Account Registration Request parameters."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + // Verify Demo Account Registration Params Email. + if (!requestParams.EmailAddress.EqualsCI(model.EmailAddress)) + { + SaLogger.Warn($"{SysUtil.Fn} Invalid Account Registration parameters email. Expected: {model.EmailAddress}. Found: {requestParams.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + //--------------------------------------------------------------- + // Retrieve Account Registration by token. + SbmcAccountRegistration accountRegistration = ControlAccountMgr.GetAccountRegistrationByRegisterAccountToken(requestParams.Token); + if (accountRegistration == null) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Account Registration for token - {requestParams.Token}. Email: {model.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + // Verify Account Registration Email. + if (!accountRegistration.EmailAddress.EqualsCI(model.EmailAddress)) + { + SaLogger.Warn($"{SysUtil.Fn} Invalid Account Registration email. Expected: {model.EmailAddress}. Found: {accountRegistration.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + // Verify Password. + if (!SbmPasswordHelper.IsValidPassword(model.Password)) + { + SaLogger.Warn($"{SysUtil.Fn} Invalid Password. Email: {model.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + //--------------------------------------------------------------- + // Initialise repository if needed. + SbmDemoInstanceConsole demoInstanceConsole = SbmApplication_Portal.Instance.CreateDemoInstanceConsole(); + disposables.Add(demoInstanceConsole); + + if (!demoInstanceConsole.IsRepositoryValid()) + { + SaLogger.Warn($"{SysUtil.Fn} Demo Instance is not valid. {demoInstanceConsole.ErrorStateMessage.TrimEnd('.')}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + SbmRepositoryPopulationData demoData = demoInstanceConsole.PrepareDemoPopulationData(); + if (!demoInstanceConsole.PopulateRepository(demoData)) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to populate Demo instance. {demoInstanceConsole.ErrorStateMessage.TrimEnd('.')}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + // Create User Account. + SbmRepositoryPopulationData.UserAccount userAccount = new UserAccount() + { + AffiliateIdOwner = demoData.AffiliateIdOrganisation, + FirstName = model.FirstName, + LastName = model.LastName, + Email = model.EmailAddress, + MemberCode = "", + UserCode = model.EmailAddress, + Password = model.Password, + SecurityGroupCode = demoInstanceConsole.GetSecurityGroupCode(Net.Standard.Base.Core.ISbmDemoInstanceConsole.SecurityGroup.Standard) + }; + if (!SysId.IsValid(userAccount.AffiliateIdOwner)) + { + // Owner Affiliate Id not populated as Demo Repository previously initlialised. + // Populate with the first Internal Association Affiliate Id in the data. + userAccount.AffiliateIdOwner = demoInstanceConsole.GetInternalAssociationAffiliateIdsOwner().FirstOrDefault(); + } + if (!SysId.IsValid(userAccount.AffiliateIdOwner)) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to add User Account. Unable to identify Internal Association Owner."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + if (!demoInstanceConsole.AddUserAccount(userAccount)) + { + SaLogger.Warn($"{SysUtil.Fn} Failed to add User Account. {demoInstanceConsole.ErrorStateMessage.TrimEnd('.')}."); + return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.system"])); + } + + //--------------------------------------------------------------- + // Construct email. + SbmEmailConsole emailConsole = SbmApplication_Portal.Instance.CreateEmailConsole(); + + // Demo Account Registration email. + SaEmailData emailData = new SaEmailData(); + emailData.Config = App.EmailConfig; + emailData.AddressesTo.Add(model.EmailAddress); + emailData.Subject = $"BusinessMgr - {Localiser["caption.register.demo.account"]}"; + emailData.MessageBody = SbmResourceHelper.GetResourceText(SbmResourceHelper.TextResource.Email_DemoAccountRegister_Html); + emailData.HtmlBody = true; + emailConsole.ReplaceDynamicEmailBodyTags(emailData, null); + SaEmailConsole.ReplaceDynamicEmailTag(emailData, "[#Link.DemoAccountSignin]", $"{GetRedirectLocation(RedirectLocation.WebAppBase)}Security/Signin/{Sbm.RepositoryContext_Demo}/{model.EmailAddress}"); + if (emailConsole.SendEmail(emailData)) + SaLogger.Info($"{SysUtil.Fn} Demo Account Registration email sent to {model.EmailAddress}.", true); + else + { + SaLogger.Warn($"{SysUtil.Fn} Failed to send Demo Account Registration email to {model.EmailAddress}."); + return Json(responseData.SetMessage(messageTitle, "Unfortunately it has not been possible to send your Demo Account Registration email. Please try again at a later time.")); + } + } + + // Complete response. + responseData.Success = true; + return Json(responseData.SetConfirmMessage(messageTitle, "Thank you for registering to access the Demo data.\n\nYou will receive an email with a link to Signin to the system.\n\nAlternatively, use the Signin option at the top of the page and enter 'Demo' as the Context.")); + } + + //------------------------------------------------------------------- + // Demo Account Registration link. + + // Portal Demo Account Registration encryption parameters (key & IV). + // NB IV value is generated from the key and fixed so that it doesn't change when the application restarts. + // IV Must be regenerated if key is changed. + protected static string Base64Key_RegisterDemoAccount_Portal { get; } = SacsEncryptionHelper.EncodePlainKey("Retrieve the list of valid parameters in printable format [Name: Value].
+ public List GetValidParams() + { + List values = new List(); + if (!StringUtil.IsBlank(EmailAddress)) + values.Add($"Email: {EmailAddress}"); + if (DateUtil.IsValid(ExpiresAt)) + values.Add($"Expires: {DateUtil.FormatXmlDateTime(ExpiresAt)}"); + if (Token != Guid.Empty) + values.Add($"Token: {Token}"); + return values; + } + public bool IsExpired() + { + return !DateUtil.IsValid(ExpiresAt) || ExpiresAt < DateTime.Now; + } + /// Verifiy that the email and account Ids are populated and the data hasn't expired. + public bool IsValid() + { + return !StringUtil.IsBlank(EmailAddress) && Token != Guid.Empty && !IsExpired(); + } + /// Verify that the data is valid and the account details match. + public bool IsValid(SaSecurityItem securityItemUser, SbmAffiliate affiliateUser) + { + return + IsValid() && + securityItemUser.EmailAddress.EqualsCI(EmailAddress); + } + } + private RegisterDemoAccountParams ExtractRegisterDemoAccountParams(String encryptedParams) + { + RegisterDemoAccountParams registerDemoAccountParams = new RegisterDemoAccountParams(); + if (!StringUtil.IsEmpty(encryptedParams)) + { + NameValueCollection linkParams = DecryptParameters(encryptedParams, Base64IV_RegisterDemoAccount_Portal, Base64Key_RegisterDemoAccount_Portal); + registerDemoAccountParams.EmailAddress = linkParams.Get(ParamName_EmailAddress); + registerDemoAccountParams.ExpiresAt = DateUtil.ParseXmlDateTime(linkParams.Get(ParamName_ExpiresAt)); + if (!StringUtil.IsBlank(linkParams.Get(ParamName_Token))) + { + try + { + registerDemoAccountParams.Token = new Guid(linkParams.Get(ParamName_Token)); + } + catch (Exception exc) + { + SaLogger.Warn($"{SysUtil.Fn} {ExceptionUtil.GetLogMessage(exc, $"extracting Guid from '{linkParams.Get(ParamName_Token)}'")}"); + } + } + } + return registerDemoAccountParams; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController.cs new file mode 100644 index 0000000..21e9510 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/DemoController.cs @@ -0,0 +1,103 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Net.Core.Web.Helpers; +using Sarand.BusinessMgr.Web.Portal.Models; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Mgr; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Sarand.BusinessMgr.Web.Portal.Components; +using Sarand.BusinessMgr.Web.Portal.Models.Home; +using Sarand.BusinessMgr.Web.Portal.Models.Security; +using DocumentFormat.OpenXml.EMMA; + +namespace Sarand.BusinessMgr.Web.Portal.Controllers.Home +{ + //======================================================================= + // Portal Demo Controller. + //======================================================================= + public partial class DemoController : SbmController_Portal + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public DemoController(SbmLocaliser localiser, ILogger logger) : + base(localiser, logger) + { + } + + //------------------------------------------------------------------- + [HttpGet] + [Route("Demo/Request")] + public IActionResult DemoRequest() + { + // Redirect to home page if user signed-in. + if (ValidUserSession) + { + return RedirectToAction("", "Home"); + } + + // Demo User Request page. + Model_Demo model = new Model_Demo(Localiser); + model.RegisterDemoAccountLinkExpiresMinutes = GetRegisterDemoAccountLinkExpiresMinutes(); + return View("Views/Home/Demo/Request.cshtml", model); + } + + //------------------------------------------------------------------- + [HttpGet] + [Route("Demo/Register")] + public IActionResult DemoRegister(String rda) + { + // Redirect to home page if user signed-in or no parameters supplied. + if (ValidUserSession || StringUtil.IsEmpty(rda)) + { + return RedirectToAction("", "Home"); + } + + // Demo Account model. + Model_Demo model = new Model_Demo(Localiser); + String registerView = "Views/Home/Demo/Register.cshtml"; + + // Extract Request Parameters. + RegisterDemoAccountParams registerParams = ExtractRegisterDemoAccountParams(rda); + if (!registerParams.IsValid()) + { + if (StringUtil.IsEmpty(registerParams.EmailAddress) || registerParams.Token == Guid.Empty) + { + SaLogger.Warn($"{SysUtil.Fn} Incomplete Account Registration Request parameters."); + model.DemoAccountRegistrationMessage = "Your registration parameters are incomplete.\n\nPlease request another email for Demo Account Registration."; + return View(registerView, model); + } + if (DateUtil.IsValid(registerParams.ExpiresAt) && registerParams.ExpiresAt < DateTime.Now) + { + SaLogger.Warn($"{SysUtil.Fn} Account Registration Request parameters have expired."); + model.DemoAccountRegistrationMessage = "Your registration parameters have expired.\n\nPlease request another email for Demo Account Registration."; + return View(registerView, model); + } + // Default response for invalid parameters - redirect to Home page. + SaLogger.Warn($"{SysUtil.Fn} Invalid Account Registration Request parameters."); + return RedirectToAction("", "Home"); + } + model.EmailAddress = registerParams.EmailAddress; + model.RequestParams = rda; + model.DemoAccountRegistrationValid = true; + + // Demo User Registration page. + return View(registerView, model); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/HomeController.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/HomeController.cs new file mode 100644 index 0000000..cf716fb --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Home/HomeController.cs @@ -0,0 +1,71 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Net.Core.Web.Helpers; +using Sarand.BusinessMgr.Web.Portal.Models; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Mgr; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Bus; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Sarand.BusinessMgr.Web.Portal.Components; +using Sarand.BusinessMgr.Web.Portal.Models.Home; + +namespace Sarand.BusinessMgr.Web.Portal.Controllers.Home +{ + //======================================================================= + // Portal Home Controller. + //======================================================================= + public class HomeController : SbmController_Portal + { + //------------------------------------------------------------------- + // Data members. + + //------------------------------------------------------------------- + // Construction. + public HomeController(SbmLocaliser localiser, ILogger logger) : + base(localiser, logger) + { + } + + //------------------------------------------------------------------- + [HttpGet] + [Route("Home")] + [Route("")] + public IActionResult Index() + { + if (!ValidUserSession) + AutoLoginUser(); + + // Redirect to sign-in if not signed-in. + if (!ValidUserSession) + { + ClearKeepLoggedInCookie(); + //return RedirectToAction("", "Security"); + } + + // Home page. + Model_Home model = new Model_Home(Localiser); + model.ProhibitCache = false; + return View(model); + } + + //------------------------------------------------------------------- + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + [Route("Error")] + public IActionResult Error() + { + return View(new ErrorViewModel(Localiser) { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/HomeController.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/HomeController.cs deleted file mode 100644 index 74fbf09..0000000 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/HomeController.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Sarand.BusinessMgr.Net.Core.Web.App; -using Sarand.BusinessMgr.Net.Core.Web.Helpers; -using Sarand.BusinessMgr.Web.Portal.Models; -using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Net.Standard.Base.Mgr; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Bus; -using Sarand.Net.Standard.Base.Security; -using Sarand.Net.Standard.Base.Utils; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Threading.Tasks; -using Sarand.BusinessMgr.Web.Portal.Components; - -namespace Sarand.BusinessMgr.Web.Portal.Controllers -{ - //======================================================================= - public class HomeController : SbmController_Portal - { - //------------------------------------------------------------------- - // Data members. - - //------------------------------------------------------------------- - // Construction. - public HomeController(SbmLocaliser localiser, ILogger logger) : - base(localiser, logger) - { - } - - //------------------------------------------------------------------- - [HttpGet] - public IActionResult Index() - { - if (!ValidUserSession) - AutoLoginUser(); - - // Redirect to sign-in if not signed-in. - if (!ValidUserSession) - { - ClearKeepLoggedInCookie(); - return RedirectToAction("", "Security"); - } - - // Home page. - Model_Home model = new Model_Home(Localiser); - model.ProhibitCache = false; - return View(model); - } - - //------------------------------------------------------------------- - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] - public IActionResult Error() - { - return View(new ErrorViewModel(Localiser) { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); - } - - //------------------------------------------------------------------- - } - //======================================================================= -} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController-Ajax.cs index d0a1e57..8e2c9a7 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController-Ajax.cs @@ -8,7 +8,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Web.Portal.App; using Sarand.BusinessMgr.Web.Portal.Components; using Sarand.BusinessMgr.Web.Portal.Helpers; -using Sarand.BusinessMgr.Web.Portal.Models; +using Sarand.BusinessMgr.Web.Portal.Models.Security; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -58,7 +58,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security if (!(SessionData_Portal?.ValidUser ?? false)) { // Instance Repository configured on Control database. - SbmSessionContext sessionContext = SbmSessionContextHelper_Portal.GetControlSessionContextByRepositoryContext(model.RepositoryContext); + SbmSessionContext sessionContext = SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(model.RepositoryContext); String errorMessage = ""; if (!OpenUserSession(model, sessionContext, ref errorMessage)) { @@ -116,8 +116,11 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security return false; } + // Populate User properties to the Session Data. + sessionDataForUser.Refresh(securityItemUser, affiliateUser, null, null); + // User's organisation association. - SbmAssociation associationOrganisation = GetOrganisationAssociationForSignIn(internalsForUser.AccountMgr, model, sessionDataForUser); + SbmAssociation associationOrganisation = GetOrganisationAssociationForSignIn(internalsForUser, model, sessionDataForUser); disposables.Add(associationOrganisation); if (associationOrganisation == null) { @@ -134,7 +137,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security return false; } - // Populate User properties to the Session Data. + // Populate User and Organisation properties to the Session Data. sessionDataForUser.Refresh(securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation); // Initialise user session. @@ -156,7 +159,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security } // Validate password. - if (!SbmPasswordHelper.VerifyHashedPassword(securityItemUser, model.Password) && !(DebugMode && model.EmailAddress.EqualsCI("andy@sarand.com"))) + if (!securityConsoleForUser.PasswordMatches(securityItemUser, model.Password, userContext.DbUpdateInfo) && !(DebugMode && model.EmailAddress.EqualsCI("busmgr@sarand.com"))) { // Record invalid login attempt. securityItemUser.InvalidLoginCount++; @@ -201,16 +204,16 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security /// /// Identify the organisation for the user to login to - either last selected (via SysParam) or first in list. /// - private SbmAssociation GetOrganisationAssociationForSignIn(SbmAccountMgr accountMgrForUser, Model_Security model, ISbmUserOrganisationContext userContext) + private SbmAssociation GetOrganisationAssociationForSignIn(SbmInternals internalsForUser, Model_Security model, ISbmUserOrganisationContext userContext) { // Previously selected organisation is stored in user params (SysParam table). - SbmSysParamCache sysParamCache = new SbmSysParamCache(userContext, userContext.UserAffiliateId); + SbmSysParamCache sysParamCache = new SbmSysParamCache(internalsForUser, userContext.UserAffiliateId); SysId affiliateIdOrganisation = SysId.ToSysId(sysParamCache.GetUserParamValue(SbmSysParamCache.ParamName_SelectedCompany)); SbmAssociation associationOrganisation = null; - List supervisedOrganisations = accountMgrForUser.GetAffiliatesSupervisedBy(userContext.UserAffiliateId); + List supervisedOrganisations = internalsForUser.AccountMgr.GetAffiliatesSupervisedBy(userContext.UserAffiliateId); foreach (SysIdString supervisedOrganisation in supervisedOrganisations) { - SbmAssociation associationOrganisationCandidate = accountMgrForUser.GetAssociationByOwnerTypeTarget(supervisedOrganisation.Id, Sbm.AssociationType.Internal, supervisedOrganisation.Id); + SbmAssociation associationOrganisationCandidate = internalsForUser.AccountMgr.GetInternalAssociation(supervisedOrganisation.Id); if (associationOrganisationCandidate == null) { SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve internal association for affiliate Id: {SysId.ToString(supervisedOrganisation.Id)}."); @@ -374,7 +377,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security if (storePasswordParams.IsValid()) { // Instance Repository configured on Control database identified by Context. - SbmSessionContext sessionContextForUser = SbmSessionContextHelper_Portal.GetControlSessionContextByRepositoryContext(storePasswordParams.RepositoryContext); + SbmSessionContext sessionContextForUser = SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(storePasswordParams.RepositoryContext); if (sessionContextForUser != null) { // Consoles and Managers must be associated with the specific context for the User storing the password. @@ -425,7 +428,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security return Json(responseData.SetControlError(nameof(model.Password), "System error - failed to retrieve affiliate details.")); // Validate password data. - model.ValidateChangePasswordData(securityItemUser, affiliateUser, responseData); + model.ValidateChangePasswordData(internalsForStorePassword, securityItemUser, affiliateUser, responseData); if (responseData.HasControlErrors()) return Json(responseData); @@ -440,6 +443,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security for (int passwordHistoryIdx = 0; passwordHistoryIdx < securityItemUser.PasswordHistory.Count; passwordHistoryIdx++) { // Compare history password to new value. + // ToDo Switch to internals.SecurityConsole.PasswordMatches(). if (SbmPasswordHelper.VerifyHashedPassword(securityItemUser, model.Password, securityItemUser.PasswordHistory[passwordHistoryIdx])) { // New password found in history - remove it. @@ -494,7 +498,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security if (responseData.HasControlErrors()) return Json(responseData); // Instance Repository configured on Control database identified by Context. - SbmSessionContext sessionContext = SbmSessionContextHelper_Portal.GetControlSessionContextByRepositoryContext(model.RepositoryContext); + SbmSessionContext sessionContext = SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(model.RepositoryContext); if (sessionContext != null) { SbmSessionData_Portal sessionDataForUser = new SbmSessionData_Portal(sessionContext, model.RepositoryContext, null, null, null, null); diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController.cs index 4b79a74..4b0dbf3 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Security/SecurityController.cs @@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.Helpers; -using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Mgr; @@ -19,6 +18,9 @@ using System.Threading.Tasks; using Sarand.BusinessMgr.Web.Portal.Helpers; using Sarand.BusinessMgr.Web.Portal.App; using Sarand.BusinessMgr.Web.Portal.Components; +using Sarand.BusinessMgr.Web.Portal.Controllers.Home; +using Sarand.BusinessMgr.Web.Portal.Models.Security; +using Sarand.BusinessMgr.Net.Standard.Base.Helpers; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security { @@ -46,13 +48,26 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security //------------------------------------------------------------------- [HttpGet] - public IActionResult Signin() + [Route("Security/Signin/{context=}/{email=}")] + public IActionResult Signin(String context, String email) { // Redirect home if signed-in. if (ValidUserSession) return RedirectToAction("", ""); + // Sanitise request parameters. + if (SbmPasswordHelper.IsValidPassword(context) && !SbmPasswordHelper.IsValidPassword(email)) + { + // Switch context and email. + String emailTemp = email; + email = context; + context = email; + } + + // Initialise model with optional paramaters from request path. Model_Security model = new Model_Security(Localiser); + model.RepositoryContext = context; + model.EmailAddress = email; return View(model); } @@ -79,7 +94,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security String logPrefix = $"{SysUtil.Fn} 'Request Password' parameters supplied but "; String logSuffix = changePasswordParams.GetValidParams().Concat("", " ", "."); // Instance Repository configured on Control database identified by Context. - SbmSessionContext sessionContext = SbmSessionContextHelper_Portal.GetControlSessionContextByRepositoryContext(changePasswordParams.RepositoryContext); + SbmSessionContext sessionContext = SbmCoreInstanceHelper_Portal.GetSessionContextByRepositoryContext(changePasswordParams.RepositoryContext); if (sessionContext != null) { // Consoles and Managers must be associated with the specific context. diff --git a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Transactions/TransactionController-Ajax.cs b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Transactions/TransactionController-Ajax.cs index a9f386a..cfcf9d6 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Controllers/Transactions/TransactionController-Ajax.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Controllers/Transactions/TransactionController-Ajax.cs @@ -1,8 +1,9 @@ using Microsoft.AspNetCore.Mvc; using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; -using Sarand.BusinessMgr.Web.Portal.Models.Transactions; +using Sarand.BusinessMgr.Web.Portal.Components; using Sarand.BusinessMgr.Web.Portal.Models.Contacts; +using Sarand.BusinessMgr.Web.Portal.Models.Transactions; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; @@ -11,8 +12,6 @@ using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; -using static Sacs.Web.Components.SaController.AjaxResponse_Data; -using Sarand.BusinessMgr.Web.Portal.Components; namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions { @@ -29,7 +28,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions public String Reference { get; set; } public String Narrative { get; set; } // Field values. - public FieldValuesData Field { get; } = new FieldValuesData(); + public AjaxResponse_Data.FieldValuesData Field { get; } = new AjaxResponse_Data.FieldValuesData(); } private enum TransactionDataGroup { diff --git a/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmCoreInstanceHelper_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmCoreInstanceHelper_Portal.cs new file mode 100644 index 0000000..fcaa616 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmCoreInstanceHelper_Portal.cs @@ -0,0 +1,40 @@ +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Web.Portal.App; +using Sarand.Net.Standard.Base.App; +using Sarand.Net.Standard.Base.Core; +using Sarand.Net.Standard.Base.Dbas; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using Sarand.Net.Standard.Dbas.Data; +using System; +using System.Collections.Generic; + +namespace Sarand.BusinessMgr.Web.Portal.Helpers +{ + //======================================================================= + /// + /// Core Instance utility functions. + /// + public class SbmCoreInstanceHelper_Portal + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Session Context by Repository Context. + //------------------------------------------------------------------- + /// + /// Retrieve Session Context for Core database with specified Repository Context. + ///
- Returns null is Context not found or is not active. + ///
+ public static SbmSessionContext GetSessionContextByRepositoryContext(String repositoryContext) + { + SbmApplication_Portal app = SbmApplication_Portal.Instance; + return app?.GetControlSessionContextByRepositoryContext(repositoryContext); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmSessionContextHelper_Portal.cs b/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmSessionContextHelper_Portal.cs deleted file mode 100644 index 2921ea1..0000000 --- a/SaBusinessMgrCoreWebPortal/Portal/Helpers/SbmSessionContextHelper_Portal.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Sarand.BusinessMgr.Net.Core.Web.App; -using Sarand.BusinessMgr.Net.Standard.Base.App; -using Sarand.BusinessMgr.Web.Portal.App; -using Sarand.Net.Standard.Base.App; -using Sarand.Net.Standard.Base.Core; -using Sarand.Net.Standard.Base.Dbas; -using Sarand.Net.Standard.Base.Security; -using Sarand.Net.Standard.Base.Utils; -using Sarand.Net.Standard.Dbas.Data; -using System; -using System.Collections.Generic; - -namespace Sarand.BusinessMgr.Web.Portal.Helpers -{ - //======================================================================= - // Portal Session Context utility functions. - //======================================================================= - public class SbmSessionContextHelper_Portal - { - //------------------------------------------------------------------- - // Control Session Context. - //------------------------------------------------------------------- - public static SbmSessionContext GetControlSessionContextByRepositoryContext(String repositoryContext) - { - SbmApplication_Portal app = SbmApplication_Portal.Instance; - return app?.GetControlSessionContextByRepositoryContext(repositoryContext); - } - - //------------------------------------------------------------------- - // Session Contexts. - //------------------------------------------------------------------- - public static List GetSessionContextsByRepositoryContext(String repositoryContext) - { - Dictionary sessionContexts = new Dictionary(); - SbmApplication_Portal app = SbmApplication_Portal.Instance; - - // Control session context. - // - Will be populated if not previously referenced by Repository Context. - SbmSessionContext controlSessionContext = app.GetControlSessionContextByRepositoryContext(repositoryContext); - if (controlSessionContext != null) - sessionContexts[controlSessionContext.Index] = controlSessionContext; - - // Core Session Contexts. - foreach (ushort sessionContextIdx in app.GetSessionContextIdxs()) - { - // Retrieve the session context. - SbmSessionContext sessionContext = app.GetSessionContextByIndex(sessionContextIdx); - if (sessionContext == null) - { - SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve SessionContext for idx: " + sessionContextIdx); - continue; - } - // Verify Repository Context. - HashSet repositoryContexts = app.GetRepositoryContexts(sessionContext); - if (!repositoryContexts.ContainsCI(repositoryContext)) - continue; - sessionContexts[sessionContext.Index] = sessionContext; - } - return new List(sessionContexts.Values); - } - - //------------------------------------------------------------------- - // Session Contexts for Repository Context and User Email Address. - //------------------------------------------------------------------- - [Obsolete("Deprecated - BusMgr databases only referenced via Control database rather than in application config.")] - /// - /// Identify the session context(s) that corresponds with the BusinessMgr - /// repository by context for the specified user by email address. - /// - public static List GetSessionContextForRepositoryContextUserEmail(String repositoryContext, String emailAddress) - { - Dictionary sessionContexts = new Dictionary(); - String alias_SecurityItem = "SecItm"; - String alias_Affiliate = "Affil"; - if (StringUtil.IsEmpty(emailAddress)) return new List(sessionContexts.Values); - if (SacsSystem.DebugMode) SaLogger.Info($"{SysUtil.Fn} Searching for database. Identifier: {repositoryContext}. Email address: {emailAddress}"); - - // Get the session context indices defined by the application. - SbmApplication_Web app = SbmGlobals_Web.Application; - foreach (SbmSessionContext sessionContext in GetSessionContextsByRepositoryContext(repositoryContext)) - { - // Verify Repository Context. - HashSet repositoryContexts = app.GetRepositoryContexts(sessionContext); - if (!repositoryContexts.ContainsCI(repositoryContext)) - continue; - - // Retrieve database. - ISacsDatabase db = app.GetBusMgrDatabase(sessionContext); - if (db == null) - { - SaLogger.Warn($"{SysUtil.Fn} Failed to retrieve Database for idx: " + sessionContext.Index); - continue; - } - if (SacsSystem.DebugMode) SaLogger.Info($"{SysUtil.Fn} Database: " + db.DatabaseName); - - // Query to check for Security Item matching the email with associated Affiliate. - // NB This is done independently for each database in case there are different - // DBMSs involved with different value formatting or syntax rules. - DbQuery qry = new DbQuery(db.DbmsType); - qry.Tables.Add(SaSecurityDbDfn.GetTableName(SaSecurityDbDfn.TableIdx.SaSecItem), alias_SecurityItem); - qry.Columns.Add(SaSecurityDbDfn.GetColumnNameQual(SaSecurityDbDfn.ColumnIdx.SaSecItem_Id, alias_SecurityItem)); - qry.Columns.Add(SaSecurityDbDfn.GetColumnNameQual(SaSecurityDbDfn.ColumnIdx.SaSecItem_Id, alias_SecurityItem)); - qry.Filters.Add(SaSecurityDbDfn.GetColumnNameQual(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress, alias_SecurityItem) + "='" + DbQuery.FormatForCondition(emailAddress) + "'"); - // Join to the Affiliate table. - DbQueryJoin joinAffiliate = new DbQueryJoin(DbJoinType.FullOuter); - joinAffiliate.Table = new StringPair(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Affiliate), alias_Affiliate); - joinAffiliate.Filters.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.Affiliate_UserId, alias_Affiliate) + "=" + SaSecurityDbDfn.GetColumnNameQual(SaSecurityDbDfn.ColumnIdx.SaSecItem_Id, alias_SecurityItem)); - - // Execute query. - using (DbResultSet resultSet = DbResultSet_DataReader.ExecuteQuery(db, qry.BuildQuery())) - { - if (resultSet != null && resultSet.NextRecord()) - { - if (SacsSystem.DebugMode) SaLogger.Info($"{SysUtil.Fn} Database contains email: " + db.DatabaseName); - sessionContexts[sessionContext.Index] = sessionContext; - } - } - } - return new List(sessionContexts.Values); ; - } - - //------------------------------------------------------------------- - } - //======================================================================= -} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Commodities/Model_Commodity-Config.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Commodities/Model_Commodity-Config.cs index 489cc42..2a161af 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Commodities/Model_Commodity-Config.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Commodities/Model_Commodity-Config.cs @@ -391,8 +391,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Commodities bool isProduct = commodityType != Sbm.CommodityType.Service; bool isService = commodityType == Sbm.CommodityType.Service; - bool importedFromAccounts = Internals.AccountsDfn.ItemIsImportedFromAccounts(commodityItemId); - bool managedByAccounts = Internals.AccountsDfn.IsItemTypeManagedByAccounts(Sbm.ItemType.Commodity); + bool importedFromAccounts = Internals.AccountsConsole.ItemIsImportedFromAccounts(commodityItemId); + bool managedByAccounts = Internals.AccountsConsole.IsItemTypeManagedByAccounts(Sbm.ItemType.Commodity); bool showNotes = true; //--------------------------------------------------------------- diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Association-Config.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Association-Config.cs index 1c8860f..fba726b 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Association-Config.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Association-Config.cs @@ -306,13 +306,13 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts bool isInternal = (associationType == Sbm.AssociationType.Internal); // Accounts interface. - bool managedByAccounts = Internals.AccountsDfn.ItemIsImportedFromAccounts(associationItemId); + bool managedByAccounts = Internals.AccountsConsole.ItemIsImportedFromAccounts(associationItemId); if (managedByAccounts) config.ManagedByAccounts = true; // Determine pricing options. bool localPricing = - (isCustomer && Internals.AccountsDfn.UseLocalCustomerPricing()) || - (isSupplier && Internals.AccountsDfn.UseLocalSupplierPricing()); + (isCustomer && Internals.AccountsConsole.UseLocalCustomerPricing()) || + (isSupplier && Internals.AccountsConsole.UseLocalSupplierPricing()); if (localPricing) config.LocalPricing = true; // Update dialog title. @@ -443,21 +443,21 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts else if (managedByAccounts) { Sage.ItemType sageItemType = isCustomer ? Sage.ItemType.Customer : Sage.ItemType.Supplier; - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountManagerCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.AccountManager}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountHandlerCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.AccountHandler}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountTypeCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.AccountType}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_AccountRatingCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.AccountRating}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactAreaCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.ContactArea}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactHandlerCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.ContactHandler}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactMethodCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.ContactMethod}"); - if (Internals.AccountsDfn.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, sageItemType)) + if (Internals.AccountsConsole.SourcedFromSage(SbmDbDfn.ColumnIdx.Association_ContactCallCycleCode, sageItemType)) config.Field.Readonly.Add($"{ItemField.ContactCallCycle}"); } } diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Contact-Config.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Contact-Config.cs index 940b8d3..08aa9ac 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Contact-Config.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Contacts/Model_Contact-Config.cs @@ -244,7 +244,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Contacts bool isGroup = SbmAffiliate.IsContactGroup(affiliateType); if (isGroup) config.IsGroup = true; - bool importedFromAccounts = Internals.AccountsDfn.ItemIsImportedFromAccounts(affiliateItemId); + bool importedFromAccounts = Internals.AccountsConsole.ItemIsImportedFromAccounts(affiliateItemId); bool showNotes = true; // Id. diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Demo.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Demo.cs new file mode 100644 index 0000000..7491ef1 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Demo.cs @@ -0,0 +1,159 @@ +using Sarand.BusinessMgr.Net.Core.Web.App; +using Sarand.BusinessMgr.Net.Core.Web.Components; +using Sarand.BusinessMgr.Net.Standard.Base.App; +using Sarand.BusinessMgr.Net.Standard.Base.Bus; +using Sarand.BusinessMgr.Net.Standard.Base.Helpers; +using Sarand.BusinessMgr.Web.Portal.Components; +using Sarand.Net.Standard.Base.Helpers; +using Sarand.Net.Standard.Base.Security; +using Sarand.Net.Standard.Base.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mail; +using System.Threading.Tasks; + +namespace Sarand.BusinessMgr.Web.Portal.Models.Security +{ + //======================================================================= + public class Model_Demo : SbmModel_Portal + { + //------------------------------------------------------------------- + // Configuration. + + /// Prefix for field names. + public const String FieldNamePrefix = "Account"; + + /// Item fields. + public enum ItemField + { + EmailAddress, + FirstName, + LastName, + Password, + PasswordConfirm, + } + + /// + /// Identifier used by form fields to show control specific messages generated by model validation etc. + /// - Both page and model should use this method to consistently generate the field name. + /// + public static String GetFieldName(ItemField field) + { + return $"{FieldNamePrefix}{field}"; + } + + //------------------------------------------------------------------- + // Construction. + public Model_Demo(SbmLocaliser localiser) : + base(localiser) + { + } + + //------------------------------------------------------------------- + // Page properties. + public int RegisterDemoAccountLinkExpiresMinutes { get; set; } = 12; + /// Whether data is complete and valid for registration. + public bool DemoAccountRegistrationValid { get; set; } + /// + /// Message to display if the registration data is incomplete + /// or invalid before redirecting to the Home page. + /// + public String DemoAccountRegistrationMessage { get; set; } + + //------------------------------------------------------------------- + // Form properties. + public string EmailAddress { get; set; } + /// Request Demo Account Encrypted params. + public String RequestParams { get; set; } + // Name. + public string FirstName { get; set; } + public string LastName { get; set; } + // Password and confirmation. + public string Password { get; set; } + public string PasswordConfirm { get; set; } + + //------------------------------------------------------------------- + // Validation. + //------------------------------------------------------------------- + // Demo Account Request. + public bool ValidateRequestData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData) + { + { + // Email address. + string controlName = GetFieldName(ItemField.EmailAddress); + responseData.SetControlValue(controlName, EmailAddress); + if (EmailAddress.IsEmpty()) + responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); + else if (!SacsDataValidationHelper.IsValidEmailAddress(EmailAddress)) + responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); + } + + return !responseData.HasControlErrors(); + } + + // Demo Account Registration. + public bool ValidateRegisterData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData) + { + // Email address. + if (EmailAddress != null) + { + string controlName = GetFieldName(ItemField.EmailAddress); + EmailAddress = EmailAddress.ToLowerInvariant(); + responseData.SetControlValue(controlName, EmailAddress); + if (StringUtil.IsBlank(EmailAddress)) + responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); + else if (!SacsDataValidationHelper.IsValidEmailAddress(EmailAddress)) + responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); + else + { + + } + } + + // First Name. + if (FirstName != null) + { + string controlName = GetFieldName(ItemField.FirstName); + responseData.SetControlValue(controlName, FirstName); + if (StringUtil.GetLength(FirstName) > GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_FirstName)) + responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_FirstName)]); + } + + // Last Name. + if (LastName != null) + { + string controlName = GetFieldName(ItemField.LastName); + responseData.SetControlValue(controlName, LastName); + if (StringUtil.IsBlank(LastName)) + responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); + else if (StringUtil.GetLength(LastName) > GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName)) + responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName)]); + } + + // Password. + if (Password != null) + { + // NB Do not return the password values in the response. + string controlName = GetFieldName(ItemField.Password); + if (Password.IsEmpty()) + responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); + else if (!SbmPasswordHelper.IsValidPassword(Password)) + responseData.SetControlError(controlName, Localiser.GetText("msg.warn.password.invalid", new object[] { SbmPasswordHelper.Params.MinLength, SbmPasswordHelper.Params.MinLengthNoComplexity })); + else if (PasswordConfirm != null) + { + // Password confirm. + // NB Do not return the password values in the response. + controlName = GetFieldName(ItemField.PasswordConfirm); + if (!PasswordConfirm.Equals(Password)) + responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); + } + } + + return !responseData.HasControlErrors(); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Model_Home.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Home.cs similarity index 97% rename from SaBusinessMgrCoreWebPortal/Portal/Models/Model_Home.cs rename to SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Home.cs index 860d40a..a56760d 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Model_Home.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Home/Model_Home.cs @@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Web.Portal.Components; -namespace Sarand.BusinessMgr.Web.Portal.Models +namespace Sarand.BusinessMgr.Web.Portal.Models.Home { //======================================================================= public class Model_Home : SbmModel_Portal diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Model_Security.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Security/Model_Security.cs similarity index 71% rename from SaBusinessMgrCoreWebPortal/Portal/Models/Model_Security.cs rename to SaBusinessMgrCoreWebPortal/Portal/Models/Security/Model_Security.cs index 70fcdbe..14181cc 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Model_Security.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Security/Model_Security.cs @@ -1,5 +1,6 @@ using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.Components; +using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Helpers; using Sarand.BusinessMgr.Web.Portal.Components; @@ -9,9 +10,10 @@ using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; using System.Linq; +using System.Net.Mail; using System.Threading.Tasks; -namespace Sarand.BusinessMgr.Web.Portal.Models +namespace Sarand.BusinessMgr.Web.Portal.Models.Security { //======================================================================= public class Model_Security : SbmModel_Portal @@ -27,39 +29,39 @@ namespace Sarand.BusinessMgr.Web.Portal.Models //------------------------------------------------------------------- // Page configuration. - public bool RequestPasswordMode { get { return !StringUtil.IsEmpty(rpe); } } + public bool RequestPasswordMode { get { return !rpe.IsEmpty(); } } //------------------------------------------------------------------- // Form properties. /// Database config identifier. - public String RepositoryContext { get; set; } - public String EmailAddress { get; set; } - public String PasswordCurrent { get; set; } - public String Password { get; set; } - public String PasswordConfirm { get; set; } + public string RepositoryContext { get; set; } + public string EmailAddress { get; set; } + public string PasswordCurrent { get; set; } + public string Password { get; set; } + public string PasswordConfirm { get; set; } public bool KeepMeSignedIn { get; set; } /// Request Password Encrypted params - to allow Change Password without session or requiring old password. - public String rpe { get; set; } + public string rpe { get; set; } //------------------------------------------------------------------- // Validation. //------------------------------------------------------------------- // Sign-in. - public bool ValidateSignInData(SbmController_Web.AjaxResponse_Data responseData) + public bool ValidateSignInData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData) { { // Database context. - String controlName = nameof(RepositoryContext); + string controlName = nameof(RepositoryContext); responseData.SetControlValue(controlName, RepositoryContext); - if (StringUtil.IsEmpty(RepositoryContext)) + if (RepositoryContext.IsEmpty()) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); } { // Email address. - String controlName = nameof(EmailAddress); + string controlName = nameof(EmailAddress); responseData.SetControlValue(controlName, EmailAddress); - if (StringUtil.IsEmpty(EmailAddress)) + if (EmailAddress.IsEmpty()) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (!SacsDataValidationHelper.IsValidEmailAddress(EmailAddress)) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); @@ -68,8 +70,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Models { // Password. // NB Do not return the password value in the response. - String controlName = nameof(Password); - if (StringUtil.IsEmpty(Password)) + string controlName = nameof(Password); + if (Password.IsEmpty()) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); } @@ -78,19 +80,19 @@ namespace Sarand.BusinessMgr.Web.Portal.Models //------------------------------------------------------------------- // Change password. - public bool ValidateChangePasswordData(SaSecurityItem securityItemUser, SbmAffiliate affiliateUser, SbmController_Web.AjaxResponse_Data responseData) + public bool ValidateChangePasswordData(SbmInternals internals, SaSecurityItem securityItemUser, SbmAffiliate affiliateUser, Sacs.Web.Components.SaController.AjaxResponse_Data responseData) { // Validate Passwords. // NB Do not return the password values in the response. // NB Only validate populated values - any null values are not part of the form for this request. // - 'Current' password is not shown when changing password from 'Request Password' email link. - if (PasswordCurrent != null && StringUtil.IsEmpty(PasswordCurrent)) + if (PasswordCurrent != null && PasswordCurrent.IsEmpty()) responseData.SetControlError(nameof(PasswordCurrent), Localiser["msg.validation.mandatory.value"]); - if (StringUtil.IsEmpty(Password)) + if (Password.IsEmpty()) responseData.SetControlError(nameof(Password), Localiser["msg.validation.mandatory.value"]); - if (StringUtil.IsEmpty(PasswordConfirm)) + if (PasswordConfirm.IsEmpty()) responseData.SetControlError(nameof(PasswordConfirm), Localiser["msg.validation.mandatory.value"]); - if (!StringUtil.IsEmpty(Password) && !StringUtil.IsEmpty(PasswordConfirm)) + if (!Password.IsEmpty() && !PasswordConfirm.IsEmpty()) { if (!Password.Equals(PasswordConfirm)) responseData.SetControlError(nameof(PasswordConfirm), Localiser["msg.validation.invalid.value"]); @@ -100,9 +102,9 @@ namespace Sarand.BusinessMgr.Web.Portal.Models if (!responseData.HasControlErrors()) { - if (PasswordCurrent != null && !SbmPasswordHelper.VerifyHashedPassword(securityItemUser, PasswordCurrent)) + if (PasswordCurrent != null && !internals.SecurityConsole.PasswordMatches(securityItemUser, PasswordCurrent, internals.DbUpdateInfo)) responseData.SetControlError(nameof(PasswordCurrent), Localiser["security.change.password.current.invalid"]); - if (SbmPasswordHelper.VerifyHashedPassword(securityItemUser, Password)) + if (internals.SecurityConsole.PasswordMatches(securityItemUser, Password, internals.DbUpdateInfo)) responseData.SetControlError(nameof(Password), Localiser["security.change.password.not.changed"]); } @@ -111,21 +113,24 @@ namespace Sarand.BusinessMgr.Web.Portal.Models //------------------------------------------------------------------- // Request Password. - public bool ValidateRequestPasswordData(SbmController_Web.AjaxResponse_Data responseData) + public bool ValidateRequestPasswordData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData) { + if (RepositoryContext != null) { // Database context. - String controlName = nameof(RepositoryContext); + string controlName = nameof(RepositoryContext); responseData.SetControlValue(controlName, RepositoryContext); - if (StringUtil.IsEmpty(RepositoryContext)) + if (StringUtil.IsBlank(RepositoryContext)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); } + if (EmailAddress != null) { // Email address. - String controlName = nameof(EmailAddress); + string controlName = nameof(EmailAddress); + EmailAddress = EmailAddress.ToLowerInvariant(); responseData.SetControlValue(controlName, EmailAddress); - if (StringUtil.IsEmpty(EmailAddress)) + if (StringUtil.IsBlank(EmailAddress)) responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]); else if (!SacsDataValidationHelper.IsValidEmailAddress(EmailAddress)) responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]); diff --git a/SaBusinessMgrCoreWebPortal/Portal/Models/Transactions/Model_Transaction-Config.cs b/SaBusinessMgrCoreWebPortal/Portal/Models/Transactions/Model_Transaction-Config.cs index 154ab1d..e066992 100644 --- a/SaBusinessMgrCoreWebPortal/Portal/Models/Transactions/Model_Transaction-Config.cs +++ b/SaBusinessMgrCoreWebPortal/Portal/Models/Transactions/Model_Transaction-Config.cs @@ -546,8 +546,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Models.Transactions bool isSales = SbmTransaction.IsSalesType(transactionType); bool isPurchase = SbmTransaction.IsPurchaseType(transactionType); - bool importedFromAccounts = Internals.AccountsDfn.ItemIsImportedFromAccounts(transactionItemId); - bool managedByAccounts = Internals.AccountsDfn.IsItemTypeManagedByAccounts(Sbm.ItemType.Transaction); + bool importedFromAccounts = Internals.AccountsConsole.ItemIsImportedFromAccounts(transactionItemId); + bool managedByAccounts = Internals.AccountsConsole.IsItemTypeManagedByAccounts(Sbm.ItemType.Transaction); bool showNotes = true; //--------------------------------------------------------------- diff --git a/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Register.cshtml b/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Register.cshtml new file mode 100644 index 0000000..c03fbfe --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Register.cshtml @@ -0,0 +1,153 @@ +@* Demo Instance User Registration page *@ +@using Sarand.Net.Standard.Base.Security +@model Model_Demo +@inject SbmLocaliser Localiser +@{ + ViewData["Title"] = "Demo Registration"; + Model.AdditionalFiles_JS.Add("js/sbm-demo.js"); +} + +
+ +
+ +
@Localiser["caption.register.demo.account"]
+ +
+ + @if (Model.DemoAccountRegistrationValid) + { + + @using (@Html.BeginForm("", null, FormMethod.Post, new { @id = "frmDemoRegister", @class = "sbm-form", @onSubmit = "return false;" })) + { + @Html.HiddenFor(model => model.RequestParams, new { @id = "" }) + +
+
+
+
+
+ +
+
+
+
+ @Html.TextBoxFor(model => model.EmailAddress, new { @id = "", @class = "AccountEmailAddress sbm-input lower", @readonly = true, @maxlength = @Model.GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress) }) +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ @Html.TextBoxFor(model => model.FirstName, new { @id = "", @class = "AccountFirstName sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_FirstName) }) +
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ @Html.TextBoxFor(model => model.LastName, new { @id = "", @class = "AccountLastName sbm-input", @maxlength = @Model.GetControlMaxLength(SbmDbDfn.ColumnIdx.Affiliate_LastName) }) +
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
@Html.PasswordFor(model => model.Password, new { @id = "", @class = "AccountPassword sbm-input", @maxlength = @Model.PasswordMaxLength })
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ @Html.PasswordFor(model => model.PasswordConfirm, new { @id = "", @class = "AccountPasswordConfirm sbm-input", @maxlength = @Model.PasswordMaxLength }) +
+
+
+
+
+
+
+ +
+
+
@Localiser["label.register"]
+
+ + } + } + else + { + @* Demo Account Registration not valid. *@ +
+
+ @(new Microsoft.AspNetCore.Html.HtmlString(Localiser.HtmlEncode(StringUtil.OnBlank(Model.DemoAccountRegistrationMessage)).Replace("\n", "
"))) +
+
+
You will shortly be redirected to the Home page.
+
+
Alternatively, select the 'Home' menu option at the top of the page.
+
+ + } + +
+ +
+ +
diff --git a/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Request.cshtml b/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Request.cshtml new file mode 100644 index 0000000..8b49fe7 --- /dev/null +++ b/SaBusinessMgrCoreWebPortal/Views/Home/Demo/Request.cshtml @@ -0,0 +1,50 @@ +@* Demo Instance User Request page *@ +@using Sarand.Net.Standard.Base.Security +@model Model_Demo +@inject SbmLocaliser Localiser +@{ + ViewData["Title"] = "Demo User Request"; + Model.AdditionalFiles_JS.Add("js/sbm-demo.js"); +} + +
+ +
+ +
@Localiser["caption.request.demo.account"]
+ +
+ + @using (@Html.BeginForm("", null, FormMethod.Post, new { @id = "frmDemoRequest", @class = "sbm-form", @onSubmit = "return false;" })) + { +
+ +
+
+ +
+
+ @Html.TextBoxFor(model => model.EmailAddress, new { @id = "ifEmailAddress", @class = "sbm-input lower", @maxlength = @Model.GetControlMaxLength(SaSecurityDbDfn.ColumnIdx.SaSecItem_EmailAddress) }) +
+
+
+ +
+
+
Your request will be acknowledged by email that will contain a link to the Demo User Registration page with a time restriction of @(Model.RegisterDemoAccountLinkExpiresMinutes) mins.
+
+
Follow this link, complete your registration details and you'll immediately have access to the demo environment.
+
+ +
+
+
@Localiser["label.request"]
+
+ + } + +
+ +
+ +
diff --git a/SaBusinessMgrCoreWebPortal/Views/Home/Index.cshtml b/SaBusinessMgrCoreWebPortal/Views/Home/Index.cshtml index 64741e4..440746c 100644 --- a/SaBusinessMgrCoreWebPortal/Views/Home/Index.cshtml +++ b/SaBusinessMgrCoreWebPortal/Views/Home/Index.cshtml @@ -7,14 +7,81 @@ @if (Model.AwaitingLogin) { + @* ------------------------------------------------------------------- *@ @* User not logged in. *@

Welcome

+ + +
+
+
+
+

What's On Offer

+
+ Business Manager helps you look after the day-to-day operational data necsssary in running your business. +
+
+ • Contacts - your customers and suppliers. +
+
+ • Products and services that you offer. +
+
+ • Sales and purchase orders. +
+
+ • Optional modules including stock, time recording, assets, accounts integration. +
+
+
+
+
+
+
+
+

Existing users

+
+
+
+
+
+
+

Demo environment

+
You can set up an account to access the demo environment and try out a selection of application modules in a matter of minutes.
+
Request access and you'll be emailed a link to register your account.
+
+
The demo data is reset every 24 hours.
+
+
+
+
+ + @* ------------------------------------------------------------------- *@ } else { + @* ------------------------------------------------------------------- *@ @* User Session is active. *@