Files
BusinessMgr-2019/SaBusMgrStandardDbas/Dbas/Consoles/SbmDatabaseConsole.cs
T

458 lines
24 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Dbas.Base;
using System;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Consoles
{
//=======================================================================
public class SbmDatabaseConsole : SacsDatabaseConsole
{
//-------------------------------------------------------------------
// Data members.
private class DataMembers
{
public DataMembers(SbmSessionContext sessionContext)
{
this.SessionContext = sessionContext;
}
public SbmSessionContext SessionContext { get; }
public ISacsDatabase Database { get; set; }
}
private DataMembers mbr { get; }
//-------------------------------------------------------------------
// Construction.
public SbmDatabaseConsole(SbmSessionContext sessionContext)
{
this.mbr = new DataMembers(sessionContext);
}
//-------------------------------------------------------------------
// Properties.
private SbmSessionContext SessionContext { get { return mbr.SessionContext; } }
private ISacsDatabase Database { get { if (mbr.Database == null) { mbr.Database = SbmGlobals.Application.CreateBusMgrDatabase(SessionContext); } return mbr.Database; } }
private new IndexStats IndexStats { get; set; }
//-------------------------------------------------------------------
// Database Indices.
//-------------------------------------------------------------------
public bool InstallDbIndices(IndexStats indexStats)
{
ClearErrorState();
IndexStats = indexStats;
if (Database == null || Database.DbmsType != DbmsType.MsSql) return SetErrorState("");
// Turn off database exceptions.
bool displayDbExceptionsPrev = Database.DisplayErrors;
Database.DisplayErrors = false;
//---------------------------------------------------------------
// Common tables.
// NextId table:
CreatePrimaryDbIndex("NextId", "Object");
// Attribute Update table:
CreatePrimaryDbIndex("SaAttrUpdate", "Logged,ItemType,ItemId,Attribute");
CreateDbIndex("SaAttrUpdate", "IDX_SaAttrUpdate_Item", "ItemType,ItemId,Logged,Attribute");
CreateDbIndex("SaAttrUpdate", "IDX_SaAttrUpdate_ItemAttr", "ItemType,ItemId,Attribute,Logged");
// Code table:
CreatePrimaryDbIndex("SaCode", "Id");
CreateDbIndex("SaCode", "IDX_SaCode_Status", "Status");
CreateDbIndex("SaCode", "IDX_SaCode_Type", "CodeTypeId");
CreateDbIndex("SaCode", "IDX_SaCode_TypeCode", "CodeTypeId,Code", "", true);
CreateDbIndex("SaCode", "IDX_SaCode_TypeSeq", "CodeTypeId,Seq");
// Code Type table:
CreatePrimaryDbIndex("SaCodeType", "Id");
CreateDbIndex("SaCodeType", "IDX_SaCodeType_Code", "Code", "", true);
// Diary Entry table:
CreatePrimaryDbIndex("SaDiaryEntry", "Id");
CreateDbIndex("SaDiaryEntry", "IDX_SaDiaryEntry_Finish", "Finish");
CreateDbIndex("SaDiaryEntry", "IDX_SaDiaryEntry_Start", "Start");
// Diary Link table:
CreatePrimaryDbIndex("SaDiaryLink", "EntryId,ItemType,ItemId");
// Item Data table:
CreatePrimaryDbIndex("SaItemData", "Id");
CreateDbIndex("SaItemData", "IDX_SaItemData_DataTypeItem", "DataType,ItemType,ItemId");
CreateDbIndex("SaItemData", "IDX_SaItemData_Item", "ItemType,ItemId");
CreateDbIndex("SaItemData", "IDX_SaItemData_ItemTypeDataType", "ItemType,DataType");
// Item Document table:
CreatePrimaryDbIndex("SaItemDoc", "Id");
CreateDbIndex("SaItemDoc", "IDX_SaItemDoc_Item", "ItemType,ItemId");
// Item Named Value table:
CreatePrimaryDbIndex("SaItemNamedValue", "ItemType,ItemId,Name,Seq");
CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_Item", "ItemType,ItemId");
CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_ItemName", "ItemType,ItemId,Name");
CreateDbIndex("SaItemNamedValue", "IDX_SaItemNamedValue_Name", "Name");
// Item Option table:
CreatePrimaryDbIndex("SaItemOption", "ItemType,ItemId,Name,Context");
CreateDbIndex("SaItemOption", "IDX_SaItemOption_Item", "ItemType,ItemId");
CreateDbIndex("SaItemOption", "IDX_SaItemOption_ItemName", "ItemType,ItemId,Name");
CreateDbIndex("SaItemOption", "IDX_SaItemOption_Name", "Name");
// Security Item table:
CreatePrimaryDbIndex("SaSecItem", "Id");
CreateDbIndex("SaSecItem", "IDX_SaSecItem_Code", "Code");
CreateDbIndex("SaSecItem", "IDX_SaSecItem_Desc", "Description");
CreateDbIndex("SaSecItem", "IDX_SaSecItem_TypeCode", "Type,Code", "", true);
// Security Link table:
CreatePrimaryDbIndex("SaSecLink", "ItemOwner,ItemTarget,ItemContext");
CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemContext", "ItemContext");
CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemOwner", "ItemOwner");
CreateDbIndex("SaSecLink", "IDX_SaSecLink_ItemTarget", "ItemTarget");
//---------------------------------------------------------------------
// I n t e r f a c e s
//---------------------------------------------------------------------
// Interface table:
CreatePrimaryDbIndex("Interface", "Id");
CreateDbIndex("Interface", "IDX_Interface_ContextCategoryType", "Context,Category,Type");
CreateDbIndex("Interface", "IDX_Interface_ContextCode", "Context,Code", "", true);
// Interface Data Item table:
CreatePrimaryDbIndex("InterfaceDataItem", "Id");
CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceDirectionItemRef", "InterfaceId,Direction,ItemType,ExternalRef");
CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceItemRef", "InterfaceId,Direction,ItemType,ItemId,ExternalRef", "", true);
CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_InterfaceStatusItemRef", "InterfaceId,Direction,ProcessStatus,ItemType,ItemId,ExternalRef", "", true);
CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_Item", "ItemType,ItemId");
CreateDbIndex("InterfaceDataItem", "IDX_InterfaceDataItem_ItemExternal", "ItemType,ExternalRef");
// Interface Process table:
CreatePrimaryDbIndex("InterfaceProcess", "Id");
CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntDirSeq", "InterfaceId,Direction,ProcSeq", "", true);
CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntProc", "InterfaceId,ProcRef");
CreateDbIndex("InterfaceProcess", "IDX_InterfaceProcess_IntProcDate", "InterfaceId,ProcDate,ProcTime");
// Interface Process Data Item table:
CreatePrimaryDbIndex("InterfaceProcessDataItem", "ProcessId,InterfaceDataItemId");
CreateDbIndex("InterfaceProcessDataItem", "IDX_InterfaceProcessDataItem_Item", "InterfaceDataItemId");
CreateDbIndex("InterfaceProcessDataItem", "IDX_InterfaceProcessDataItem_ProcItemData", "ProcessId,ItemData");
// InterfaceProcessMessage table:
CreatePrimaryDbIndex("InterfaceProcessMessage", "Id");
CreateDbIndex("InterfaceProcessMessage", "IDX_InterfaceProcessMessage_Process", "ProcessId");
CreateDbIndex("InterfaceProcessMessage", "IDX_InterfaceProcessMessage_ProcMsgType", "ProcessId,MsgType");
//---------------------------------------------------------------------
// B u s i n e s s M a n a g e r
//---------------------------------------------------------------------
// Address table:
CreatePrimaryDbIndex("Address", "Id");
CreateDbIndex("Address", "IDX_Address_CityRgn", "CityRgn");
CreateDbIndex("Address", "IDX_Address_CountryRgn", "CountryRgn");
CreateDbIndex("Address", "IDX_Address_Flags", "Flags");
CreateDbIndex("Address", "IDX_Address_Item", "ItemType,ItemId");
CreateDbIndex("Address", "IDX_Address_Line1", "Line1");
CreateDbIndex("Address", "IDX_Address_Owner", "AffIdOwner");
CreateDbIndex("Address", "IDX_Address_Postcode", "Postcode");
CreateDbIndex("Address", "IDX_Address_PostcodeFmt", "PostcodeFmt");
CreateDbIndex("Address", "IDX_Address_ProvinceRgn", "ProvinceRgn");
CreateDbIndex("Address", "IDX_Address_RefAddress", "AddIdRef");
CreateDbIndex("Address", "IDX_Address_Status", "Status");
CreateDbIndex("Address", "IDX_Address_Type", "Type");
// Affiliate table:
CreatePrimaryDbIndex("Affiliate", "Id");
CreateDbIndex("Affiliate", "IDX_Affiliate_Name", "Name");
CreateDbIndex("Affiliate", "IDX_Affiliate_Status", "Status");
CreateDbIndex("Affiliate", "IDX_Affiliate_Type", "Type");
CreateDbIndex("Affiliate", "IDX_Affiliate_UserId", "UserId");
// Association table:
CreatePrimaryDbIndex("Association", "Id");
CreateDbIndex("Association", "IDX_Association_Code", "Code");
CreateDbIndex("Association", "IDX_Association_ExtRef", "ExtRef");
CreateDbIndex("Association", "IDX_Association_Owner", "AffIdOwner");
CreateDbIndex("Association", "IDX_Association_OwnerTargetType", "AffIdOwner,AffIdTarget,Type", "", true);
CreateDbIndex("Association", "IDX_Association_OwnerTypeCode", "AffIdOwner,Type,Code");
CreateDbIndex("Association", "IDX_Association_PriceSet", "PriceSetId");
CreateDbIndex("Association", "IDX_Association_Target", "AffIdTarget");
CreateDbIndex("Association", "IDX_Association_TaxCode", "TaxCodeId");
// Commodity table:
CreatePrimaryDbIndex("Commodity", "Id");
CreateDbIndex("Commodity", "IDX_Commodity_AssetCat", "AssetCatId");
CreateDbIndex("Commodity", "IDX_Commodity_CodeIssue", "Code,DrawingIssue");
CreateDbIndex("Commodity", "IDX_Commodity_Colour", "ColourCode");
CreateDbIndex("Commodity", "IDX_Commodity_Customer", "AssIdCustomer");
CreateDbIndex("Commodity", "IDX_Commodity_Delivery", "DeliveryCode");
CreateDbIndex("Commodity", "IDX_Commodity_Description", "DescBrief");
CreateDbIndex("Commodity", "IDX_Commodity_Finish", "FinishCode");
CreateDbIndex("Commodity", "IDX_Commodity_Handling", "HandlingCode");
CreateDbIndex("Commodity", "IDX_Commodity_Material", "MaterialCode");
CreateDbIndex("Commodity", "IDX_Commodity_Owner", "AffIdOwner");
CreateDbIndex("Commodity", "IDX_Commodity_Range", "RangeCode");
CreateDbIndex("Commodity", "IDX_Commodity_SalesProjCommodity", "CommodityIdSalesProj");
CreateDbIndex("Commodity", "IDX_Commodity_Source", "SourceCode");
CreateDbIndex("Commodity", "IDX_Commodity_Supplier", "AssIdSupplier");
CreateDbIndex("Commodity", "IDX_Commodity_SupplyMethod", "SupplyMethodCode");
CreateDbIndex("Commodity", "IDX_Commodity_TaxCode", "TaxCodeId");
CreateDbIndex("Commodity", "IDX_Commodity_UomBox", "UomIdBox");
CreateDbIndex("Commodity", "IDX_Commodity_UomDensity", "UomIdDensity");
CreateDbIndex("Commodity", "IDX_Commodity_UomLength", "UomIdLength");
CreateDbIndex("Commodity", "IDX_Commodity_UomSale", "UomIdSale");
CreateDbIndex("Commodity", "IDX_Commodity_UomTimeProd", "UomIdTimeProd");
CreateDbIndex("Commodity", "IDX_Commodity_UomVolume", "UomIdVolume");
CreateDbIndex("Commodity", "IDX_Commodity_UomWeight", "UomIdWeight");
// Commodity Customer table:
CreatePrimaryDbIndex("CommodityCustomer", "CommodityId,AssocIdCustomer");
CreateDbIndex("CommodityCustomer", "IDX_CommodityCustomer_Currency", "CurrencyIdRetail");
CreateDbIndex("CommodityCustomer", "IDX_CommodityCustomer_Customer", "AssocIdCustomer");
// Commodity Supplier table:
CreatePrimaryDbIndex("CommoditySupplier", "CommodityId,AssocIdSupplier");
CreateDbIndex("CommoditySupplier", "IDX_CommoditySupplier_Currency", "CurrencyIdCost");
CreateDbIndex("CommoditySupplier", "IDX_CommoditySupplier_Supplier", "AssocIdSupplier");
// Constituent table:
CreatePrimaryDbIndex("Constituent", "Id");
CreateDbIndex("Constituent", "IDX_Constituent_Asset", "AssetId");
CreateDbIndex("Constituent", "IDX_Constituent_Assoc", "AssocId");
CreateDbIndex("Constituent", "IDX_Constituent_Const", "ConstId");
CreateDbIndex("Constituent", "IDX_Constituent_Contractor", "AssocIdContractor");
CreateDbIndex("Constituent", "IDX_Constituent_Effective", "Effective");
CreateDbIndex("Constituent", "IDX_Constituent_Owner", "AffIdOwner");
CreateDbIndex("Constituent", "IDX_Constituent_Process", "ProcessId");
CreateDbIndex("Constituent", "IDX_Constituent_Reqnt", "ReqntId");
CreateDbIndex("Constituent", "IDX_Constituent_Target", "AffIdTarget");
CreateDbIndex("Constituent", "IDX_Constituent_TaxCode", "TaxCodeId");
CreateDbIndex("Constituent", "IDX_Constituent_Trans", "TransId");
CreateDbIndex("Constituent", "IDX_Constituent_Type", "Type");
CreateDbIndex("Constituent", "IDX_Constituent_Uom", "UomId");
// Container table:
CreatePrimaryDbIndex("Container", "Id");
CreateDbIndex("Container", "IDX_Container_Customer", "AssIdCustomer");
CreateDbIndex("Container", "IDX_Container_OwnerRef", "AffIdOwner,Reference");
CreateDbIndex("Container", "IDX_Container_OwnerType", "AffIdOwner,Type");
CreateDbIndex("Container", "IDX_Container_Supplier", "AssIdSupplier");
CreateDbIndex("Container", "IDX_Container_TagId", "TagId");
// Container Item table:
CreatePrimaryDbIndex("ContainerItem", "ContainerId,ItemSeq,ItemType,ItemId");
CreateDbIndex("ContainerItem", "IDX_ContainerItem_ContainerSeq", "ContainerId,ItemSeq");
CreateDbIndex("ContainerItem", "IDX_ContainerItem_Item", "ItemType,ItemId");
CreateDbIndex("ContainerItem", "IDX_ContainerItem_SourceItem", "ItemTypeSource,ItemIdSource");
// Item Link table:
//CreatePrimaryDbIndex ("ItemLink","Type,ItemTypeFrom,ItemIdFrom,ItemTypeTo,ItemIdTo,Seq");
CreateDbIndex("ItemLink", "IDX_ItemLink_ItemFrom", "ItemTypeFrom,ItemIdFrom");
CreateDbIndex("ItemLink", "IDX_ItemLink_ItemTo", "ItemTypeTo,ItemIdTo");
CreateDbIndex("ItemLink", "IDX_ItemLink_TypeItemFromStatus", "Type,ItemTypeFrom,ItemIdFrom,Status");
CreateDbIndex("ItemLink", "IDX_ItemLink_Type_ItemTypeFrom_ItemTypeTo", "Type,ItemTypeFrom,ItemTypeTo", "ItemIdFrom,ItemIdTo");
// Location table:
CreatePrimaryDbIndex("Location", "Id");
CreateDbIndex("Location", "IDX_Location_Owner", "AffIdOwner");
CreateDbIndex("Location", "IDX_Location_OwnerCat", "AffIdOwner,Category");
CreateDbIndex("Location", "IDX_Location_OwnerCode", "AffIdOwner,Code");
// Movement table:
CreatePrimaryDbIndex("Movement", "Id");
CreateDbIndex("Movement", "IDX_Movement_Item", "ItemType,ItemId");
CreateDbIndex("Movement", "IDX_Movement_ItemTypeMovement", "ItemType,ItemId,Type,Movement");
CreateDbIndex("Movement", "IDX_Movement_LocationFrom", "LocationIdFrom");
CreateDbIndex("Movement", "IDX_Movement_LocationTo", "LocationIdTo");
CreateDbIndex("Movement", "IDX_Movement_Movement", "Movement");
CreateDbIndex("Movement", "IDX_Movement_SourceItem", "ItemTypeSource,ItemIdSource");
CreateDbIndex("Movement", "IDX_Movement_SourceMovement", "MovementIdSource");
// PortfolioItem table:
CreatePrimaryDbIndex("PortfolioItem", "Id");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_Commodity", "CommodityId");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_Owner", "AffIdOwner");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_OwnerParentCode", "AffIdOwner,ItemIdParent,Code");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_OwnerParentType", "AffIdOwner,ItemIdParent,Type");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ParentItem", "ItemIdParent");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ParentSeq", "ItemIdParent,Seq");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_RefItem", "ItemIdRef");
CreateDbIndex("PortfolioItem", "IDX_PortfolioItem_ShortCut", "ShortCut");
// Process table:
CreatePrimaryDbIndex("Process", "Id");
CreateDbIndex("Process", "IDX_Process_OwnerCategory", "AffIdOwner,Category");
CreateDbIndex("Process", "IDX_Process_OwnerSeq", "AffIdOwner,Seq");
CreateDbIndex("Process", "IDX_Process_OwnerType", "AffIdOwner,Type");
// Requirement table:
CreatePrimaryDbIndex("Requirement", "Id");
CreateDbIndex("Requirement", "IDX_Requirement_Reqnt_Trans", "Id,TransId", "ReqntIdSource", true);
CreateDbIndex("Requirement", "IDX_Requirement_Reqnt_Trans_ReqntSource", "Id,TransId,ReqntIdSource", "", true);
CreateDbIndex("Requirement", "IDX_Requirement_AffilOwner", "AffIdOwner");
CreateDbIndex("Requirement", "IDX_Requirement_Asset", "AssetId");
CreateDbIndex("Requirement", "IDX_Requirement_Assoc", "AssocId");
CreateDbIndex("Requirement", "IDX_Requirement_AssocContract", "AssIdSubcontract");
CreateDbIndex("Requirement", "IDX_Requirement_Commodity", "CommodityId");
CreateDbIndex("Requirement", "IDX_Requirement_MaterialSource", "MaterialSourceCode");
CreateDbIndex("Requirement", "IDX_Requirement_ProductCode", "ProductCode");
CreateDbIndex("Requirement", "IDX_Requirement_ReqntSource", "ReqntIdSource");
CreateDbIndex("Requirement", "IDX_Requirement_StockLocation", "LocationIdStock");
CreateDbIndex("Requirement", "IDX_Requirement_TaxCode", "TaxCodeId");
CreateDbIndex("Requirement", "IDX_Requirement_Trans", "TransId");
CreateDbIndex("Requirement", "IDX_Requirement_TransCommodityStatus", "TransId,CommodityId,Status");
CreateDbIndex("Requirement", "IDX_Requirement_TransSeq", "TransId,Seq");
CreateDbIndex("Requirement", "IDX_Requirement_Uom", "UomId");
// Asset table:
CreatePrimaryDbIndex("SaAsset", "Id");
CreateDbIndex("SaAsset", "IDX_SaAsset_CategorySerial", "AssetCategoryId,SerialFmt", "", true);
CreateDbIndex("SaAsset", "IDX_SaAsset_Customer", "AssocIdCustomer,Id", "", true);
CreateDbIndex("SaAsset", "IDX_SaAsset_Item", "ItemType,ItemId");
CreateDbIndex("SaAsset", "IDX_SaAsset_Supplier", "AssocIdSupplier,Id", "", true);
// Asset Category table:
CreatePrimaryDbIndex("SaAssetCategory", "Id");
CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_Customer", "AssocIdCustomer,Id", "", true);
CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_OwnerType", "AffIdOwner,AssetType,Code", "", true);
CreateDbIndex("SaAssetCategory", "IDX_SaAssetCategory_Supplier", "AssocIdSupplier,Id", "", true);
// Asset Process table:
CreatePrimaryDbIndex("SaAssetProcess", "Id");
// Price table:
CreatePrimaryDbIndex("SaPrice", "PriceSetId,CommodityId");
CreateDbIndex("SaPrice", "IDX_SaPrice_Commodity", "CommodityId");
CreateDbIndex("SaPrice", "IDX_SaPrice_PriceSet", "PriceSetId");
// Price Set table:
CreatePrimaryDbIndex("SaPriceSet", "Id");
CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_AffOwner", "AffIdOwner");
CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_Currency", "CurrencyId");
CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_Name", "Name");
CreateDbIndex("SaPriceSet", "IDX_SaPriceSet_OwnerRef", "AffIdOwner,Ref", "", true);
// Vehicle table:
CreatePrimaryDbIndex("SaVehicle", "Id");
CreateDbIndex("SaVehicle", "IDX_SaVehicle_CapCode", "CapCode,Id", "", true);
CreateDbIndex("SaVehicle", "IDX_SaVehicle_KeyLocation", "KeyLocation,Id", "", true);
CreateDbIndex("SaVehicle", "IDX_SaVehicle_RegNumber", "RegNumber", "", true);
CreateDbIndex("SaVehicle", "IDX_SaVehicle_VehicleClass", "VehicleClassId,Id", "", true);
// Vehicle Class table:
CreatePrimaryDbIndex("SaVehicleClass", "Id");
CreateDbIndex("SaVehicleClass", "IDX_SaVehicleClass_Category", "VehicleCategoryCode");
CreateDbIndex("SaVehicleClass", "IDX_SaVehicleClass_Make", "MakeCode,Id", "", true);
// Vehicle Event table:
CreatePrimaryDbIndex("SaVehicleEvent", "Id");
CreateDbIndex("SaVehicleEvent", "IDX_SaVehicleEvent_TaxCode", "TaxCodeId");
CreateDbIndex("SaVehicleEvent", "IDX_SaVehicleEvent_VehicleStart", "VehicleId,StartOn", "", true);
// Vehicle Feature table:
CreatePrimaryDbIndex("SaVehicleFeature", "VehicleId,Source,Type,CategoryCode,FeatureCode");
// Stock Level table:
CreatePrimaryDbIndex("StockLevel", "Id");
CreateDbIndex("StockLevel", "IDX_StockLevel_Commodity", "CommodityId");
CreateDbIndex("StockLevel", "IDX_StockLevel_CommodityRecorded", "CommodityId,Recorded");
CreateDbIndex("StockLevel", "IDX_StockLevel_CommodityType", "CommodityId,Type");
CreateDbIndex("StockLevel", "IDX_StockLevel_Location", "LocationId");
CreateDbIndex("StockLevel", "IDX_StockLevel_Recorded", "Recorded");
CreateDbIndex("StockLevel", "IDX_StockLevel_Type", "Type");
// System Account table:
CreatePrimaryDbIndex("SystemAccount", "Id");
CreateDbIndex("SystemAccount", "IDX_SystemAccount_AffIdOwner", "AffIdOwner");
CreateDbIndex("SystemAccount", "IDX_SystemAccount_Association", "AssocId");
CreateDbIndex("SystemAccount", "IDX_SystemAccount_Interface", "InterfaceId");
// System Account User table:
CreatePrimaryDbIndex("SystemAccountUser", "AccountId,UserId");
CreateDbIndex("SystemAccountUser", "IDX_SystemAccountUser_User", "UserId");
// System User table:
CreatePrimaryDbIndex("SystemUser", "Id");
CreateDbIndex("SystemUser", "IDX_SystemUser_AffiliateId", "AffiliateId");
CreateDbIndex("SystemUser", "IDX_SystemUser_Interface", "InterfaceId");
CreateDbIndex("SystemUser", "IDX_SystemUser_OwnerCode", "AffIdOwner,Code", "", true);
// Transaction table:
CreatePrimaryDbIndex("Transaction", "Id");
CreateDbIndex("Transaction", "IDX_Transaction_AffilRaise", "AffIdRaise");
CreateDbIndex("Transaction", "IDX_Transaction_AffilRefer", "AffIdRefer");
CreateDbIndex("Transaction", "IDX_Transaction_Assoc", "AssocId");
CreateDbIndex("Transaction", "IDX_Transaction_AssocContract", "AssocIdContract");
CreateDbIndex("Transaction", "IDX_Transaction_AssocOffice", "AssocIdOffice");
CreateDbIndex("Transaction", "IDX_Transaction_AssocType", "AssocId,Type");
CreateDbIndex("Transaction", "IDX_Transaction_Currency", "CurrencyId");
CreateDbIndex("Transaction", "IDX_Transaction_OwnerRef", "AffIdOwner,Ref");
CreateDbIndex("Transaction", "IDX_Transaction_OwnerRefExt", "AffIdOwner,RefExt");
CreateDbIndex("Transaction", "IDX_Transaction_OwnerTypeRaised", "AffIdOwner,Type,Raised");
CreateDbIndex("Transaction", "IDX_Transaction_Postcode", "Postcode");
CreateDbIndex("Transaction", "IDX_Transaction_StatusCat", "StatusCat");
CreateDbIndex("Transaction", "IDX_Transaction_StockLocation", "LocationIdStock");
CreateDbIndex("Transaction", "IDX_Transaction_TaxCode", "TaxCodeId");
CreateDbIndex("Transaction", "IDX_Transaction_TransSource", "TransIdSource");
//---------------------------------------------------------------------
// R e f e r e n c e D a t a
//---------------------------------------------------------------------
// Currency table:
CreatePrimaryDbIndex("Currency", "Id");
CreateDbIndex("Currency", "IDX_Currency_Code", "Code", "", true);
CreateDbIndex("Currency", "IDX_Currency_Region", "Region");
// Language table:
CreatePrimaryDbIndex("Language", "Id");
CreateDbIndex("Language", "IDX_Language_Code", "Code", "", true);
// Region table:
CreatePrimaryDbIndex("Region", "Id");
CreateDbIndex("Region", "IDX_Region_ParentTypeName", "Parent,Type,Name");
CreateDbIndex("Region", "IDX_Region_TypeName", "Type,Name", "", true);
// SysParam table:
CreatePrimaryDbIndex("SysParam", "Id");
CreateDbIndex("SysParam", "IDX_SysParam_CatAssName", "Cat,AssocId,Name");
CreateDbIndex("SysParam", "IDX_SysParam_CatName", "Cat,Name");
CreateDbIndex("SysParam", "IDX_SysParam_CatOrgName", "Cat,AffIdTarget,Name");
CreateDbIndex("SysParam", "IDX_SysParam_CatPerName", "Cat,AffIdOwner,Name");
// TaxCode table:
CreatePrimaryDbIndex("TaxCode", "Id");
CreateDbIndex("TaxCode", "IdX_TaxCode_Code", "Code");
CreateDbIndex("TaxCode", "IdX_TaxCode_CodeAlt1", "CodeAlt1");
CreateDbIndex("TaxCode", "IdX_TaxCode_CodeAlt2", "CodeAlt2");
// Unit of Measure table:
CreatePrimaryDbIndex("UnitMeasure", "Id");
CreateDbIndex("UnitMeasure", "IDX_UnitMeasure_Code", "Code", "", true);
//---------------------------------------------------------------
// Clean-up.
IndexStats = null;
Database.DisplayErrors = displayDbExceptionsPrev;
return OK;
}
//-------------------------------------------------------------------
private bool CreatePrimaryDbIndex(String tableName, String columns, bool dropIndicesIfNotExist = false)
{
return CreatePrimaryDbIndex(Database, IndexStats, tableName, columns, dropIndicesIfNotExist);
}
private bool CreateDbIndex(String tableName, String indexName, String columns, String includeColumns = "", bool unique = false)
{
return CreateDbIndex(Database, IndexStats, tableName, indexName, columns, includeColumns, unique);
}
private bool DropDbIndex(String tableName, String indexName)
{
return DropDbIndex(Database, IndexStats, tableName, indexName);
}
//-------------------------------------------------------------------
}
//=======================================================================
}