3.0.0.1 Demo repository registration

This commit is contained in:
Andy Howard
2025-02-08 16:41:08 +00:00
parent 0d8e7d5619
commit c4e5712d0a
312 changed files with 13145 additions and 30232 deletions
+3 -3
View File
@@ -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.
//-------------------------------------------------------------------
}
//=======================================================================
+20 -2
View File
@@ -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
{
/// <summary>Default cookie name: '.AspNetCore.Session'</summary>
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
{
/// <summary>Default cookie name: '.AspNetCore.Session'</summary>
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.
@@ -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:
File diff suppressed because it is too large Load Diff
@@ -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<String> reservedWords = new List<String>()
private static readonly HashSet<String> reservedWords = new HashSet<String>()
{
"ADD",
"ALL",
+58 -24
View File
@@ -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;
}
}
@@ -45,13 +45,22 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.App
//-------------------------------------------------------------------
// Data members.
protected readonly List<SbmSysParam> userSysParams = new List<SbmSysParam>();
private class DataMembers
{
public DataMembers(SbmInternals internalsSupplied)
{
this.InternalsSupplied = internalsSupplied;
}
public SbmInternals InternalsSupplied { get; }
public List<SbmSysParam> UserSysParams { get; } = new List<SbmSysParam>();
}
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
/// <summary>Extract parameter from the cache list.</summary>
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
/// <summary>Clear the params cached for the current user.</summary>
public void Clear()
{
ListUtil.ClearAndDispose(userSysParams);
ListUtil.ClearAndDispose(mbr.UserSysParams);
Modified = false;
}
//-------------------------------------------------------------------
// Data managers.
protected SbmAccountMgr CreateAccountMgr()
{
return SbmGlobals.System.CreateAccountMgr(UserContext);
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -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<CodeDesc> GetDefaultCodesOfType(Sbm.ApplCodeType type)
{
List<CodeDesc> codes = new List<CodeDesc>();
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
+11 -19
View File
@@ -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
@@ -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,
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
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<SaStatus> accountRegistrationStatuses = new List<SaStatus>()
{
SaStatus.Awaiting,
SaStatus.Completed,
SaStatus.Cancelled,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Awaiting; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(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)
{
// <LastName>, <FirstName>.
List<String> Names = new List<string>();
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.
/// <summary> Status filter options.</summary>
public enum StatusCat
{
Any,
AwaitingOnly,
CompletedOnly,
CancelledOnly,
NotDeleted,
DeletedOnly,
}
/// <summary>Parameters - used to define the filters that should be applied to a list of items.</summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public HashSet<SysId> IdsIncluded { get; } = new HashSet<SysId>();
public HashSet<SysId> IdsExcluded { get; } = new HashSet<SysId>();
/// <summary>Generic search value - email, name, phone etc.</summary>
public String Search { get; set; }
public String EmailAddress { get; set; }
public Guid RegisterAccountToken { get; set; }
public String NotesPartial { get; set; }
/// <summary>Contact status.</summary>
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
}
}
//=======================================================================
// Item list.
public static class SbmcAccountRegistrationList
{
}
//=======================================================================
}
+205 -205
View File
@@ -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,
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
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; } = "";
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
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<SaStatus> ownerStatuses = new List<SaStatus>()
{
SaStatus.Active,
SaStatus.OnHold,
SaStatus.Inactive,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(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<SaStatus> ownerStatuses = new List<SaStatus>()
{
SaStatus.Active,
SaStatus.OnHold,
SaStatus.Inactive,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(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.
/// <summary> Status filter options.</summary>
public enum StatusCat
{
Any,
ActiveOnly,
/// <summary> Status filter options.</summary>
public enum StatusCat
{
Any,
ActiveOnly,
OnHoldOnly,
InactiveOnly,
NotDeleted,
DeletedOnly,
}
NotDeleted,
DeletedOnly,
}
/// <summary>Parameters - used to define the filters that should be applied to a list of items.</summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public HashSet<SysId> IdsIncluded { get; } = new HashSet<SysId>();
public HashSet<SysId> IdsExcluded { get; } = new HashSet<SysId>();
/// <summary>Parameters - used to define the filters that should be applied to a list of items.</summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public HashSet<SysId> IdsIncluded { get; } = new HashSet<SysId>();
public HashSet<SysId> IdsExcluded { get; } = new HashSet<SysId>();
/// <summary>Generic search value - name, contact, email, phone etc.</summary>
public String Search { get; set; }
public String NotesPartial { get; set; }
/// <summary>Contact status.</summary>
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
}
}
//=======================================================================
// Item list.
public static class SbmcOwnerList
{
}
//=======================================================================
public String NotesPartial { get; set; }
/// <summary>Contact status.</summary>
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
}
}
//=======================================================================
// Item list.
public static class SbmcOwnerList
{
}
//=======================================================================
}
@@ -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,
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
public class DataProperties
{
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
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<SaStatus> repositoryStatuses = new List<SaStatus>()
{
SaStatus.Active,
SaStatus.OnHold,
SaStatus.Inactive,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(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<SaStatus> repositoryStatuses = new List<SaStatus>()
{
SaStatus.Active,
SaStatus.OnHold,
SaStatus.Inactive,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(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.
/// <summary> Status filter options.</summary>
public enum StatusCat
{
Any,
ActiveOnly,
/// <summary> Status filter options.</summary>
public enum StatusCat
{
Any,
ActiveOnly,
OnHoldOnly,
InactiveOnly,
NotDeleted,
DeletedOnly,
}
NotDeleted,
DeletedOnly,
}
/// <summary>Parameters - used to define the filters that should be applied to a list of items.</summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public HashSet<SysId> IdsIncluded { get; } = new HashSet<SysId>();
public HashSet<SysId> IdsExcluded { get; } = new HashSet<SysId>();
/// <summary>Repository owners.</summary>
/// <summary>Parameters - used to define the filters that should be applied to a list of items.</summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public HashSet<SysId> IdsIncluded { get; } = new HashSet<SysId>();
public HashSet<SysId> IdsExcluded { get; } = new HashSet<SysId>();
/// <summary>Repository owners.</summary>
public HashSet<SysId> OwnerIdsIncluded { get; } = new HashSet<SysId>();
/// <summary>Repository contexts.</summary>
public HashSet<String> ContextsIncluded { get; set; } = new HashSet<String>();
/// <summary>Generic search value - context, server, instance, database etc.</summary>
public String Search { get; set; }
public String NotesPartial { get; set; }
/// <summary>Contact status.</summary>
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
// Table alises.
public String Alias_Owner { get; set; }
/// <summary>Generic search value - context, server, instance, database etc.</summary>
public String Search { get; set; }
public String NotesPartial { get; set; }
/// <summary>Contact status.</summary>
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
{
}
//=======================================================================
}
@@ -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<SaStatus> affiliateStatuses = new List<SaStatus>()
private static readonly List<SaStatus> userAccountStatuses = new List<SaStatus>()
{
SaStatus.Active,
SaStatus.Inactive,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(affiliateStatuses); } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(userAccountStatuses); } }
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
{
switch (status)
@@ -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; }
@@ -851,12 +851,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
public enum StatusCat
{
Any = 0,
NotDeleted,
Current,
OnHold,
CurrentOnly,
OnHoldOnly,
/// <summary>Current or On-hold</summary>
Active,
Disabled,
DisabledOnly,
NotDeleted,
DeletedOnly,
}
/// <summary>Parameters - used to define the filters that should be applied to a List of Association</summary>
public new class Params : SacsHierarchyItem.Params
+66 -79
View File
@@ -1858,95 +1858,82 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Bus
/// <summary>Commodity status.</summary>
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
// Utilities.
public List<StringPair> GetDisplayValues(ISbmUserOrganisationContext userContext)
public List<StringPair> GetDisplayValues(SbmInternals internals)
{
SbmAccountMgr accountMgr = null;
List<StringPair> lValue = new List<StringPair>();
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<StringPair> values = new List<StringPair>();
// 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;
}
}
}
@@ -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<SbmItemLink> 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<SbmItemLink> LinkPurchases = itemMgr.GetItemLinkList(prmLinkPurchase);
List<SbmItemLink> LinkPurchases = Internals.DataItemMgr.GetItemLinkList(prmLinkPurchase);
if (LinkPurchases != null && LinkPurchases.Count > 0)
{
// Split cost equally between the associated items.
@@ -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<SbmRequirement> 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;
}
//-------------------------------------------------------------------
@@ -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
{
//-------------------------------------------------------------------
/// <summary>QuickBooks Interface Item Options.</summary>
@@ -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);
@@ -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
{
//-------------------------------------------------------------------
/// <summary>Sage Interface Item Options.</summary>
@@ -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<CodeDesc>();
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<CodeDesc>(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<CodeDesc>(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<TypeCodeDesc> DataTypes_Sage { get; } = new List<TypeCodeDesc>();
//-------------------------------------------------------------------
@@ -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);
@@ -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<TypeCodeDesc> interfaceOptions = new List<TypeCodeDesc>();
private readonly SaInterfaceItemCache itemCache = new SaInterfaceItemCache();
private class DataMembers
{
public DataMembers(SbmInternals internalsSupplied)
{
this.InternalsSupplied = internalsSupplied;
}
public SbmInternals InternalsSupplied { get; set; }
public List<TypeCodeDesc> InterfaceOptions { get; } = new List<TypeCodeDesc>();
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<String>(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<SaInterfaceDataItem> 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<SaInterfaceDataItem> 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;
@@ -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
{
//=======================================================================
/// <summary>
/// Utilitiy function relating to a core BusinessMgr database instance.
/// Utilitiy functions relating to a core BusinessMgr database instance.
/// <para>For instance:</para>
/// <para>- Verifying repository status.</para>
/// <para>- Initialisation of new repository.</para>
/// <para>- Bringing static (tax codes etc) and reference data up to date.</para>
/// </summary>
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";
/// <summary>
/// Organisation and User info for Repository initialisation.
/// </summary>
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.
/// <para>- Contains core tables (Affiliate, Association, Commodity etc).</para>
/// </summary>
/// <param name="database"></param>
/// <returns></returns>
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<String> tablesFound = new HashSet<string>();
using (DbResultSet resultSet = Database.ExecuteQuery(sql))
{
if (resultSet != null)
{
HashSet<String> tablesFound = new HashSet<string>();
// 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<String> tablesNotFound = new HashSet<string>(tablesExpected.Where(item => !tablesFound.ContainsCI(item)));
if (tablesNotFound.Any())
return SetErrorState($"Core tables not found: {String.Join(", ", tablesNotFound)}.");
}
}
HashSet<String> tablesNotFound = new HashSet<string>(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
//-------------------------------------------------------------------
/// <summary>
/// Validate repository initialisation data.
/// <para>- Organisation properties.</para>
/// <para>- User properties.</para>
/// <para>- User security properties.</para>
/// </summary>
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
//-------------------------------------------------------------------
/// <summary>
/// Initialise repository.
/// <para>- Organisation contact.</para>
/// <para>- Internal association.</para>
/// <para>- Security item and 'Super' group.</para>
/// <para>- User contact.</para>
/// <para>- User member association.</para>
/// </summary>
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
}
//-------------------------------------------------------------------
/// <summary>
/// Add User Account.
/// </summary>
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;
}
//-------------------------------------------------------------------
/// <summary>
/// POpulate reference data.
/// <br/>- Code Types.
/// </summary>
public bool PopulateReferenceData()
{
ClearErrorState();
// Code types.
List<SaCodeTypeDfn> 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;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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
{
//=======================================================================
/// <summary>
/// Utilitiy functions relating to the Demo BusinessMgr database instance.
/// <para>For instance:</para>
/// <para>- Database initialisation.</para>
/// <para>- Populate example data.</para>
/// <para>- Populate Demo Account User.</para>
/// </summary>
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.
/// <summary>
/// Security Group codes - as set up during initialisation.
/// </summary>
public String GetSecurityGroupCode(SecurityGroup group)
{
switch (group)
{
case SecurityGroup.Standard: return "Standard";
case SecurityGroup.Super: return SaSecurityConsole.GroupCode_Super;
}
return "";
}
//-------------------------------------------------------------------
// Verify Repository.
/// <summary>
/// Is repository database valid.
/// <para>- Contains core tables (Affiliate, Association, Commodity etc).</para>
/// </summary>
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.
/// <summary>
/// Prepare a suitable batch of data to populate the demo database.
/// </summary>
public abstract SbmRepositoryPopulationData PrepareDemoPopulationData();
//-------------------------------------------------------------------
// Populate Repository.
/// <summary>
/// Populate repository.
/// <br/>- Initialise repository: Organisation contact, Internal association, Security item and 'Super' group, User contact, User member association.
/// <br/>- Demo specific security.
/// <br/>- Populate demo data, including Repository configuration.
/// </summary>
public abstract bool PopulateRepository(SbmRepositoryPopulationData data);
//-------------------------------------------------------------------
/// <summary>
/// Get Affiliate Owner Ids for Internal Associations.
/// </summary>
public HashSet<SysId> GetInternalAssociationAffiliateIdsOwner()
{
return Internals.AccountMgr.GetInternalAssociationAffiliateIdsOwner();
}
//-------------------------------------------------------------------
// User Accounts.
/// <summary>
/// Add User Account.
/// </summary>
public bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount)
{
ClearErrorState();
if (!InstanceConsole.AddUserAccount(userAccount))
return SetErrorState(InstanceConsole.ErrorStateMessage);
return OK;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
;
@@ -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
{
//=======================================================================
/// <summary>
/// Determine the correct length to use for text columns in the current database.
/// <br/>- Primarily determined by the relevant database definition.
/// <br/>- For selected columns, use the db schema length instead.
/// <br/>- Allows for certain column lengths to be adjusted in the database.
/// </summary>
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<SbmDbDfn.ColumnIdx, ulong> BusMgrColumnLengths = new Dictionary<SbmDbDfn.ColumnIdx, ulong>()
{
{ 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<SaSecurityDbDfn.ColumnIdx, ulong> SecurityColumnLengths = new Dictionary<SaSecurityDbDfn.ColumnIdx, ulong>()
{
{ 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<SaCodeTypeDbDfn.ColumnIdx, ulong> CodeTypeColumnLengths = new Dictionary<SaCodeTypeDbDfn.ColumnIdx, ulong>()
{
{ 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<SaItemOptionDbDfn.ColumnIdx, ulong> ItemOptionColumnLengths = new Dictionary<SaItemOptionDbDfn.ColumnIdx, ulong>()
{
{ 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);
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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<TypeCodeDesc> transTypes = new List<TypeCodeDesc>();
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<TypeCodeDesc> transTypes = new List<TypeCodeDesc>();
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)
{
@@ -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<TypeCodeDesc> transactionTypes_Full = new List<TypeCodeDesc>();
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<SaItemOptionDfn>();
}
//-------------------------------------------------------------------
// C o d e T y p e s
//-------------------------------------------------------------------
// Application Code Types.
public virtual List<CodeDesc> GetDefaultCodesOfType(Sbm.ApplCodeType type)
{
List<CodeDesc> codes = new List<CodeDesc>();
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
//-------------------------------------------------------------------
@@ -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
{
//=======================================================================
/// <summary>
/// Utilitiy functions relating to a core BusinessMgr database instance.
/// <para>For instance:</para>
/// <para>- Verifying repository status.</para>
/// <para>- Initialisation of new repository.</para>
/// <para>- Bringing static (tax codes etc) and reference data up to date.</para>
/// </summary>
public interface ISbmCoreInstanceConsole
{
//-------------------------------------------------------------------
// Methods.
/// <summary>
/// Is repository database valid.
/// <para>- Contains core tables (Affiliate, Association, Commodity etc).</para>
/// </summary>
bool IsRepositoryValid();
/// <summary>
/// Is repository database initialised.
/// <para>- Has a valid internal association.</para>
/// <para>- Has at least one user.</para>
/// </summary>
bool IsRepositoryInitialised();
/// <summary>
/// Validate repository initialisation data.
/// <para>- Organisation properties.</para>
/// <para>- User properties.</para>
/// <para>- User security properties.</para>
/// </summary>
bool ValidateRepositoryInitialisionData(SbmRepositoryInitialisationData initData);
/// <summary>
/// Initialise repository.
/// <para>- Organisation contact.</para>
/// <para>- Internal association.</para>
/// <para>- Security item and 'Super' group.</para>
/// <para>- User contact.</para>
/// <para>- User member association.</para>
/// </summary>
bool InitialiseRepository(SbmRepositoryInitialisationData initData);
/// <summary>
/// Add User Account.
/// </summary>
bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount);
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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
{
//=======================================================================
/// <summary>
/// Utilitiy functions relating to the Demo BusinessMgr database instance.
/// <para>For instance:</para>
/// <para>- Database initialisation.</para>
/// <para>- Populate example data.</para>
/// <para>- Populate Demo Account User.</para>
/// </summary>
public interface ISbmDemoInstanceConsole
{
//-------------------------------------------------------------------
/// <summary>
/// Is repository database valid.
/// <para>- Contains core tables (Affiliate, Association, Commodity etc).</para>
/// </summary>
abstract bool IsRepositoryValid();
/// <summary>
/// Prepare a suitable batch of data to populate the demo database.
/// <br/>- Randomly crafted.
/// <br/>- Selected from data stored on the Control database.
/// </summary>
abstract SbmRepositoryPopulationData PrepareDemoPopulationData();
/// <summary>
/// Populate repository.
/// <br/>- Initialise repository: Organisation contact, Internal association, Security item and 'Super' group, User contact, User member association.
/// <br/>- Demo specific security.
/// <br/>- Populate demo data, including Repository configuration.
/// </summary>
abstract bool PopulateRepository(SbmRepositoryPopulationData data);
public enum SecurityGroup { Standard, Super }
/// <summary>
/// Security Group codes - as set up during initialisation.
/// </summary>
abstract String GetSecurityGroupCode(SecurityGroup group);
/// <summary>
/// Get Affiliate Owner Ids for Internal Associations.
/// </summary>
abstract HashSet<SysId> GetInternalAssociationAffiliateIdsOwner();
/// <summary>
/// Add User Account.
/// </summary>
abstract bool AddUserAccount(SbmRepositoryPopulationData.UserAccount userAccount);
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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
{
//=======================================================================
/// <summary>
/// Organisation and User info for Repository initialisation.
/// </summary>
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(); }
}
//=======================================================================
}
@@ -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
{
//=======================================================================
/// <summary>
/// Organisation and User info for Repository initialisation.
/// </summary>
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; }
/// <summary>
/// User (security) code defaults to Email if not specified.
/// </summary>
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<AddressData> Addresses { get; } = new List<AddressData>();
// 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.
/// <summary>Repository initialisation data.</summary>
public SbmRepositoryInitialisationData InitData { get; } = new SbmRepositoryInitialisationData();
public SysId AffiliateIdOrganisation { get { return InitData.Organisation.AffiliateId; } }
/// <summary>Repository congiruation options.</summary>
public RepositoryConfigurationData RepositoryConfiguration { get; } = new RepositoryConfigurationData();
/// <summary>Owner configuration options.</summary>
public OwnerConfigurationData OwnerConfiguration { get; } = new OwnerConfigurationData();
/// <summary>Individuals.</summary>
public List<IndividualData> Individuals { get; } = new List<IndividualData>();
/// <summary>Organisations.</summary>
public List<OrganisationData> Organisations { get; } = new List<OrganisationData>();
/// <summary>Commodities.</summary>
public List<CommodityData> Commodities { get; } = new List<CommodityData>();
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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))
{
@@ -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);
}
/// <summary>
/// Retrieve the most recent registration details for the email address with the specified status.
/// <para>- Awaiting: registration is incomplete and can potentially be reused.</para>
/// </summary>
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<String> GetAccountRegistrationQueryFilter(SbmcAccountRegistration.Params prm);
public abstract long GetAccountRegistrationCount(SbmcAccountRegistration.Params prm);
public abstract List<SbmcAccountRegistration> GetAccountRegistrationList(SbmcAccountRegistration.Params prm);
public abstract DbResultSet ExecuteAccountRegistrationQuery(List<ColumnDfn> columns, SbmcAccountRegistration.Params prm);
//-------------------------------------------------------------------
// Data values.
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
/// </summary>
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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<String> 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<ColumnDfn> columns, SbmcUserAccount.Params prm);
//-------------------------------------------------------------------
// D a t a V a l u e s
// Data values.
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
@@ -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<String> GetOwnerQueryFilter(SbmcOwner.Params prm);
public abstract long GetOwnerCount(SbmcOwner.Params prm);
public abstract List<SbmcOwner> GetOwnerList(SbmcOwner.Params prm);
public abstract DbResultSet ExecuteOwnerQuery(List<ColumnDfn> columns, SbmcOwner.Params prm);
//-------------------------------------------------------------------
// D a t a V a l u e s
// Data values.
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
@@ -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<String> GetRepositoryQueryFilter(SbmcRepository.Params prm);
public abstract long GetRepositoryCount(SbmcRepository.Params prm);
public abstract List<SbmcRepository> GetRepositoryList(SbmcRepository.Params prm);
public abstract DbResultSet ExecuteRepositoryQuery(List<ColumnDfn> columns, SbmcRepository.Params prm);
//-------------------------------------------------------------------
// D a t a V a l u e s
// Data values.
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
@@ -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<ColumnDfn> columns, SbmcItemParam.Params prm);
//-------------------------------------------------------------------
// D a t a V a l u e s
// Data values.
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
@@ -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;
@@ -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<SysIdString> affiliateIdNames = new List<SysIdString>();
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))
{
@@ -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<Sbm.AssociationType> GetAssociationTypesInUse();
//-------------------------------------------------------------------
// Internal associations.
public abstract HashSet<SysId> GetInternalAssociationAffiliateIdsOwner();
public SbmAssociation GetInternalAssociation(SysId affiliateIdOwner)
{
return GetAssociationByOwnerTypeTarget(affiliateIdOwner, Sbm.AssociationType.Internal, affiliateIdOwner);
}
//-------------------------------------------------------------------
// Association Targets.
public abstract List<SysId> GetMemberTargetIds(SysId affiliateIdOwner);
public abstract List<SysId> GetCustomerTargetIds(List<SysId> affiliateIdsInclude, List<SysId> affiliateIdsExclude);
public abstract List<SysId> GetCustomerAssocIdsForTargets(List<SysId> affiliateIdsTarget);
public abstract List<SysId> GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List<SysId> 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;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -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<Sbm.AssociationType> GetAssociationTypesInUse();
//-------------------------------------------------------------------
// Association List Targets.
public abstract List<SysId> GetMemberTargetIds(SysId affiliateIdOwner);
public abstract List<SysId> GetCustomerTargetIds(List<SysId> affiliateIdsInclude, List<SysId> affiliateIdsExclude);
public abstract List<SysId> GetCustomerAssocIdsForTargets(List<SysId> affiliateIdsTarget);
public abstract List<SysId> GetAssocIdsForTargets(SysId affiliateIdOwner, Sbm.AssociationType associationType, List<SysId> 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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+1 -4
View File
@@ -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); }
@@ -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);
@@ -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);
+38 -11
View File
@@ -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);
//-------------------------------------------------------------------
}
@@ -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);
@@ -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;
}
@@ -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;
@@ -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<TypeCodeDesc> 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<String> GetProcessCostCodes(SysId processId, SbmProcessCostCode processCostCode);
public abstract bool StoreProcessCostCodes(SbmProcess process, SbmProcessCostCode processCostCode, List<String> 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<String> GetProcessCostCodes(SysId processId, SbmProcess.SbmProcessCostCode processCostCode);
public abstract bool StoreProcessCostCodes(SbmProcess process, SbmProcess.SbmProcessCostCode processCostCode, List<String> 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;
@@ -157,7 +157,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
#endif
List<SbmRequirement> 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;
}
//-------------------------------------------------------------------
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -44,6 +44,23 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
public abstract bool RefreshAssociatedData(SbmTransaction transaction, List<SbmRequirement> requirements, DbUpdateInfo dbUpdateInfo);
public abstract bool RefreshAssociatedTransactions(SbmTransaction transaction, List<SbmRequirement> 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;