unit BaseConstants;

interface

uses Messages, Windows, Graphics, Controls, SysUtils;

const
  MarginOfError : Extended = 0.000001;
  gMinimumCompressionThreshold : Integer = 400;
  // Note: Compressing a string that is less than 400
  // characters in length will generate a compressed string that is
  // very close or larger in length than the original string's length.

  cbiNone = 0 ;
  cbiNew  = 1 ;

type
  TIDRecord = record
    ID: Integer;
    ClassTypeID: Integer;
  end;

  TIDRecordObject = class(TObject)
    Value: TIDRecord;
    constructor Create; overload;
    constructor Create(aValue: TIDRecord); overload;
  end;

  TCustomMethodInformationRec = record
    MethodID: Integer;
    MethodName: string;
  end;

  TSessionInformation = record
    CompanyName: string;
    City: string;
    State: string;
    EmployeeName: string;
    LoginName: string;
    LoginTime: TDateTime;
    SecurityGroupName: string;
  end;

  TIDRecordArray = array of TIDRecord;

  THexbyte = Array [1..2] of Char;

  TIPAddress = record
    A: Byte;
    B: Byte;
    C: Byte;
    D: Byte;
  end;

const
  cyrPhoneNumbers = '(US) 1-888-552-9823 or (International) 1-225-752-2866';

  clCyriousBlue = $00CC2121;
  //SMS Time Clock Constants

  ceNoClockIn = 'I';
  ceNoClockOut = 'O';
  ceNoLunchOut = 'L';
  ceNoLunchIn = 'L';
  ceMgtAdjust = 'A';
  ceCalcError = '*';

  NoID = -1;
  NoFieldName = '@#)(^^';
  NoIDRec : TIDRecord = ( ID : NoID; ClassTypeID : NoID );
  NoIPAddressRec : TIPAddress = ( A : 0 ; B : 0 ; C : 0 ; D : 0 );
  NoGUID : TGUID = '{00000000-0000-0000-0000-000000000000}';
  NoRect : TRect = ( Left : 0; Top : 0; Right : 0; Bottom : 0 );
  NoDate = 2;                           // 1/1/1900 looks best on reports !
  NoStartDate = NoDate;
  NoEndDate = 73051;                    // EncodeDate(2100,1,1); // crystal ball says so
  NoTime = 0;
  SingleQuote = '''';
  DoubleQuote = '"';
  CommandTimeOutAmount = 300;

  InvalidChars = '''"`~\/+!@#$%^&*()[]{}';

  NewGuid = '{00000000-0000-0000-0000-000000000000}';

  maxLoginsAllowed = 3;
  gJoinDBIndex = 999;

  tagExcludeControl = 7522867;
  tagUserLoggedIn   = 103175;

  tagRefresh        = 1234 ;

  TechSSLIPPortOffset = 80;
  TechSSLIPServerName = 'Cyrious Authentication Server';
  TechSSLIPServerAdd  = 'authenticate.cyrious.net';

  CyrSupportDownloadURLAddress = 'https://www.cyrious.com/Downloads/';

  CyrHASPDriversInstallFileName = 'hinstall.exe';
  CyrHASPDriversInstallWebFileName = 'hdd32.zip';

  CyrBarCodeFontsInstallFileName = 'BarCodeFonts.msi';

  CyrCrystalDriversInstallFileName_XI    = 'Crystal Reports XI Installer.msi';
  CyrCrystalDriversInstallWebFileName_XI = 'Control/Crystal_Reports_XI_Installation.zip';
  CrystalReportsInstallPath_XI           = '\Common Files\Business Objects\3.0\bin\';

  CrystalReportsInstallPath_85          = '\Common Files\Business Objects\2.7\bin\';
  CyrCrystalDriversInstallFileName_85    = 'Crystal Files.zip';
  CyrCrystalDriversInstallWebFileName_85 = 'SMS/Crystal Files.zip';

  OneDay            = 1;
  OneHour           = OneDay    /   24 ;
  OneMinute         = OneHour   /   60 ;
  OneSecond         = OneMinute /   60 ;
  OneMillisecond    = OneSecond / 1000 ;
  ElevenFiftyNinePM = 1 - OneSecond    ;
  Noon              = OneDay    / 2    ;

  minWebClients  = 5;

  charTab = #9;
  charComma = ',';
  charPara = #13;
  charSpace = ' ';

  compareLessThan    = -1;
  compareGreaterThan = +1;
  compareEqual       = 0;


  ValidXMLNameChars = ['0'..'9','a'..'f','A'..'F', '.', '-', '_', ':' ];

  HexDigits= ['0'..'9','a'..'f','A'..'F'];
  HexMap : Array [byte] of THexByte =
  (
   '00','01','02','03','04','05','06','07','08',
   '09','0A','0B','0C','0D','0E','0F',
   '10','11','12','13','14','15','16','17','18',
   '19','1A','1B','1C','1D','1E','1F',
   '20','21','22','23','24','25','26','27','28',
   '29','2A','2B','2C','2D','2E','2F',
   '30','31','32','33','34','35','36','37','38',
   '39','3A','3B','3C','3D','3E','3F',
   '40','41','42','43','44','45','46','47','48',
   '49','4A','4B','4C','4D','4E','4F',
   '50','51','52','53','54','55','56','57','58',
   '59','5A','5B','5C','5D','5E','5F',
   '60','61','62','63','64','65','66','67','68',
   '69','6A','6B','6C','6D','6E','6F',
   '70','71','72','73','74','75','76','77','78',
   '79','7A','7B','7C','7D','7E','7F',
   '80','81','82','83','84','85','86','87','88',
   '89','8A','8B','8C','8D','8E','8F',
   '90','91','92','93','94','95','96','97','98',
   '99','9A','9B','9C','9D','9E','9F',
   'A0','A1','A2','A3','A4','A5','A6','A7','A8',
   'A9','AA','AB','AC','AD','AE','AF',
   'B0','B1','B2','B3','B4','B5','B6','B7','B8',
   'B9','BA','BB','BC','BD','BE','BF',
   'C0','C1','C2','C3','C4','C5','C6','C7','C8',
   'C9','CA','CB','CC','CD','CE','CF',
   'D0','D1','D2','D3','D4','D5','D6','D7','D8',
   'D9','DA','DB','DC','DD','DE','DF',
   'E0','E1','E2','E3','E4','E5','E6','E7','E8',
   'E9','EA','EB','EC','ED','EE','EF',
   'F0','F1','F2','F3','F4','F5','F6','F7','F8',
   'F9','FA','FB','FC','FD','FE','FF'
  );

  strCR   = #13#10;
  str2CRs = strCR + strCR;

  repCR   = 'Cyr#13#10' ;

  str13   = #13;
  rep13   = 'Cyr13';

  str10   = #10;
  rep10   = 'Cyr10';

  str1310   = #13#10;
  rep1310   = 'Str1310';

  strEOS   = #0;
  repEOS   = 'CyrEOS';

  //  Communication Constants
  DefaultRoadIPPort   = 2879 ;
  DefaultScoutUDPPort = 2868 ;

  zoomPageWidth =  0;
  zoomWholePage =  1;
  zoom25        =  2;
  zoom50        =  3;
  zoom75        =  4;
  zoom100       =  5;
  zoom150       =  6;
  zoom200       =  7;
  zoom250       =  8;
  zoom300       =  9;
  zoom350       = 10;
  zoom400       = 11;

  // Credit Card processing special error constants
  CCProcessErrorAVSFailed       = -2;
  CCProcessErrorCVVFailed       = -3;
  CCProcessErrorAVSAndCVVFailed = -4;

  iidCollection =  84;
  iidFolder     =  87;

  // ClassTypeID Constants
  ctNoClassTypeID               = -00001 ;

  ctNone                        =  00000 ;
  ctApplication                 =  00001 ;
  ctSession                     =  00002 ;
  ctImporter                    =  00006 ;
  ctGenericImporter             =  00007 ;
  ctGeneric                     =  00008 ;
  ctAction                      =  00100 ;  ctFirst = ctAction;
  ctNavItem                     =  00200 ;
  ctUnit                        =  00300 ;
  ctTitle                       =  00350 ;  iidTitle             = 106 ;
  ctSystemState                 =  00360 ;
  ctPrinterDeviceType           =  00400 ;  iidPrinterDeviceType = 107 ;
  ctSystemImage                 =  00500 ;
  ctExplorer                    =  00600 ;  iidExplorer          =   5 ;
  ctAdvExplorer                 =  00650 ;
  ctStoreConstant               =  00700 ;
  ctStoreConstantCategory       =  00701 ;

  ctExplorerQuery               =  00610 ;
  ctExplorerQueryTree           =  00611 ;
  ctExplorerExpression          =  00612 ;

  ctExplorerExpCriteria         =  00620 ;
  ctExplorerBooleanOpCriteria   =  00621 ;
  ctExplorerDateCriteria        =  00622 ;
  ctExplorerDateTimeCriteria    =  00623 ;
  ctExplorerIntegerCriteria     =  00624 ;
  ctExplorerNumberCriteria      =  00625 ;
  ctExplorerStringCriteria      =  00626 ;
  ctExplorerSubExprCriteria     =  00627 ;

  ctVirtualQuery                =  00800 ;
  ctSQLFunction                 =  00801 ;
  ctGenericTemplate             =  00850 ;
  ctExportTemplate              =  00851 ;
  ctSavedExportTemplate         =  00852 ;

  ctWebBrowser                  =  00900 ;
  ctNetMeeting                  =  00910 ;

  ctStore = 01000;

  ctOption                      =  01100;     iidOption                   =  96;
  ctSystemOption                =  01101;
  ctFileSystemOption            =  01102;
  ctOptionSet                   =  01110;
  ctMaintenanceOptionSet        =  01120;
  ctRemappingOptionSet          =  01130;
  ctReductionOptionSet          =  01140;
  ctProblemOptionSet            =  01150;
  ctConversionOptionSet         =  01160;

  ctPricingGraphic = 01500;
  ctSystemGraphic = 01501;
  ctGraphic = 01502;
  ctPaymentAccountGraphic = 01503;

  ctSelectionListCategory       =  01600;     iidSelectionListCategory    =  iidFolder; //63;
  ctSelectionList               =  01601;     iidSelectionList            =  64;
  ctSelectionListItem           =  01602;
  ctSelectionListPartLink       =  01603;
  ctSelectionListDependentLink  =  01604;

  ctDynamicSelectionListItem    =  01610;

  ctActivityPickList = 01750;
  ctActivityPickListItem = 01751;

  ctCalendarLink   = 01760;
  ctCalendarView   = 01770;
  ctCalendarStatus = 01780;

  ctActivityTimeSpan = 01800;   iidActivityTimeSpan = 359; //To Be Determined

  // Signature
  ctSignatureUsageType = 01810;
  ctSignatureActivity  = 01811;

  ctCompany                     =  02000;     iidCompany                 =  23;
  ctCompanyUDFValues            =  02001;

  ctVendor                      =  02100;     iidVendor                  =  iidCompany;


  ctServiceContractType         = 02500;      iidServiceContract         = 206;
  ctServiceTicketType           = 02600;      iidServiceTicket           = 207;
  ctServiceTicketPriority       = 02700;      iidServiceTicketPriority   = 208;

  ctCompanyContact              =  03000;     iidContact                  =  36;
  ctCompanyContactUDFValues     =  03001;

  iidContactPrimary = 1;
  iidContactAccounting = 2;
  iidContactPrimaryAccounting = 3;
  ctEmployeeGroup               =  03400;     iidEmployeeGroup            =  iidFolder; // 212;
  ctEmployee                    =  03500;     iidEmployee                 =  iidContact;
  ctEmployeeUDFValues           =  03502;

  iidDivision =  iidEmployeeGroup;

  ctEmployeeContact = 03501;

  ctAddressType = 04000;
  ctAddress                     =  04001;     iidAddress                  =  52;
  ctAddressLink = 04002;
  ctPhoneNumber = 04100;
  ctPhoneNumberType             =  04101;     iidPhoneNumberType          = 105;

  ctTaxClass = 05000;
  ctTaxLink = 05002;
  ctPostalCodeTaxClass = 5003;                //iidPostalCodeTaxClass       = ???;
  ctPostalCodeTaxClassList = 05004;
  ctProductTaxabilityCode  = 05005;
  ctStateTaxExemptionLink  = 05006;

  ctMarketingList = 05500;
  ctMarketingListItem           =  05501;      iidMarketingListItem       = 103;

  ctAccountStageProspect = 05511;
  ctAccountStageClient   = 05512;

  ctDispositionList = 05600;
  ctDisposition                 =  05601;      iidDisposition             = 102;

  ctUser = 06000;
  ctSecurityRight               = 06002;       iidSecurityRight           =  41;
  ctSecurityLink                = 06003;       // links templates to rights
  ctSecurityRightAction         = 06004;       // links rights to actions

  ctLockTimeOut = 06005;

  // New Security Classtypes
  ctSecurityRightTemplate       = 06010;       iidSecurityTemplate        =  83;
  ctSecurityRightChange         = 06020;

  // Partial User License Security Classtypes
  ctPartialSecurityTemplate     = 06030;
  ctPartialSecurityRight        = 06040;

  //Web Pro Security
  ctWebProSecurityRightAction   = 06006;
  ctWebProSecurityTemplate      = 06050;
  ctWebProSecurityRight         = 06060;
  ctWebProSecurityRightChange   = 06070;

  ctShippingMethods             = 06130;      iidShippingMethod           = 314;

  ctSpeedNote = 07000;
  ctPOSpeedNote = 07100;
  ctStandardPricingFx = 07500;

  ctGLAccountGroup    = 08000;      iidGLAccountGroup          =  iidFolder;
  ctGLAccountItem     = 08001;      iidGLAccountItem           =  86;
  ctPaymentMethodType = 08002;

  ctAssignedExpenseGroup = 08050;    iidAssignedExpenseGroup =  iidGLAccountGroup;
  ctAssignedExpense      = 08051;    iidAssignedExpense      =  iidGLAccountItem;

  ctCostTracking         = 08055;

  ctBillPaymentMethod = 08100;

  ctGLEntry = 08900;
  ctPartGLEntry = 08901;
  ctGLSplitEntry = 08902;

  ctUserCloseOut       = 08910;
  ctDailyCloseOut      = 08911;
  ctMonthlyCloseOut    = 08912;
  ctYearlyCloseOut     = 08913;
  ctExportCloseOut     = 08914;
  ctRoyaltyCloseOut    = 08915;
  ctPCChargeSettlement = 08916;
  ctWeeklyCloseout     = 08917;
  ctQuarterlyCloseout  = 08918;
  ctSessionCloseout    = 08919;

  ctElement           = 08951;

  ctContactManager          = 09000;
  ctRecurringActivity       =  09201;   iidRecurringActivity = 161;
  ctRecurringMacroActivity  =  09202;

  ctAccountReconciliation = 09750 ;

  //TransHeader ClassTypes
  ctCustTransHeader = 10000;
  ctCustTransHeaderUDFValues = 10002;

  ctTransDetail        = 10100;
  ctTransModifier      = 10200;
  ctTransPart          = 10300;
  ctTransVariation     = 10400;
  ctTransTax           = 10500;
  ctTransDetailGraphic = 10600;

  // TransHeader History ClassTypes
  ctCustTransHeaderHistory  = 10001;
  ctCustTransHeaderHistoryUDFValues = 10003;

  ctTransDetailHistory        = 10101;
  ctTransModifierHistory      = 10201;
  ctTransPartHistory          = 10301;
  ctTransVariationHistory     = 10401;
  ctTransTaxHistory           = 10501;
  ctTransDetailGraphicHistory = 10601;

  //Purchase Order ClassTypes
  ctPurchaseOrder   = 11000;

  ctVendorDetail    = 11100;
  ctVendorPart      = 11200;
  ctVendorVariation = 11300;

  // Purchase Order History ClassTypes
  ctPurchaseOrderHistory    = 11001;

  ctVendorDetailHistory     = 11101;
  ctVendorPartHistory       = 11201;
  ctVendorVariationHistory  = 11301;

  ctProduct                     =  12000;       iidProduct                =  27  ;
  ctProductUDFValues            =  12001;
  ctModifier                    =  12010;       iidModifier               =  75  ;
  ctPart                        =  12014;       iidPart                   =  175 ;
  ctPartUDFValues               =  12015;
  ctPartConversionItem          =  12016;       iidPartConversionItem     =  0   ;
  ctProductCategory             =  12020;       iidProductCategory        =  iidFolder; // 46  ;
  ctModifierCategory            =  12030;       iidModifierCategory       =  iidFolder; // 74  ;
  ctPartCategory                =  12035;       iidPartCategory           =  iidFolder; // 176 ;

  ctProdPricingPlan = 12040;
  ctModPricingPlan = 12041;
  ctPricingPlanType = 12050;
  ctPricingLevel = 12051;
  ctPromotions   = 12052;

  ctSalesGoalMonth  = 12053;
  ctSalesGoalYear   = 12054;

  ctProductExemptTaxLink = 12060;

  ctProdModLink = 12070;
  ctProdPartLink = 12071;
  ctModPartLink = 12072;
  ctProdProdLink = 12073;
  ctPartEmployeeLink = 12074;
  ctPartInstance = 12075;
  ctCatalogItem = 12076;
  ctAssemblyLink = 12077;
  ctGoodsItemAccountingTemplate = 12078;

  ctPricingMethod = 12080;
  ctPricingMethodParam = 12090;
  ctPricingMethodTable = 12095;

  ctPricingFamily = 12100;

  ctInventory                 = 12200;
  ctInventoryDivisionSummary  = 12201;
  ctInventoryWarehouseSummary = 12202;
  ctInventoryItemAdjustment   = 12210;

  ctQuickProduct     =  12500;       iidQuickProduct           =  81;
  ctQuickProductList = 12501;           // there is only one of these.

  ctPartInfoTemplate    = 12600;     iidPartInfoTemplate       = 149;
  ctSysPartInfoTemplate = 12601;

  ctWarehouse             = 12700;   iidWarehouse              = iidFolder;
  ctWarehouseTree         = 12701;
  ctWarehouseTreeDivision = 12702;

  ctCommissionPlan = 13000;          iidCommissionPlan         = 352;
  ctCommissionRate = 13001;

  ctParameterCategory =  14000;       iidParameterCategory      =  71;
  ctParameter         =  14001;       iidParameter              =  72;
  ctProdPricingPlanParam = 14010;
  ctModPricingPlanParam = 14011;
  ctGoodsItemParamLink = 14020;
  ctTransDetailParam = 14030;
  ctTransDetailParamHistory = 14031;

  ctPricingTable         = 14040;
  ctPricingTableElement  = 14041;
  ctPricingTableCategory = 14045;

  ctDiscountTable     = 14050;
  ctDiscountTableItem = 14051;

  ctVariableCategory      = 14500; iidVariableCategory       =  iidFolder; // 71;
  ctVariable              = 14505; iidVariable               =  72;
  ctGoodsItemVariableLink = 14510;
  ctPricingPlanVariable   = 14515;

  ctInputTemplate = 15000;
  ctInputTemplateCategory       =  15001;     iidInputTemplateCategory    = iidFolder; // 125;
  ctOutputTemplate              =  15010;     iidOutputTemplate           =  90;
  ctOutputTemplateCategory      =  15011;     iidOutputTemplateCategory   = iidFolder; // 125;

  ctCanvas                      =  15020;     iidXMLCanvasTemplate        = 125;
  ctCanvasCategory              =  15021;

  ctPaymentTerms      = 16000;

  ctPaymentPlan       = 16100;
  ctScheduledPayment  = 16110;

  // Reporting ClassTypes

  ctCrystalSystemReport = 17000;

{
  ctReportTemplateCategory      =  17001;
  ctCrystalReportTemplate       =  17002;
  ctReportCategory              =  17003;
  ctReportItem                  =  17004;     iidReportItemSystem         = 110;
  ctReportGroup                 =  17006;     iidReportGroup              = 114;

  ctActionReportTemplate = 17010;
  ctWordReportTemplate   = 17011;
  ctSMSQRReportTemplate  = 17012;
}
  ctWordSystemReport  = 17100;
  ctSMSQRSystemReport = 17105;

  ctCyrPrinterType = 17500;

  //Reporting Menu ClassTypes
  ctReportMenuChange      = 17200;
  ctReportMenuItem        = 17210; iidReportMenuItem           =  60;
  ctReportMenuTemplate    = 17220; iidReportTemplateCategory   =  68;
  ctReportMenuGroup       = 17230; iidReportCategory           =  iidFolder; // 70;
  ctReportMenuAction      = 17240;
  ctReportMenuWord        = 17250;
  ctReportMenuSMS         = 17260;
  ctReportMenuCrystal     = 17270;
  ctReportMenuBMP         = 17280; iidReportItemUser = 111;
  ctReportMenuSQL         = 17290;

  // System Reporting Menu ClassTypes
  ctSysReportMenuItem      = 17310;
  ctSysReportMenuGroup     = 17330;
  ctSysReportMenuAction    = 17340;
  ctSysReportMenuWord      = 17350;
  ctSysReportMenuSMS       = 17360;
  ctSysReportMenuCrystal   = 17370;
  ctSysReportMenuSQL       = 17380;

  ctCustomReportRange      = 17600; iidCustomRange = 69; //Image is same as iidReport for now.

  ctTimeClockStatus             =  18001;    iidTimeClockStatus = 101;

  ctDatabaseGroup = 19000;
  ctDatabaseItem = 19001;

  ctMasterPayment          = 20000;
  ctOrderPayment           = 20001;
  ctOverPayment            = 20002;
  ctChangeReturn           = 20003;
  ctOrderRefund            = 20004;
  ctCreditRefund           = 20005;
  ctOrderCreditMemo        = 20006;
  ctFailedPayment          = 20007;
  ctTipRecorded            = 20008;
  ctBillPayment            = 20009;
  ctCreditAdjustment       = 20010;
  ctChangeOverPayment      = 20011;
  ctWriteOff               = 20015;
  ctFinanceCharge          = 20020;
  ctSystemFinanceCharge    = 20025;
  ctPCChargeActivity       = 20030;
  ctJournalEntry           = 20035; iidJournalEntry = 259;
  ctMakeDeposit            = 20036;
  ctMasterBillPayment      = 20037;
  ctMiscReceipt            = 20038;
  ctVendorCreditAdjustment = 20039;

  ctMasterTipPayout     = 20040;
  ctDetailTipPayout     = 20041;

  ctMasterTimeCard = 20050;
  ctDetailTimeCard = 20051;

  ctEmailActivity         = 20060;
  ctEmailActivityTemplate = 20061;
  ctNoteActivity          = 20065;

  ctViewingCCNumberActivity = 20070;

  ctTransactionActivity    = 20500;
  ctStationActivity        = 20505;
  ctCompanyActivity        = 20510;
  ctAccountStageActivity   = 20515;
  ctTransPartUsageActivity = 20520;
  ctLineItemActivity       = 20521;
  ctProofApprovalActivity  = 20522;

  ctInventoryAdjustment    = 20530;
  ctGlobalInvAdjustment    = 20535;  iidGlobalInvAdjustment = iidPartCategory {176};

  ctInvAdjustmentDetail                = 20530;
  ctInvTransPartDetail                 = 20531;
  ctInvAdjustmentHeader                = 20535;
  ctInvDivisionSummaryAdjustmentHeader = 20536;

  ctImportActivity         = 20540;
  ctGlobalCostAdjustment   = 20550;  iidGlobalCostAdjustment = iidPartCategory {176};
  ctPartUsageProcessor     = 20560;  iidPartUsageProcessor = iidPartCategory {176};
  ctPartUsageCard          = 20565;

  ctInvTransferHeader = 20566;
  ctInvTransferDetail = 20567;

  ctBackupActivity         = 20570;

  ctServiceItemActivity     = 20580;

  ctReportActivity         = 20590;

  ctLoginActivity          = 20600;
  ctLogoutActivity         = 20610;
  ctAuthenticationActivity = 20620;
  ctEULATermsActivity      = 20630;

  ctActivityViewer = 21000;
  ctContactActivity = 21100;
  ctContactActivityTemplate = 21150;
  ctMacroActivity = 21200;
  ctMacroActivityTemplate = 21250;
  ctWorkAssignment = 21300;
  ctWorkAssignmentTemplate = 21350;

  ctUserFieldDef                  =  22000;         iidUserFieldDef = 177;
  ctUserFieldLayout               =  22001;

  ctAdvQueryNode                  = 22500;
  ctAdvQueryCriteria              = 22501;   iidQueryCategory = 183;
  ctAdvQueryBooleanNode           = 22502;
  ctAdvQueryTable                 = 22503;
  ctAdvQueryCriteriaCategory      = 22504;
  ctCriteriaBuilderCategory       = 22505;
  ctAdvQueryMacro                 = 22506;   iidQuery = 182;
  ctUserFieldBuilderCategory      = 22507;
  ctDBCriteriaBuilderCategory     = 22508;
  ctStaticCriteriaBuilderCategory = 22509;
  ctAdvQueryVisualElement         = 22510;
  ctAdvQuerySortField             = 22511;

  ctAdvQueryMgr                   = 22600;
  ctAdvQueryMgrCategory           = 22610;

  ctUserQueryCriteria             = 22700;
  ctUserQueryBooleanNode          = 22701;
  ctUserQueryTable                = 22702;
  ctUserQueryMacro                = 22703;
  ctUserQuerySortField            = 22704;

  ctMacro                    = 23000;      iidMacro          = 181;
  ctMacroCategory            = 23005;      iidMacroCategory  = iidSelectionListCategory;
  ctContactActivityAction    = 23110;
  ctEMailAction              = 23120;
  ctReportAction             = 23130;
  ctUserFieldAction          = 23141;
  ctPopupAction              = 23144;
  ctTransactionAction        = 23146;
  ctAnotherMacroAction       = 23148;
  ctCompanyActivityAction    = 23150;
  ctServiceContractAction    = 23160;
  ctWorkAssignmentAction     = 23170;
  ctTransactionUpdateAction  = 23180;
  ctTransactionStationAction = 23181;
  ctAccountStageAction       = 23182;

  ctGroom                      = 24001;
  ctMatchmaker                 = 24002;
  ctSSLIPSClient               = 24003;

  ctSSLIPSLog                  = 24010;
  ctHoneyDoLog                 = 24011;

  ctSSLIPSRegion               = 24020;
  ctSSLIPSUser                 = 24021;

  ctHoneyDoSQLBatch            = 24030;
  ctHoneyDoAuthorize           = 24031;

  ctHoneyDoGroup               = 24040;

  ctLanguage = 25000;
  ctTranslationItem = 25010;

  //1.20.05 Donnell: Implementation set the Image ID for stage as 200
  // Stage class type IDs - Not used anymore
  ctLineItemStage      = 26000;
  ctServiceTicketStage = 26001;
  ctVendorStage        = 26002;

  ctStation            = 26100;   iidStation = 200;

  ctReservationActivity  = 20700;

  ctCourse            = 30000;
  ctCourseUDFValues   = 30001;
  ctCourseEvent       = 30030;  iidCourseEvent     = 159; //iidActivityCalendar
  ctCourseContactLink = 30050;

  ctCourseSectionType = 30100;  iidCourseSection   = 79;  //iidCompanyPricingPlan
  ctCourseSection     = 30110;

  ctContractPeriod    = 30200;  iidContractPeriod  = 11;  //iidCalendar

  ctDashboard           = 31000;  iidDashboard = 118;
  ctSystemDashboard     = 31001;
  ctDashboardInstrument = 31002;

  //Payroll ClassTypes
  ctTaxTable = 35000;       iidTaxTable = -1;
  ctTaxTableRow = 35100;

  ctPayroll           = 35200 ;
  ctPayrollAdjustment = 35205 ;
  ctPaycheck          = 35210 ;
  ctPaycheckPayItem   = 35215 ;
  ctPayrollActivity   = 35250 ;

  ctMasterPayrollPayment = 35300;
  ctPayrollPayment       = 35301;

  ctWorkersComp = 36000;    iidWorkersComp = iidEmployee;

  ctDeduction = 37000;
  ctDeductionLink = 37050;

  ctEarning = 37100;

  ctOtherBenefit = 37200;
  ctBenefitLink = 37250;

  ctReimbursement = 37300;

  ctSystemPayItem = 37310;

  ctVacationPTO = 38000;
  ctSickPayPTO = 38100;
  ctHolidayPTO = 38200;
  ctEmployeeAdvance = 38500;

  ctC3SUpdater = 40000;

  // Use Negative Numbers since they aren't stored in any database.
  ctTemp = -10000;
  ctExplorerResult = -10100;
  ctAdvExplorerResult = -10200;

  ctPricingSetup = -15000;

  ctCalendar = ctTemp - 1;
  ctCatalogItemCategory = ctTemp - 2;

  // SMS ClassType IDs
  ctAdjustment      = ctTemp - 100;
  ctImage           = ctTemp - 101;
  ctPaymentMethod   = ctTemp - 102;
  ctPayment         = ctTemp - 103;
  ctPricing         = ctTemp - 104;
  ctTimeClock       = ctTemp - 105;
  ctVolumeDiscount  = ctTemp - 106;
  ctOrigin          = ctTemp - 107;
  ctVolumeCategory  = ctTemp - 108;
  ctPromotion       = ctTemp - 109;
  ctSalesGoals      = ctTemp - 110;
  ctCloseOut        = ctTemp - 111;
  ctSMSOrder        = ctTemp - 112;
  ctSMSEstimate     = ctTemp - 113;
  ctSMSDailyContact = ctTemp - 114;
  ctSMSColorList    = ctTemp - 115;
  ctSMSFontList     = ctTemp - 116;

  ctIndustry        = ctTemp - 117;
  ctMarketing3      = ctTemp - 118;
  ctOrderOrigin     = ctTemp - 119;

  // Action Constants
  actNone = 0;                          // Not meant for use

  actEdit        =  1;        iidEdit   =   6;
  actSave        =  2;        iidSave   =   7;
  actCancel      =  3;        iidCancel =   8;
  actClose       =  4;        iidClose  =   9;
  actPrint       =  5;        iidPrint  =  60;
  actNew         =  6;        iidNew    =  85;
  actExit        =  7;
  actAdd         =  8;        iidAdd    =  16;
  actDelete      =  9;        iidDelete =  17;
  actOpen        = 10;        iidOpen   = 138;
  actSaveAs      = 26;

  actNewItem = 11;
  actNewGroup = 12;

  actLogout      = 13;        iidLogOut =  45;
  actLoginOther  = 14;
  actLogin       = 24;

  actClone       = 15;        iidClone  =  33;
  actMoveUp = 16;
  actMoveDown = 17;
  actPromote = 18;
  actDemote = 19;

  actChangePassword      = 20;     iidChangePassword =  41;
  actHelpAbout           = 21;     iidHelpAbout      =  77;
  actHelpTopics          = 22;
  actPrintGroup          = 23;
  actSystemSetup         = 25;     iidSystemSetup     =  39;
  actAccountingSetup     = 27;     iidAccountingSetup =  79;
  actPayrollSetup        = 28;     iidPayrollSetup    = iidAccountingSetup;
  actFormulaVerifier     = 29;
  actSecuritySetup       = 30;     iidSecuritySetup  =  41;
  actPricingSetup        = 31;     iidPricingSetup   =  50;
  actReportingSetup      = 32;     iidReportingSetup =  66;
  actMachineSetup        = 33;     iidMachineSetup   =  76;
  actOptionSetup         = 34;     iidOptionSetup    =  95;
  actUserFieldDefSetup   = 35;     iidUDFSetup       = 177;
  actMacroSetup          = 36;     iidMacroSetup     = 184;
  actAdvQuerySetup       = 37;
  actReportChecker       = 38;
  actWebProSecuritySetup = 41;

  actEmployeeSetup            = 40;
  actNewEmployee              = 45;
  actNewEmployeeSubGroup      = 47;
  actNewTopLevelEmployeeGroup = 48;

  actShutDown     = 50;

  actHelpText        = 51;
  actSendErrorReport = 52;

  actResetSession = 55;
  actResetLastIDs = 56;
  actBackup       = 58;

  actClear = 60;
  actReset = 61;

  actResetCheck = 62;

  //SSLIP Image Constants..
  iidWebBrowser      = 151;  iidSecurityDevice =  342;
  iidDBBrowser       = 341;  iidDBAdmin        =  88;

  iidDatabaseItem    = 333;
  iidDatabaseGroup   = 326;

  actExplorer        = 70;   //iidExplorer        =   5;
  actExploreOrder    = 71;
  actExploreEstimate = 72;
  actExploreCompany  = 73;

  actReports         = 74;    iidReport          =  69;
  actActions         = 75;
  actQuickReports    = 76;    iidQuickReport     =  99;
  actSetAsActive     = 77;
  actSetAsInActive   = 78;

  actMarketing       = 79;

  actKeyboard        = 80;    iidKeyboard        = 100;

  actExploreContact  = 81;
  actExploreTemplate = 82;
  actExploreActivity = 83;
  actExploreLineItem = 84;

  actExploreOrderHistory    = 85;
  actExploreEstimateHistory = 86;

  actExploreServiceTicket = 87;

  actExploreOrderLineItem    = 88;
  actExploreEstimateLineItem = 89;

  actUpdate          = 90;
  actUpdateProgram   = 91;

  actEmailSetup      = 92;
  actToolbarReports  = 93;
  actCloseAllWindows = 98;
  actHomeScreen      = 99;

  actNewOrder   = 100;
  actQuickPrice = 101;
  actViewOrder  = 102;
  actCreateforCust = 103;
  actCreateforCont = 104;
  actCreateFromTemp = 105;
  actCreatePOforCust = 106;

  actSetNextOrderNumber         = 120;
  actSetNextEstimateNumber      = 121;
  actSetNextTemplateNumber      = 122;
  actSetNextCompanyNumber       = 123;
  actSetNextInvoiceNumber       = 124;
  actSetNextServiceTicketNumber = 125;
  actSetNextPurchaseOrderNumber = 126;
  actSetNextBillNumber          = 127;
  actSetNextReceivingDocNumber  = 128;

  actSaveAsOrder         = 130;   iidSaveAsOrder         = iidSave;
  actSaveAsEstimate      = 131;   iidSaveAsEstimate      = iidSave;
  actSaveAsTemplate      = 132;   iidSaveAsTemplate      = iidSave;
  actSaveAsServiceTicket = 134;   iidSaveAsServiceTicket = iidSave;
  actCreditMemo     = 133;
  actContinue       = 139;

  actNewTemplate = 140;

  actNewEstimate = 150;
  actViewEstimate = 152;

  actNewServiceTicket = 151;

  actNewPurchaseOrder    = 155;
  actNewBill             = 156;
  actNewReceivingDoc     = 157;
  actNewQuickBill        = 158;
  actNewVendorCreditMemo = 159;

  actSaveAsPurchaseOrder = 160;
  actSaveAsReceivingDoc  = 161;
  actSaveAsBill          = 162;
  actOverrideCreditLimit = 163;

  //CustTransHeader Actions
  actChangeSaleDisp  = 166;
  actChangeDate      = 167;   iidChangeDueDate  = 197;
  actChangeStatus    = 169;
  actConvert         = 170;   iidConvert        =  55;        // status changes
  actLost            = 171;   iidLost           =  56;
  actVoidSelected    = 172;
  actUncloseEstimate = 173;
  actChangeDivision  = 174;
  actVoid            = 180;   iidVoid           =  57;
  actMarkWIP         = 181;   iidChangeStatus   =  58;
  actMarkBuilt       = 182;
  actMarkSale        = 183;
  actMarkClosed      = 184;
  actMarkDropped       = 192;
  actLookupTaxesOnline = 193;
  actMarkOpen          = 194;
  actMarkReopened      = 199;

  actMarkOnHold      = 185;  // for SMS only
  actMarkOffHold     = 186;  // for SMS only

  actShipOrder       = 187;

  actEditDesc        = 188;

  actShipLineItem    = 189;

  actCloneAsEstimate        = 190;
  actConvertToServiceTicket = 191;   iidConvertToServiceTicket  =  iidConvert;        // status changes
  actConvertToRD            = 196;   iidConvertToRD             =  iidConvert;

  actEditUDFs        = 195;
  actRefreshTransDetails = 198;
  actPostUsageCards = 203;

  actNewCompany       = 200;
  actNewVendor        = 201;
  actViewCompany      = 202;
  actCompanyImport    = 210;
  actCompanyQBImport  = 211;
  actReassignCompany  = 212;
  actAddFullContact   = 213;
  actAddLimitContact  = 214;

  //Purchase Order Actions
  actMarkPORequested = 250;
  actMarkPOApproved  = 251;
  actMarkPOOrdered   = 252;
  actMarkPOClosed    = 253;
  actMarkPOCancelled = 254;
  actMarkPORejected  = 255;
  actMarkPOReceived  = 256;

  actExplorePurchaseOrder = 260;
  actExplorePOItems       = 261;
  actExploreBill          = 262;
  actExploreReceivingDoc  = 263;

  actOpenPurchaseOrder = 270;
  actOpenBill          = 271;
  actOpenRecDoc        = 272;  

  actViewActivityManager         = 400;
  actViewReminders               = 405;
  actActivityComplete            = 412;
  actActivityReopen              = 413;
  actActivityCompleteAsScheduled = 414;
  actActivityQuickComplete       = 415;
  actCalendarViewSetup           = 416;

  actNewActivity     = 420;
  actOpenActivity    = 421;
  actNewJournalEntry = 422;
  actRecordSignature = 423;

  actNoteActivity = 435;

  actBreakOff        = 460;
  actViewRecurring   = 461;
  actMakeRecurring   = 462;
  actSchedule        = 463;
  actSchedulePayment = 464;

  actNewProduct               = 500;
  actViewProduct              = 501;
  actViewPricingForm          = 502;
  actViewSummaryProductLayout = 503;
  actViewDetailProductLayout  = 504;
  actProductImport            = 506;
  actProductExport            = 507;

  actViewTaxabilityCode       = 508;

  actNewProductCategory  = 510;
  actViewProductCategory = 511;

  actNewProductSubCategory = 520;
  actNewTopLevelProduct    = 521;

  actNewPromotion              = 522;
  actNewPricingLevel           = 523;
  actNewStandardFxTemplate     = 524;
  actNewStoreConstantCategory  = 526;
  actNewDiscountTable          = 527;
  actNewQuickProductList       = 528;
  actNewPricingPlanType        = 529;

  actNewModifier            = 550;
  actViewModifier           = 551;
  actNewModifierCategory    = 560;
  actNewModifierSubCategory = 565;

  actNewPart            = 505;
  actNewPartCategory    = 515;
  actNewPartSubCategory = 525;

  actOpenPart              = 534;
  actChangeUnitCost        = 535;
  actCreateLaborUsageCards = 536;
  actPartInfoAdjustment    = 545;
  actCascadeProductRelationships = 546;
  actProductInfoAdjustment = 547;
  actPartInvCostAdjustment = 548;
  actNewInvTransfer        = 549;  

  actNewParameterCategory    = 570;
  actNewParameter            = 571;
  actNewParameterSubCategory = 573;

  actNewVariableCategory     = 570;
  actNewVariable             = 571;
  actNewVariableSubCategory  = 573;

  actNewPricingTableCategory     = 580;
  actNewPricingTable             = 581;
  actNewPricingTableSubCategory  = 583;

  actNewCommissionPlan         = 590;
  actAddStandardFxTemplate     = 591;
  actNewPricingFamily          = 592;

  actNewGLAccountGroup = 600;
  actReconcileAccount  = 610;
  actReconcileEntry    = 615;
  actUnreconcileEntry  = 616;
  actAccountRegister   = 620;

  actMakeDeposit = 650;
  actRecordAllDeposits = 651;

  actSelectAll           = 700;     iidSelectAll     =  93;
  actUnselectAll         = 701;     iidUnselectAll   =  94;
  actInsert              = 702;
  actRemove              = 703;
  actSort                = 704;

  actOpenPicture         = 710;     iidOpenPicture   =  18;
  actClearPicture        = 711;     iidClearPicture  =  19;
  actPastePicture        = 712;     iidPaste         =  20;

  actNewLineItem           = 800;     iidNewLineItem   =  42;
  actReplaceProduct        = 801;
  actCopyLineItem          = 802;
  actInsertIntoNewTrans    = 803;
  actCopyTransAllLineItems = 804;
  actChangeWorkStation     = 805;
  actComplete              = 806;
  actChangeTicketType      = 807;
  actChangePriority        = 808;
  actChangeAccountStage    = 809;


  actQuickProduct          = 850;                //iidQuickProduct  =  81;

  actInputTemplateSetup    = 900;
  actOutputTemplateSetup   = 901;
  actNewIOTemplate         = 910;
  actNewIOTemplateCategory = 911;

  actRevertAddress        = 1000;   iidRevertAddress =  53;
  actNewAddress = 1001;             iidNewAddress = 248;

  actNewSelectionListCategory    = 1100;
  actNewSelectionList            = 1101;
  actNewSelectionListSubCategory = 1102;
  actAddProp                     = 1103;
  actRemoveProp                  = 1104;
  actRenameProp                  = 1105;
  actInsertParts                 = 1106;
  actAddPartLink                 = 1107;
  actRemovePartLink              = 1108;
  actAddDependentLink            = 1109;
  actRemoveDependentLink         = 1110;
  actRenameDependentLink         = 1111;
  actAddFilter                   = 1112;
  actRemoveFilter                = 1113;
  actRenameFilter                = 1114;
  actAddImageLink                = 1115;
  actRemoveImageLink             = 1116;
  actRenameImagelink             = 1117;
  actAddDynamicPartCategory      = 1125;

  // Course objects
  actAddGuest                    = 1118;
  actAddWaitList                 = 1119;
  actAddMakeup                   = 1120;
  actCourseEventAdjustment       = 1121;

  actProcessScheduledPayments    = 1130;

  actBatchValidateAddresses      = 1140;

  actReassign = 1200;
  actRename = 1201;

  actEmail = 1300;
  actExport = 1301;
  actCyriousImport = 1302;
  actExecute = 1303;
  actAdvanced = 1304;
  actDeleteStore = 1306;
  actCompactDB = 1307;
  actDBIntegCheck = 1309;

  actImport = 1320;
  actImportValidate = 1325;
  actImportGeneric = 1330;

  actSQLServerUtility = 1321;
  actRepairCompanyNumbers = 1340;

  actBrowseWeb = 1350;
  actBarCodeFrame = 1351;
  actDBBrowse = 1352;
  actAuthorize = 1353;                  //For Security Device Authorization
  actSecurityDevice = 1355;             //To open up security device frame

  actCyriousHomePage = 1360 ;
  actNetMeeting      = 1361 ;
  actPrivateWeb      = 1362 ;

  actExportReports  = 1365;

  actNewReportTemplateCategory = 1400;
  actNewCrystalReportTemplate = 1401;
  actNewReportCategory = 1402;
  actNewReportItem = 1403;
  actNewReportGroup = 1404;
  actNewWordReportTemplate = 1405;
  actNewSMSReportTemplate = 1406;

  //Report Menu actions
  actNewReportMenuGroup   = 1407;
  actNewReportMenuAction  = 1408;
  actNewReportMenuCrystal = 1409;
  actNewReportMenuWord    = 1410;
  actNewReportMenuSMS     = 1420;
  actNewReportMenuSQL     = 1421;

  actNewSysReportMenuGroup   = 1411;
  actNewSysReportMenuAction  = 1412;
  actNewSysReportMenuCrystal = 1413;
  actNewSysReportMenuWord    = 1414;
  actNewSysReportMenuSMS     = 1415;
  actNewSysReportMenuSQL     = 1416;

  actCalendar                  = 1500;      iidCalendar      =  11;
  actCalculator                = 1501;      iidCalculator    =  65;

  actPaymentEntry        = 1502;
  actSystemFinanceCharge = 1503;
  actPurgeCreditCardInfo = 1504;

  actPayment                   = 1510;      iidPayment       =  98;
  actRefund                    = 1511;
  actCredit                    = 1512;
  actFinanceCharge             = 1513;
  actWriteOff                  = 1514;
  actDiscountInvoice           = 1515;
  actPayBills                  = 1516;
  actPrintChecks               = 1517;
  actPostMiscReceipt           = 1518;
  actVendorCredit              = 1519;

  actPayrollProcessing         = 1550;
  actAdjustPayroll             = 1555;
  actViewPayroll               = 1556;

  actTimeClock                 = 1600;      iidClock         =  12;
  actClockIn = 1601;   iidClockIn  = 156;
  actClockOut = 1602;  iidClockOut = 157;
  actSetStatus = 1603;
  actClearStatus = 1604;
  actClkOutComplete = 1605;

  actCheckIn         = 1606; iidCheckIn  = 156;
  actCheckOut        = 1607; iidCheckOut = 157;

  actNewMasterTimeCard = 1610;
  actNewDetailTimeCard = 1611;

  actTimeClockAdjustment = 1620;

  actCloseOut            = 1700;                   // also used for custom
  actCloseDay            = 1701;                   // = actCloseOut + Ord(cltDaily)
  actCloseMonth          = 1702;
  actCloseYear           = 1703;
  actCloseRoyalty        = 1704;
  actCloseExport         = 1705;
  actSettlePCCharge      = 1706;
  actUnCloseDaily        = 1707;
  actUnCloseMonthly      = 1708;
  actUnCloseYearly       = 1709;
  actUnCloseExport       = 1710;

  actCloseWeek           = 1712;
  actCloseQuarter        = 1713;
  actUncloseWeek         = 1714;
  actUncloseQuarter      = 1715;

  actCloseSession        = 1716;
  actUncloseSession      = 1717;

  actRetroactiveCloseout = 1718;

  actCloseReservations   = 1750;

  actOnlineCCBatchInquiry = 1760;

  // Lock-TimeOut Screen Constants
  actLock                = 1801;      iidLock           =  41;
  actUnLock              = 1802;      iidUnLock         =  41;

  //Lockout of Programs for SSLIP
  actLockProgram         = 1851;
  actUnlockProgram       = 1852;

  actInsertAllNode = 1900;
  actInsertAnyNode = 1901;
  actInsertNoneNode = 1902;

  actNewMacro         = 1950;
  actNewMacroCategory = 1951;
  actNewMacroAction   = 1952;

  actNewMacroActivity         = 1962;

  actAddUser      = 1980;
  actDeleteUser   = 1981;
  actEditUser     = 1982;

  actOpenCompany       = 2000;
  actOpenEstimate      = 2001;
  actOpenOrder         = 2002;
  actOpenServiceTicket = 2003;

  actScheduleMacro            = 2005;
  actMktgHomeFrame            = 2006;
  actRunMacro                 = 2007;
  actRunReportAction          = 2008;
  actRunUserFieldAction       = 2009;
  actRunContactActivityAction = 2010;
  actRunEmailAction           = 2011;
  actRunTransactionAction     = 2012;
  actRunCrystalReportAction   = 2013;   iidRunCrystalReportAction = 202;
  actRunWordReportAction      = 2014;   iidRunWordReportAction    = 203;
  actRunServiceContractAction = 2015;
  actRunChangeStatusAction    = 2016;
  actRunChangeStationAction   = 2017;
  actRunMacroAction           = 2018;
  actRunChangeAccountStageAction = 2019;  

  actProdHomeFrame            = 2050;
  actCourseHomeFrame          = 2051;
  actInventoryAdjustment      = 2100;
  actAutoInventoryAdj         = 2110;
  actRolloverCourseSections   = 2120;
  actCheckReservedInventory   = 2130;

  // Production Home Frame Actions
  actChangeWorkInfo          = 2200;
  actChangeAnotherJobInfo    = 2210;
  actProdUseMaterial         = 2220;
  actViewEmployeeWorkHistory = 2230;

  actConfirmMaterialUsage    = 2300;
  actConfirmLaborTime        = 2350;

  actUsePart                 = 2400;

  // History (Archive) Actions
  actCreateHistory = 3000;

  actBarCodeLookup  = 4000;
  actBarCodeCommand = 4001;

  //Accounting Actions
  actInsertGLEntry    = 5000;
  actReverseGLEntry   = 5001;
  actReverseAllEntry  = 5002;
  actCreateTransEntry = 5003;
  actCloneandReverse  = 5004;

  //Courses and Classes Actions
  actNewCourseCategory    = 6000;  iidCourseCategory   = iidProductCategory;
  actNewSubCourseCategory = 6001;
  actNewCourse            = 6002;  iidCourse           = iidProduct;
  actExploreCourse        = 6003;
  actEmailStudents        = 6004;
  actEmailGuardians       = 6005;

  actRecurOrders          = 6100;  iidRecurrence = iidRecurringActivity;

  //Dashboard Actions
  actDashboards           = 7000;
  actToolbarDashboards    = 7001;
  actOpenDashboard        = 7002;
  actAddInstrument        = 7003;
  actSaveDashboard        = 7004;
  actSaveAsDashboard      = 7005;

  //Easy Estimating Actions
  actUpgrade              = 9000;
  actRegister             = 9010;

  // SSLIP Actions
  actDatabaseGroupSetup   = 10000;
  actViewCRIX             = 10100;
  actSSLIPSClientSetup    = 10200;
  actCyrFERSetup          = 10300;
  actImportReports        = 10600;
  actSessionInfo          = 10700;
  actPurgeDatabases       = 10800;

  actConnectToMatchmaker = 11000;
  actTestConnection      = 11001;
  actConnectToTechSSLIP  = 11002;

  actNewHoneyDoSQLBatch  = 11100;

  actUnlockDatabase      = 11150;

  actTurnOnHeadsUp       = 11200;  iidTurnOnHeadsUp  = 184;
  actTurnOffHeadsUp      = 11201;  iidTurnOffHeadsUp = 185;

  actSalesGoalFrame      = 12057;

  actPurgeEstimatesFrame = 12201;

  actSSLIPAnnouncement   = 12500;

  //SMS Actions -- Starting from 15000.

  // Accounting Setup
  actACSetup               = 15100;
  actGLManualEntry         = 15110;
  actExportGL              = 15120;
  actReconcileGL           = 15130;
  actViewTaxGroups         = 15140;
  actViewPaymentGroups     = 15150;
  actViewPaymentTerms      = 15160;
  actMarketingPromotion    = 15170;
  actViewAccountCodes      = 15180;
  actPriceSheetEntry       = 16430;

  // Miscellaneous
  actViewGraph            = 16000;  iidGraph = 183; //For SMS Graph..
  actSalesMonitor         = 16010;
  actHistoricalSales      = 16020;
  actSearch               = 16100;
  actIndustrySetup        = 16200;
  actUserOption           = 16300;
  actStoreInformation     = 16310;
  actSMSChangePassword    = 16320;
  actViewSalesGoal        = 16330;
  actEstimateGreeting     = 16340;
  actOrderNotes           = 16350;
  actProductNotes         = 16360;
  actSystemOptions        = 16370;
  actPriceIncrease        = 16380;
  actReassignProduct      = 16390;
  actDefineColor          = 16400;
  actDefineFont           = 16410;
  actVolumeAssignment     = 16420;
  actUncloseOrder         = 16421;
  actUnCloseDay           = 16422;
  actCleanUp              = 16423;
  actRefreshDBItem        = 16424;
  actRestoreDefaults      = 16425;
  actGLAutoCreate         = 16426;
  actRoundSizes           = 16427;
  actRecalcCustBalance    = 16428;
  actRecalcCustOrdDates   = 16429;
  actConsolidateGLByDay   = 16431;
  actConsolidateGLByMonth = 16432;
  actCleanUpDailyContacts = 16433;
  actCustomerCaseCleanUp  = 16434;
  actContactCaseCleanUp   = 16435;
  actIndustryCaseCleanUp  = 16436;
  actOriginCaseCleanUp    = 16437;
  actPurgeContacts        = 16438;
  actContactShortForm     = 16439;
  actPromotionSelection   = 16440;
  actPurgeEstimates       = 16441;
  actReassignIndustries   = 16507;
  actReassignOrigins      = 16508;
  actArchive              = 16509;
  actCopyTo               = 16510;
  actReassignProdCategory = 16511;
  actNewDepartment        = 16520;
  actNewSubStation        = 16521;

  //SMS Lists

  actOverPayment          = 16500;
  actVoidPayment          = 16501;
  actOrderHistory         = 16502;
  actApplyCredit          = 16503;
  actGoTo                 = 16504;
  actNextRecord           = 16505;
  actPriorRecord          = 16506;

  //SMS Pricing Home Frame Actions
  actSMSPricHomeFrame       = 16600;

  // Translation Actions..
  actTranslationFrame    = 17000;

  // Fake classtype constants
  ctTransStatus          = -100;

  // Fake action constants for miscellaneous security items
  { Fill In FakeActionsText in BaseTiers When adding Security Fake Action IDs }
  actEditSales           = -105;
  actShowTotals          = -160;
  actShowCosts           = -170;

  actAddEditListItem     = -200;

  actInsertSpeedNote     = -300;        // This is done to handle multiple fields that
  actInsertSpeedNoteLast = -251;        // can have speed notes added to them. Define
                                 // constants that are added to -300 to get the
                                 // action id; see the Company for an example.

  actChangeDeviceType = -450;

  actViewStoreOptions = -460;

  actViewBackDateOptions = -470;
  actBackDateOrderCreate = -480;
  actBackDateWIP         = -481;
  actBackDateBuilt       = -482;
  actBackDateSale        = -483;
  actBackDateClose       = -484;
  actBackDatePayment     = -485;
  actBackDateEdit        = -486;
  actBackDateCloseout    = -487;
  actBackDateCreditMemo  = -488;
  actBackDateVoid        = -489;
  actBackDateLost        = -490;

  actPrintCompany     = -550;
  actPrintTransaction = -560;

  actEditActivity = -600;
  actDeleteActivityMyComplete      = -610;
  actDeleteActivityMyIncomplete    = -611;
  actDeleteActivityOtherComplete   = -612;
  actDeleteActivityOtherIncomplete = -613;

  actOrderPricingLevel = -700;
  actOverridePrice = -705;
  actDiscount = -710;

  actViewFinancial = -800;
  actEditFinancial = -810;

  actViewSummaryLayoutTab = -850;
  actViewDetailLayoutTab  = -860;
  actViewActivityTab      = -870;
  actViewPartTab          = -880;
  actViewSchedule         = -890;
  actViewAdvanced         = -900;

  actShowSetupItems       = -1000;
  actCommissionPlanSetup  = -1001;

  actCanShare             = -1500;
  actSaveShared           = -1510;
  actDeleteShared         = -1520;

  //Action Constants for Column Security Rights
  actSecEstimateViewFinancial = -2000;
  actSecEstimate = -2100;
  actSecOrder = -2200;
  actSecCompany = -2300;
  actSecOrderViewFinancial = -2400;
  actSecTemplate = -2500;
  actSecCompanyViewFinancial = -2600;
  actSecActivityManager = -2700;


  // Collection Group temporary IDs used for group editing
  idGroupEditNone        : TIDRecord = ( ID : NoID ;ClassTypeID : NoID      );
  idGroupEditWorkStation : TIDRecord = ( ID : -10  ;ClassTypeID : ctStation );
  idGroupEditPayroll     : TIDRecord = ( ID : -11  ;ClassTypeID : ctPayroll );

  // Positions of the images in the image list (not all are needed here)
  iidNoImage = -1;
  iidDefault = 0;

  iidHelp = 4;

  iidMSWord = 10;

  iidAppointment = 13;
  iidOk = 14;

  iidNext = 21;
  iidPrev = 22;

  iidOrder = 24;
  iidEstimate = 25;
  iidTemplate = 134;
  iidPurchaseOrder = iidOrder;//357;

  iidOrderHistory = 24;
  iidEstimateHistory = 25;
  iidPurchaseOrderHistory = iidOrderHistory;

  iidUp = 29;
  iidDown = 30;
  iidDemote = 31;
  iidPromote = 32;

  iidProductSubCategory = iidProductCategory;//34;
  iidSubCourseCategory = iidProductSubCategory;
  iidSpeedNote = 35;

  iidTransDetailChild = 37;
  iidTransDetailParent = 38;

  iidReplaceLineItem = 40;

  iidCompanyTabs = 43;
  iidHome = 44;

  iidTransDetailGrandChild = 47;
  iidOrderTabs = 48;
  iidTotals = 49;

  iidTemplateSetup = 51;

  iidMarketingTab = 54;

  iidHistory = 59;

  iidFlags = 61;
  iidNotes = 62;

  iidReportTemplate = 67;

  iidActivityManager = 78;
  iidCompanyPricingPlan = 79;
  iidPriceDiscount = 80;

  iidSystemPath = 82;

  iidContactInactive = 88;
  iidPCInputTemplate = 89;

  iidWebInputTemplate = 91;

  iidPricingForm          = 209;
  iidProductLayoutSummary = 210;
  iidProductLayoutDetail  = 211;

  iidChangeDatabase = 92;

  iidDefaultSetting = 97;

  iidEmployeeInfo = 126;
  iidEmployeePersonalInfo = 127;
  iidSchedule = 182;

  iidResetExplorer = 136;
  iidColumnChooser = 137;

  iidActivityCalendar = 159;
  iidActivityList = 160;

  iidQuickBill = 145;

  iidNote = iidSpeedNote;
  iidUser = iidEmployee;
  iidEmail = iidAddress;
  iidCall = 105;
  iidMeeting = 178;
  iidToDo = 179;
  iidWorkAssignment = 180;

  iidSMSProduct = 234;

  iidImport = 242;
  iidGenericImport = 243;

  iidBatchAddressValidate = 307;

  iidRefresh = 189;

  // Accounting Function Constants
  afFirstAssetAndLiability = 1000;
  afLastAssetAndLiability  = 2999;

  afFirstExpense = 5000;
  afLastExpense  = 5999;

  //Asset Classifications - 1000s
  afBankAccount         = 1000;
  afAccountsReceivable  = 1001;
  afCurrentAsset        = 1002;
  afInventory           = 1003;
  afFixedAsset          = 1004;
  afOtherAsset          = 1005;
  afDepreciation        = 1006;
  afUndepositedFunds    = 1007;

  //Liability Classifications - 2000s
  afAccountsPayable     = 2000;
  afCreditCardAccount   = 2001;
  afCurrentLiability    = 2002;
  afLongTermLiability   = 2003;
  afOtherLiability      = 2004;
  afSalesTaxLiability   = 2005;
  afOtherTaxLiability   = 2006;
  afRoyaltyLiability    = 2007;
  afCommissionLiability = 2008;

  //Equity Classifications - 3000s
  afEquity              = 3000;

  //Income Classifications - 4000s
  afIncome              = 4000;
  afOtherIncome         = 4001;

  //Expense Classifications - 5000s
  afWage                = 5000;
  afCostGoodsSold       = 5001;
  afExpense             = 5002;
  afOtherExpense        = 5003;

  //Category Classifications - 8000s
  afAccountGroup         = 8000;
  afAssignedExpenseGroup = 8001;

  //Tracking Only Classifications - 9000s
  //afTrackingOnly        = 9000;
  afAssignedExpense     = 9001;
  afCostTracking        = 9002;
  afCostOfBuilt         = 9003;


  // Marketing Criteria IDs
  mcidAddressLink        = '';
  mcidContractTypeName   = '1079';
  mcidDivisionName       = '1080';

  mcidTaxClassName       = '6188';

  // Contact Criteria IDs
  mcidContactEmail       = '1077';
  mcidContactFirstName   = '1104';
  mcidContactLastName    = '1105';
  mcidIsLimitedContact   = '1129';
  mcidIsFullContact      = '1130';
  mcidContactIsNotActive = '1132';
  mcidContactIsActive    = '1131';
  mcidContactStreetAddress1       = '1100';
  mcidContactStreetAddress2       = '1101';
  mcidContactCity                 = '1145';
  mcidContactState                = '1146';
  mcidContactPostal               = '1147';
  mcidContactCountry              = '1148';
  mcidContactAddressFormattedText = '1102';
  mcidContactPhoneAreaCode        = '1602';
  mcidContactPhoneNumber          = '1604';

  mcidContactAccountID            = '6158';
  mcidContactID                   = '6159';

  // Activity Crtieria IDs
  mcidIsDetail              = '1134';
  mcidIsNotDetail           = '1135';
  mcidIsSummary             = '6179';
  mcidIsNotSummary          = '6180';
  mcidIsActivityComplete    = '1136';
  mcidIsActivityNotComplete = '1137';
  mcidIsActivityDescription = '1138';
  mcidIsActivityStartDate   = '1139';
  mcidIsActivityEndDate     = '1140';
  mcidIsActivityType        = '1141';
  mcidIsActivityEmployee    = '1217';

  mcidActivityAccountID        = '6150';
  mcidActivityID               = '6151';
  mcidActivityContactID        = '6152';
  mcidActivityGLAccountID      = '6153';
  mcidActivityTransactionID    = '6154';
  mcidActivityLinkID           = '6155';
  mcidActivityLinkClassTypeID  = '6156';
  mcidActivitySummaryID        = '6157';

  // Company Criteris IDs
  mcidCompanyID                   = '6164';
  mcidCompanyParentID             = '6166';

  mcidCompanyName                 = '115';
  mcidCompanyNumber               = '1076';
  mcidCompanyIsActive             = '475';
  mcidCompanyIsNotActive          = '480';
  mcidCompanyStreetAddress1       = '2100';
  mcidCompanyStreetAddress2       = '2101';
  mcidCompanyCity                 = '2145';
  mcidCompanyState                = '2146';
  mcidCompanyPostal               = '2147';
  mcidCompanyCountry              = '2148';
  mcidCompanyAddressFormattedText = '2102';
  mcidCompanySalesperson1         = '105';
  mcidIsClient                    = '485';
  mcidIsClassified                = '1098';
  mcidIsNotClassified             = '1099';
  mcidIsPersonal                  = '1084';
  mcidIsProspect                  = '490';
  mcidIsVendor                    = '1086';
  mcidIsNotClient                 = '1103';
  mcidIsNotPersonal               = '1085';
  mcidIsNotProspect               = '505';
  mcidIsNotVendor                 = '1087';
  mcidHasContract                 = '1082';
  mcidHasOpenEst                  = '1095';
  mcidHasOpenOrd                  = '1096';
  mcidHasOpenST                   = '1097';
  mcidAccountStageID              = '2200';
  mcidAccountStageText            = '2201';
  mcidCompanyPhoneAreaCode        = '1106';
  mcidCompanyPhoneNumber          = '1107';

  // Estimate Criteria  IDs
  mcidEstimateNumber              = '1108';
  mcidEstimateStatus              = '910';
  mcidEstimateVoidedDate          = '835';
  mcidEstimateEnteredBy           = '1212';
  mcidEstimateSalesperson1        = '1238';
  mcidEstimateTotalAmount         = '850';
  mcidLostDate                    = '830';
  mcidConvertedDate               = '825';
  mcidEstimateStation             = '6183';
  mcidEstimateProductionNotes     = '1201';
  mcidEstimateOrderNotes          = '1202';
  mcidEstimateDescription         = '1200';
  mcidEstimateAccountID           = '1207';
  mcidEstimateContactID           = '1208';
  mcidEstimateID                  = '1206';

  // Estimate History Criteria IDs
  mcidEstimateHistoryNumber          = '4108';
  mcidEstimateHistoryStatus          = '3910';
  mcidEstimateHistoryVoidedDate      = '3835';
  mcidEstimateHistoryEnteredBy       = '3865';
  mcidEstimateHistorySalesperson1    = '1244';
  mcidEstimateHistoryTotalAmount     = '3850';
  mcidEstimateHistoryLostDate        = '3830';
  mcidEstimateHistoryConvertedDate   = '3825';
  mcidEstimateHistoryStation         = '6186';
  mcidEstimateHistoryProductionNotes = '4201';
  mcidEstimateHistoryOrderNotes      = '4202';
  mcidEstimateHistoryDescription     = '4200';
  mcidEstimateHistoryAccountID       = '4204';
  mcidEstimateHistoryContactID       = '4205';
  mcidEstimateHistoryID              = '4203';

  // Order Criteria  IDs
  mcidOrderNumber                 = '1109';
  mcidOrderStatus                 = '725';
  mcidOrderTotalAmount            = '705';
  mcidOrderVoidedDate             = '690';
  mcidOrderEnteredBy              = '1211';
  mcidOrderSalesperson1           = '1235';
  mcidOrderStation                = '6182';
  mcidOrderPONumber               = '1149';
  mcidBuiltDate                   = '665';
  mcidOrderPlacedDate             = '660';
  mcidOrderProductionNotes        = '1116';
  mcidOrderOrderNotes             = '1115';
  mcidOrderDescription            = '775';
  mcidOrderAccountID              = '6165';
  mcidOrderContactID              = '6167';
  mcidOrderID                     = '6168';

  // Order History Criteria  IDs
  mcidOrderHistoryNumber          = '6109';
  mcidOrderHistoryStatus          = '5725';
  mcidOrderHistoryTotalAmount     = '5705';
  mcidOrderHistoryVoidedDate      = '5690';
  mcidOrderHistoryEnteredBy       = '5730';
  mcidOrderHistorySalesperson1    = '1241';
  mcidOrderHistoryStation         = '5760';
  mcidOrderHistoryPONumber        = '6149';
  mcidOrderHistoryBuiltDate       = '5665';
  mcidOrderHistoryPlacedDate      = '5660';
  mcidOrderHistoryProductionNotes = '6116';
  mcidOrderHistoryOrderNotes      = '6115';
  mcidOrderHistoryDescription     = '5775';
  mcidOrderHistoryAccountID       = '5204';
  mcidOrderHistoryContactID       = '5205';
  mcidOrderHistoryID              = '5203';

  // Recurring Order Criteria IDs
  mcidRecurringOrderNumber          = '1111';
  mcidRecurringOrderTotalAmount     = '1152';
  mcidRecurringOrderStation         = '6181';
  mcidRecurringOrderEnteredBy       = '1210';
  mcidRecurringOrderSalesperson1    = '1234';
  mcidRecurringOrderAccountID       = '1224';
  mcidRecurringOrderContactID       = '1225';
  mcidRecurringOrderID              = '1223';
  mcidRecurringOrderProductionNotes = '1221';
  mcidRecurringOrderOrderNotes      = '1220';
  mcidRecurringOrderDescription     = '1222';

  // Servie Ticket Criteria IDs
  mcidServiceTicketNumber         = mcidOrderNumber;
  mcidIsServiceTicket             = '1118';
  mcidIsNotServiceTicket          = '1119';

  // TransHeader Criteria  IDs
  mcidInvoiceNumber               = '1112';
  mcidClosedDate                  = '680';
  mcidTransHeaderDescription      = '775';
  mcidTransHeaderOrderNotes       = '1115';
  mcidTransHeaderProductionNotes  = '1116';
  mcidDueDate                     = '670';
  mcidDaysReceivable              = '675';
  mcidDroppedDate                 = '';

  // TransHeader History Criteria  IDs
  mcidHistoryInvoiceNumber               = '6112';
  mcidHistoryClosedDate                  = '5680';
  mcidTransHeaderHistoryDescription      = '5775';
  mcidTransHeaderHistoryOrderNotes       = '6115';
  mcidTransHeaderHistoryProductionNotes  = '6116';
  mcidHistoryDueDate                     = '5670';
  mcidHistoryDaysReceivable              = '5675';
  mcidHistoryDroppedDate                 = '';
  mcidHistoryIsNotServiceTicket          = '6119';
  mcidHistoryIsServiceTicket             = '6118';

  // TransDetail Criteria IDs
  mcidLineItemNumber              = '1120';
  mcidLineItemStation             = '6174';
  mcidLineItemDescription         = '1144';
  mcidIsCompleted                 = '1121';
  mcidIsNotCompleted              = '1122';
  mcidIsTopLevelItem              = '1123';
  mcidIsNotTopLevelItem           = '1124';
  mcidIsOrderItem                 = '1125';
  mcidIsEstimateItem              = '1126';
  mcidIsServiceTicketItem         = '1127';
  mcidIsRecurringOrderItem        = '1143';
  mcidAssignedTo                  = '1230';

  mcidItemAccountID               = '6169';
  mcidItemContactID               = '6170';
  mcidItemParentID                = '6171';
  mcidItemParentClassTypeID       = '6172';
  mcidItemTransactionID           = '6173';
  mcidItemStringVariable          = '6176';
  mcidItemNumberVariable          = '6177';
  mcidItemVariable                = '6178';

  // Purchase Order
  mcidParentTransactionID         = '1209';

  mcidPONumber                    = '1154';
  mcidPOReferenceNumber           = '1161';
  mcidCancelledDate               = '1165';
  mcidRejectedDate                = '1166';
  mcidDaysPayable                 = '1167';
  mcidPOStatus                    = '1168';
  mcidPOEnteredBy                 = '1214';
  mcidPOClosedDate                = '1167';
  mcidPODescription               = '1184';
  mcidPOMemo                      = '1185';
  mcidPOInternalNotes             = '1186';
  mcidPOAccountID                 = '1204';
  mcidPOContactID                 = '1205';
  mcidPOID                        = '1203';

  mcidPOItemAccountID             = '5204';
  mcidPOItemContactID             = '5205';
  mcidPOItemTransactionID         = '5203';
  mcidPOBillNumber                = '1247';

  // Bills
  mcidBillNumber                  = '1158';
  mcidBillReferenceNumber         = '1162';
  mcidBillEnteredBy               = '1215';
  mcidBillDueDate                 = '1179';
  mcidBillClosedDate              = '1174';
  mcidBillVoidedDate              = '1175';
  mcidBillStatus                  = '1172';
  mcidBillDescription             = '1187';
  mcidBillMemo                    = '1188';
  mcidBillInternalNotes           = '1189';
  mcidBillAccountID               = '1195';
  mcidBillContactID               = '1196';
  mcidBillID                      = '1194';
  mcidBillPONumber                = '1248';
  mcidBillCheckNumber             = '1249';

  // Receiving Documents
  mcidReceivingDocNumber          = '1159';
  mcidRecDocReferenceNumber       = '1163';
  mcidRecDocEnteredBy             = '1216';
  mcidRecDocClosedDate            = '1181';
  mcidRecDocVoidedDate            = '1182';
  mcidRecDocStatus                = '1183';
  mcidRecDocDescription           = '1190';
  mcidRecDocMemo                  = '1191';
  mcidRecDocInternalNotes         = '1192';
  mcidRecDocAccountID             = '1198';
  mcidRecDocContactID             = '1199';
  mcidRecDocID                    = '1197';

  // PO Items
  mcidPOItemDescription           = '1170';
  mcidPOItemName                  = '1171';
  mcidPOItemStatus                = '6190';
  mcidPOItemNumber                = '1193';

  // Products & Courses
  mcidSectionName                 = '';
  mcidSectionTypeName             = '';
  mcidBarCode                     = '1128';
  mcidProductCategoryName         = '6189';
  mcidProductName                 = '6187';

  mcidProductID                   = '6160';
  mcidCourseInstructorID          = '6161';
  mcidCourseLocationID            = '6162';
  mcidCourseSessionID             = '6163';

  // History

  // Message Constants
  CM_REFRESH      = WM_USER + $502;
  CM_ACTIVATEITEM = WM_USER + $503;     // Message sent by ActivateItem to postpone
                                    // activation of an item in a collection frame
                                    // WParam is the business rule of the item
                                    // LParam is the number of additional times
                                    //  to try if the item does not exist, in
                                    //  case a pending refresh will create it.
  CM_FIXVCL = WM_USER + $504;           // Frames post this message to themselves so
                                    // that they can resize things that the VCL
                                    // doesn't. No parameters.
  CM_FLUSHMEMORY = WM_USER + $505;      // Flush the memory so that Windows will
                                    // recoup the deallocated memory
  CM_LOCK = WM_USER + $506;             // Lock a presentation
  CM_UNLOCK = WM_USER + $507;           // Unlock a presentation

  CM_RESYNC = WM_USER + $508;

  CM_REFRESHGRID = WM_USER + $509;

  CM_UNLOCKWINDOW = WM_USER + $515;

  CM_BRACTION = WM_USER + $520;         // Send this message to have a frame execute
                                    // an action on its business rule. WParam is
                                    // ActionID, LParam is unused.
  CM_ACTIVATENODE = WM_USER + $530;     // Send/Post to a TBusinessRuleTree to force
                                    // a node to be activated. WParam is the
                                    // node; LParam is unused.
  CM_CHANGE = WM_USER + $540;           // A change message.
  CM_QUEUESTATUSCHANGE = WM_USER + $550; // Status changed, sent to frame for Queueing.
  CM_STATUSCHANGE = WM_USER + $551;     // Status changed, sent to frame.

  CM_SPLASHSCREENOFF = WM_USER + $603;  // Message to turn the splash screen off

  // Messages for Comm Objects
  CM_TRIGGER_EXCEPTION = WM_USER + $700; // Useful for debugging

  CM_QueuedMessage = WM_USER + $701;    // A new TCommMessage_BR is queued

  CM_ChannelStatusChange = WM_USER + $702; // A Comm Message Channel status has changed

  CM_Login = WM_USER + $703;            // Send a login request

  CM_EstablishConnection = WM_USER + $704;

  // Message for Explorer
  CM_REFRESHNEXTITEM = WM_USER + $800;  // Causes Explorer to Refresh

  CM_CloseSession = WM_USER + $801;

  CM_ShowFrame = WM_USER + $802;

  CM_ActionMsg = WM_USER + $803;

  CM_Reload = WM_USER + $804;

  CM_Deleted = WM_USER + $805;

  CM_CalendarSync = WM_USER + $806;     // for TActivityViewerCalendarFrame
  CM_CalendarSyncNon = WM_USER + $807;

  CM_RefreshWhenReady = WM_USER + $808; // for Report Preview Frame

  CM_CloseScoutMaster = WM_USER + $809;
  CM_ScoutTargetFound = WM_USER + $80A;

  CM_CalendarEndUpdate = WM_USER + $80B;


  //  ( WM_User + $680 ) to ( WM_User + $6FF ) are special Home Frame Messages
  CM_HomeFrameStart = WM_User + $680;
  CM_HomeFrameEnd   = WM_User + $6FF;

  CM_QPCHANGE = WM_USER + $680;     // Quick Product change message sent to
                                    // parent frames to force them to arrange
                                    // quick product buttons
  CM_QPUPDATE = WM_USER + $681;     // Quick Product update message sent by
                                    // the home frame to update the
                                    // quick product buttons


  CM_REMINDERCHANGE = WM_USER + $682;  // Reminder change message sent to
                                       // parent frames to force them to
                                       // update Reminder Activities panel

  CM_PROCESSCOMMANDS = WM_USER + $683;

  CM_UpdateTranslationItems = WM_USER + $684;

  StdFormatSetting : TFormatSettings = (
    DecimalSeparator : '.';
    DateSeparator : '/';
    TimeSeparator : ':';
    ShortDateFormat : 'mm/dd/yyyy';
    LongDateFormat : 'dddd, mmmm d, yyyy';
    TimeAMString : 'AM';
    TimePMString : 'PM';
    ShortTimeFormat : 'hh:nn:ss AM/PM';
    LongTimeFormat : 'hh:nn:ss AM/PM' );

  SQLStdFormatSetting : TFormatSettings = (
    DecimalSeparator : '.';
    DateSeparator : '/';
    TimeSeparator : ':';
    ShortDateFormat : 'mm/dd/yyyy';
    LongDateFormat : 'dddd, mmmm d, yyyy';
    TimeAMString : 'AM';
    TimePMString : 'PM';
    ShortTimeFormat : 'HH:nn:ss';
    LongTimeFormat : 'HH:nn:ss' );

  // System Formula Variable Names
  gvUnitVariable      = -100 ;
  gvCalcBasePrice     = -200 ;
  gvPreDiscountPrice  = -300 ;
  gvBuiltInDiscount   = -400 ;
  gvDefaultDiscount   = -500 ;
  gvCalcModifierPrice = -600 ;
  gvBaseMinimum       = -700 ;
  gvPerPieceMinimum   = -800 ;
  gvOverallMinimum    = -900 ;

  // Pricing Custom Method IDs
  funcListPriceValue              = 1000;
  funcListCostValue               = 1001;
  funcListPropertyValue           = 1002;
  funcListPropertyText            = 1003;
  funcDiscountValue               = 1004;
  funcLookupTableValue            = 1005;
  funcIsAssigned                  = 1006;
  funcIsAssignedToParent          = 1007;
  funcPartBasedPrice              = 1008;
  funcMaterialCost                = 1009;
  funcEquipmentCost               = 1010;
  funcLaborCost                   = 1011;
  funcOtherCost                   = 1012;
  funcOutsourceCost               = 1013;
  funcOverheadCost                = 1014;
  funcFreightCost                 = 1038;
  funcTotalCost                   = 1015;
  funcBasePrice                   = 1016;
  funcDiscountPrice               = 1017;
  funcModifierPrice               = 1018;
  funcSubtotalPrice               = 1019;
  funcWorkAssignmentStartDate     = 1020;
  funcWorkAssignmentEndDate       = 1021;
  funcIsChildItem                 = 1022;
  funcBillableActivityTotal       = 1023;
  funcActualActivityTotal         = 1024;
  funcVariableValue               = 1025;
  funcParentVariableValue         = 1026;
  funcCompanyUDF                  = 1027;
  funcContactUDF                  = 1028;
  funcTransactionUDF              = 1029;
  funcVariableTotal               = 1030;
  funcFamilyVariableTotal         = 1031;
  funcDefaultMaterialMultiplier   = 1032;
  funcDefaultEquipmentMultiplier  = 1033;
  funcDefaultLaborMultiplier      = 1034;
  funcDefaultOtherMultiplier      = 1035;
  funcDefaultOutsourceMultiplier  = 1036;
  funcDefaultFreightMultiplier    = 1037;
  funcProperty                    = 1039;
  funcPricingLevel                = 1040;
  funcDiscountLevel               = 1041;
  funcDisplayShippingDetail       = 1042;
  funcProductWarnings             = 1043;
  funcProductErrors               = 1044;
  funcDisplayVarValue             = 1045;
  funcDisplayVarValueNoUnits      = 1046;
  funcDisplayVarUnit              = 1047;
  funcDisplayModValue             = 1048;
  funcVariableOverridden          = 1049;
  funcEvaluateString              = 1050;
  funcSonsMaterialCost            = 1051;
  funcSonsEquipmentCost           = 1052;
  funcSonsLaborCost               = 1053;
  funcSonsOtherCost               = 1054;
  funcSonsOutsourceCost           = 1055;
  funcSonsOverheadCost            = 1056;
  funcSonsFreightCost             = 1057;
  funcSonsTotalCost               = 1058;
  funcSonsBasePrice               = 1059;
  funcSonsDiscountPrice           = 1060;
  funcSonsModifierPrice           = 1061;
  funcSonsSubtotalPrice           = 1062;
  funcMeAndSonsMaterialCost       = 1063;
  funcMeAndSonsEquipmentCost      = 1064;
  funcMeAndSonsLaborCost          = 1065;
  funcMeAndSonsOtherCost          = 1066;
  funcMeAndSonsOutsourceCost      = 1067;
  funcMeAndSonsOverheadCost       = 1068;
  funcMeAndSonsFreightCost        = 1069;
  funcMeAndSonsTotalCost          = 1070;
  funcMeAndSonsBasePrice          = 1071;
  funcMeAndSonsDiscountPrice      = 1072;
  funcMeAndSonsModifierPrice      = 1073;
  funcMeAndSonsSubtotalPrice      = 1074;
  funcModifierValue               = 1075;
  funcListImageLinkValue          = 1076;
  funcHTMLDisplayImage            = 1077;
  funcSetCompanyUDF               = 1078;
  funcSetContactUDF               = 1079;
  funcSetTransactionUDF           = 1080;
  funcIncCompanyUDF               = 1081;
  funcIncContactUDF               = 1082;
  funcIncTransactionUDF           = 1083;
  funcDecCompanyUDF               = 1084;
  funcDecContactUDF               = 1085;
  funcDecTransactionUDF           = 1086;

  // Update cmCourseEventSelectedCountIndex and the cmCourseEventCountIndex
  // if any items are added to the TCustomMethodInformation array below...
  funcCourseEventSelectedCount    = 1087;  cmCourseEventSelectedCountIndex = 96;
  funcCourseEventCount            = 1088;  cmCourseEventCountIndex         = 97;
  funcCourseEventSelectedDuration = 1089;
  funcCourseEventDuration         = 1090;

  funcOldVariableValue            = 1091;

  funcCompanyNameByID             = 1092;
  funcContactNameByID             = 1093;
  funcEmployeeNameByID            = 1094;
  funcShowVariationGrid           = 1095;

  funcIsTaxLocked                 = 1096;

  funcTotalReservations           = 1097;
  funcClosedReservations          = 1098;
  funcPendingReservations         = 1099;
  funcCheckedInReservations       = 1100;
  funcProductUDF                  = 1101;
  funcCourseUDF                   = 1102;

  funcIsAssembly                  = 1103;
  funcIsAssemblyChild             = 1104;
  funcAssemblyLocked              = 1105;

  funcWorkAssignmentNotes         = 1106;
  funcWorkAssignmentSpanType      = 1107;

  funcPartUDFByPartName           = 1108;
  funcPartUDFByVariableName       = 1109;

  funcTaxablePrice                = 1110;
  funcMeAndSonsTaxablePrice       = 1111;

  funcTaxableAmount               = 1112;
  funcMeAndSonsTaxableAmount      = 1113;

  funcPartByNameCount             = 1114;

  funcBasePriceIsOverridden       = 1115;
  funcOverriddenBasePrice         = 1116;

  funcActualMaterialCost          = 1117;
  funcActualEquipmentCost         = 1118;
  funcActualLaborCost             = 1119;
  funcActualOtherCost             = 1120;
  funcActualOutsourceCost         = 1121;
  funcActualOverheadCost          = 1122;
  funcActualFreightCost           = 1123;
  funcActualTotalCost             = 1124;

  funcTotalActualPrice            = 1135;
  funcTotalMaterialActualPrice    = 1136;
  funcTotalLaborActualPrice       = 1137;
  funcTotalEquipmentActualPrice   = 1138;
  funcTotalOutsourceActualPrice   = 1139;
  funcTotalOtherActualPrice       = 1140;
  funcTotalFreightActualPrice     = 1141;

  funcTotalSuggestedPrice          = 1142;
  funcTotalMaterialSuggestedPrice  = 1143;
  funcTotalLaborSuggestedPrice     = 1144;
  funcTotalEquipmentSuggestedPrice = 1145;
  funcTotalOutsourceSuggestedPrice = 1146;
  funcTotalOtherSuggestedPrice     = 1147;
  funcTotalFreightSuggestedPrice   = 1148;

  funcPartByVariableNameCount      = 1149;

  funcModifiersIncludedMaterialCost      = 1150;
  funcModifiersIncludedEquipmentCost     = 1151;
  funcModifiersIncludedLaborCost         = 1152;
  funcModifiersIncludedOtherCost         = 1153;
  funcModifiersIncludedOutsourceCost     = 1154;
  funcModifiersIncludedOverheadCost      = 1155;
  funcModifiersIncludedFreightCost       = 1156;
  funcModifiersIncludedTotalCost         = 1157;

  funcHasSecurityRight                   = 1158;

  funcTagExists                          = 1159;
  funcTagValue                           = 1160;
  funcTags                               = 1161;

  TCustomMethodInformation : array [0..157]of TCustomMethodInformationRec = (
     (MethodID : funcListPriceValue               ; MethodName : 'ListPriceValue'               )
    ,(MethodID : funcListCostValue                ; MethodName : 'ListCostValue'                )
    ,(MethodID : funcListPropertyValue            ; MethodName : 'ListPropertyValue'            )
    ,(MethodID : funcListPropertyText             ; MethodName : 'ListPropertyText'             )
    ,(MethodID : funcListImageLinkValue           ; MethodName : 'ListImageValue'               )
    ,(MethodID : funcListImageLinkValue           ; MethodName : 'ImagePath'                    )
    ,(MethodID : funcDiscountValue                ; MethodName : 'DiscountValue'                )
    ,(MethodID : funcLookupTableValue             ; MethodName : 'LookupTableValue'             )

    ,(MethodID : funcIsAssigned                   ; MethodName : 'IsAssigned'                   )
    ,(MethodID : funcIsAssignedToParent           ; MethodName : 'IsAssignedToParent'           )

    ,(MethodID : funcIsTaxLocked                  ; MethodName : 'IsTaxLocked'                  )

    ,(MethodID : funcPartBasedPrice               ; MethodName : 'PartBasedPrice'               )
    ,(MethodID : funcMaterialCost                 ; MethodName : 'MaterialCost'                 )
    ,(MethodID : funcEquipmentCost                ; MethodName : 'EquipmentCost'                )
    ,(MethodID : funcLaborCost                    ; MethodName : 'LaborCost'                    )
    ,(MethodID : funcOtherCost                    ; MethodName : 'OtherCost'                    )
    ,(MethodID : funcOutsourceCost                ; MethodName : 'OutsourceCost'                )
    ,(MethodID : funcOverheadCost                 ; MethodName : 'OverheadCost'                 )
    ,(MethodID : funcFreightCost                  ; MethodName : 'FreightCost'                  )
    ,(MethodID : funcTotalCost                    ; MethodName : 'TotalCost'                    )

    ,(MethodID : funcActualMaterialCost           ; MethodName : 'ActualMaterialCost'           )
    ,(MethodID : funcActualEquipmentCost          ; MethodName : 'ActualEquipmentCost'          )
    ,(MethodID : funcActualLaborCost              ; MethodName : 'ActualLaborCost'              )
    ,(MethodID : funcActualOtherCost              ; MethodName : 'ActualOtherCost'              )
    ,(MethodID : funcActualOutsourceCost          ; MethodName : 'ActualOutsourceCost'          )
    ,(MethodID : funcActualOverheadCost           ; MethodName : 'ActualOverheadCost'           )
    ,(MethodID : funcActualFreightCost            ; MethodName : 'ActualFreightCost'            )
    ,(MethodID : funcActualTotalCost              ; MethodName : 'ActualTotalCost'              )

    ,(MethodID : funcBasePrice                    ; MethodName : 'BasePrice'                    )
    ,(MethodID : funcDiscountPrice                ; MethodName : 'DiscountPrice'                )
    ,(MethodID : funcModifierPrice                ; MethodName : 'ModifierPrice'                )
    ,(MethodID : funcSubtotalPrice                ; MethodName : 'SubtotalPrice'                )
    ,(MethodID : funcPricingLevel                 ; MethodName : 'PricingLevel'                 )
    ,(MethodID : funcDiscountLevel                ; MethodName : 'DiscountLevel'                )
    ,(MethodID : funcWorkAssignmentStartDate      ; MethodName : 'WorkAssignmentStartDate'      )
    ,(MethodID : funcWorkAssignmentEndDate        ; MethodName : 'WorkAssignmentEndDate'        )
    ,(MethodID : funcIsChildItem                  ; MethodName : 'IsChildItem'                  )
    ,(MethodID : funcBillableActivityTotal        ; MethodName : 'BillableActivityTotal'        )
    ,(MethodID : funcActualActivityTotal          ; MethodName : 'ActualActivityTotal'          )
    ,(MethodID : funcDisplayShippingDetail        ; MethodName : 'DisplayLineItemShippingDetail')
    ,(MethodID : funcProductWarnings              ; MethodName : 'ProductWarnings'              )
    ,(MethodID : funcProductErrors                ; MethodName : 'ProductErrors'                )

    ,(MethodID : funcTaxablePrice                 ; MethodName : 'TaxablePrice'                 )
    ,(MethodID : funcMeAndSonsTaxablePrice        ; MethodName : 'MeAndSonsTaxablePrice'        )
    ,(MethodID : funcTaxableAmount                ; MethodName : 'TaxableAmount'                )
    ,(MethodID : funcMeAndSonsTaxableAmount       ; MethodName : 'MeAndSonsTaxableAmount'       )

    ,(MethodID : funcVariableValue                ; MethodName : 'VariableValue'                )
    ,(MethodID : funcVariableValue                ; MethodName : 'ParameterValue'               )
    ,(MethodID : funcVariableValue                ; MethodName : 'TableValue'                   )
    ,(MethodID : funcParentVariableValue          ; MethodName : 'ParentVariableValue'          )
    ,(MethodID : funcParentVariableValue          ; MethodName : 'ParentParameterValue'         )
    ,(MethodID : funcDisplayVarValue              ; MethodName : 'DisplayVariableValue'         )
    ,(MethodID : funcDisplayVarValueNoUnits       ; MethodName : 'DisplayVariableValueNoUnits'  )
    ,(MethodID : funcDisplayVarUnit               ; MethodName : 'DisplayVariableUnit'          )
    ,(MethodID : funcDisplayModValue              ; MethodName : 'DisplayModifierValue'         )
    ,(MethodID : funcModifierValue                ; MethodName : 'ModifierValue'                )
    ,(MethodID : funcVariableOverridden           ; MethodName : 'VariableOverridden'           )

    ,(MethodID : funcCompanyUDF                   ; MethodName : 'CompanyUDF'                   )
    ,(MethodID : funcContactUDF                   ; MethodName : 'ContactUDF'                   )
    ,(MethodID : funcTransactionUDF               ; MethodName : 'TransactionUDF'               )
    ,(MethodID : funcSetCompanyUDF                ; MethodName : 'SetCompanyUDF'                )
    ,(MethodID : funcSetContactUDF                ; MethodName : 'SetContactUDF'                )
    ,(MethodID : funcSetTransactionUDF            ; MethodName : 'SetTransactionUDF'            )
    ,(MethodID : funcIncCompanyUDF                ; MethodName : 'IncrementCompanyUDF'          )
    ,(MethodID : funcIncContactUDF                ; MethodName : 'IncrementContactUDF'          )
    ,(MethodID : funcIncTransactionUDF            ; MethodName : 'IncrementTransactionUDF'      )
    ,(MethodID : funcDecCompanyUDF                ; MethodName : 'DecrementCompanyUDF'          )
    ,(MethodID : funcDecContactUDF                ; MethodName : 'DecrementContactUDF'          )
    ,(MethodID : funcDecTransactionUDF            ; MethodName : 'DecrementTransactionUDF'      )
    ,(MethodID : funcVariableTotal                ; MethodName : 'VariableTotal'                )
    ,(MethodID : funcVariableTotal                ; MethodName : 'ParameterTotal'               )
    ,(MethodID : funcFamilyVariableTotal          ; MethodName : 'FamilyVariableTotal'          )
    ,(MethodID : funcFamilyVariableTotal          ; MethodName : 'FamilyParameterTotal'         )

    ,(MethodID : funcCompanyNameByID              ; MethodName : 'CompanyNameByID'              )
    ,(MethodID : funcContactNameByID              ; MethodName : 'ContactNameByID'              )
    ,(MethodID : funcEmployeeNameByID             ; MethodName : 'EmployeeNameByID'             )

    ,(MethodID : funcDefaultMaterialMultiplier    ; MethodName : 'DefaultMaterialMultiplier'    )
    ,(MethodID : funcDefaultEquipmentMultiplier   ; MethodName : 'DefaultEquipmentMultiplier'   )
    ,(MethodID : funcDefaultLaborMultiplier       ; MethodName : 'DefaultLaborMultiplier'       )
    ,(MethodID : funcDefaultOtherMultiplier       ; MethodName : 'DefaultOtherMultiplier'       )
    ,(MethodID : funcDefaultOutsourceMultiplier   ; MethodName : 'DefaultOutsourceMultiplier'   )
    ,(MethodID : funcDefaultFreightMultiplier     ; MethodName : 'DefaultFreightMultiplier'     )

    ,(MethodID : funcProperty                     ; MethodName : 'Property'                     )
    ,(MethodID : funcEvaluateString               ; MethodName : 'EvalString'                   )

    ,(MethodID : funcSonsMaterialCost             ; MethodName : 'SonsMaterialCost'             )
    ,(MethodID : funcSonsEquipmentCost            ; MethodName : 'SonsEquipmentCost'            )
    ,(MethodID : funcSonsLaborCost                ; MethodName : 'SonsLaborCost'                )
    ,(MethodID : funcSonsOtherCost                ; MethodName : 'SonsOtherCost'                )
    ,(MethodID : funcSonsOutsourceCost            ; MethodName : 'SonsOutsourceCost'            )
    ,(MethodID : funcSonsOverheadCost             ; MethodName : 'SonsOverheadCost'             )
    ,(MethodID : funcSonsFreightCost              ; MethodName : 'SonsFreightCost'              )
    ,(MethodID : funcSonsTotalCost                ; MethodName : 'SonsTotalCost'                )
    ,(MethodID : funcMeAndSonsMaterialCost        ; MethodName : 'MeAndSonsMaterialCost'        )
    ,(MethodID : funcMeAndSonsEquipmentCost       ; MethodName : 'MeAndSonsEquipmentCost'       )
    ,(MethodID : funcMeAndSonsLaborCost           ; MethodName : 'MeAndSonsLaborCost'           )
    ,(MethodID : funcMeAndSonsOtherCost           ; MethodName : 'MeAndSonsOtherCost'           )
    ,(MethodID : funcMeAndSonsOutsourceCost       ; MethodName : 'MeAndSonsOutsourceCost'       )
    ,(MethodID : funcMeAndSonsOverheadCost        ; MethodName : 'MeAndSonsOverheadCost'        )
    ,(MethodID : funcMeAndSonsFreightCost         ; MethodName : 'MeAndSonsFreightCost'         )
    ,(MethodID : funcMeAndSonsTotalCost           ; MethodName : 'MeAndSonsTotalCost'           )

    ,(MethodID : funcSonsBasePrice                ; MethodName : 'SonsBasePrice'                )
    ,(MethodID : funcSonsDiscountPrice            ; MethodName : 'SonsDiscountPrice'            )
    ,(MethodID : funcSonsModifierPrice            ; MethodName : 'SonsModifierPrice'            )
    ,(MethodID : funcSonsSubtotalPrice            ; MethodName : 'SonsSubtotalPrice'            )
    ,(MethodID : funcMeAndSonsBasePrice           ; MethodName : 'MeAndSonsBasePrice'           )
    ,(MethodID : funcMeAndSonsDiscountPrice       ; MethodName : 'MeAndSonsDiscountPrice'       )
    ,(MethodID : funcMeAndSonsModifierPrice       ; MethodName : 'MeAndSonsModifierPrice'       )
    ,(MethodID : funcMeAndSonsSubtotalPrice       ; MethodName : 'MeAndSonsSubtotalPrice'       )

    ,(MethodID : funcHTMLDisplayImage             ; MethodName : 'HTMLDisplayImage'             )

    // Update cmCourseEventSelectedCountIndex and the cmCourseEventCountIndex above
    // if any new elements are added before this section...
    ,(MethodID : funcCourseEventSelectedCount     ; MethodName : 'CourseEventSelectedCount'     )
    ,(MethodID : funcCourseEventCount             ; MethodName : 'CourseEventCount'             )
    ,(MethodID : funcCourseEventSelectedDuration  ; MethodName : 'CourseEventSelectedDuration'  )
    ,(MethodID : funcCourseEventDuration          ; MethodName : 'CourseEventDuration'          )

    ,(MethodID : funcOldVariableValue             ; MethodName : 'OldVariableValue'             )
    ,(MethodID : funcShowVariationGrid            ; MethodName : 'ShowVariationGrid'            )

    ,(MethodID : funcTotalReservations            ; MethodName : 'TotalReservations'            )
    ,(MethodID : funcClosedReservations           ; MethodName : 'ClosedReservations'           )
    ,(MethodID : funcPendingReservations          ; MethodName : 'PendingReservations'          )
    ,(MethodID : funcCheckedInReservations        ; MethodName : 'CheckedInReservations'        )

    ,(MethodID : funcProductUDF                   ; MethodName : 'ProductUDF'                   )
    ,(MethodID : funcCourseUDF                    ; MethodName : 'CourseUDF'                    )

    ,(MethodID : funcIsAssembly                   ; MethodName : 'IsAssembly'                   )
    ,(MethodID : funcIsAssemblyChild              ; MethodName : 'IsAssemblyChild'              )
    ,(MethodID : funcAssemblyLocked               ; MethodName : 'AssemblyLocked'               )

    ,(MethodID : funcWorkAssignmentNotes          ; MethodName : 'WorkAssignmentNotes'          )
    ,(MethodID : funcWorkAssignmentSpanType       ; MethodName : 'WorkAssignmentSpanType'       )

    ,(MethodID : funcPartUDFByPartName            ; MethodName : 'PartUDFByPartName'            )
    ,(MethodID : funcPartUDFByVariableName        ; MethodName : 'PartUDFByVariableName'        )
    ,(MethodID : funcPartByNameCount              ; MethodName : 'PartByNameCount'              )
    ,(MethodID : funcPartByVariableNameCount      ; MethodName : 'PartByVariableNameCount'      )
    ,(MethodID : funcBasePriceIsOverridden        ; MethodName : 'BasePriceIsOverridden'        )
    ,(MethodID : funcOverriddenBasePrice          ; MethodName : 'OverriddenBasePrice'          )

    ,(MethodID : funcTotalActualPrice             ; MethodName : 'TotalActualPrice'             )
    ,(MethodID : funcTotalMaterialActualPrice     ; MethodName : 'TotalMaterialActualPrice'     )
    ,(MethodID : funcTotalLaborActualPrice        ; MethodName : 'TotalLaborActualPrice'        )
    ,(MethodID : funcTotalEquipmentActualPrice    ; MethodName : 'TotalEquipmentActualPrice'    )
    ,(MethodID : funcTotalOutsourceActualPrice    ; MethodName : 'TotalOutsourceActualPrice'    )
    ,(MethodID : funcTotalOtherActualPrice        ; MethodName : 'TotalOtherActualPrice'        )
    ,(MethodID : funcTotalFreightActualPrice      ; MethodName : 'TotalFreightActualPrice'      )

    ,(MethodID : funcTotalSuggestedPrice          ; MethodName : 'TotalSuggestedPrice'          )
    ,(MethodID : funcTotalMaterialSuggestedPrice  ; MethodName : 'TotalMaterialSuggestedPrice'  )
    ,(MethodID : funcTotalLaborSuggestedPrice     ; MethodName : 'TotalLaborSuggestedPrice'     )
    ,(MethodID : funcTotalEquipmentSuggestedPrice ; MethodName : 'TotalEquipmentSuggestedPrice' )
    ,(MethodID : funcTotalOutsourceSuggestedPrice ; MethodName : 'TotalOutsourceSuggestedPrice' )
    ,(MethodID : funcTotalOtherSuggestedPrice     ; MethodName : 'TotalOtherSuggestedPrice'     )
    ,(MethodID : funcTotalFreightSuggestedPrice   ; MethodName : 'TotalFreightSuggestedPrice'   )

    ,(MethodID : funcModifiersIncludedMaterialCost       ; MethodName : 'ModifiersIncludedMaterialCost' )
    ,(MethodID : funcModifiersIncludedEquipmentCost      ; MethodName : 'ModifiersIncludedEquipmentCost')
    ,(MethodID : funcModifiersIncludedLaborCost          ; MethodName : 'ModifiersIncludedLaborCost'    )
    ,(MethodID : funcModifiersIncludedOtherCost          ; MethodName : 'ModifiersIncludedOtherCost'    )
    ,(MethodID : funcModifiersIncludedOutsourceCost      ; MethodName : 'ModifiersIncludedOutsourceCost')
    ,(MethodID : funcModifiersIncludedOverheadCost       ; MethodName : 'ModifiersIncludedOverheadCost' )
    ,(MethodID : funcModifiersIncludedFreightCost        ; MethodName : 'ModifiersIncludedFreightCost'  )
    ,(MethodID : funcModifiersIncludedTotalCost          ; MethodName : 'ModifiersIncludedTotalCost'    )
    ,(MethodID : funcHasSecurityRight                    ; MethodName : 'HasSecurityRight'              )

    ,(MethodID : funcTagExists                           ; MethodName : 'TagExists'                     )
    ,(MethodID : funcTagValue                            ; MethodName : 'TagValue'                      )
    ,(MethodID : funcTags                                ; MethodName : 'Tags'                          )


  );

  objrefParent             = 1000 ;
  objrefItem               = 1001 ;
  objrefProduct            = 1002 ;
  objrefModifier           = 1003 ;
  objrefTransHeader        = 1004 ;
  objrefCompany            = 1005 ;
  objrefCollection         = 1006 ;
  objrefPartByName         = 1007 ;
  objrefPartByVariableName = 1008 ;
  objrefUser               = 1009 ;
  objrefPricingPlan        = 1010 ;

  // Deleted ID records
  DeletedIDTransDetail : TIDRecord = ( ID : -99;ClassTypeID : ctTransDetail );
  DeletedIDTransPart   : TIDRecord = ( ID : -99;ClassTypeID : ctTransPart   );

  // Special ID to indicate item was not imported because it does not exist
  ImportItemDoesNotExists : TIDRecord = ( ID : -3;ClassTypeID : NoID   );

  hdidHome     : TIDRecord = ( ID : 10;ClassTypeID : ctSystemDashboard );

  C3SUpdater : TIDRecord = (ID : 10;ClassTypeID : ctC3SUpdater);

  // New Security Template Item
  srtidAdmin    : TIDRecord = ( ID :  1;ClassTypeID : ctSecurityRightTemplate );
  srtidStandard : TIDRecord = ( ID : 10;ClassTypeID : ctSecurityRightTemplate );

  //Web Pro Security Template Item
  swptidAdmin    : TIDRecord = ( ID :  1;ClassTypeID : ctWebProSecurityTemplate );
  swptidStandard : TIDRecord = ( ID : 10;ClassTypeID : ctWebProSecurityTemplate );

  // System Database Item
  // SSLIP DB Items are not real
  dbidSSLIPSysDBGroup   : TIDRecord = ( ID : -1000;ClassTypeID : ctDatabaseGroup );

  dbidControlSysDBGroup   : TIDRecord = ( ID :    10;ClassTypeID : ctDatabaseGroup );
  dbidSMSSysDBGroup       : TIDRecord = ( ID :    15;ClassTypeID : ctDatabaseGroup );
  dbidBMSSysDBGroup       : TIDRecord = ( ID :    20;ClassTypeID : ctDatabaseGroup );
  dbidEasyEstimatingSysDBGroup : TIDRecord = ( ID :    25;ClassTypeID : ctDatabaseGroup );

  // SSLIP Option IDs
  soidRegionList        : TIDRecord = ( ID :    10;ClassTypeID : 1100            );

  // Standard Address Type IDs
  atidBillingAddr : TIDRecord = ( ID : 10;ClassTypeID : ctAddressType );
  atidShippingAddr : TIDRecord = ( ID : 11;ClassTypeID : ctAddressType );

  // Predefined System Groups/Elements
  ptidOfficePhoneNumber : TIDRecord = ( ID : 10;ClassTypeID : ctPhoneNumberType );
  ptidOfficeFaxNumber : TIDRecord = ( ID : 11;ClassTypeID : ctPhoneNumberType );
  ptidMobileNumber : TIDRecord = ( ID : 12;ClassTypeID : ctPhoneNumberType );
  ptidPagerNumber : TIDRecord = ( ID : 13;ClassTypeID : ctPhoneNumberType );
  ptidBusiness2Number : TIDRecord = ( ID : 14;ClassTypeID : ctPhoneNumberType );
  ptidBusinessFax2Number : TIDRecord = ( ID : 15;ClassTypeID : ctPhoneNumberType );
  ptidHomeNumber : TIDRecord = ( ID : 16;ClassTypeID : ctPhoneNumberType );
  ptidHomeFaxNumber : TIDRecord = ( ID : 17;ClassTypeID : ctPhoneNumberType );
  ptidAssistantNumber : TIDRecord = ( ID : 18;ClassTypeID : ctPhoneNumberType );
  ptidOtherNumber : TIDRecord = ( ID : 19;ClassTypeID : ctPhoneNumberType );

  tcidDefaultTaxClass      : TIDRecord = ( ID : 50;ClassTypeID : ctTaxClass );
  tcidOnlineLookupTaxClass : TIDRecord = ( ID : 60;ClassTypeID : ctTaxClass );

  taidOnlineTaxAccount     : TIDRecord = ( ID : 62;ClassTypeID : ctGLAccountItem );

  pptidDefaultPricingPlanType : TIDRecord = ( ID : 10;ClassTypeID : ctPricingPlanType );

  cttidDefaultCourseSectionType : TIDRecord = ( ID : 10;ClassTypeID : ctCourseSectionType );

  eleGeneralParamCategory = 10;

  plidAttended           : TIDRecord = ( ID :    10;ClassTypeID : ctActivityPickListItem );
  plidRescheduled        : TIDRecord = ( ID :    11;ClassTypeID : ctActivityPickListItem );
  plidNotAttended        : TIDRecord = ( ID :    12;ClassTypeID : ctActivityPickListItem );

  mlidIndustry           : TIDRecord = ( ID :    10;ClassTypeID : ctMarketingList   );
  mlidOrigin             : TIDRecord = ( ID :    11;ClassTypeID : ctMarketingList   );
  mlidMarketing3         : TIDRecord = ( ID :    12;ClassTypeID : ctMarketingList   );
  mlidOrderOrigin        : TIDRecord = ( ID :    13;ClassTypeID : ctMarketingList   );
  mlidRegion             : TIDRecord = ( ID :    14;ClassTypeID : ctMarketingList   );

  dlidDispEstimate       : TIDRecord = ( ID :    10;ClassTypeID : ctDispositionList );
  dlidDispEstimateLost   : TIDRecord = ( ID :    11;ClassTypeID : ctDispositionList );
  dlidDispWIP            : TIDRecord = ( ID :    12;ClassTypeID : ctDispositionList );
  dlidDispSales          : TIDRecord = ( ID :    13;ClassTypeID : ctDispositionList );
  dlidDispEstimateVoided : TIDRecord = ( ID :    14;ClassTypeID : ctDispositionList );
  dlidDispBuilt          : TIDRecord = ( ID :    15;ClassTypeID : ctDispositionList );
  dlidDispServiceWIP     : TIDRecord = ( ID :    16;ClassTypeID : ctDispositionList );
  dlidDispServiceSales   : TIDRecord = ( ID :    17;ClassTypeID : ctDispositionList );
  dlidDispServiceBuilt   : TIDRecord = ( ID :    18;ClassTypeID : ctDispositionList );

  didEstDispConverted    : TIDRecord = ( ID :    10;ClassTypeID : ctDisposition     );
  didEstDispPickedUp     : TIDRecord = ( ID : 10002;ClassTypeID : ctDisposition     );
  didEstDispShipped      : TIDRecord = ( ID : 10003;ClassTypeID : ctDisposition     );
  didEstDispDelivered    : TIDRecord = ( ID : 10004;ClassTypeID : ctDisposition     );
  didEstDispInstalled    : TIDRecord = ( ID : 10005;ClassTypeID : ctDisposition     );
  didEstDispOnHold       : TIDRecord = ( ID : 10014;ClassTypeID : ctDisposition     );

  didLeaveAsIs           : TIDRecord = ( ID :     1;ClassTypeID : ctDisposition     );

  widCompany             : TIDRecord = ( ID :    10; ClassTypeID : ctWarehouse       );  

  egidCompanyGroup        : TIDRecord = ( ID :    10;ClassTypeID : ctEmployeeGroup   );
  eidHouseEmployee        : TIDRecord = ( ID :    10;ClassTypeID : ctEmployee        );
  eidSystemAdmin          : TIDRecord = ( ID :    11;ClassTypeID : ctEmployee        );

  eleidServiceTicketStage : TIDRecord = ( ID :    10;ClassTypeID : ctLineItemStage   );

  eleQuickProductList       = 10;
  eleidPostalCodeTaxClassList  : TIDRecord = ( ID : 11;ClassTypeID : ctPostalCodeTaxClassList );

  ptcidGoodsTaxCode        : TIDRecord = ( ID :    10;ClassTypeID : ctProductTaxabilityCode   );
  ptcidServicesTaxCode     : TIDRecord = ( ID :    11;ClassTypeID : ctProductTaxabilityCode   );
  ptcidResoldItemsTaxCode  : TIDRecord = ( ID :    12;ClassTypeID : ctProductTaxabilityCode   );
  ptcidShippingTaxCode     : TIDRecord = ( ID :    13;ClassTypeID : ctProductTaxabilityCode   );
  ptcidInstallationTaxCode : TIDRecord = ( ID :    14;ClassTypeID : ctProductTaxabilityCode   );

  cidTopEmployee         : TIDRecord = ( ID :    -10;ClassTypeID : ctEmployeeGroup  );
  cidTopPart             : TIDRecord = ( ID :    -20;ClassTypeID : ctPartCategory   );
  cidTopCatalogItem      : TIDRecord = ( ID :    -30;ClassTypeID : NoID             );

  //Predefined Course Periods
  cpidAnnual  : TIDRecord = ( ID : 10;ClassTypeID : ctContractPeriod );
  cpidQuarter : TIDRecord = ( ID : 11;ClassTypeID : ctContractPeriod );
  cpidMonth   : TIDRecord = ( ID : 12;ClassTypeID : ctContractPeriod );

{
  rcidReportsMenu            : TIDRecord = ( ID : 10;ClassTypeID : ctReportCategory );
  rcidQuickReports           : TIDRecord = ( ID : 11;ClassTypeID : ctReportCategory );
  rcidIndividualReports      : TIDRecord = ( ID : 12;ClassTypeID : ctReportCategory );
  rcidGroupReports           : TIDRecord = ( ID : 13;ClassTypeID : ctReportCategory );
  rcidToolbarReports         : TIDRecord = ( ID : 14;ClassTypeID : ctReportCategory );
  rcidOrderReports           : TIDRecord = ( ID : 20;ClassTypeID : ctReportCategory );
  rcidEstimateReports        : TIDRecord = ( ID : 21;ClassTypeID : ctReportCategory );
  rcidCompanyReports         : TIDRecord = ( ID : 22;ClassTypeID : ctReportCategory );
  rcidEmployeeReports        : TIDRecord = ( ID : 23;ClassTypeID : ctReportCategory );
  rcidContactReports         : TIDRecord = ( ID : 24;ClassTypeID : ctReportCategory );
  rcidTemplateReports        : TIDRecord = ( ID : 25;ClassTypeID : ctReportCategory );
  rcidActivityMgrReports     : TIDRecord = ( ID : 26;ClassTypeID : ctReportCategory );
  rcidProductReports         : TIDRecord = ( ID : 27;ClassTypeID : ctReportCategory );
  rcidCreditMemoReports      : TIDRecord = ( ID : 28;ClassTypeID : ctReportCategory );
  rcidLineItemReports        : TIDRecord = ( ID : 29;ClassTypeID : ctReportCategory );
  rcidPartReports            : TIDRecord = ( ID : 40;ClassTypeID : ctReportCategory );
  rcidServiceTicketReports   : TIDRecord = ( ID : 41;ClassTypeID : ctReportCategory );
  rcidServiceItemReports     : TIDRecord = ( ID : 42;ClassTypeID : ctReportCategory );
  rcidProductionReports      : TIDRecord = ( ID : 43;ClassTypeID : ctReportCategory );
  rcidContactActReports      : TIDRecord = ( ID : 44;ClassTypeID : ctReportCategory );

  rcidOrderGroupReports      : TIDRecord = ( ID : 30;ClassTypeID : ctReportCategory );
  rcidEstimateGroupReports   : TIDRecord = ( ID : 31;ClassTypeID : ctReportCategory );
  rcidCompanyGroupReports    : TIDRecord = ( ID : 32;ClassTypeID : ctReportCategory );
  rcidEmployeeGroupReports   : TIDRecord = ( ID : 33;ClassTypeID : ctReportCategory );
  rcidContactGroupReports    : TIDRecord = ( ID : 34;ClassTypeID : ctReportCategory );
  rcidTemplateGroupReports   : TIDRecord = ( ID : 35;ClassTypeID : ctReportCategory );
  rcidLineItemGroupReports   : TIDRecord = ( ID : 36;ClassTypeID : ctReportCategory );
  rcidServiceTicketGroupReports : TIDRecord = ( ID : 37;ClassTypeID : ctReportCategory );
  rcidServiceItemGroupReports   : TIDRecord = ( ID : 38;ClassTypeID : ctReportCategory );
  rcidContactActGroupReports    : TIDRecord = ( ID : 39;ClassTypeID : ctReportCategory );
}
  // New Report Menu stuff...
  rtidAllReports             : TIDRecord = ( ID : 60; ClassTypeID : ctReportMenuTemplate );

  rgidAllReportsGroup        : TIDRecord = ( ID : 60; ClassTypeID : ctSysReportMenuGroup );
  rgidReportMenuGroup        : TIDRecord = ( ID : 100;ClassTypeID : ctSysReportMenuGroup );
  rgidQuickReports           : TIDRecord = ( ID : 110;ClassTypeID : ctSysReportMenuGroup );
  rgidIndividualReports      : TIDRecord = ( ID : 120;ClassTypeID : ctSysReportMenuGroup );
  rgidToolbarReports         : TIDRecord = ( ID : 140;ClassTypeID : ctSysReportMenuGroup );

  rgidOrderReports             : TIDRecord = ( ID : 200;ClassTypeID : ctSysReportMenuGroup );
  rgidWorkOrderReports         : TIDRecord = ( ID : 205;ClassTypeID : ctSysReportMenuGroup );
  rgidEstimateReports          : TIDRecord = ( ID : 210;ClassTypeID : ctSysReportMenuGroup );
  rgidCompanyReports           : TIDRecord = ( ID : 220;ClassTypeID : ctSysReportMenuGroup );
  rgidEmployeeReports          : TIDRecord = ( ID : 230;ClassTypeID : ctSysReportMenuGroup );
  rgidContactReports           : TIDRecord = ( ID : 240;ClassTypeID : ctSysReportMenuGroup );
  rgidTemplateReports          : TIDRecord = ( ID : 250;ClassTypeID : ctSysReportMenuGroup );
  rgidActivityMgrReports       : TIDRecord = ( ID : 260;ClassTypeID : ctSysReportMenuGroup );
  rgidProductReports           : TIDRecord = ( ID : 270;ClassTypeID : ctSysReportMenuGroup );
  rgidCreditMemoReports        : TIDRecord = ( ID : 280;ClassTypeID : ctSysReportMenuGroup );
  rgidLineItemReports          : TIDRecord = ( ID : 290;ClassTypeID : ctSysReportMenuGroup );
  rgidPartReports              : TIDRecord = ( ID : 400;ClassTypeID : ctSysReportMenuGroup );
  rgidServiceTicketReports     : TIDRecord = ( ID : 410;ClassTypeID : ctSysReportMenuGroup );
  rgidServiceItemReports       : TIDRecord = ( ID : 420;ClassTypeID : ctSysReportMenuGroup );
  rgidProductionReports        : TIDRecord = ( ID : 430;ClassTypeID : ctSysReportMenuGroup );
  rgidContactActReports        : TIDRecord = ( ID : 440;ClassTypeID : ctSysReportMenuGroup );
  rgidJournalActivityReports   : TIDRecord = ( ID : 460;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseReports            : TIDRecord = ( ID : 480;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseEventReports       : TIDRecord = ( ID : 500;ClassTypeID : ctSysReportMenuGroup );
  rgidProductCategoryReports   : TIDRecord = ( ID : 520;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseSectionTypeReports : TIDRecord = ( ID : 540;ClassTypeID : ctSysReportMenuGroup );
  rgidPurchaseOrderReports     : TIDRecord = ( ID : 560;ClassTypeID : ctSysReportMenuGroup );
  rgidPurchaseOrderItemReports : TIDRecord = ( ID : 580;ClassTypeID : ctSysReportMenuGroup );
  rgidBillReports              : TIDRecord = ( ID : 600;ClassTypeID : ctSysReportMenuGroup );
  rgidReceivingDocReports      : TIDRecord = ( ID : 620;ClassTypeID : ctSysReportMenuGroup );
  rgidCheckReports             : TIDRecord = ( ID : 640;ClassTypeID : ctSysReportMenuGroup );
  rgidPaycheckReports          : TIDRecord = ( ID : 650;ClassTypeID : ctSysReportMenuGroup );

  rgidOrderGroupReports             : TIDRecord = ( ID : 300;ClassTypeID : ctSysReportMenuGroup );
  rgidEstimateGroupReports          : TIDRecord = ( ID : 310;ClassTypeID : ctSysReportMenuGroup );
  rgidCompanyGroupReports           : TIDRecord = ( ID : 320;ClassTypeID : ctSysReportMenuGroup );
  rgidEmployeeGroupReports          : TIDRecord = ( ID : 330;ClassTypeID : ctSysReportMenuGroup );
  rgidContactGroupReports           : TIDRecord = ( ID : 340;ClassTypeID : ctSysReportMenuGroup );
  rgidTemplateGroupReports          : TIDRecord = ( ID : 350;ClassTypeID : ctSysReportMenuGroup );
  rgidLineItemGroupReports          : TIDRecord = ( ID : 360;ClassTypeID : ctSysReportMenuGroup );
  rgidServiceTicketGroupReports     : TIDRecord = ( ID : 370;ClassTypeID : ctSysReportMenuGroup );
  rgidServiceItemGroupReports       : TIDRecord = ( ID : 380;ClassTypeID : ctSysReportMenuGroup );
  rgidContactActGroupReports        : TIDRecord = ( ID : 390;ClassTypeID : ctSysReportMenuGroup );
  rgidPartGroupReports              : TIDRecord = ( ID : 450;ClassTypeID : ctSysReportMenuGroup );
  rgidJournalActivityGroupReports   : TIDRecord = ( ID : 470;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseGroupReports            : TIDRecord = ( ID : 490;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseEventGroupReports       : TIDRecord = ( ID : 510;ClassTypeID : ctSysReportMenuGroup );
  rgidProductCategoryGroupReports   : TIDRecord = ( ID : 530;ClassTypeID : ctSysReportMenuGroup );
  rgidCourseSectionTypeGroupReports : TIDRecord = ( ID : 550;ClassTypeID : ctSysReportMenuGroup );
  rgidPurchaseOrderGroupReports     : TIDRecord = ( ID : 570;ClassTypeID : ctSysReportMenuGroup );
  rgidPurchaseOrderItemGroupReports : TIDRecord = ( ID : 590;ClassTypeID : ctSysReportMenuGroup );
  rgidBillGroupReports              : TIDRecord = ( ID : 610;ClassTypeID : ctSysReportMenuGroup );
  rgidReceivingDocGroupReports      : TIDRecord = ( ID : 630;ClassTypeID : ctSysReportMenuGroup );

  // Standard GL Account IDs
  glIDAsset : TIDRecord = ( ID : 1;ClassTypeID : ctGLAccountGroup );
  glIDLiability : TIDRecord = ( ID : 2;ClassTypeID : ctGLAccountGroup );
  glIDEquity : TIDRecord = ( ID : 3;ClassTypeID : ctGLAccountGroup );
  glIDIncome : TIDRecord = ( ID : 4;ClassTypeID : ctGLAccountGroup );
  glIDExpense : TIDRecord = ( ID : 5;ClassTypeID : ctGLAccountGroup );
  glIDGeneral : TIDRecord = ( ID : 7;ClassTypeID : ctGLAccountGroup );
  glIDUndepositedFunds : TIDRecord = ( ID : 8;ClassTypeID : ctGLAccountGroup );

  glIDPresaleAsset : TIDRecord = ( ID : 10;ClassTypeID : ctGLAccountGroup );
  glidWIP : TIDRecord = ( ID : 11;ClassTypeID : ctGLAccountItem );
  glidBuilt : TIDRecord = ( ID : 12;ClassTypeID : ctGLAccountItem );
  glidARs : TIDRecord = ( ID : 14;ClassTypeID : ctGLAccountItem );
  glidDirectCostsfromBills : TIDRecord = ( ID : 15;ClassTypeID : ctGLAccountItem );

  glidOrdersDue : TIDRecord = ( ID : 21;ClassTypeID : ctGLAccountItem );
  glidAccountsPayable : TIDRecord = ( ID : 22;ClassTypeID : ctGLAccountItem );

  glidTaxAccountGroup : TIDRecord = ( ID : 200;ClassTypeID : ctGLAccountGroup );
  glidCompanyCredit : TIDRecord = ( ID : 23;ClassTypeID : ctGLAccountItem );
  glidDeposit : TIDRecord = ( ID : 24;ClassTypeID : ctGLAccountItem );
  glidVendorCredit : TIDRecord = ( ID : 25;ClassTypeID : ctGLAccountItem );

  glIDInventoryAsset      : TIDRecord = ( ID : 31;ClassTypeID : ctGLAccountGroup );
  glIDInventoryExpense    : TIDRecord = ( ID : 32;ClassTypeID : ctGLAccountGroup );
  glIDAccruedExpense      : TIDRecord = ( ID : 34;ClassTypeID : ctGLAccountItem  );  //Cost Of Built/FGI

  glidSalesGroup        : TIDRecord = ( ID : 40;ClassTypeID : ctGLAccountGroup );
  glidFinanceCharge     : TIDRecord = ( ID : 41;ClassTypeID : ctGLAccountItem  );
  // the ID for rounding at the order level
  glidOrderRounding     : TIDRecord = ( ID : 44;ClassTypeID : ctGLAccountItem  );
  // the ID for all unclassified sales.  Used if a product is deleted.
  glidUnClassifiedSales : TIDRecord = ( ID : 45;ClassTypeID : ctGLAccountItem  );

  glidWriteOff     : TIDRecord = ( ID : 51;ClassTypeID : ctGLAccountItem );
  glidCreditGiven  : TIDRecord = ( ID : 52;ClassTypeID : ctGLAccountItem );
  glidCreditMemo   : TIDRecord = ( ID : 53;ClassTypeID : ctGLAccountItem );
  glidBillDiscount : TIDRecord = ( ID : 54;ClassTypeID : ctGLAccountItem );

  glidUnclassifiedAsset : TIDRecord = ( ID : 60;ClassTypeID : ctGLAccountItem );
  glidUnclassifiedExpense : TIDRecord = ( ID : 61;ClassTypeID : ctGLAccountItem );

  glidSalesTaxPaid : TIDRecord = ( ID : 63;ClassTypeID : ctGLAccountItem );

  glidSalesPending : TIDRecord = ( ID : 70;ClassTypeID : ctGLAccountItem );
  glidSalesTaxPending : TIDRecord = ( ID : 71;ClassTypeID : ctGLAccountItem );

  glidTipsToBePaid: TIDRecord = ( ID : 80;ClassTypeID : ctGLAccountItem );

  glidBankAccount     : TIDRecord = ( ID : 90;ClassTypeID : ctGLAccountItem );
  glidUndepositedCash : TIDRecord = ( ID : 91;ClassTypeID : ctGLAccountItem );
  glidUndepositedCC   : TIDRecord = ( ID : 92;ClassTypeID : ctGLAccountItem );
  glidUndepositedAmex : TIDRecord = ( ID : 93;ClassTypeID : ctGLAccountItem );

  glidInstallSales : TIDRecord = ( ID : 300;ClassTypeID : ctGLAccountItem );
  glidShippingSales : TIDRecord = ( ID : 400;ClassTypeID : ctGLAccountItem );

  glidPettyCash : TIDRecord = ( ID : 97;ClassTypeID : ctGLAccountItem );

  glidWagesPayable     : TIDRecord = ( ID : 105;ClassTypeID : ctGLAccountItem );

  glidAssignedExpenses: TIDRecord = ( ID : 5000;ClassTypeID : ctAssignedExpenseGroup );

  glidAssignedMaterialExpenses  : TIDRecord = ( ID : 5100;ClassTypeID : ctAssignedExpense );
  glidAssignedLaborExpenses     : TIDRecord = ( ID : 5101;ClassTypeID : ctAssignedExpense );
  glidAssignedEquipmentExpenses : TIDRecord = ( ID : 5102;ClassTypeID : ctAssignedExpense );
  glidAssignedOutsourceExpenses : TIDRecord = ( ID : 5103;ClassTypeID : ctAssignedExpense );
  glidAssignedOtherExpenses     : TIDRecord = ( ID : 5104;ClassTypeID : ctAssignedExpense );
  glidAssignedFreightExpenses   : TIDRecord = ( ID : 5105;ClassTypeID : ctAssignedExpense );
  glidAssignedLocationExpenses  : TIDRecord = ( ID : 5106;ClassTypeID : ctAssignedExpense );
  glidAssignedExpenseExpenses   : TIDRecord = ( ID : 5107;ClassTypeID : ctAssignedExpense );

  glidCostTracking              : TIDRecord = ( ID : 6000;ClassTypeID : ctCostTracking    );
  glidAssignedAccruedExpense    : TIDRecord = ( ID : 6001;ClassTypeID : ctCostTracking    );

  // Payroll Accounts
  glidAccruedVacation           : TIDRecord = ( ID : 512;ClassTypeID : ctGLAccountItem );
  glidAccruedSickPay            : TIDRecord = ( ID : 513;ClassTypeID : ctGLAccountItem );
  glidVacationPay               : TIDRecord = ( ID : 523;ClassTypeID : ctGLAccountItem );
  glidHoliday                   : TIDRecord = ( ID : 524;ClassTypeID : ctGLAccountItem );
  glidSickPay                   : TIDRecord = ( ID : 525;ClassTypeID : ctGLAccountItem );

  // InterDivision Accounts
  glidInterDivisionCustomerCredit : TIDRecord = ( ID : 540;ClassTypeID : ctGLAccountItem );
  glidInterDivisionVendorCredit   : TIDRecord = ( ID : 541;ClassTypeID : ctGLAccountItem );

  // Bill Payment Types
  bptidCash  : TIDRecord = ( ID : 10;ClassTypeID : ctBillPaymentMethod );
  bptifCheck : TIDRecord = ( ID : 11;ClassTypeID : ctBillPaymentMethod );

  //Payment Types
  plidPaymentSystem : TIDRecord = ( ID : 16;ClassTypeID : ctPaymentMethodType );
  plidPaymentCash : TIDRecord = ( ID : 15;ClassTypeID : ctPaymentMethodType );


  piidCash : TIDRecord = ( ID : 10;ClassTypeID : ctPaymentAccountGraphic );
  piidCheck : TIDRecord = ( ID : 11;ClassTypeID : ctPaymentAccountGraphic );
  piidMastercard : TIDRecord = ( ID : 12;ClassTypeID : ctPaymentAccountGraphic );
  piidVisa : TIDRecord = ( ID : 13;ClassTypeID : ctPaymentAccountGraphic );

  scidDefault : TIDRecord = ( ID : 10;ClassTypeID : ctStoreConstantCategory );

  ufidJobBox : TIDRecord = ( ID : 1001;ClassTypeID : ctUserFieldDef );

  //PO Item Statuses
  poiidRequested       : TIDRecord = (ID : 100;ClassTypeID : ctStation );
  poiidApproved        : TIDRecord = (ID : 101;ClassTypeID : ctStation );
  poiidOrdered         : TIDRecord = (ID : 102;ClassTypeID : ctStation );
  poiidBillReceived    : TIDRecord = (ID : 103;ClassTypeID : ctStation );
  poiidPartialBill     : TIDRecord = (ID : 104;ClassTypeID : ctStation );
  poiidClosed          : TIDRecord = (ID : 105;ClassTypeID : ctStation );
  poiidCancelled       : TIDRecord = (ID : 106;ClassTypeID : ctStation );
  poiidRejected        : TIDRecord = (ID : 107;ClassTypeID : ctStation );
  poiidReceived        : TIDRecord = (ID : 108;ClassTypeID : ctStation );
  poiidPartialReceived : TIDRecord = (ID : 109;ClassTypeID : ctStation );

  // Stations
  wsidTimeClockStations : TIDRecord = (ID : 200;ClassTypeID : ctStation );
  wsidNonPaidStations   : TIDRecord = (ID : 201;ClassTypeID : ctStation );
  wsidOtherStations     : TIDRecord = (ID : 202;ClassTypeID : ctStation );
  wsidLunch             : TIDRecord = (ID : 203;ClassTypeID : ctStation );

  //Walk-In Customer and Contact IDs
  custidWalkIn : TIDRecord = ( ID : 10;ClassTypeID : ctCompany        );
  contidWalkIn : TIDRecord = ( ID : 10;ClassTypeID : ctCompanyContact );

  //Standard Payroll Deductions
  seedidFederal  : TIDRecord = ( ID : 10;ClassTypeID : ctDeduction );
  seedidState    : TIDRecord = ( ID : 11;ClassTypeID : ctDeduction );
  seedidLocal    : TIDRecord = ( ID : 12;ClassTypeID : ctDeduction );
  seedidFICA     : TIDRecord = ( ID : 13;ClassTypeID : ctDeduction );
  seedidMedicare : TIDRecord = ( ID : 14;ClassTypeID : ctDeduction );

  serdidFUTA     : TIDRecord = ( ID : 20;ClassTypeID : ctDeduction );
  serdidSUTA     : TIDRecord = ( ID : 21;ClassTypeID : ctDeduction );
  serdidFICA     : TIDRecord = ( ID : 22;ClassTypeID : ctDeduction );
  serdidMedicare : TIDRecord = ( ID : 23;ClassTypeID : ctDeduction );

  spiidSalary           : TIDRecord = ( ID : 50;ClassTypeID : ctSystemPayItem );
  spiidStraightTime     : TIDRecord = ( ID : 51;ClassTypeID : ctSystemPayItem );
  spiidOverTime         : TIDRecord = ( ID : 52;ClassTypeID : ctSystemPayItem );
  spiidDoubleTime       : TIDRecord = ( ID : 53;ClassTypeID : ctSystemPayItem );
  spiidShiftDiffTime    : TIDRecord = ( ID : 54;ClassTypeID : ctSystemPayItem );
  spiidBonus            : TIDRecord = ( ID : 55;ClassTypeID : ctSystemPayItem );
  spiidCommission       : TIDRecord = ( ID : 56;ClassTypeID : ctSystemPayItem );
  spiidAdvance          : TIDRecord = ( ID : 57;ClassTypeID : ctSystemPayItem );
  spiidAdvanceRepayment : TIDRecord = ( ID : 58;ClassTypeID : ctSystemPayItem );
  spiidVacationTime     : TIDRecord = ( ID : 59;ClassTypeID : ctSystemPayItem );
  spiidSickTime         : TIDRecord = ( ID : 60;ClassTypeID : ctSystemPayItem );
  spiidHolidayTime      : TIDRecord = ( ID : 61;ClassTypeID : ctSystemPayItem );

  // Other Standard IDs
  ptidCashTerms : TIDRecord = ( ID : 1;ClassTypeID : ctPaymentTerms );

  tcsLunch : TIDRecord = ( ID : 1;ClassTypeID : ctTimeClockStatus );

  itSMS : TIDRecord = ( ID : 1061;ClassTypeID : ctInputTemplate );
  itRTALettering : TIDRecord = ( ID : 1028;ClassTypeID : ctInputTemplate );
  otSMSBasic : TIDRecord = ( ID : 1062;ClassTypeID : ctOutputTemplate );
  otSMSDetail : TIDRecord = ( ID : 1063;ClassTypeID : ctOutputTemplate );

  // Standard Units
  unitUseParentUnit : TIDRecord = ( ID : -999;ClassTypeID : ctUnit );

  unitEach : TIDRecord = ( ID : 1;ClassTypeID : ctUnit );
  unitInch : TIDRecord = ( ID : 2;ClassTypeID : ctUnit );
  unitFoot : TIDRecord = ( ID : 3;ClassTypeID : ctUnit );
  unitYard : TIDRecord = ( ID : 4;ClassTypeID : ctUnit );
  unitMeter : TIDRecord = ( ID : 5;ClassTypeID : ctUnit );
  unitCentimeter : TIDRecord = ( ID : 6;ClassTypeID : ctUnit );
  unitMillimeter : TIDRecord = ( ID : 7;ClassTypeID : ctUnit );

  unitSqInch : TIDRecord = ( ID : 8;ClassTypeID : ctUnit );
  unitSqFoot : TIDRecord = ( ID : 9;ClassTypeID : ctUnit );
  unitSqYard : TIDRecord = ( ID : 10;ClassTypeID : ctUnit );
  unitSqMeter : TIDRecord = ( ID : 11;ClassTypeID : ctUnit );
  unitSqCentimeter : TIDRecord = ( ID : 12;ClassTypeID : ctUnit );
  unitSqMillimeter : TIDRecord = ( ID : 13;ClassTypeID : ctUnit );

  unitCuInch : TIDRecord = ( ID : 14;ClassTypeID : ctUnit );
  unitCuFoot : TIDRecord = ( ID : 15;ClassTypeID : ctUnit );
  unitCuYard : TIDRecord = ( ID : 16;ClassTypeID : ctUnit );
  unitCuMeter : TIDRecord = ( ID : 17;ClassTypeID : ctUnit );
  unitCuCentimeter : TIDRecord = ( ID : 18;ClassTypeID : ctUnit );
  unitCuMillimeter : TIDRecord = ( ID : 19;ClassTypeID : ctUnit );

  unitMilliliter : TIDRecord = ( ID : 20;ClassTypeID : ctUnit );
  unitLiter : TIDRecord = ( ID : 21;ClassTypeID : ctUnit );
  unitGallon : TIDRecord = ( ID : 22;ClassTypeID : ctUnit );
  unitQuart : TIDRecord = ( ID : 23;ClassTypeID : ctUnit );
  unitPint : TIDRecord = ( ID : 24;ClassTypeID : ctUnit );
  unitCup : TIDRecord = ( ID : 25;ClassTypeID : ctUnit );
  unitFluidOunce : TIDRecord = ( ID : 26;ClassTypeID : ctUnit );

  unitMilligram : TIDRecord = ( ID : 27;ClassTypeID : ctUnit );
  unitGram : TIDRecord = ( ID : 28;ClassTypeID : ctUnit );
  unitKilogram : TIDRecord = ( ID : 29;ClassTypeID : ctUnit );
  unitOunce : TIDRecord = ( ID : 30;ClassTypeID : ctUnit );
  unitPound : TIDRecord = ( ID : 31;ClassTypeID : ctUnit );
  unitTon : TIDRecord = ( ID : 32;ClassTypeID : ctUnit );

  unitSecond : TIDRecord = ( ID : 33;ClassTypeID : ctUnit );
  unitMinute : TIDRecord = ( ID : 34;ClassTypeID : ctUnit );
  unitHour : TIDRecord = ( ID : 35;ClassTypeID : ctUnit );
  unitDay : TIDRecord = ( ID : 36;ClassTypeID : ctUnit );

  unitPiece      : TIDRecord = ( ID : 50;ClassTypeID : ctUnit );
  unitSheet      : TIDRecord = ( ID : 51;ClassTypeID : ctUnit );
  unitPage       : TIDRecord = ( ID : 52;ClassTypeID : ctUnit );
  unitImpression : TIDRecord = ( ID : 53;ClassTypeID : ctUnit );
  unitRoll       : TIDRecord = ( ID : 54;ClassTypeID : ctUnit );

  // PCI Credit card process types
  // Processor process types
  cpCharge           = 0;
  cpVoid             = 1;
  cpRefundCustomer   = 2;
  cpRefundOrder      = 3;
  cpValidateAddress  = 4;
  cpSettleBatch      = 5;

  // Configuraton process types
  cpChangePassword        = 0;
  cpRetrieveConfiguration = 1;
  cpStoreConfiguration    = 2;
  cpTestServiceConnection = 3;
  cpTestConfiguration     = 4;
  cpTestProcessor         = 5;

  // Customer process types
  cpRetrieveCustomerInformation = 0;
  cpUpdateCustomerInformation   = 1;
  cpStoreNewCustomerInformation = 2;
  cpPurgeCustomerInformation    = 3;  

  // Transaction process types
  cpRetrieveTransaction = 0;
  cpImportTransaction   = 1;
  cpCurrentBatchInquiry = 2;
  cpBatchInquiry        = 3;
  cpPurgeTransaction    = 4;

  // Transaction types - if these change, also change the reserved class types
  // above ( ctOrder = ctCustTransHeader + ttOrder , etc. )
  ttNone             =  0;
  ttOrder            =  1;
  ttEstimate         =  2;
  ttTemplate         =  3;
  ttCreditMemo       =  4;

  ttInvoice          =  5; // Used for generating the Invoice Number

  ttServiceTicket    =  6;

  ttPurchaseOrder    =  7;
  ttBill             =  8;
  ttReceivingDoc     =  9;
  ttVendorCreditMemo = 10;

  vnCollTypeDefault             = 0;
  vnCollTypeProductTemplates    = 1;
  vnCollTypeAllProductTemplates = 2;

  ptcidGeneralPricingTableCategory : TIDRecord = ( ID :   10;ClassTypeID : ctPricingTableCategory );

  pidQuantity      : TIDRecord = ( ID :   1;ClassTypeID : ctParameter );
  pidQtyApplied    : TIDRecord = ( ID :   2;ClassTypeID : ctParameter );
//  pidImage         : TIDRecord = ( ID :   5;ClassTypeID : ctParameter );
  pidDescription   : TIDRecord = ( ID : 110;ClassTypeID : ctParameter );
  pidInternalNotes : TIDRecord = ( ID : 111;ClassTypeID : ctParameter );
  //pidPriority      : TIDRecord = ( ID : 120;ClassTypeID : ctParameter );
  //pidTicketType    : TIDRecord = ( ID : 130;ClassTypeID : ctParameter );

  vidQuantity      : TIDRecord = ( ID :   1;ClassTypeID : ctVariable  );
  vidQtyApplied    : TIDRecord = ( ID :   2;ClassTypeID : ctVariable  );
  //vidImage         : TIDRecord = ( ID :   5;ClassTypeID : ctVariable  );
  vidDescription   : TIDRecord = ( ID : 110;ClassTypeID : ctVariable  );
  vidInternalNotes : TIDRecord = ( ID : 111;ClassTypeID : ctVariable  );
  vidPriority      : TIDRecord = ( ID : 120;ClassTypeID : ctVariable  );
  vidTicketType    : TIDRecord = ( ID : 130;ClassTypeID : ctVariable  );

  // Standard Promotion used during conversion...
  proidFixedPromotion : TIDRecord = ( ID :  100;ClassTypeID : ctPromotion );

  // Standard Product IDs
  pridPromotion        : TIDRecord = ( ID :  100;ClassTypeID : ctProduct );
  pridShipping         : TIDRecord = ( ID : 1072;ClassTypeID : ctProduct );
  pridInstall          : TIDRecord = ( ID : 1031;ClassTypeID : ctProduct );
  pridMISC             : TIDRecord = ( ID : 1089;ClassTypeID : ctProduct );
  pridProductNotFound  : TIDRecord = ( ID : 1090;ClassTypeID : ctProduct );

  midSpecialEquip1     : TIDRecord = ( ID : 1027;ClassTypeID : ctModifier );
  midSpecialEquip2     : TIDRecord = ( ID : 1028;ClassTypeID : ctModifier );
  midSpecialEquip3     : TIDRecord = ( ID : 1029;ClassTypeID : ctModifier );
  midSpecialEquipOther : TIDRecord = ( ID : 1030;ClassTypeID : ctModifier );
  midAdditionalCharge  : TIDRecord = ( ID : 1019;ClassTypeID : ctModifier );

  ptidOtherMaterial    : TIDRecord = ( ID :  150;ClassTypeID : ctPart     );
  ptidOtherLabor       : TIDRecord = ( ID :  151;ClassTypeID : ctPart     );
  ptidOtherEquipment   : TIDRecord = ( ID :  152;ClassTypeID : ctPart     );
  ptidOtherOutsource   : TIDRecord = ( ID :  153;ClassTypeID : ctPart     );
  ptidOtherFreight     : TIDRecord = ( ID :  154;ClassTypeID : ctPart     );

  {
  // Standard Product Pricing Method IDs (needed for conversion)
  ppmidArea : TIDRecord = ( ID : 1015;ClassTypeID : ctPricingMethod );
  ppmidLength : TIDRecord = ( ID : 1016;ClassTypeID : ctPricingMethod );
  ppmidHeight : TIDRecord = ( ID : 1017;ClassTypeID : ctPricingMethod );
  ppmidManually : TIDRecord = ( ID : 1018;ClassTypeID : ctPricingMethod );
  ppmidLengthTable : TIDRecord = ( ID : 1019;ClassTypeID : ctPricingMethod );
  ppmidHeightTable : TIDRecord = ( ID : 1020;ClassTypeID : ctPricingMethod );
  ppmidAreaTable : TIDRecord = ( ID : 1021;ClassTypeID : ctPricingMethod );
  ppmidFixed : TIDRecord = ( ID : 1022;ClassTypeID : ctPricingMethod );
  ppmidInstallation : TIDRecord = ( ID : 1023;ClassTypeID : ctPricingMethod );
  ppmidHeightWidthTable : TIDRecord = ( ID : 1024;ClassTypeID : ctPricingMethod ); // not done yet

  // Standard Modifier Pricing Method IDs (needed for conversion)
  mpmidArea : TIDRecord = ( ID : 1057;ClassTypeID : ctPricingMethod );
  mpmidLength : TIDRecord = ( ID : 1058;ClassTypeID : ctPricingMethod );
  mpmidHeight : TIDRecord = ( ID : 1059;ClassTypeID : ctPricingMethod );
  mpmidFixed : TIDRecord = ( ID : 1060;ClassTypeID : ctPricingMethod );
  mpmidPerimeter : TIDRecord = ( ID : 1061;ClassTypeID : ctPricingMethod );
  mpmidPercent : TIDRecord = ( ID : 1062;ClassTypeID : ctPricingMethod );
  }
  // System Nav Items
  niidSessionMenu      : TIDRecord = ( ID :  1;ClassTypeID : ctNavItem );
  niidSessionToolbar   : TIDRecord = ( ID :  2;ClassTypeID : ctNavItem );
  niidActionToolbar    : TIDRecord = ( ID :  3;ClassTypeID : ctNavItem );
  niidHomeMain         : TIDRecord = ( ID :  4;ClassTypeID : ctNavItem );
  niidSessionStatusbar : TIDRecord = ( ID :  6;ClassTypeID : ctNavItem );

  niidMktgMain         : TIDRecord = ( ID : 10;ClassTypeID : ctNavItem );
  niidProdMain         : TIDRecord = ( ID : 11;ClassTypeID : ctNavItem );

  niidSMSPricMain      : TIDRecord = ( ID : 15;ClassTypeID : ctNavItem );

  // Speed note types
  sntOrder           =  1;
  sntInternal        =  2;
  sntEstimate        =  3;
  sntCompany         =  4;
  sntPurchaseOrder   = 10;
  sntPOInternal      = 11;

  // Speed note field types
  snfNotes            =  0;
  snfFlags            =  1;
  snfOrderNotes       =  2;
  snfInternalNotes    =  3;
  snfEstimateGreeting =  4;
  snfPreDiscount      =  5;
  snfBuiltInDiscount  =  6;
  snfDefaultDiscount  =  7;
  snfProdWarningFx    =  8;
  snfProdErrorFx      =  9;

  // GL Categories
  glcNone = 0;
  glcBase = 100;
  glcModifier = 200;
  glcDiscount = 300;
  glcRounding = 400;

  // system graphic (TSystemGraphic_BR) ids
  sgidHomeMainBackground      : TIDRecord = ( ID :  1;ClassTypeID : ctSystemGraphic );
  sgidHomeSecondaryBackground : TIDRecord = ( ID :  2;ClassTypeID : ctSystemGraphic );
  sgidMktgMainBackground      : TIDRecord = ( ID :  5;ClassTypeID : ctSystemGraphic );
  sgidProdMainBackground      : TIDRecord = ( ID :  7;ClassTypeID : ctSystemGraphic );
  sgidDefaultQuickProduct     : TIDRecord = ( ID : 10;ClassTypeID : ctSystemGraphic );
  sgidSMSPricMainBackground   : TIDRecord = ( ID : 20;ClassTypeID : ctSystemGraphic );

  // Parse Delimiters
  ParseStartDelimiter = '<<';
  ParseEndDelimiter = '>>';

  // Return value if an option is not set
  OptionNoValueSet = '';

  SecurityCheckFileName = 'SSLIP.crf';

  // The following variables are initialized in the
  // initialization section of the appropriate System_BRDef
var
  SessionMessageID : cardinal;

  gQRReportWindow : TWinControl;

  // things registered with Windows
  AppLocalMutex  : Integer;
  AppGlobalMutex : Integer;
  DTDLocation : string;
  ReqDTDTag : string;
  RspDTDTag : string;

type
  TCyrRefreshType = ( rtData, rtState, rtActions );
  TCyrRefreshTypes = set of TCyrRefreshType;

  TNavToolbuttonType = ( nttShowAll, nttImageOnly, nttTextOnly );

  //                       0          1            2             3                4               5             6              7         8        9       10
  TCyrFranchiseType = ( cftNone, cftFASTSIGNS, cftSignsNow, cftSignARama, cftSignsByTomorrow, cftKinkos, cftOoglesNGoogles, cftHair, cftCourse, cftPet, cftCyrious );
  TCyrFranchiseTypes = set of TCyrFranchiseType;

  // Modules for Control - do not change the order or existing keys will be no good
  TControlModule = ( cmEstimating, cmWorkOrder, cmInvoicing, cmPayments, cmSalesManagement,
    cmMarketing, cmParts, cmMacros, cmAdvancedDesign, cmInventory,
    cmTechSSLIP, cmCCProcessing, cmBeta, cmShipping, cmServiceTickets,
    cmBarCoding, cmCourses, cmAccounting, cmOnlineTaxLookup, cmWebPro,
    cmPayroll, cmBlank22, cmBlank23, cmBlank24, cmBlank25,
    cmBlank26, cmBlank27, cmBlank28, cmBlank29, cmBlank30,
    cmBlank31, cmBlank32
    );
  TControlModules = set of TControlModule;

  TImageSizeType = ( ist16x16, ist24x24, ist32x32, ist48x48, ist64x64, ist72x72);

  //                        0                  1              2             3                 4               5          6
  TDashboardType = (ddtCalendarDesigner, ddtCalendarView, ddtCheckIn, ddtCourseMonitor, ddtCourseSetup, ddtAccounting, ddtHome );

  TDashboardDesignerType = (dgtNone, dgtCalendar);

  TDashboardDesignerTypes = set of TDashboardDesignerType;

  TInstrumentRefreshType = ( irtNone, irtCompany, irtFullContact, irtLimitedContact, irtTransaction, irtEmployee, irtActivity, irtPayment, irtGLAccount );

  TInstrumentRefreshTypes = set of TInstrumentRefreshType;

  TContactUDFRefreshType = ( curtAll, curtFullContact, curtLimitedContact );

  TQuickProductType = ( qptHome, qptOrder, qptServiceTicket );

  TDetailPartType = (dptNone, dptNewPart, dptCatalog, dptPart,
                     dptExpense, dptNotes,
                     dptOtherMaterial, dptOtherLabor,
                     dptOtherEquipment, dptOtherOutsource,
                     dptOtherFreight, dptOtherItem
                     );

  TVendorReceiveInv = ( vriAddReduce, vriAddOnly );

  TVendorBillCost = ( vbcAdjustCost, vbcNoChange, vbcIncreaseOnly );

  TVendorBillInv = ( vbiReceivedOrder, vbiOrderReceived );

  TFormulaType = ( ftPreDiscount, ftBuiltInDiscount, ftDefaultDiscount, ftProdWarning, ftProdError, ftEvaluateOnSave );

  TPreDiscountType = ( pdtStandard, pdtPart, pdtFormula );

  TTaxableCalculationType = ( tctUseItemAmount, tctFormula );

  TPromotionType = ( prtTracking, prtPercent, prtFixed );

  TRenewalPeriodType = ( rptNone, rptMonthly, rptBiMonthly, rptQuarterly, rptSixMonthly, rptYearly );

  TVariableSaveOption = ( vsoQuick, vsoExtra, vsoNone );

  TBasedOnType = ( botPrice, botMargin );

  TTransactionType = ttNone..ttVendorCreditMemo;
  TTransactionTypes = set of TTransactionType; // ttOrder..ttServiceTicket;

  TProcessorType = (ptInvalid, ptMW20, ptUSAePay, ptPCCharge, ptMWPCCharge, ptNone, ptNOVA, ptPCIElavon);
  TCreditCardProcessingType = (ptCharge, ptRefund, ptVoiceAuth, ptInquiry, ptUnknown);

  TPCIProcessorType = (pcitUnknown, pcitElavon);
  TCreditCardOperationType = (ccotUnknown, ccotConfiguration, ccotCustomer, ccotTransaction, ccotProcess);

  TWebServiceConnectionType = (wsctSuccess, wsctCouldNotConnect, wsctError);

  TBatchAddressValidateType = ( bavtStore, bavtEmployeeGroups, bavtCompanies );
  TBatchAddressValidateTypes = set of TBatchAddressValidateType;

  TPromptOptionType = ( roPrompt, roAlwaysTrue, roAlwaysFalse );

  TDefaultTaxExemptionOption = ( dteAll, dteManual );

  TUserOptionSource = ( uosUser, uosStore, uosFranchise, uosFace, uosSystem );

  TFirstPaymentType = ( fptCreatedDate, fptNextOccurence );

  THomeScreenType = (hstNone, hstDefault, hstMarketing, hstProduction, hstCourse );

  TBlobType = (bltNone, bltImage, bltBlank2, bltBlank3, bltBlank5, bltBlank6, bltBlank7, bltBlank8);

  TAccountSaveOption = ( asoContacts, asoAddresses, asoPhoneNumbers, asoActivity, asoUserFields, asoValidate );
  TAccountSaveOptions = set of TAccountSaveOption;

  TTransactionSaveOption = ( tsoHeader, tsoDetails, tsoParts, tsoActivity, tsoGL, tsoUserFields, tsoCompanyData, tsoValidate, tsoPartUsage );
  TTransactionSaveOptions = set of TTransactionSaveOption;

  TOptionSaveOption = ( osoPayroll );
  TOptionSaveOptions = set of TOptionSaveOption;

  TTransactionEditOption = ( teoNoReCalc, teoNoReSum, teoMinimalLoad, teoNoFlags, teoNoReSumTaxes, teoNoBackDating );
  TTransactionEditOptions = set of TTransactionEditOption;

  TDatabaseType = ( dbtDefault, dbtAccess, dbtParadox, dbtMSSQL, dbtManual, dbtBMS );
  TDatabaseTypes   = Set of TDatabaseType;
  TSQLType = ( sqlSelect, sqlDelete, sqlUpdate, sqlInsert, sqlAlterTable, sqlCustomWithResult, sqlCustomWithoutResult, sqlTableInsert, sqlTableCopy );

  TMapAddressType = (matMapQuest, matMultimap, matYahoo, matGoogle);

  TCourseEnrollmentType = (cePermanent, ceSpecific);

  TTimeSpanDuration = (tsdMinute, tsdHour, tsdDay);

  // Transaction status ID
  TTransStatus =
    //CustTransHeader Statuses
  ( sidNew, sidWIP, sidBuilt, sidSale, sidClosed,
    sidDropped, sidOpen, sidBlank7, sidBlank8, sidVoid,
    sidBlank10, sidPending, sidLost, sidConverted, sidVoidedEstimate,
    sidBlank15, sidBlank16, sidBlank17, sidBlank18, sidBlank19,
    sidCreditMemo, sidTemplate, sidBlank22, sibBlank23,

    //Purchase Order Statuses
    sidVendorCreditMemo,  sidRequested, sidApproved, sidOrdered,
    sidPOClosed, sidPOCancelled, sidPORejected, sidPOReceived );

  TTransStatuses = set of TTransStatus;

  TOrderRecurrenceType = ( ortNone, ortDaily, ortWeekly, ortMonthly, ortQuarterly, ortYearly, ortCustom1, ortCustom2, ortCustom3 );

  TOrderRecurrenceTypes = set of TOrderRecurrenceType;

  TQueryShowRange = ( srShowAll, srShowFirst, srShowLast );
  TTextAppendOption = ( taoReplace, taoInsertBefore, taoInsertAfter );

  // We also want to know the general filter conditions
  TConditionalProcessingType = ( cpNone, cpConditional, cpCustomExpression );

  TFilterConditionType =
    (
    fctUndefined,
    fctIsActive, fctIsOpen, fctIsClosed,
    fctStatusWIP, fctStatusBuilt, fctStatusSale, fctStatusClosed, fctStatusVoided,
    fctStatusPending, fctStatusConverted, fctStatusRejected
    );

  // And when to proceed with the actions for the query
  TProceedConditionType =
    (
    pctUndefined,
    pctNoRecords,
    pctOneOrMoreRecords, pctExactlyOneRecord
    );

  // For message processing
  TMsgProcessorOption = ( mpoUp, mpoDown );
  TMsgProcessorOptions = set of TMsgProcessorOption;

  // For rules, we need to know what triggers it
  TMacroDataSource   = ( rdsDataChangeTrigger, rdsQueryTrigger, rdsNoTriggerData, rdsSQLSelectTrigger, rdsIndirectTrigger );
  //                        0         1         2           3             4              5               6              7              8          9               10              11                  12          13          14
  TMacroCategoryType = ( rctNone, rctOrder, rctEstimate, rctTemplate, rctCompany, rctCompanyContact, rctEmployee, rctServiceTicket, rctPart, rctLineItem, rctCourseEvent, rctWorkAssignment, rctPurchaseOrder, rctBill, rctReceivingDoc );
  TMacroExecuteType  = ( retServer, retLocal );

  TRecurrenceType = ( rtUnknown, rtDaily, rtWeekly, rtMonthly, rtMonthlySpecial, rtYearly, rtYearlySpecial );
  TRecurrenceEndType = ( retNone, retInterval, retDate );

  THomeActionLayout = (halCircle, halRectangle, halOval);

  TSecurityState = (ssUndefined, ssAllow, ssDeny, ssAllowInherited, ssDenyInherited, ssMixed);

  TUDFLayoutFilterState = (ulfsUndefined, ulfsVisible, ulfsNotVisible);

  TFormulaSectionType = (fstOutputTemplate, fstVariable, fstStoreConstant, fstObjectReference, fstTimeSpan);
  TFormulaSectionTypes = set of TFormulaSectionType;

  TPayFrequency        = (pfSpecial, pfWeekly, pfBiWeekly, pfSemiMonthly, pfMonthly, pfQuarterly, pfAnnually);
  TEmployeePayrollType = (eprHourly, eprSalary);

  TPayItemType         = (pitStraightTime, pitOverTime,
                          pitDoubleTime, pitShiftDiffTime,
                          pitSalary, pitBonus, pitCommission,
                          pitAdvance, pitAdvanceRepayment, pitBenefit,
                          pitStandardEmployeeDeduction, pitOptionalEmployeeDeduction,
                          pitStandardEmployerDeduction, pitOptionalEmployerDeduction,
                          pitWorkersCompensation, pitVacationTime, pitSickTime,
                          pitHolidayTime);

  TTimeCardPayStatus   = (tpsPaid, tpsNotPaid, tpsVacation, tpsSick, tpsHoliday);

  TCRCState = (crcUnknown, crcValid, crcInvalid);

const
  rtAll = [Low( TCyrRefreshType )..High( TCyrRefreshType )];

  cftAllFranchises = [Low( TCyrFranchiseType )..High( TCyrFranchiseType )];
  cftRoyaltyGroup = [cftFASTSIGNS..cftFASTSIGNS];

  cmAllModules = [Low( TControlModule )..High( TControlModule )];

  RecurrenceTypeText : array [TRecurrenceType] of string =
  ( '', 'Daily', 'Weekly', 'Monthly', 'Monthly', 'Yearly', 'Yearly' );

  PayFrequencyText : array [TPayFrequency] of string =
  ( 'Special', 'Weekly', 'Bi-Weekly', 'Semi-Monthly', 'Monthly', 'Quarterly', 'Annually' );

  PayFrequencyPeriodsPerYear : array [TPayFrequency] of Integer =
  ( 0, 52, 26, 24, 12, 4, 1 );

  EmployeePayrollTypeText : array [TEmployeePayrollType] of string =
  ( 'Hourly', 'Salary' );

  PayItemTypeText : array [TPayItemType] of string =
  ( 'Straight Time', 'Over Time',
    'Double Time', 'Shift Diff Time',
    'Salary', 'Bonus', 'Commission',
    'Advance', 'Advance Repayment', 'Benefit',
    'Standard Employee Deduction', 'Optional Employee Deduction',
    'Standard Employer Deduction', 'Optional Employer Deduction',
    'Worker''''s Compensation', 'Vacation Time', 'Sick Time', 'Holiday Time' );

  TimeCardPaidPayStatuses    = [tpsPaid, tpsVacation, tpsSick, tpsHoliday];
  TimeCardNonPaidPayStatuses = [tpsNotPaid];

  TimeCardPayStatusText : array [TTimeCardPayStatus] of string =
  ( 'Paid', 'Not Paid', 'Vacation', 'Sick', 'Holiday' );

type

  TMacroResponseType =
    // 0
    ( rrtUndefined,
    // 1              2               3                 4
    rrtTierObjNew, rrtTierObjEdit, rrtTierObjDelete, rrtTierObjVoid,

    // 5            6             7                     8                   9
    rrtOrderNew, rrtOrderEdit, rrtOrderStatusChange, rrtOrderStationChange, rrtOrderPayment,
    // 10            11             12            13
    rrtOrderVoid, rrtOrderBuilt, rrtOrderSale, rrtOrderClosed,
    // 14              15               16                       17
    rrtEstimateNew, rrtEstimateEdit, rrtEstimateStatusChange, rrtEstimateStationChange,
    // 18              19                     20
    rrtEstimateVoid, rrtEstimateConverted, rrtEstimateLost,
    // 21             22              23                24
    rrtCompanyNew, rrtCompanyEdit, rrtCompanyDelete, rrtCompanyPayment,
    // 25                      26
    rrtCompanyCreditChange, rrtCompanyFirstOrder,
    // 27                  28
    rrtCompanyNewOrder, rrtCompanyNewEstimate,
    // 29             30
    rrtContactNew, rrtContactDelete,

    // 31             32
    rrtPaymentNew, rrtPaymentVoid,

    // 33          34
    rrtUserNew, rrtUserEdit,

    // 35
    rrtSMSCommand,

    // 36              37               38
    rrtEmployeeNew, rrtEmployeeEdit, rrtEmployeeDelete,

    // 39                   40                    41                            42                          43
    rrtServiceTicketNew, rrtServiceTicketEdit, rrtServiceTicketStatusChange, rrtServiceTicketStationChange, rrtServiceTicketPayment,
    // 44                    45                     46                    47
    rrtServiceTicketVoid, rrtServiceTicketBuilt, rrtServiceTicketSale, rrtServiceTicketClosed,
    // 48
    rrtCompanyNewServiceTicket,

    // 49
    rrtLineItemStationChange,
    // 50                  51
    rrtInventoryYellow, rrtInventoryRed,

    // 52
    rrtLineItemNew,

    // 53                 54                      55
    rrtCourseEventNew, rrtCourseEventComplete, rrtCourseEventNewLink,

    // 56                    57
    rrtWorkAssignmentNew, rrtWorkAssignmentComplete,

    // 58            // 59
    rrtOrderDropped, rrtGLAccountChange,

    // 60                       // 61
    rrtOrderStatusToChange, rrtOrderStatusFromChange,

    // 62                       // 63
    rrtEstimateStatusToChange, rrtEstimateStatusFromChange,

    // 64                       // 65
    rrtServiceTicketStatusToChange, rrtServiceTicketStatusFromChange,

    // 68                       // 69
    rrtOrderStationToChange, rrtOrderStationFromChange,

    // 70                       // 71
    rrtEstimateStationToChange, rrtEstimateStationFromChange,

    // 72                       // 73
    rrtServiceTicketStationToChange, rrtServiceTicketStationFromChange,

    // 74                       // 75
    rrtLineItemStationToChange, rrtLineItemStationFromChange,

    // 76                       // 77                     // 78
    rrtPurchaseOrderNew, rrtPurchaseOrderEdit, rrtPurchaseOrderStatusChange,

    // 79                                       // 80
    rrtPurchaseOrderStatusToChange   , rrtPurchaseOrderStatusFromChange,

    // 81        // 82             // 83
    rrtBillNew, rrtBillEdit, rrtBillStatusChange,

    // 84                            // 85
    rrtBillStatusToChange   , rrtBillStatusFromChange,

    // 86                      // 87                     // 88
    rrtReceivingDocNew, rrtReceivingDocEdit, rrtReceivingDocStatusChange,

    // 89                            // 90
    rrtReceivingDocStatusToChange   , rrtReceivingDocStatusFromChange,


    // 91                      // 92                     // 93
    rrtAccountStageChange, rrtAccountStageToChange, rrtAccountStageFromChange

    );

  TMacroResponseTypes = set of TMacroResponseType;

const
  // Create a list of Macros that are not send to the Platoon
  PrivateMacroResponses : TMacroResponseTypes = [rrtUndefined] ;

type
  TWeekDay = ( wdNone, wdSunday, wdMonday, wdTuesday,
    wdWednesday, wdThursday, wdFriday, wdSaturday );
  TWeekDays = set of TWeekDay;
const
  wdsEveryDay : TWeekDays = [wdSunday, wdMonday, wdTuesday, wdWednesday, wdThursday, wdFriday, wdSaturday] ;
  wdsWeekDays : TWeekDays = [wdMonday, wdTuesday, wdWednesday, wdThursday, wdFriday] ;
  wdsWeekends : TWeekDays = [wdSunday, wdSaturday] ;

  WeekDayText : array[TWeekDay] of string = ('', 'Sunday', 'Monday', 'Tuesday',
    'Wednesday', 'Thursday', 'Friday', 'Saturday' );

type
  TOutputDeviceType    = ( rodNone, rodPreview, rodPrinter, rodEmail, rodExport, rodEdit, rodExecute );
  TPrintOptions        = set of TOutputDeviceType;
  TValueOption         = ( voLeaveAsIs, voPromptUser, voPresetValue, voUseGroup);
  TValueOptions        = set of TValueOption;
  TCriteriaType        = ( dcDiscrete, dcRange, dcStdDiscrete, dcStdRange, dcDefaultPrompt );
  TExportType          = ( etHTML, etPDF, etRTF, etWord, etExcel, etCrystal, etCommaDelimited, etTabDelimited, etQuickBooks, etPlainText, etXML );
  TExportTypes         = set of TExportType;
  TCyrValueType        = ( cvtDiscrete, cvtRange, cvtDiscreteAndRange, cvtDefaultPrompt );
  TCyrReportType       = ( crtNone, crtGroup, crtCrystal, crtWord, crtAction, crtSMSQR, crtBitmap, crtSQL );
  TPrintReportType     = ( rotNone,  rotOrder, rotWorkOrder, rotEstimate, rotCompany, rotEmployee, rotContact, rotTemplate,
                           rotActivityMgr, rotProduct, rotCreditMemo, rotLineItem, rotPart, rotServiceTicket,
                           rotServiceItem,  rotProduction, rotContactAct, rotMenu, rotJournalActivity, rotPurchaseOrder, rotPOItem,
                           rotBill, rotReceivingDoc);
  TSQLReportQueryType  = (rqtSystem, rqtCustomSQL);
  TSQLCriteriaType     = (rsctString, rsctNumber, rsctCurreny, rsctDate, rsctTime, rsctDateTime,
                         // Cyrious Criteria
                         rsctContactActivity, rsctCustomer, rsctDivision, rsctEmployee, rsctEstimate, rsctLineItem,
                         rsctOrder, rsctPart, rsctProduct, rsctServiceTicketItem, rsctServiceTicket, rsctJournalActivity,
                         rsctCourse, rsctCourseEvent, rsctProductCategory, rsctCourseSectionType, rsctContact, rsctPurchaseOrder,
                         rsctPurchaseOrderItem, rsctBill, rsctReceivingDoc, rsctStation, rsctPayroll );

  TReportExecuteType   = (retViewAndSave, retExecuteSQL);

  TImportReplaceOption = ( {iroReplace,} iroUpdate, iroIgnore );

  TDBExportType = ( dbetNone,
    dbetHTML,
    dbetMicrosoft_Word,
    dbetMicrosoft_Excel,
    dbetText,
    dbetRichText,
    dbetText_Comma_Delimited,
    dbetText_Tab_Delimited,
    dbetDIF,
    dbetSYLK,
    dbetClipboard,
    dbetXML_with_Schema );

  TEvaluateOnSaveFxType = (eftOrderItemNew, eftOrderItemEdit, eftOrderItemDelete, eftOrderVoided,
                          eftEstimateItemNew, eftEstimateItemEdit, eftEstimateItemDelete, eftEstimateVoided, eftEstimateLost );

  TOrderExecuteSaveFxType = eftOrderItemNew..eftOrderVoided;
  TEstimateExecuteSaveFxType = eftEstimateItemNew..eftEstimateLost;

  //Custom Ranges
  TCustomRangeType = ( crPrintDT, crFixed, crFlexible );

  TFlexibleCustomRange = (
    fcrStartToday, fcrEndToday, fcrStartWeek, fcrEndWeek,
    fcrStartMonth, fcrEndMonth, fcrStartYear, fcrEndYear,
    fcrStartYesterday, fcrEndYesterday, fcrStartLastWeek, fcrEndLastWeek,
    fcrStartLastMonth, fcrEndLastMonth, fcrStartLastYear, fcrEndLastYear,
    fcrStartTomorrow, fcrEndTomorrow, fcrStartNextWeek, fcrEndNextWeek,
    fcrStartNextMonth, fcrEndNextMonth, fcrStartNextYear, fcrEndNextYear
    );

const
  LastModule = cmPayroll;

  ValidOnlineTaxCountries: array[0..5] of string =
  ('US','USA', 'UNITED STATES', 'UNITED STATES OF AMERICA', 'CA', 'CANADA');

  W2Boxes: array[0..20] of string =
  ('(none)', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12a', '12b', '12c', '12d', '14', '16', '17', '18', '19');

  W2Codes: array[0..25] of string =
  ('(none)', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'BB');

  CyrFranchiseTypeText: array[TCyrFranchiseType] of string =
  ( 'Standard', 'FASTSIGNS', 'Signs Now', 'Sign-A-Rama', 'Signs By Tomorrow', 'Kinkos', 'Oogles N Googles', 'Hair', 'Courses', 'Pets', 'Cyrious Internal' );

  ControlModuleText : array [TControlModule] of string =
  ( 'Estimating'              , 'Work Order'            , 'Invoicing'             , 'Payment Tracking'      ,
    'Sales Management'        , 'Marketing'             , 'Parts'                 , 'Macros'                ,
    'Customizable'            , 'Inventory'             , '*Cyrious Tech SSLIP*'  , 'Credit Card Processing',
    '*Beta*'                  , 'Shipping'              , 'Services Tickets'      , 'Bar Coding'            ,
    'Courses'                 , 'AP and GL'             , 'Online Tax Lookup'     , 'Production Terminal'   ,
    'Adv. Job Cost & Payroll' , 'Blank22'               , 'Blank23'               , 'Blank24'               ,
    'Blank25'                 , 'Blank26'               , 'Blank27'               , 'Blank28'               ,
    'Blank29'                 , 'Blank30'               , 'Blank31'               , 'Blank32'                );

  ControlModuleUDFText : array [TControlModule] of string =
  ( 'Estimating'             , 'Work_Order'            , 'Invoicing'             , 'Payroll'               ,
    'Accounting'             , 'Marketing'             , 'Part'                  , 'Macro'                 ,
    'AdvancedDesign'         , 'Inventory'             , '*Cyrious Tech SSLIP*'  , 'CreditCard'            ,
    '*Beta*'                 , 'Starship'              , 'ServiceTicket'         , 'BarCoding'             ,
    'Course'                 , 'Accounting'            , 'Online_Tax_Lookup'     , 'Blank20'               ,
    'Blank21'                , 'Blank22'               , 'Blank23'               , 'Blank24'               ,
    'Blank25'                , 'Blank26'               , 'Blank27'               , 'Blank28'               ,
    'Blank29'                , 'Blank30'               , 'Blank31'               , 'Blank32'                );
   //'WebView''

  TransactionTypeString : array [TTransactionType] of string =
  ( 'None', 'Order', 'Estimate', 'Recurring Order', 'Credit Memo', 'Invoice', 'Service Ticket', 'Purchase Order', 'Bill', 'Receiving Document', 'Vendor Credit Memo');

  TransactionTypePluralString : array [TTransactionType] of string =
  ( 'None', 'Orders', 'Estimates', 'Recurring Orders', 'Credit Memos', 'Invoices', 'Service Tickets', 'Purchase Orders', 'Bills', 'Receiving Documents', 'Vendor Credit Memos');

  ProcessorTypeText : array[TProcessorType] of string =
  ('Merchant Warehouse (No longer In Service)', 'Merchant Warehouse 2', 'USA ePay', 'PC Charge', 'Merchant Warehouse (PC Charge)', 'None', 'Elavon', 'Elavon - PCI');

  PCIProcessorTypeText : array[TPCIProcessorType] of string =
  ('Unknown', 'Elavon PCI');

  ProcessingTypeText : array[TCreditCardProcessingType] of string =
  ('Charge', 'Refund', 'VoiceAuth', 'Inquiry', 'n/a' );

  CreditCardOperationTypeText : array[TCreditCardOperationType] of string =
  ('n/a', 'ccotConfiguration', 'ccotCustomer', 'ccotTransaction', 'ccotProcess');

  WebServiceConnectionTypeText : array[TWebServiceConnectionType] of string =
  ('Success', 'Could Not Connect', 'Error');

  TransStatusText : array [TTransStatus] of string =
    //CustTransHeader Statuses
  ( 'New', 'WIP', 'Built', 'Sale', 'Closed',
    'Dropped', 'Open', '', '', 'Voided',
    '', 'Pending', 'Lost', 'Converted', 'Voided',
    '', '', '', '', '',
    'Credit Memo', 'Recurring Order', '', '',

    //Purchase Order Statuses
    'Vendor Credit Memo', 'Requested', 'Approved', 'Ordered',
    'Closed', 'Cancelled', 'Rejected', 'Received' );

  AllTransStatuses = [low( TTransStatus )..high( TTransStatus )] ;

  OrderRecurrenceTypeText : array [TOrderRecurrenceType] of string =
  ( 'Not Recurring', 'Daily', 'Weekly', 'Monthly', 'Quarterly', 'Yearly', 'Custom1', 'Custom2', 'Custom3' );

  HomeScreenTypeText : array [THomeScreenType] of string =
  ( 'None', 'Default', 'Marketing', 'Production', 'Course' );

  OutputDeviceText : array [TOutputDeviceType] of string =
  ( '(none)', 'Preview', 'Printer', 'Email', 'Save', 'Edit', 'Execute' );

  OutputDeviceActionText : array [TOutputDeviceType] of string =
  ( '', 'Preview', 'Print', 'Email', 'Save', 'Edit', 'Execute' );

  ImportReplaceOptionText : array [TImportReplaceOption] of string =
  ( {'Replace with Imported Data',} 'Update with Imported Data', 'Ignore Imported Data' );

  DashboardTypeText : array [TDashboardType] of string =
  ('Calendar Designer', 'Calendar View', 'Check-In', 'Course Monitor', 'Course Setup', 'Accounting', 'Home' );

  DashboardDesignerTypeText : array [TDashboardDesignerType] of string =
  ('None', 'Calendar');

  AllDashboardDesignerTypes = [low( TDashboardDesignerType )..high( TDashboardDesignerType )] ;

  InstrumentRefreshTypeText : array [TInstrumentRefreshType] of string =
  ( 'None', 'Company', 'Full Contact', 'Limited Contact', 'Order/Estimate', 'Employee', 'Activity', 'Payment', 'GL Account' );

  ContactUDFRefreshTypeText: array [TContactUDFRefreshType] of string =
  ( 'All Contacts', 'Full Contacts', 'Limited Contacts' );

  QuickProductTypeText: array[TQuickProductType] of string  =
  ( 'Home Frame', 'Order/Estimate', 'Service Ticket' );

  AllInstrumentRefreshTypes = [irtCompany..high( TInstrumentRefreshType )] ;

  DetailPartTypeText : array [TDetailPartType] of string =
  ( '(None)', '(New Part)', 'Catalog Item', 'Part', 'Expense', 'Notes', 'Other Material',
    'Other Labor', 'Other Equipment', 'Other Outsource', 'Other Freight', 'Other Item' );

  VendorReceiveInvText : array [TVendorReceiveInv] of string =
  ( 'Add to Received Only and reduce On-Order Levels', 'Add to Received Only only' );

  VendorBillCostText : array [TVendorBillCost] of string =
  ( 'Adjust the average cost', 'Do not adjust the cost', 'Adjust the average cost for increases only' );

  VendorBillInvText : array [TVendorBillInv] of string =
  ( 'Reduce Received Only first, then On-Order', 'Reduce On-Order first, then Recieved Only' );

  PreDiscountTypeText : array [TPreDiscountType] of string =
  ( 'Standard Cost Plus', 'Price From Part(s)', 'Formula' );

  TaxableCalculationTypeText : array [TTaxableCalculationType] of string =
  ( 'Item Amount', 'Formula' );

  PrintOptionText : array [TOutputDeviceType] of string =
  ( 'Prompt', 'Quick Preview', 'Quick Print', 'Quick Email', 'Quick Save', 'Quick Edit', 'Quick Execute' );

  PrintReportTypeText : array [TPrintReportType] of string =
  ( 'None', 'Invoice', 'WorkOrder', 'Estimate', 'Company', 'Employee', 'Contact', 'Recurring Order', 'Activity Manager', 'Product',
    'Credit Memo', 'Line Item', 'Part', 'Service Ticket', 'Service Item',  'Production', 'Contact Activity', 'Menu', 'Journal Activity',
    'Purchase Order', 'Purchase Order Item', 'Bill', 'Receiving Document');

  SQLReportQueryTypeText : array [TSQLReportQueryType] of string =
  ('System Query', 'SQL');

  SQLCriteriaTypeText : array[TSQLCriteriaType] of string =
  ('String', 'Number', 'Currency', 'Date', 'Time', 'DateTime',
  // Cyrious Criteria
   'Contact Activity', 'Company', 'Division', 'Employee', 'Estimate',
   'Line Item', 'Order', 'Part', 'Product', 'Service Item', 'Service Ticket', 'GL Activity',
   'Course', 'Course Event', 'Product Category', 'Course Section Type', 'Contact', 'Purchase Order', 'Purchase Order Item',
   'Bill', 'Receiving Document', 'Station', 'Payroll');

  SQLCriteriaPostfix : array[TSQLCriteriaType] of string =
  ('', '', '', '', '', '',
  // Cyrious Criteria
   '_CONTACTACTIVITYID', '_CUSTOMERID', '_DIVISIONID', '_EMPLOYEEID', '_ESTIMATEID',
   '_LINEITEMID', '_ORDERID', '_PARTID', '_PRODUCTID', '_SERVICETICKETITEMID', '_SERVICETICKETID', '_JOURNALID',
   '_COURSEID', '_COURSEEVENTID', '_PRODUCTCATEGORYID', '_COURSESECTIONTYPEID', '_CONTACTID', '_PURCHASEORDERID', '_PURCHASEORDERITEMID',
   '_BILLID', '_RECEIVINGDOCID', '_STATIONID', '_PAYROLLID' );

  QueryShowRangeText : array [TQueryShowRange] of string =
  ( 'All', 'First', 'Last' );

  ValueOptionText : array [TValueOption] of string =
  ( 'Leave As Is', 'Prompt User', 'Preset Value(s)', 'Use Group Value(s)');

  ValueOptionXMLText : array [TValueOption] of string =
  ( 'LeaveAsIs', 'PromptUser', 'PresetValue', 'UseGroup' );

  ExportTypeText : array [TExportType] of string =
  ( 'HTML', 'Adobe Acrobat (PDF)', 'Rich Text', 'MS Word', 'MS Excel', 'Crystal Reports', 'Comma Delimited', 'Tab Delimited', 'QuickBooks', 'Plain Text', 'XML' );

  DBExportTypeText : array[TDBExportType] of string = ( 'None',
    'HTML',
    'Microsoft Word',
    'Microsoft Excel',
    'Text',
    'Rich Text',
    'Comma Delimited',
    'Tab Delimited',
    'DIF',
    'SYLK',
    'Clipboard',
    'XML' );

  ExportTypeExt : array [TExportType] of string =
  ( 'html', 'pdf', 'rtf', 'doc', 'xls', 'rpt', 'csv', 'txt', 'iif', 'txt', 'xml' );

  DBExportTypeExt : array[TDBExportType] of string = ( '',
    'html',
    'doc',
    'xls',
    'txt',
    'txt',
    'csv',
    'txt',
    'DIF',
    'SYLK',
    '',
    'xml' );

  EvaluateOnSaveFxTypeText: array[TEvaluateOnSaveFxType] of string = ('OrderNewItem', 'OrderItemEdit', 'OrderItemDelete', 'OrderItemVoid',
                             'EstimateNewItem', 'EstimateItemEdit', 'EstimateItemDelete', 'EstimateItemVoid', 'EstimateItemLost' );

  ProceedConditionTypeText : array [TProceedConditionType] of string =
  (
    '(none)',
    'Contains No Records',
    'Contains One or More Records',
    'Contains Exactly One Record'
    );

  FilterConditionTypeText : array [TFilterConditionType] of string =
  (
    '(none)',
    'Is Active',
    'Is Open',
    'Is Closed',
    'Status is WIP',
    'Status is Built',
    'Status is Sale',
    'Status is Closed',
    'Status is Voided',
    'Status is Pending',
    'Status is Converted',
    'Status is Rejected'
    );

  SystemMacroResponses = [rrtUndefined, rrtTierObjNew, rrtTierObjEdit, rrtTierObjDelete, rrtTierObjVoid] ;

  MacroDataSourceText : array [TMacroDataSource] of string =
  ( 'Data Change', 'Query', 'None' ,'SQL', 'Indirect' );

  MacroCategoryTypeString : array [TMacroCategoryType] of string =
  ( '(none)', '%0:s', '%1:s', '%2:s', '%3:s', 'Contact', 'Employee', 'Service Item', 'Part', 'Line Item', '%4:s', '%5:s', '%6:s', '%7:s', '%8:s' );

  MacroResponseTypeString : array [TMacroResponseType] of string =
  (
    'Undefined',
    'Any New Object', 'Any Created Object', 'Any Object Deleted', 'Any Object Voided',

    'New %1:s', '%1:s Edited', '%1:s Status Change', '%1:s Station Change', 'Payment on an %1:s',
    '%1:s Voided', '%1:s Status Changed To Built', '%1:s Status Changed To Sale', '%1:s Closed',

    'New %0:s', '%0:s Edited', '%0:s Status Change', '%0:s Station Change',
    '%0:s Voided', '%0:s Converted', '%0:s Lost',

    'New %3:s', '%3:s Edited', '%3:s Deleted', 'Payment for a %3:s',
    '%3:s Credit Change', '%3:s First %1:s',
    '%3:s New %1:s', '%3:s New %0:s',

    'New Contact', 'Contact Deleted',

    'New Payment', 'Payment Voided',

    'New User', 'User Edited',

    'SMS Command',

    'New Employee', 'Employee Edited', 'Employee Deleted',

    // Service Ticket Changes
    'New %6:s', '%6:s Edited', '%6:s Status Change', '%6:s Station Change', 'Payment on an %6:s',
    '%6:s Voided', '%6:s Status Changed To Built', '%6:s Status Changed To Sale', '%6:s Closed',
    '%3:s New %6:s',

    'Line Item Station Change',
    'Inventory Below Yellow Level', 'Inventory Below Red Level',

    'New Line Item',

    'New %4:s', 'Complete %4:s', 'New %4:s Link',

    'New %5:s', 'Complete %5:s',

    '%1:s Status Changed To Dropped',

    'GL Entry made for Account',

    // Order Status Change to
    '%1:s Status Changed To:', '%1:s Status Changed From:',

    // Estimate Status Change to
    '%0:s Status Changed To:', '%0:s Status Changed From:',

    // Service Ticket Status Change to
    '%6:s Status Changed To:', '%6:s Status Changed From:',

    // Order Station Change to
    '%1:s Station Changed To:', '%1:s Station Changed From:',

    // Estimate Station Change to
    '%0:s Station Changed To:', '%0:s Station Changed From:',

    // Service Ticket Station Change to
    '%6:s Station Changed To:', '%6:s Station Changed From:',

    'Line Item Station Changed To:', 'Line Item Station Changed From:',

    // Purchase Orders
    '%7:s Created', '%7:s Edited', '%7:s Status Change',

    '%7:s Status Changed To:'   , '%7:s Status Changed From:',

    // Bills
    '%8:s Created', '%8:s Edited', '%8:s Status Change',

    '%8:s Status Changed To:'   , '%8:s Status Changed From:',

    // Receiving Documents
    '%9:s Created', '%9:s Edited', '%9:s Status Change',

    '%9:s Status Changed To:'   , '%9:s Status Changed From:',

    // Account Stages
    '%3:s Stage Change',     '%3:s Stage Change To:',     '%3:s Stage Change From:'

    );

  FlexibleCustomRangeText : array [TFlexibleCustomRange] of string =
  (
    'Start of Today', 'End of Today', 'Start of the Week', 'End of the Week',
    'Start of the Month', 'End of the Month', 'Start of the Year', 'End of the Year',
    'Start of Yesterday', 'End of Yesterday', 'Start of Last Week', 'End of Last Week',
    'Start of Last Month', 'End of Last Month', 'Start of Last Year', 'End of Last Year',
    'Start of Tomorrow', 'End of Tomorrow', 'Start of Next Week', 'End of Next Week',
    'Start of Next Month', 'End of Next Month', 'Start of Next Year', 'End of Next Year'
  );

type

  TStatus = ( stUndefined, stLoading, stUnloading, stBrowse, stEdit, stInsert, stError );
  TSSLIPChannelStatus = ( csUndefined, csClosed, csConnecting, csConnected, csLoggedIn, csDisconnecting );

  TSSLIPChannelType = ( sctIP, sctMemory, sctMailSlot );
  TSSLIPChannelTypes = set of TSSLIPChannelType;

  TSSLIPSRunFrequency = ( srfRunOnce, srfRunRepeatedly );
  TSSLIPSTableExistsOption = ( steoCancel, steoInsert, steoInsertUnique, steoAppendDateTime, steoDeleteTable );

  TSQLBatchType = (sbtRetrieveFromClient, sbtTransmitToClient, sbtExecuteCommand);

  TSSLIPSUserLevel = ( sulFranchise, sulRegion, sulStore );
  TSSLIPSUserType  = ( sutAdmin, sutUser );

  TAccountType = ( tatBoth, tatAccrual, tatCash );

  TOnDeleteSonType = ( odtDeleteOnExecute, odtDeleteImmediately, odtFreeOnly );
  TEmployeeStatus = ( esRegular, esContract, esOnleave, esPrior );
  TTenderType = ( ttCash, ttCheck, ttCreditCard, ttDebitCard, ttOther, ttEFT, ttSystem, ttWireTransfer );
  TCreditCardType = ( cctAmex, cctMastercard, cctVisa, cctDiscover, cctDiners, cctOther, cctDinersClubInternational, cctBankCard, cctMaestro, cctVisaElectron, cctJCB );
  TCloseOutType = ( cltUserDefined, cltDaily, cltMonthly, cltYearly, cltRoyalty, cltExport, cltPCChargeSettle, cltWeekly, cltQuarterly, cltSession );
  TCloseOutTypes = set of TCloseOutType;

  TContactType = ( cntFull, cntLimited );

  TGenderType = ( gtNone, gtMale, gtFemale );

  TStudentType = ( sttEnrolled, sttGuest, sttWaitList, sttMakeup );

  TMakeUpType = ( mutCannot, mutCan );

  TContactCallType = ( cctUser, cctEstimate, cctBuilt, cctOrder, cctAR, cctMarketing );

  TDaysInReceivableType = ( dirAll, dirLess30, dir31To60, dir61To90, dirGreat90 );

  TModEntryOption = ( meoCheckBox, meoSpinner, meoDropDown );
  TModDisplayOption = ( mdoAlways, mdoEvalFormula );
  TModDefaultOption = ( mdfNoneNotReqd, mdfNoneReqd, mdfValue );

  TCostMultiplierType =( pmutDefault, pmutPart, pmutCustom, pmutFixed );

  TProdUseMaterialType =( pumtUseAdditional, pumtMarkTotalUsed, pumtMarkAllUsed, pumtNone );

  TAssemblyInclusionType = ( aitAlways, aitManual, aitFormula );

  TWorkHistoryType = ( whtNone, whtTimeClock, whtMaterial, whtStatusChange, whtDispChange, whtStageChange);

  TVariationGridType      =(vgtCost, vgtPrice, vgtMargin, vgtUnitCost, vgtUnitPrice, vgtUnitMargin );

  //                       0        1           2            3            4            5             6            7           8              9            10               11                  12             13                   14                 15           16        17           18
  TExplorerQueryType = ( expNone, expOrder, expEstimate, expCompany, expSubsidiary, expContact, expTemplate, expLineItem, expEmployee, expActivity, expTransaction, expOrderHistory, expEstimateHistory, expServiceTicket, expCourseSection, expPurchaseOrder, expPOItem, expBill, expReceivingDoc );
  TExplorerQueryTypes = set of TExplorerQueryType;

  //                          00                       01                          02                         03                            04
  TQueryTableType = ( qttCustom              , qttOrder                  , qttEstimate              , qttCompany                  , qttContact                ,
  //                          05                       06                          07                         08                            09
                      qttTemplate            , qttLineItem               , qttEmployee              , qttAnyActivity              , qttOrderUserField         ,
  //                          10                       11                          12                         13                            14
                      qttEstimateUserField   , qttCompanyUserField       , qttContactUserField      , qttTemplateUserField        , qttEmployeeUserField      ,
  //                          15                       16                          17                         18                            19
                      qttOrderInvoiceAddress , qttEstimateInvoiceAddress , qttCompanyBillingAddress , qttContactBillingAddress    , qttTemplateInvoiceAddress ,
  //                          20                       21                          22                         23                            24
                      qttEmployeeAddress     , qttCompanyPhoneNumber     , qttContactPhoneNumber    , qttEmployeePhoneNumber      , qttCompanyFaxNumber       ,
  //                          25                       26                          27                         28                            29
                      qttContactFaxNumber    , qttEmployeeFaxNumber      , qttOrderActivity         , qttEstimateActivity         , qttContactActivity        ,
  //                          30                       31                          32                         33                            34
                      qttOtherActivity       , qttProduct                , qttTransHeader           , qttTransDetailParam         , qttPrimaryContact         ,
  //                          35                       36                          37                         38                            39
                      qttOrderHistory        , qttEstimateHistory        , qttOrderHistoryUserField , qttEstimateHistoryUserField , qttDisposition            ,
  //                          40                       41                          42                         43                            44
                      qttWorkStation         , qttPriority               , qttSalesPerson1          , qttSalesPerson2             , qttSalesPerson3           ,
  //                          45                       46                          47                         48                            49
                      qttAssignedTo          , qttServiceContractType    , qttRegion                , qttCompanyAddressLink       , qttCompanyAddress         ,
  //                          50                       51                          52                         53                            54
                      qttProductCategory     , qttTaxClass               , qttEmployeeGroup         , qttCourseSection            , qttLocation               ,
  //                          55                       56                          57                         58                            59
                      qttCourseSectionType   , qttContactAddressLink     , qttContactAddress        , qttPurchaseOrder            , qttPOItem                 ,
  //                          60                       61                          62                         63
                      qttBill                , qttReceivingDoc           , qttPaymentActivity       , qttAccountStage );

  TQueryDataType = ( qdtCustom, qdtOrder, qdtEstimate, qdtCompany, qdtContact, qdtTemplate, qdtLineItem,
                     qdtEmployee, qdtActivity, qdtProduct, qdtTransHeader, qdtTransDetailParam, qdtOrderHistory, qdtEstimateHistory, qdtDisposition,
                     qdtStation, qdtPriority, qdtSalesPerson1, qdtSalesPerson2, qdtSalesPerson3, qdtAssignedTo, qdtServiceContractType, qdtRegion, qdtCompanyAddressLink,
                     qdtCompanyAddress, qdtProductCategory, qdtTaxClass, qdtEmployeeGroup, qdtCourse, qdtLocation, qdtCourseSectionType, qdtContactAddressLink,
                     qdtContactAddress, qdtPurchaseOrder, qdtPOItem, qdtBill, qdtReceivingDoc, qdtAccountStage );

  // note - opposite/negation of operator is always next value
  TOperator = (                         // comparison operators
    copEqual, copNotEqual, copLessThan, copGreaterThanEqualTo,
    copGreaterThan, copLessThanEqualTo, copBetween, copNotBetween,
    copIn, copNotIn, copLike, copNotLike, copIsNULL, copNotIsNULL,
    copNotBlankString, copBlankString,
                          // boolean operators
    bopAnd, bopNand, bopOr, bopNor,
                          // math operators
    mopAdd, mopSubtract, mopMultiply, mopDivide,

    copInSubQuery, copNotInSubQuery
    );
  TComparisonOperator = copEqual..copBlankString;
  TBooleanOperator = bopAnd..bopNor;
  TMathOperator = mopAdd..mopDivide;

  TOperators = set of TOperator;
  TComparisonOperators = set of TComparisonOperator;
  TBooleanOperators = set of TBooleanOperator;
  TMathOperators = set of TMathOperator;

  TAggrFunc = ( afNone, afSum, afCount, afMax, afMin, afAvg );

  TJoinType = ( jtLeft, jtRight, jtInner );

  TSelectionFieldRec = record
    AggrFunc: TAggrFunc;
    FieldName: string;
    AliasName: string;
    OrderByDesc: Boolean;
  end;

  TSelectionFieldRecs = array of TSelectionFieldRec;

  TCriteriaInputOption = ( cioNone, cioText,
    cioDateRange, cioDate,
    cioAmountRange, cioAmount,
    cioTimeRange, cioTime );

  TTemplateOptionType = ( totNone, totScreen, totWebInput, totInvoice, totEstimate, totWorkOrder, totEmployeeWeb, totCompanyWeb );

  TCallType = ( ctBuilt, ctARs );

  TActivityPriority     = ( apNone, apLow, apNormal, apHigh );
  TActivityCalendarType = ( ac1Day, ac5Days, acCustom, ac7Days, acMonth, acTimeGrid );

  TDaysOfWeek = ( dowSunday, dowMonday, dowTuesday, dowWednesday, dowThursday, dowFriday, dowSaturday );
  TDaysOfWeekSet = set of TDaysOfWeek;
  TMonthsOfYear = ( moyJanuary, moyFebruary, moyMarch, moyApril, moyMay, moyJune, moyJuly, moyAugust, moySeptember, moyOctober, moyNovember, moyDecember );
  TMonthsOfYearSet = set of TMonthsOfYear;
  TBillingType = ( btNotBilled, btBilledAsActual, btOther );

  TTablePricingAction = ( tpaGetNextValue, tpaGetPrevValue, tpaCalcValue, tpaDisplayMsg );

  TIOTemplateType = ( iotUndefined, iotPCInputTemplate, iotOutputTemplate, iotWebInputTemplate, iotCanvasTemplate );
  TIOTextFormat = ( iotfForm, iotfXSL, iotfHTML, iotfFormula, iotfXML );
  TIOTextFormats = set of TIOTextFormat;

  TFormulaVerifierType = ( fvtProducts, fvtModifiers, fvtParts, fvtVariables, fvtSelectionLists, fvtUserConstants, fvtProductLayouts, fvtPricingForms );
  TFormulaVerifierTypes = set of TFormulaVerifierType;

  //TOutputDestination = (odWord, odExcel, odEMail);
  //TExportFileType = (eftCSV, eftExcel);
  //TOutputOption = (ooNone);
  TTagAction = ( taNone, taSetTag, taClearTag );

  TPricingType = ( ptOneTime, ptPerPiece, ptPerQtyApplied, ptPerPiecePerQtyApplied, ptAdjFactor, ptMarkup );
  TPricingTypes = set of TPricingType;

  TPricingMethodType = ( pmtNone, pmtProduct, pmtModifier );

  TParamType = ( prNumber, prText, prBoolean, prList, prTable, prImage, prCollList, prDTValue );
  TParamTypes = set of TParamType;
  TParamUnitType = ( utNone, utEach, utWeight, utLength, utArea, utVolume, utTime, utRate );

  TImageSaveType = ( istThumbnail, istOriginal, istNoSave);

  TSelectionListSortType = ( slstAscend, slstDescend );

  TBillSortType = ( bstDueDate, bstVendor, bstBillNum, bstBillDate, bstBalanceDue, bstDivision );

  TDateType = (dtTaxExemption, dtCreditApproval);
  TContractDateType = (cdtContractStart, cdtContractExpiration);
  TDateOffsetType = (dotCurrent, dotFixedDate, dotDays, dotMonths, dotYears);

  TParamSystemListType = ( pslPriorities, pslTicketTypes );

  // User License types
  TUserLicenseType = (ulFull, ulPartial);
  TPartialLicenseTemplateType = (pltDefault);

  TPartType = ( pptMaterial, pptLabor, pptEquipment, pptOutsource, pptOther, pptFreight, pptLocation, pptExpense );
  TPartTypes = set of TPartType;

  TAccountStageType = (astProspect, astClient);

  TViewPartInfoType = ( vpitProductRelationship, vpitPartType  );

  TUpdateTaxClassType = ( utcLeaveAsIs, utcSetOV, utcUpdate );

  TAutoCreatePartUsageType = ( auNever, auBuilt, auSale );
  TAutoCreatePartUsageTypes = set of   TAutoCreatePartUsageType;

  TPaymentTermType = ( ptoAll, ptoARs, ptoAPs );

  TTipType = ( tpNoTip, tpGiveTip, tpAlreadyPaid, tpRefundCash );

  TInstanceType = ( itOnlyOne, itMultiple, itEmployee );
  TInstanceTypes = set of TInstanceType;

  TDiscountType = ( dtPercentage, dtAmount, dtPerPieceAmount );
  TListFxType   = ( lfCustom, lfDefault, lfAllParts, lfNoParts );

  //Activity Types
                          //       00                  ,     01                    ,     02              ,     03                  ,     04
  TJournalActivityType = (     jaNone                  , jaTimeCard                , jaPayment           , jaOrder                 , jaEstimate        ,
  //     05                  ,     06                  ,     07                    ,     08              ,     09                  ,     10
    jaTemplate               , jaCompany               , jaSystem                  , jaProduct           , jaModifier              , jaContactActivity ,
  //     11                  ,     12                  ,     13                    ,     14              ,     15                  ,     16
    jaScheduledOrder         , jaScheduledQuery        , jaCloseOut                , jaEmail             , jaNote                  , jaMacroActivity   ,
  //     17                  ,     18                  ,     19                    ,     20              ,     21                  ,     22
    jaPartUsage              , jaCreditMemo            , jaContactActivityTemplate , jaEmailTemplate     , jaImport                , jaPCCharge        ,
  //     23                  ,     24                  ,     25                    ,     26              ,     27                  ,     28
    jaLineItem               , jaBackup                , jaServiceTicket           , jaServiceTicketItem , jaReport                , jaWorkAssignment  ,
  //     29                  ,     30                  ,     31                    ,     32              ,     33                  ,     34
    jaWorkAssignmentTemplate , jaLogin                 , jaLogout                  , jaPurchaseOrder     , jaTip                   , jaTipPaidOff      ,
  //     35                  ,     36                  ,     37                    ,     38              ,     39                  ,     40
    jaReservationActivity    , jaBill                  , jaReceivingDoc            , jaMakeDeposit       , jaAccountReconciliation , jaJournalEntry    ,
  //     41                  ,     42                  ,     43                          44              ,     45                  ,     46
    jaViewingCCNumber        , jaMacroActivityTemplate , jaBillPayment             , jaPayroll           , jaStationActivity       , jaPayrollPayment  ,
  //     47                        48                        49
    jaSignatureActivity      , jaEULATerms             , jaAccountStageActivity);

  TJournalActivityTypes = set of TJournalActivityType;

  //                                00                01                          02
  TReservationActivityStatus = ( rasPending     , rasCheckedIn              , rasCheckedInBilled  ,
  //                                03
                                 rasClosed      );

  TReservationActivityStatuses = set of TReservationActivityStatus;

  TIndividualReplacement = ( irNone, irTransactionEnteredBy,
    irTransactionSalesperson1, irTransactionSalesperson2, irTransactionSalesperson3,
    irCompanySalesperson1, irCompanySalesperson2, irCompanySalesperson3,
    irTransactionContact, irCompanyPrimaryContact, irCompanyBillingContact,
    irSelectedContact, irSelectedEmployee );

  TIndividualReplacements = set of TIndividualReplacement;

  TActivityType = ( atNone, atNew, atEdit, atMarkConverted, atMarkLost, atMarkWIP, atMarkBuilt,
    atMarkSale, atMarkClosed, atMarkVoided, atChangeStation, atMarkVoidedEstimate,
    atMarkUnclosedEstimate, atCreditMemo, atMarkServiceSale,
    atMarkServiceBuilt, atMarkServiceWIP, atMarkServiceVoided, atMarkServiceClosed, atBackupFailure, atBackupSuccess,
    atOther, atCall, atAppointment, atMeeting, atToDo, atWorkAssignment,
    atLogin, atLogout, atProofApproval, atMarkDropped,
    atMarkPORequested, atMarkPOApproved, atMarkPOOrdered, atMarkPOClosed, atMarkPOCancelled, atMarkPORejected, atMarkPOReceived,
    atMarkPOConverted, atMarkRDConverted, atMarkBillConverted, atChangeAccountStage,
    atInvAutoPartUsageCard, atInvManualEdit, atInvTransfer, atInvProductionTerminalUsage, atInvManualPartUsageCard );

  TActivityTypes = set of TActivityType;

  TGLEntryType = (gleUnknown, gleManual, gleTransaction, glePayment, gleCompany, glePartUsage, glePayroll);

  TTransActivityType = atNone..atMarkBillConverted;
  TContactActivityType = atOther..atWorkAssignment;

  TIncludeType = ( itOnly, itExclude, itInclude );

  TMakeChangeType = ( mcLeaveAsIs, mcMakeTrue, mcMakeFalse );

  TRoundingOption = ( roBasePrice, roUnitPrice );

  TPartRoundingOptions = ( proWhole, proHalf, proQuarter, proFifth, proTenth, proHundredth, proThousandth, proTenThousandth, proEighth, pro5, pro10, pro25, pro50, pro100, pro250, pro500, pro1000, proCustom );

  TUserFieldDataType = ( ufdtBoolean, ufdtNumber, ufdtString, ufdtImage, ufdtDate, ufdtTime, ufdtDateTime, ufdtDivider, ufdtSectionBreak, ufdtCompany, ufdtContact, ufdtEmployee );
  TUserFieldCategoryType = ( ufctNone, ufctTransHeader, ufctCompany, ufctContact );
  TUserFieldCategoryTypes = set of TUserFieldCategoryType;

  TStaticCriteriaType = ( sctNone, sctDate, sctString, sctNumber, sctTime, sctBoolean, sctStatus, sctOrderStatus, sctEstimateStatus );
                    //  00             01              02                 03                  04        05
  TQuerySpawnType = ( qstNone      , qstDate       , qstString        , qstNumber         , qstTime , qstBoolean        ,
                    //  06             07              08                 09                  10        11
                      qstStatus    , qstOrderStatus, qstEstimateStatus, qstUDF            , qstQuery, qstJournalActivity,
                    //  12             13              14                 15
                      qstBillStatus, qstPOStatus   , qstRecDocStatus  , qstRecurrenceType );

  TDateCriteriaType   = ( dctNone, dctToday, dctThisWeek, dctThisMonth, dctThisYear, dctLast3Months,
                          dctLast6Months, dctLast12Months, dctYesterday, dctLastWeek, dctLastMonth,
                          dctLastYear, dctOver3MonthsAgo, dctOver6MonthsAgo, dctOver12MonthsAgo );

  TTransDetailViewType = ( dvtNone, dvtInputTemplate, dvtSummaryOutputTemplate, dvtDetailOutputTemplate, dvtParts, dvtLineItemActivities, dvtSchedule, dvtAdvanced );

  TEmailOptionType = ( eoInternal, eoOutlook );

  TEmailPortType = ( eptNone, eptDefaultSMTP, eptTLS );

  TStdDateType = (sdtNone, sdtAllTimeStart, sdtAllTimeEnd, sdtPrintTime,
                  sdtTodayStart, sdtTodayEnd, sdtThisWeekStart, sdtThisWeekEnd,
                  sdtThisMonthStart, sdtThisMonthEnd, sdtThisYearStart, sdtThisYearEnd,
                  sdtThisQuarterStart, sdtThisQuarterEnd, sdtLastQuarterStart, sdtLastQuarterEnd,
                  sdtYesterdayStart, sdtYesterdayEnd, sdtLastWeekStart, sdtLastWeekEnd,
                  sdtLastMonthStart, sdtLastMonthEnd, sdtLastYearStart, sdtLastYearEnd,
                  sdtTomorrowStart, sdtTomorrowEnd, sdtNextWeekStart, sdtNextWeekEnd,
                  sdtNextMonthStart, sdtNextMonthEnd, sdtNextYearStart, sdtNextYearEnd,
                  sdtPastWeekStart, sdtPastWeekEnd, sdtPastBiweekStart, sdtPastBiweekEnd,
                  sdtPastSixMonthStart, sdtPastSixMonthEnd, sdtPastMonthStart, sdtPastMonthEnd,
                  sdtPastYearStart, sdtPastYearEnd,
                  sdtLastBiweekStart, sdtLastBiweekEnd,
                  sdtLastSixMonthStart, sdtLastSixMonthEnd,
                  sdtLastDailyCloseout, sdtPriorDailyCloseout, sdtLastWeeklyCloseout, sdtPriorWeeklyCloseout,
                  sdtLastMonthlyCloseout, sdtPriorMonthlyCloseout, sdtLastQuarterlyCloseout, sdtPriorQuarterlyCloseout,
                  sdtLastYearlyCloseout, sdtPriorYearlyCloseout, sdtLastRoyaltyCloseout, sdtPriorRoyaltyCloseout,
                  sdtLastExportCloseout, sdtPriorExportCloseout, sdtLastPCChargeSettlement, sdtPriorPCChargeSettlement,
                  sdtLastSessionCloseout, sdtPriorSessionCloseout,
                  sdtCustom );

  TConsiderProc = procedure (Sender : TObject; aID : TIDRecord; var Result : boolean) of object;
  TPCChargeProcessorRec = record
    CompanyName: string;
    ShortName: string;
  end;

  TActualPartUsageOption = (apuUseEstimated, apuUseZero, apuUseZeroForWIP);

  TAdditionalWithholdingType = ( awtNone, awtFixedAmount, awtPercentage );

  TMaritalStatusType = ( mstUnknown, mstSingle, mstMarried );

  TPTOType = ( ptoNone, ptoVacation, ptoSickTime, ptoHoliday );

  TPTOEarningType = ( petFixed, petStraightTime, petAllHours );

const
  ReservedPricingNames: array [0..14] of string = ('QUESTION'    , 'MODIFIERCODE'  , 'BARCODE'       , 'PRICINGLEVEL'  ,
                                                   'PRICINGLEVEL', 'COSTBASEDPRICE', 'MATERIALCOST'  , 'EQUIPMENTCOST' , 'LABORCOST'    ,
                                                   'OTHERCOST'   , 'OUTSOURCECOST' , 'OVERHEADCOST'  , 'TOTALCOST'     , 'FREIGHTCOST'  ,
                                                   'UNITPARAMETER');

  PCChargeProcessors: array [0..18] of TPCChargeProcessorRec =
                      ( ( CompanyName : 'Alliance Data Systems, Inc.' ; ShortName : 'ADSI' ) ,
                        ( CompanyName : 'BuyPass, Inc.'               ; ShortName : 'BPAS' ) ,
                        ( CompanyName : 'Concord / EFS'               ; ShortName : 'CCRD' ) ,
                        ( CompanyName : 'ECHO'                        ; ShortName : 'ECHO' ) ,
                        ( CompanyName : 'FDMS - Omaha'                ; ShortName : 'FDC'  ) ,
                        ( CompanyName : 'FDMS - Nashville'            ; ShortName : 'FDCN' ) ,
                        ( CompanyName : 'FDMS - South'                ; ShortName : 'NB'   ) ,
                        ( CompanyName : 'FDMS - North'                ; ShortName : 'CES'  ) ,
                        ( CompanyName : 'First Hawaiian'              ; ShortName : 'FHAW' ) ,
                        ( CompanyName : 'First Horizon'               ; ShortName : 'FTMS' ) ,
                        ( CompanyName : 'Global Payments - East'      ; ShortName : 'NDC'  ) ,
                        ( CompanyName : 'Global Payments - Central'   ; ShortName : 'MAPP' ) ,
                        ( CompanyName : 'Lynk Systems'                ; ShortName : 'LYNK' ) ,
                        ( CompanyName : 'CardSystems'                 ; ShortName : 'MVRK' ) ,
                        ( CompanyName : 'National Processing Company' ; ShortName : 'NPC'  ) ,
                        ( CompanyName : 'NOVA'                        ; ShortName : 'NOVA' ) ,
                        ( CompanyName : 'Paymentech'                  ; ShortName : 'GSAR' ) ,
                        ( CompanyName : 'Royal Bank of Canada'        ; ShortName : 'RBOC' ) ,
                        ( CompanyName : 'Vital'                       ; ShortName : 'VISA' ) );

  ContactActivityImages : array [TContactActivityType] of integer =
  ( iidUser, iidCall, iidAppointment, iidMeeting, iidToDo, iidWorkAssignment );

  ceEqual = copEqual;

  gSalespersonCount = 3;
  gInstructorCount  = 3;

  //SMS Constants
  gCommRateProdLocCount = 2;
  gSpecialEquipmentCount = 2;
  gProductionCatSalesCount = 3;
  gMarketingFlagCount = 25;

//  SQLDatabase     = 'Access';
//  SQLBooleanText  = 'Logical';
//  SQLMemoText     = 'Memo';
//  SQLFloatText    = 'Float';
//  SQLDateTimeText = 'Timestamp';
//  SQLAlter2ndAdd  = FALSE;

  InchToCm = 2.54;
  QuartToLiter = 0.9460737938;
  PoundToKg = 0.4535923701;

  bwAuto = 0;                           // Used in ActionCollTBFrame to turn on button auto-sizing

  MaxGLLevels = 5;

  asoAll = [ Low( TAccountSaveOption     )..High( TAccountSaveOption     ) ] ;
  tsoAll = [ Low( TTransactionSaveOption )..High( TTransactionSaveOption ) ] ;
  osoAll = [ Low( TOptionSaveOption      )..High( TOptionSaveOption      ) ] ;

  ConnectionStrings : array [TDatabaseType] of string =
     {dbtDefault}( ''
     {dbtAccess} , 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%0:s\%1:s;Persist Security Info=False;Jet OLEDB:Database Password=%2:s'
     {dbtParadox}, 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%0:s\%1:s;Extended Properties="Paradox 7.x"'
     {dbtMSSQL}  , 'Provider=SQLOLEDB.1;Password=%2:s;Persist Security Info=True;User ID=%3:s;Initial Catalog=%1:s;Data Source=%0:s;Application Name=%5:s;Workstation ID=%6:s'
     {dbtManual} , ''
     {dbtBMS}    , 'Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER={ProvideX ODBC Driver};Directory=%0:s;SERVER=NotTheServer;LogFile=\PVXODB32.LOG;Prefix=%4:sdata\"'
    );

  URLMapStrings : array [TMapAddressType] of string =
     {matMapQuest} ('http://www.MapQuest.com/maps/map.adp?city=%0:s&state=%1:s&address=%2:s&zip=%3:s&country=%4:s'
     {matMultimap}, 'http://www.multimap.com/map/places.cgi?&db=%4:s&overviewmap=&addr2=%2:s&addr3=%0:s&state=%1:s&pc=%3:s'
     {matYahoo   }, 'http://maps.yahoo.com/maps_result?addr=%2:s&csz=%0:s%%2C+%1:s+%3:s&country=%4:s&new=1&name=&qty='
     {matGoogle  }, 'http://maps.google.com/maps?&q=%2:s%%2C+%0:s%%2C+%1:s%%2C+%3:s'
     //{matMSN     }, 'http://maps.msn.com/home.aspx?strt1=%2:s&city1=%0:s&stnm1=%1:s&zipc1=%3:s&cnty1=%4:s'
    );

  URLDirectionStrings : array [TMapAddressType] of string =
     {matMapQuest} ('http://www.MapQuest.com/directions/main.adp?Go=1&1a=%7:s&1c=%5:s&1s=%6:s&1z=%8:s&1y=%9:s&2a=%2:s&2c=%0:s&2s=%1:s&2z=%3:s&2y=%4:s'
     {matMultimap}, ''
     {matYahoo   }, 'http://maps.yahoo.com/dd_result?addr=%7:s&csz=%5:s,%6:s+%8:s&country=%9:s&taddr=%2:s&tcsz=%0:s,%1:s+%3:s&tcountry=%4:s'
     {matGoogle  }, 'http://maps.google.com/maps?q=from%%3A+%5:s,+%6:s,+%7:s+%8:s+to%%3A+%0:s,+%1:s,+%2:s+%3:s'//&t=k&f=d&hl=en'
     //{matMSN     }, 'http://maps.msn.com/directionsFind.aspx?strt1=%0:s&city1=%1:s&stnm1=%2:s&zipc1=%3:s&strt2=%5:s&city2=%6:s&stnm2=%7:s&zipc2=%8:s&rtype=Quickest' //&cnty1=%4:s - MSN uses a numeric system for country
    );


  CourseEnrollmentTypeText : array[TCourseEnrollmentType] of string =
    ('Ongoing Enrollment until dropped', 'Enrolled in specific classes');

  TimeSpanDurationText : array[TTimeSpanDuration] of string =
    ('Minutes', 'Hours', 'Days');

  // Standard Adv Query Top Level Category
  aqcIDOrder           : TIDRecord = ( ID : 100 + Ord( expOrder );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDEstimate        : TIDRecord = ( ID : 100 + Ord( expEstimate );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDCompany         : TIDRecord = ( ID : 100 + Ord( expCompany );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDSubsidiary      : TIDRecord = ( ID : NoID;ClassTypeID : NoID ); // ( ID: 100 + Ord( expSubsidiary );ClassTypeID: ctAdvQueryMgrCategory   );
  aqcIDContact         : TIDRecord = ( ID : 100 + Ord( expContact );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDTemplate        : TIDRecord = ( ID : 100 + Ord( expTemplate );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDLineItem        : TIDRecord = ( ID : 100 + Ord( expLineItem );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDEmployee        : TIDRecord = ( ID : NoID;ClassTypeID : NoID ); // ( ID: 100 + Ord( expEmployee   );ClassTypeID: ctAdvQueryMgrCategory   );
  aqcIDActivity        : TIDRecord = ( ID : 100 + Ord( expActivity );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDOrderHistory    : TIDRecord = ( ID : 100 + Ord( expOrderHistory );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDEstimateHistory : TIDRecord = ( ID : 100 + Ord( expEstimateHistory );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDServiceTicket   : TIDRecord = ( ID : 100 + Ord( expServiceTicket );ClassTypeID : ctAdvQueryMgrCategory ); // ( ID: 100 + Ord( expServiceTicket   );ClassTypeID: ctAdvQueryMgrCategory   );
  aqcIDCourse          : TIDRecord = ( ID : 100 + Ord( expCourseSection );ClassTypeID : ctAdvQueryMgrCategory ); // ( ID: 100 + Ord( expCourse   );ClassTypeID: ctAdvQueryMgrCategory   );
  aqcIDPurchaseOrder   : TIDRecord = ( ID : 100 + Ord( expPurchaseOrder );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDPOItem          : TIDRecord = ( ID : 100 + Ord( expPOItem );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDBill            : TIDRecord = ( ID : 100 + Ord( expBill );ClassTypeID : ctAdvQueryMgrCategory );
  aqcIDReceivingDoc    : TIDRecord = ( ID : 100 + Ord( expReceivingDoc );ClassTypeID : ctAdvQueryMgrCategory );

  // Standard Macro Top Level Category
  //                                  ID:  101
  rcIDOrder           : TIDRecord = ( ID : 100 + Ord( rctOrder           );ClassTypeID : ctMacroCategory );
  //                                  ID:  102
  rcIDEstimate        : TIDRecord = ( ID : 100 + Ord( rctEstimate        );ClassTypeID : ctMacroCategory );
  //                                  ID:  103
  rcIDTemplate        : TIDRecord = ( ID : 100 + Ord( rctTemplate        );ClassTypeID : ctMacroCategory );
  //                                  ID:  104
  rcIDCompany         : TIDRecord = ( ID : 100 + Ord( rctCompany         );ClassTypeID : ctMacroCategory );
  //                                  ID:  105
  rcIDContact         : TIDRecord = ( ID : 100 + Ord( rctCompanyContact  );ClassTypeID : ctMacroCategory );
  //                                  ID:  106
  rcIDEmployee        : TIDRecord = ( ID : 100 + Ord( rctEmployee        );ClassTypeID : ctMacroCategory );
  //                                  ID:  107
  rcIDServiceTicket   : TIDRecord = ( ID : 100 + Ord( rctServiceTicket   );ClassTypeID : ctMacroCategory );
  //                                  ID:  108
  rcIDPart            : TIDRecord = ( ID : 100 + Ord( rctPart            );ClassTypeID : ctMacroCategory );
  //                                  ID:  109
  rcIDLineItem        : TIDRecord = ( ID : 100 + Ord( rctLineItem        );ClassTypeID : ctMacroCategory );
  //                                  ID:  110
  rcIDCourseEvent     : TIDRecord = ( ID : 100 + Ord( rctCourseEvent     );ClassTypeID : ctMacroCategory );
  //                                  ID:  111
  rcIDWorkAssignment  : TIDRecord = ( ID : 100 + Ord( rctWorkAssignment  );ClassTypeID : ctMacroCategory );
  //                                  ID:  112
  rcIDPurchaseOrder   : TIDRecord = ( ID : 100 + Ord( rctPurchaseOrder   );ClassTypeID : ctMacroCategory );
  //                                  ID:  113
  rcIDBill            : TIDRecord = ( ID : 100 + Ord( rctBill            );ClassTypeID : ctMacroCategory );
  //                                  ID:  114
  rcIDReceivingDoc    : TIDRecord = ( ID : 100 + Ord( rctReceivingDoc    );ClassTypeID : ctMacroCategory );

  MonthsOfYearText : array[TMonthsOfYear] of String=
  ( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' );


  AllPricingTypes = [low( TPricingType )..high( TPricingType )] ;
  PricingTypeText : array[TPricingType] of String = ('One Time', 'Per Piece', 'Per Qty Applied', 'Per Piece Per Qty Applied', 'Adjustment Factor', 'Markup');

  AllFormulaVerifierTypes = [low( TFormulaVerifierType )..high( TFormulaVerifierType )];
  FormulaVerifierTypeText : array[TFormulaVerifierType] of String = ('Products', 'Modifiers', 'Parts', 'Variables', 'SelectionLists', 'User Constants', 'Product Layouts', 'Pricing Forms');

  WorkHistoryTypeText : array[TWorkHistoryType] of String = ('History', 'Time Clock History', 'Material History', 'Status Change History', 'Station Change History', 'Stage Change History');

  ParamTypeText : array[TParamType] of String = ('Number', 'Text', 'Yes/No', 'List', 'Table', 'Image', 'System List', 'Date Time');

  ImageSaveTypeText : array[TImageSaveType] of String = ( 'Save As Thumbnail', 'Save Original', 'Do Not Save Image');

  SelectionListSortTypeText : array[TSelectionListSortType] of string =
  ( 'Ascending', 'Descending' );

  BillSortTypeText : array[TBillSortType] of string =
  ( 'Bill Number', 'Bill Date', 'Vendor', 'Due Date', 'Amount Due', 'Division' );

  // User License Type strings
  UserLicenseTypeText : array[TUserLicenseType] of String = ( 'Full', 'Partial' );
  PartialLicenseTemplateTypeText : array[TPartialLicenseTemplateType] of String = ( 'Default' );

  ParamSystemListTypeText : array[TParamSystemListType] of String = ( 'Priorities', 'Ticket Types' );
  ParamSystemListCollName : array[TParamSystemListType] of String = ( 'ServiceTicketPriorities', 'ServiceTicketTypes' );
  SystemListDefaultOptionText : array[TParamSystemListType] of String = ( 'DefPriorityID', '' );

  TDateTypeText : array[TDateType] of String = ('Tax Exemption Date', 'Credit Approval Date');
  TContractDateTypeText : array[TContractDateType] of String = ('Contract Start Date', 'Contract Expiration Date');
  TDateOffsetTypeText : array[TDateOffsetType] of STring = ('Current', 'Fixed Date', 'Days', 'Months', 'Years');

  TenderTypeText  : array[TTenderType] of String =
  ( 'Cash', 'Check', 'Credit Card', 'Debit Card', 'Other', 'Electronic Fund Transfer', 'System', 'Wire Transfer' );

  CreditCardTypeText  : array[TCreditCardType] of String =
  ( 'American Express', 'MasterCard', 'Visa', 'Discover', 'Diners Club', 'Other', 'Diners Club International', 'Bank Card', 'Maestro', 'Visa Electron', 'JCB' );

  ParamUnitTypeText : array[TParamUnitType] of String
  = ( 'None', 'Each', 'Weight', 'Length', 'Area', 'Volume', 'Time', 'Rate' );

  PartTypeText          : array[ TPartType ] of String
  = ( 'Material', 'Labor', 'Equipment', 'Outsource', 'Other', 'Freight', 'Location', 'Expense' );

  AutoCreatePartUsageTypeString : array[TAutoCreatePartUsageType] of string
  = ( 'Never', 'Built', 'Sale' );

  PaymentTermTypeText : array[ TPaymentTermType ] of string
  = ('All', 'A/R''s', 'A/P''s' );

  TipTypeText: array[ TTipType ] of string
  = ( 'No Tip', 'Give Tip', 'Tip Already Paid Out', 'Refund Cash for Tip' );

  AllPartTypes = [low( TPartType )..high( TPartType )] ;

  PartRoundingOptionText : array [TPartRoundingOptions] of string
  = ( 'Whole', '1/2', '1/4', '1/5', '1/10', '1/100', '1/1000', '1/10000', '1/8', '5', '10', '25', '50', '100', '250', '500', '1000', '<Custom>' );

  RenewalPeriodText : array[TRenewalPeriodType] of String
  = ( 'None', 'Monthly', 'Bi-Monthly', 'Quarterly', 'Every Six Months', 'Yearly'  );

  VariableSaveOptionText : array[TVariableSaveOption] of string
  = ( 'Quick Save', 'Save Extra Information for Reporting and Enhanced Search Capabilities (slower)', 'Don''t save at all - for Temporary Use only (non-persistent)' );

  AllExplorerQueryTypes = [low( TExplorerQueryType )..high( TExplorerQueryType )] ;

  ExplorerQueryTypeString : array[TExplorerQueryType] of String
  = ( 'None', 'Order', 'Estimate', 'Company', 'Subsidiary', 'Contact', 'Recurring Order', 'Line Item', 'Employee', 'Activity', 'Transaction', 'Order In History', 'Estimate History', 'Service Ticket', 'Course', 'Purchase Order', 'Purchase Order Item', 'Bill', 'Receiving Doc' );

  VariationGridTypeText : array[TVariationGridType] of String
  =( 'Cost', 'Price', 'Margin', 'Unit Cost', 'Unit Price', 'Unit Margin' );

  ExplorerQueryPluralString : array[TExplorerQueryType] of String
  = ( 'None', 'Orders', 'Estimates', 'Companies', 'Subsidiaries', 'Contacts', 'Recurring Orders', 'Line Items', 'Employees', 'Activities', 'Transactions',  'Orders In History', 'Estimate Histories', 'Service Items', 'Courses', 'Purchase Orders', 'Purchase Order Items', 'Bills', 'Receiving Docs' );

  ExplorerQueryTypeImageIndex : array [TExplorerQueryType] of Integer
  = ( -1, iidOrder, iidEstimate, iidCompany, iidCompany, iidContact, iidTemplate, iidTransDetailParent, iidEmployee, iidActivityManager, iidOrder, iidOrderHistory, iidEstimateHistory, iidServiceTicket, iidCourse, iidPurchaseOrder, iidTransDetailParent, iidPurchaseOrder, iidPurchaseOrder );

  ExplorerQueryActionID : array [TExplorerQueryType] of Integer
  = ( NoID, actExploreOrder, actExploreEstimate, actExploreCompany, actExploreCompany, actExploreContact,
    actExploreTemplate, actExploreLineItem, NoID, actExploreActivity, NoID, actExploreOrderHistory, actExploreEstimateHistory, actExploreServiceTicket, actExploreCourse,
    actExplorePurchaseOrder, actExplorePOItems, actExploreBill, actExploreReceivingDoc );

  ListFxText     : array[TListFxType] of String = ('Custom Formula', 'Default', 'All Parts', 'No Parts');

  DatabaseText      : array[TDatabaseType] of String =
  ( 'Default'
    , 'Access'
    , 'Paradox'
    , 'SQL Server'
    , 'Manual'
    , 'BMS'
    );

  MapAddressText  : array [TMapAddressType] of string =
  (
     'MapQuest'
   , 'Multimap'
   , 'Yahoo!'
   , 'Google'
  );


  OperatorTypeText : array [TOperator] of string =
  ( 'Equal', 'Not Equal', 'Less Than', 'Greater Than or Equal To',
    'Greater Than', 'Less Than or Equal To', 'Between', 'Not Between',
    'In', 'Not In', 'Like', 'Not Like', 'Is NULL', 'Is Not NULL',
    'Not Blank String', 'Blank String',
    'And', 'Nand', 'Or', 'Nor',
    'Add', 'Subtract', 'Multiply', 'Divide',
    'In SubQuery', 'Not In SubQuery' );

  AggrFuncText : array [TAggrFunc] of string =
  ( '', 'SUM', 'COUNT', 'MAX', 'MIN', 'AVG' );

  AggrFuncDisplayText : array [TAggrFunc] of string =
  ( '', 'Total', 'NumberOf', 'Max', 'Min', 'Average' );

  CriteriaInputOptionText : array [TCriteriaInputOption] of string =
  ( '(none)', 'Text', 'Date Range', 'Date', 'AmountRange', 'Amount','Time Range', 'Time' );

  JoinTypeText : array [TJoinType] of string =
  ( 'LEFT', 'RIGHT', 'INNER' );

  QueryTableText  : array[TQueryTableType] of String =
  ( '', 'TransHeader', 'TransHeader', 'Account', 'AccountContact',
    'TransHeader', 'TransDetail', 'Employee', 'Journal', 'TransHeaderUserField',
    'TransHeaderUserField', 'AccountUserField', 'AccountContactUserField', 'TransHeaderUserField', 'EmployeeUserField',
    'Address', 'Address', 'Address', 'Address', 'Address',
    'Address', 'PhoneNumber', 'PhoneNumber', 'PhoneNumber', 'PhoneNumber',
    'PhoneNumber', 'PhoneNumber', 'Journal', 'Journal', 'Journal',
    'Journal', 'CustomerGoodsItem', 'TransHeader', 'TransDetailParam', 'AccountContact',
    'TransHeaderHistory', 'TransHeaderHistory', 'TransHeaderHistoryUserField', 'TransHeaderHistoryUserField', 'Element',
    'Station', 'ServiceTicketPriority', 'Employee', 'Employee', 'Employee',
    'Employee', 'ServiceContractType', 'MarketingListItem', 'AddressLink', 'Address',
    'PricingElement', 'TaxClass', 'EmployeeGroup', 'CourseTerm', 'Part',
    'PricingElement', 'AddressLink', 'Address', 'TransHeader', 'VendorTransDetail', 'TransHeader', 'TransHeader', 'Payment',
    'Element');

  QueryTableCommonText  : array[TQueryTableType] of String =
  ( '', 'Order', 'Estimate', 'Company', 'Contact', 'Template', 'LineItem', 'Employee', 'AnyActivity', 'OrderUserField',
    'EstimateUserField', 'CompanyUserField', 'ContactUserField', 'TemplateUserField', 'EmployeeUserField',
    'OrderInvoiceAddress', 'EstimateInvoiceAddress', 'CompanyBillingAddress', 'ContactBillingAddress', 'TemplateInvoiceAddress',
    'EmployeeAddress', 'CompanyPhoneNumber', 'ContactPhoneNumber', 'EmployeePhoneNumber', 'CompanyFaxNumber',
    'ContactFaxNumber', 'EmployeeFaxNumber', 'OrderActivity', 'EstimateActivity', 'ContactActivity',
    'OtherActivity', 'Product', 'TransHeader', 'TransDetailParam', 'PrimaryContact',
    'OrderHistory', 'EstimateHistory', 'OrderHistoryUserField', 'EstimateHistoryUserField', 'Disposition',
    'Station', 'Priority', 'SalesPerson1', 'SalesPerson2', 'SalesPerson3',
    'AssignedTo', 'ServiceContractType', 'Region', 'AddressLink', 'Address',
    'ProductCategory', 'TaxClass', 'EmployeeGroup', 'CourseSection', 'Location',
    'CourseSectionType', 'AddressLink', 'Address', 'TransHeader', 'VendorTransDetail', 'TransHeader', 'TransHeader', 'Payment', 'AccountStage' );


  QueryTableDataType : array [TQueryTableType] of TQueryDataType =
  ( qdtCustom, qdtOrder, qdtEstimate, qdtCompany, qdtContact, qdtTemplate, qdtLineItem, qdtEmployee, qdtActivity,
    qdtOrder, qdtEstimate, qdtCompany, qdtContact, qdtTemplate, qdtEmployee,
    qdtOrder, qdtEstimate, qdtCompany, qdtContact, qdtTemplate, qdtEmployee,
    qdtCompany, qdtContact, qdtEmployee,
    qdtCompany, qdtContact, qdtEmployee,
    qdtActivity, qdtActivity, qdtActivity, qdtActivity, qdtProduct,
    qdtTransHeader, qdtTransDetailParam, qdtCompany, qdtOrderHistory, qdtEstimateHistory, qdtOrderHistory, qdtEstimateHistory, qdtDisposition,
    qdtStation, qdtPriority, qdtSalesPerson1, qdtSalesPerson2, qdtSalesPerson3, qdtAssignedTo, qdtServiceContractType, qdtRegion, qdtCompanyAddressLink,
    qdtCompanyAddress, qdtProductCategory, qdtTaxClass, qdtEmployeeGroup, qdtCourse, qdtLocation, qdtCourseSectionType, qdtContactAddressLink,
    qdtContactAddress, qdtPurchaseOrder, qdtPOItem, qdtBill, qdtReceivingDoc, qdtActivity, qdtAccountStage);

  PrimaryQueryTableType : array [TQueryDataType] of TQueryTableType =
  ( qttCustom, qttOrder, qttEstimate, qttCompany, qttContact, qttTemplate, qttLineItem,
    qttEmployee, qttAnyActivity, qttProduct, qttTransHeader, qttTransDetailParam, qttOrderHistory, qttEstimateHistory, qttDisposition,
    qttWorkStation, qttPriority, qttSalesPerson1, qttSalesPerson2, qttSalesPerson3, qttAssignedTo, qttServiceContractType, qttRegion, qttCompanyAddressLink,
    qttCompanyAddress, qttProductCategory, qttTaxClass, qttEmployeeGroup, qttCourseSection, qttLocation, qttCourseSectionType, qttContactAddressLink,
    qttContactAddress, qttPurchaseOrder, qttPOItem, qttBill, qttReceivingDoc, qttAccountStage);

  QueryDataText  : array[TQueryDataType] of String =
  ( '', 'Order', 'Estimate', 'Company', 'Contact', 'Recurring Order', 'Line Item', 'Employee', 'Activity', 'Product', 'Transaction', 'Transaction Variable', 'Order History', 'Estimate History', 'Disposition', 'Stage', 'Priority',
    '1st SalesPerson', '2nd SalesPerson', '3rd SalesPerson', 'Assigned To', 'Contract Type', 'Region', 'Address Link', 'Address',
    'Product Category', 'Tax Class', 'Employee Group', 'Course Section', 'Location', 'Section Type', 'Address Link', 'Address', 'Purchase Order', 'PO Item', 'Bill', 'Receiving Document',
    'Company Stage');

  QueryDataTextPlural  : array[TQueryDataType] of String =
  ( '', 'Orders', 'Estimates', 'Companies', 'Contacts', 'Recurring Orders', 'Line Items', 'Employees', 'Activities', 'Products', 'Transactions', 'Transaction Variables', 'Order History', 'Estimate History', 'Dispositions', 'Stages', 'Priorities',
    'Primary SalesPeople', '2nd SalesPeople', '3rd SalesPeople', 'Assigned To Employees', 'Contract Types', 'Regions', 'Addresses Links', 'Addresses',
    'Product Categories', 'Tax Classes', 'Employee Groups', 'Course Sections', 'Locations', 'Section Types', 'Addresses Links', 'Addresses', 'Purchase Orders', 'PO Items', 'Bills', 'Receiving Documents',
    'Company Stages');

  BillingTypeText : array[TBillingType] of String =
  ( 'Not Billed', 'Billed As Actual', 'Billed As Other' );


  SSLIPSRunFrequencyText : array[TSSLIPSRunFrequency] of String =
  ( 'Run Once', 'Run Repeatedly' );

  SQLBatchTypeText : array[TSQLBatchType] of String =
  ('Retrieve Data from the Client', 'Transmit Data to the Client', 'Execute Command');

  SSLIPSUserLevelText: array[TSSLIPSUserLevel] of String =
  ( 'Franchise', 'Region', 'Store' );
  SSLIPSUserTypeText: array[TSSLIPSUserType] of String  =
  ( 'Admin', 'User' );

  AccountTypeText: array[TAccountType] of String =
  ( 'Both Accrual and Cash Account', 'Accrual Account Only', 'Cash Account Only' );

  ActivityPriorityText : array[TActivityPriority] of String =
  ( '', 'Low', 'Normal', 'High' );

  ContactActivityColor : array [TContactActivityType] of TColor =
  ( clGreen, clYellow, clAqua, clGray, clWhite, clTeal );

  ContactCallText : array[TContactCallType] of String =
  ( '', 'Estimate', 'Built', 'Order', 'AR', 'Marketing' );

  DaysInReceivableTypeText: array[TDaysInReceivableType] of string =
  ( 'All', ' < 30', '31 - 60', '61 - 90', '> 90' );

  ContactTypeText : array[TContactType] of String =
  ( 'Full Contact', 'Limited Contact' );

  GenderTypeText : array[TGenderType] of String =
  ( 'n/a', 'Male', 'Female');

  StudentTypeText : array[TStudentType] of String =
  ( 'Enrolled', 'Guest', 'On Wait List', 'Makeup' );

  MakeUpTypeText : array[TMakeUpType] of string =
  ( 'Can not Make Up', 'Can Make Up' );

  CloseOutText : array[TCloseOutType] of String =
  ( 'User Defined', 'Daily', 'Monthly', 'Yearly', 'Royalty', 'Export', 'Credit Card Settlement', 'Weekly', 'Quarterly', 'Session' );

  JournalActivityTypeString : array[TJournalActivityType] of String =
  ( '(none)', 'Time Card', 'Payment', 'Order', 'Estimate', 'Recurring Order', 'Company',
    'System', 'Product', 'Modifier', 'Contact Activity', 'Scheduled Order',
    'Scheduled Query', 'Close Out', 'Email', 'Note', 'Macro Activity',
    'Part Usage', 'Credit Memo', 'Contact Activity Template', 'Email Template', 'Import',
    'Credit Card Process', 'Line Item Activity', 'Database Back-Up', 'Service Ticket',
    'Service Ticket Item', 'Report', 'Work Assignment', 'Work Assignment Template',
    'Login', 'Logout', 'Purchase Order', 'Tip', 'Tip Paid Off', 'Reservation',
    'Bill', 'Receiving Document', 'Deposit Made', 'Account Reconciliation', 'Journal Entry',
    'View Credit Card Number', 'Macro Activity Template', 'Bill Payment', 'Payroll', 'Station Activity', 'Payroll Payment',
    'Signature Activity', 'EULA Activity', 'Stage Activity');

  AllJournalActivityTypes = [low( TJournalActivityType )..high( TJournalActivityType )] ;

  AllActivityTypes = [low( TActivityType )..high( TActivityType )] ;

  ReservationStatusText : array[TReservationActivityStatus] of String =
  ( 'Pending', 'Checked In', 'Checked In - Billed', 'Closed' );

  IndividualReplacementString : array [TIndividualReplacement] of string =
  ( '(none)', '%1:s/%0:s%4:s EnteredBy',
    '%1:s/%0:s%4:s Primary Salesperson', '%1:s/%0:s%4:s 2nd Salesperson', '%1:s/%0:s%4:s 3rd Salesperson',
    '%2:s Primary Salesperson', '%2:s 2nd Salesperson', '%2:s 3rd Salesperson',
    '%1:s/%0:s%4:s %3:s', '%2:s Primary %3:s', '%2:s Billing %3:s',
    'Selected %3:s', 'Selected Employee' );

  ActivityTypeString : array [TActivityType] of string =
  ( '', 'Created', 'Edited', 'Estimate Converted', 'Estimate Lost',
    'Order Status Marked WIP', 'Order Status Marked Built',
    'Order Status Marked Sale', 'Order Status Marked Closed',
    'Order Voided', 'Station Changed', 'Estimate Voided',
    'Estimate UnClosed', 'Credit Memo', 'Service Ticket Status Marked Sale',
    'Service Ticket Status Marked Built', 'Service Ticket Status Marked WIP',
    'Service Ticket Voided', 'Service Ticket Status Marked Closed', 'Failed Backup',
    'Successful Backup', 'Other', 'Call', 'Appt', 'Mtg', 'To Do', 'Work Assignment',
    'Login', 'Logout', 'Web Proof Approval', 'Order Status Marked Dropped',
    'Purchase Order Status Marked Requested', 'Purchase Order Status Marked Approved',
    'Purchase Order Status Marked Ordered', 'Purchase Order Status Marked Closed',
    'Purchase Order Cancelled', 'Purchase Order Rejected', 'Purchase Order Status Marked Received',
    'Purchase Order Converted', 'Receiving Document Converted', 'Bill Converted', 'Stage Changed',
    'Automatic Part Usage Card', 'Inventory Edited', 'Inventory Transfer', 'Production Terminal Usage',
    'Manual Part Usage Card' );

  IncludeTypeText : array[TIncludeType] of String =
  ( 'Show Only', 'Exclude', 'Include' );

  UserFieldDataTypeText : array[TUserFieldDataType] of String =
  ( 'Checkbox', 'Number', 'Text', 'Image', 'Date', 'Time', 'DateTime', 'Divider', 'Section Break', 'Company Link', 'Contact Link', 'Employee Link' );

  UserFieldCategoryTypeText : array[TUserFieldCategoryType] of String =
  ( 'None', 'Transaction', 'Company', 'Contact' );

  StaticCriteriaTypeText : array[TStaticCriteriaType] of String =
  ( '(none)', 'Date', 'String', 'Number', 'Time', 'Boolean', 'Status', 'Order Status', 'Estimate Status' );

  DateCriteriaTypeText : array[TDateCriteriaType] of String =
  ( '(none)', 'Today', 'This Week', 'This Month', 'This Year', 'Last 3 Months',
    'Last 6 Months', 'Last 12 Months', 'Yesterday', 'Last Week', 'Last Month',
    'Last Year', 'Over 3 Months Ago', 'Over 6 Months Ago', 'Over 12 Months Ago' );

  EmailOptionTypeText : array[TEmailOptionType] of String =
  ( 'Internal', 'Outlook' );

  EmailPortTypeText : array[TEmailPortType] of String =
  ( 'Use Default SMTP Port', 'Different SMTP Port Required', 'Use TLS' );

  AdditionalWithholdingTypeText : array[TAdditionalWithholdingType] of string =
  ( 'None', 'Fixed Amount', 'Percentage' );

  MaritalStatusTypeText : array[TMaritalStatusType] of string =
  ( 'Unknown', 'Single', 'Married' );

  PTOTypeText : array[TPTOType] of string =
  ( 'None', 'Vacation', 'Sick Pay', 'Holiday Pay' );

  PTOEarningTypeText : array[TPTOEarningType] of string =
  ( 'Fixed Amount', 'Straight Time Hours', 'All Hours' );

  // Encryption Private Key Segments
  PrivateKey_UserPassword_Segment1 = 'Wo/Gpg';

  PrivateKey_CreditCardPassword1_Segment1 = 'uClRvw';
  PrivateKey_CreditCardPassword2_Segment1 = 'piFjKg';

  PrivateKey_PWTransmission1_Segment1  = 'l+dTRg';
  PrivateKey_PWTransmission2_Segment1  = 'gxYZcA';
  PrivateKey_PWTransmission3_Segment1  = '7osatg';

  PrivateKey_PriorPassword1_Segment1 = 'rL9JDA';
  PrivateKey_PriorPassword2_Segment1 = 'zI0obw';
  PrivateKey_PriorPassword3_Segment1 = '6oR05A';

  PrivateKey_SMSPriorPassword1_Segment1 = '2lMQdA';
  PrivateKey_SMSPriorPassword2_Segment1 = 'wswTiQ';
  PrivateKey_SMSPriorPassword3_Segment1 = 'lIlGDg';

  PrivateKey_SSN1_Segment1 = 'xHQiLw';
  PrivateKey_SSN2_Segment1 = 't3okBA';
  PrivateKey_SSN3_Segment1 = '+ptWiw';

type
  TActivityPickListType = ( aplResult, aplAppointment, aplCall, aplToDo, aplMeeting, aplOther, aplLocation, aplDescription, aplRole, aplEventStatus, aplContactEventStatus, aplContactEventResult, aplContactPosition );

const
  ActivityPickListIDs : array [TActivityPickListType] of integer =
  ( 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132 );

  ActivityPickListTypeByActivityType : array [atOther..atToDo] of TActivityPickListType =
  ( aplOther, aplCall, aplAppointment, aplMeeting, aplToDo );

type
  TSSLIPSCannotConfirmType = ( sscctOk, sscctCancel, sscctPostpone );
  TSSLIPSConfirmType       = ( ssctNone, ssctAny, ssctCSR, ssctSales, ssctManager, ssctOwner );
  TSSLIPSEncyptionType     = ( ssetCustom, ssetDongle );

  TIntervalType            = ( itMinutes, itHours, itDays, itWeeks, itMonths );

const
  SSLIPSConfirmText : array[ TSSLIPSConfirmType ] of string =
    ( '(none)', 'Any in List', 'CSR', 'Sales', 'Manager', 'Owner' );

  IntervalTypeText : array[ TIntervalType ] of string =
    ( 'Minute(s)', 'Hour(s)', 'Day(s)', 'Week(s)', 'Month(s)' );

implementation

{
******************************************************* TIDRecordObject ********************************************************
}
constructor TIDRecordObject.Create;
begin
  inherited;

end;

constructor TIDRecordObject.Create(aValue: TIDRecord);
begin
  inherited Create;
  Value := aValue;
end;

initialization
  gQRReportWindow := nil;

finalization

end.
