Keystone Constants: Difference between revisions

From KeystoneIntranet
Jump to navigation Jump to search
No edit summary
 
m (1 revision imported)
 
(No difference)

Latest revision as of 12:58, 14 July 2023

The Keytone Constants Units contain the codes used in many tables (and file maintenance drowdowns and lookups). ( Keystone Decoder Ring )

This page is helpful when writing queries or interpreting raw data from the database.

Updated 01/06/2023

CCASCOMMON_CONST (Server's Constants)

ccascommon_const;

  //CompuCrete System constants
  LOC_OFFICE = 'O';
  LOC_BATCH = 'B';
  LOC_REMOTE = 'R';
  LOC_ONLINE = 'T';
  LOC_PAYMENTS = 'P';
  LOC_EXPORT = 'E';
  LOC_DISPATCH = 'D'; // 2.0.8
  TAXCODE_EXEMPTCUSTOMER = '1';
  TAXCODE_EXEMPTPRODUCT = '2';
  TEMPLATE_BLANKDB = 'masterdb';

  //Batch type codes
  BATCHTYPE_AP_HANDWRITTENCHECKS = 'HW';
  BATCHTYPE_AP_INVOICESETUP = 'IS'; // 08/31/04
  BATCHTYPE_AP_INVOICEVOUCHERING = 'IV';

  BATCHTYPE_AR_QUICKTICKETS = 'QT';
  BATCHTYPE_AR_PURCHRECEIPTS = 'IP';
  BATCHTYPE_AR_MISCTRANS = 'IT';
  BATCHTYPE_AR_PRODUCTION = 'IB';
  BATCHTYPE_AR_PHYSICALENTRY = 'IE';
  BATCHTYPE_AR_BALANCEENTRY = 'II'; // 1.5.72
  BATCHTYPE_AR_TRANSFERS = 'IX'; // 2.5

  BATCHTYPE_CM_TRXENTRY = 'TE';
  BATCHTYPE_CM_TRXBAL = 'TB'; // 1.5.138
  BATCHTYPE_CM_TRXIMPORT = 'TI'; // 3.6.6.3

  BATCHTYPE_GL_JOURNENTRY = 'JE';
  BATCHTYPE_GL_BUDGTENTRY = 'BE';

  //G/L source application constants
  GL_SOURCE_APP_AR = 'R';
  GL_SOURCE_APP_AP = 'P';
  GL_SOURCE_APP_GL = 'G';
  GL_SOURCE_APP_CM = 'C';
  GL_SOURCE_APP_PY = 'Y';

  //G/L source code constants
  GL_SOURCE_AR = 'AR';
  GL_SOURCE_AP = 'AP';
  GL_SOURCE_CM = 'CM';
  GL_SOURCE_PR = 'PR';
  GL_SOURCE_JE = 'JE';
  GL_SOURCE_BE = 'BE';
  GL_SOURCE_MI = 'MI';

  //G/L source table constants
  GL_SOURCE_TABLE_BUDGTENTRY = 'B';
  GL_SOURCE_TABLE_JOURNENTRY = 'J';
  GL_SOURCE_TABLE_PRODTRX = 'P';

  //G/L transaction types
  GL_TRXTYPE_STANDARD = 'S';
  GL_TRXTYPE_BALANCEFORWARD = 'F';
  GL_TRXTYPE_BUDGET = 'B';
  GL_TRXTYPE_COMPARISON = 'C';
  GL_TRXTYPE_RETEARNINGS = 'R';

  //Batch post method codes
  BATCH_POSTMETHOD_NORMAL = 'N';
  BATCH_POSTMETHOD_RECURRING = 'R';
  BATCH_POSTMETHOD_REVERSING = 'V';
  BATCH_POSTMETHOD_TEMPRECURRING = 'P';

  //A/P invoice sources
  AP_INVOICESOURCE_INVOICE = 'I';
  AP_INVOICESOURCE_SETUP = 'S';
  AP_INVOICESOURCE_HANDWRITTEN = 'H'; // 2.3.10

  // A/P payment methods // 2.5.1

  AP_PAYMENT_METHOD_ACH = 'AC';
  AP_PAYMENT_METHOD_CHECK = 'CK';
  
  // P.O. Statuses // 2.5.2

  PO_STATUS_NEW = 'N';
  PO_STATUS_APPROVED = 'A';
  PO_STATUS_COMPLETE = 'C';
  PO_STATUS_CANCELLED = 'X';

  //A/R invoice types
  AR_INVOICETYPE_BALANCE = 'B';
  AR_INVOICETYPE_CREDIT = 'C';
  AR_INVOICETYPE_INVOICE = 'I';
  AR_INVOICETYPE_SERVICECHARGE = 'S';

  //A/R print invoice seperation constants
  INVOICE_SEP_LO = 0;
  INVOICE_SEP_CUST_JOB_PO = 0;
  INVOICE_SEP_CUST_JOB = 1;
  INVOICE_SEP_CUST_JOB_PO_LOT = 2;
  INVOICE_SEP_CUST = 3;
  INVOICE_SEP_EACH_TICKET = 4;
  INVOICE_SEP_HI = 4;

  //Cash Management UPDATE_FLAGs
  CM_STATUS_OPEN = 1;
  CM_STATUS_CLEARED = 2;
  CM_STATUS_RECONCILED = 3;

  //Cash Management TRANS_TYPEs
type
  TCMTransTypeDef = record
    Number      : integer; // as stored in the database
    Code        : char;
    Description : string;
    ShortDesc   : string;
    AllowEntry  : boolean; // available to user
    IsDebit     : integer; // 1 if debit type, 0 if credit
  end;

  TCMTransType = (cmBalanceForward,     // 1
                  cmCheck,              // 2
                  cmAPCheck,            // 3
                  cmPaycheck,           // 4
                  cmDeposit,            // 5
                  cmARDeposit,          // 6
                  cmInterest,           // 7
                  cmServiceCharge,      // 8
                  cmTransfer,           // 9
                  cmTransferIn,         // 10
                  cmMiscellaneous,      // 11
                  cmDividend,           // 12
                  cmVoidCheck,          // 13
                  cmInvalid );          // -1

const
  // C/M Transaction Codes
  CM_BALANCE_FORWARD     = 1;
  CM_CHECK               = 2;
  CM_AP_CHECK            = 3;
  CM_PAYCHECK            = 4;
  CM_DEPOSIT             = 5;
  CM_AR_DEPOSIT          = 6;
  CM_INTEREST            = 7;
  CM_SERVICE_CHARGE      = 8;
  CM_TRANSFER            = 9;
  CM_TRANSFER_IN         = 10;
  CM_MISCELLANEOUS       = 11;
  CM_DIVIDEND            = 12;
  CM_VOIDCHECK           = 13;
  CM_INVALID             = -1;

  CM_TRANS_TYPE_DEFS : array[TCMTransType] of TCMTransTypeDef = (
    (Number: CM_BALANCE_FORWARD; Code: 'B'; Description: 'Balance Forward'; ShortDesc: 'Bal Fwd';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_CHECK; Code: 'C'; Description: 'Check'; ShortDesc: 'Check' ;
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_AP_CHECK; Code: 'A'; Description: 'AP Check'; ShortDesc: 'Check-AP';
                                 AllowEntry: False; IsDebit: 0),
    (Number: CM_PAYCHECK; Code: 'P'; Description: 'Paycheck'; ShortDesc: 'Check-PY';
                                 AllowEntry: False; IsDebit: 0),
    (Number: CM_DEPOSIT; Code: 'D'; Description: 'Deposit'; ShortDesc: 'Deposit';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_AR_DEPOSIT; Code: 'R'; Description: 'AR Deposit'; ShortDesc: 'Dep-AR';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_INTEREST; Code: 'I'; Description: 'Interest'; ShortDesc: 'Interest';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_SERVICE_CHARGE; Code: 'S'; Description: 'Service Charge'; ShortDesc: 'Svc Chg';
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_TRANSFER; Code: 'T'; Description: 'Transfer'; ShortDesc: 'Transfer';
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_TRANSFER_IN; Code: 'N'; Description: 'Transfer In'; ShortDesc: 'Transfer';
                                 AllowEntry: False;  IsDebit: 1),
    (Number: CM_MISCELLANEOUS; Code: 'M'; Description: 'Miscellaneous'; ShortDesc: 'Misc';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_DIVIDEND; Code: 'V'; Description: 'Dividend'; ShortDesc: 'Dividend';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_VOIDCHECK; Code: 'O'; Description: 'Void Check'; ShortDesc: 'Check-Void';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_INVALID; Code: ' '; Description: ' '; ShortDesc: ' ';
                                 AllowEntry: False; IsDebit: 1)
  );

  // Company Database Events
  CODB_MAX_EVENTS = 1;
  CODB_EVENT_ORDERCHANGE = 0;

  // Payroll Run Status Codes
  PR_RUNSTATUS_PROCESSED = 'P';
  PR_RUNSTATUS_CHECKS = 'C';
  PR_RUNSTATUS_DIRDEP = 'D';
  PR_RUNSTATUS_ACCEPTED = 'A';
  PR_RUNSTATUS_REJECTED = 'R';

  // Payroll Calculation Client Action Values
  PR_CLIENTACTION_NONE = 0;
  PR_CLIENTACTION_LOG = 1;
  PR_CLIENTACTION_PROMPT = 2;
  PR_CLIENTACTION_DEBUG = 3;
  PR_CLIENTACTION_STOP = 4;
  PR_CLIENTACTION_PROGRESS = 5; // 1.5.5

  // Payroll Calculation Server Action Values
  PR_SERVERACTION_CONTINUE = 0;
  PR_SERVERACTION_ABORT = 1;
  PR_SERVERACTION_SKIPDEF = 2;
  PR_SERVERACTION_SKIPEMP = 3;
  PR_SERVERACTION_STOP = 4;
  PR_SERVERACTION_SKIPELSEORENDIF = 1001;
  PR_SERVERACTION_SKIPENDIF = 1002;
  PR_SERVERACTION_MACROSTART = 1003;
  PR_SERVERACTION_IGNOREELSE = 1004;

  // Payroll Operation Codes
  PR_OP_ADD = 1;
  PR_OP_SUBTRACT = 2;
  PR_OP_MULTIPLY = 3;
  PR_OP_DIVIDE = 4;
  PR_OP_MOD = 5;
  PR_OP_CLEAR = 6;
  PR_OP_ABS = 7;
  PR_OP_SET = 8;
  PR_OP_MIN = 9;
  PR_OP_MAX = 10;
  PR_OP_EXIT = 11;
  PR_OP_WRITE = 12;
  PR_OP_WARN = 13;
  PR_OP_DEBUG = 14;
  PR_OP_IF = 15;
  PR_OP_ELSE = 16;
  PR_OP_ENDIF = 17;
  PR_OP_WARNIF = 18;
  PR_OP_PROMPTIF = 19;
  PR_OP_EXITIF = 20;
  PR_OP_STOPIF = 21;
  PR_OP_PROCESSXREF = 22;
  PR_OP_SUMDEFTYPE = 23;
  PR_OP_CALCTAX = 24;
  PR_OP_TIMECARD = 25;
  PR_OP_MACRO = 26;
  PR_OP_EVENT = 27;
  PR_OP_APBEGIN = 28; // 2.5.1
  PR_OP_APFIELD = 29; // 2.5.1
  PR_OP_APEND = 30; // 2.5.1
  PR_OP_SETNZ = 31; // 3.2.3.3

  // Payroll Link Types
  PR_LINKTYPE_PAY = 'P';
  PR_LINKTYPE_PRETAXDEDUCTION = 'X';
  PR_LINKTYPE_TAX = 'T';
  PR_LINKTYPE_DEDUCTION = 'D';
  PR_LINKTYPE_NETPAY = 'N';

  // Payroll Formula Factor Types
  PR_FACTTYPE_LOAN = 'L';
  PR_FACTTYPE_AUTODEF = 'AD';
  PR_FACTTYPE_AUTOHOURS = 'AH'; // 2.2.25

  // Payroll DEF Types
  PR_DEFTYPE_CHECKAMOUNT = 'C';
  PR_DEFTYPE_NETPAY = 'N';
  PR_DEFTYPE_DIRDEPAMOUNT = 'A';
  PR_DEFTYPE_DEDUCTION = 'D';
  PR_DEFTYPE_TAXGROSS = 'G';
  PR_DEFTYPE_HOURS = 'H';
  PR_DEFTYPE_PAY = 'P';
  PR_DEFTYPE_TAX = 'T';
  PR_DEFTYPE_WORKING = 'W';
  PR_DEFTYPE_GROSSPAY = 'Z';
  PR_DEFTYPE_REIMBURSEMENT = 'R';

  // Payroll Employment Status types // 1.6.24
type
  TPREmpStatusDef = record
    Code:               string;
    Description:        string;
  end;

  TPREmpStatusType = (esActive,
                      esTerminated,
                      esRetired,
                      esDeceased,
                      esDisabled,
                      esLongTermDisability,
                      esLeaveOfAbsence,
                      esMilitaryLeaveOfAbsence,
                      esLayoff,
                      esLayoffSeasonal,
                      esFamilyLeaveAct,
                      esWorkmansComp
                      ); // 2.5.16


const
  // Payroll Employee Status // 2.5.16
  PR_EMPSTATUS_ACTIVE = 'A';
  PR_EMPSTATUS_TERMINATED = 'TE';
  PR_EMPSTATUS_RETIRED = 'RE';
  PR_EMPSTATUS_DECEASED = 'DE';
  PR_EMPSTATUS_DISABLED = 'DI';
  PR_EMPSTATUS_LONGTERMDIS = 'LD';
  PR_EMPSTATUS_ABSENCE = 'LA';
  PR_EMPSTATUS_MILITARY = 'LM';
  PR_EMPSTATUS_LAYOFF = 'LO';
  PR_EMPSTATUS_LAYOFFSEASONAL = 'LS';
  PR_EMPSTATUS_FAMILYLEAVEACT = 'FL';
  PR_EMPSTATUS_WORKMANSCOMP = 'WC';

  // 2.5.16
  PR_EMPSTATUS_DEFS: array[TPREmpStatusType] of TPREmpStatusDef = (
    (Code: PR_EMPSTATUS_ACTIVE;         Description: 'Active'),
    (Code: PR_EMPSTATUS_TERMINATED;     Description: 'Terminated'),
    (Code: PR_EMPSTATUS_RETIRED;        Description: 'Retired'),
    (Code: PR_EMPSTATUS_DECEASED;       Description: 'Deceased'),
    (Code: PR_EMPSTATUS_DISABLED;       Description: 'Disabled'),
    (Code: PR_EMPSTATUS_LONGTERMDIS;    Description: 'Long-term Disability'),
    (Code: PR_EMPSTATUS_ABSENCE;        Description: 'Leave of Absence'),
    (Code: PR_EMPSTATUS_MILITARY;       Description: 'Military Leave'),
    (Code: PR_EMPSTATUS_LAYOFF;       Description: 'Layoff'),
    (Code: PR_EMPSTATUS_LAYOFFSEASONAL;       Description: 'Layoff Seasonal'),
    (Code: PR_EMPSTATUS_FAMILYLEAVEACT;       Description: 'Family Leave Act'),
    (Code: PR_EMPSTATUS_WORKMANSCOMP;       Description: 'Workmans Comp')    );


  // Payroll Tax Library Tax Types
  PR_TAXLIB_TYPE_FIT = 'F';
  PR_TAXLIB_TYPE_SOCIALSECURITY = 'O';
  PR_TAXLIB_TYPE_MEDICARE = 'M';
  PR_TAXLIB_TYPE_MEDISURCHARGE = 'X'; // 2.8.5
  PR_TAXLIB_TYPE_EIC = 'E'; // 2.0.13
  PR_TAXLIB_TYPE_STATE = 'S';
  PR_TAXLIB_TYPE_LOCAL = 'L';
  PR_TAXLIB_TYPE_OTHER = 'Z';
  PR_TAXLIB_TYPE_COSOCIALSECURITY = 'P'; // 2.4.2
  PR_TAXLIB_TYPE_COMEDICARE = 'N'; // 2.4.2

  // Payroll Xref Types
  PR_XREF_PRETAXDEDUCTION = 'X';

  // Payroll Employee Net Pay History Record Types
  PR_NETPAY_RECTYPE_ADJUSTMENT = 'A';
  PR_NETPAY_RECTYPE_LOAN = 'L';
  PR_NETPAY_RECTYPE_NETPAY = 'N';
  PR_NETPAY_RECTYPE_REVERSAL = 'R';
  PR_NETPAY_RECTYPE_VOID = 'V';

  // Payroll Employee Def History Trx Types
  PR_EMPDEF_TRXTYPE_STANDARD = 'S';
  PR_EMPDEF_TRXTYPE_BALANCE = 'B';
  PR_EMPDEF_TRXTYPES = PR_EMPDEF_TRXTYPE_STANDARD +
                       PR_EMPDEF_TRXTYPE_BALANCE;

  // Payroll Data Abstractor Form Types
  PR_ABSTRACTOR_FORM_CHECK = 1;
  PR_ABSTRACTOR_FORM_W2 = 2;
  PR_ABSTRACTOR_FORM_W3 = 3;

  // Payroll Tax Code Value Types
  PR_TAXCODE_VALUETYPE_DOLLAR = 'D';
  PR_TAXCODE_VALUETYPE_DOLLAR4 = '4';
  PR_TAXCODE_VALUETYPE_PERCENT = 'P';
  PR_TAXCODE_VALUETYPE_BOOLEAN = 'B';

  // Payroll Time Card Sources
  PR_TCSOURCE_MANUAL = 'M';
  PR_TCSOURCE_AUTO = 'A';
  PR_TCSOURCE_IMPORTED = 'X';
  PR_TCSOURCE_OVERRIDE = 'O'; // 1.5.15
  PR_TCSOURCE_CALCULATED = 'C'; // 1.5.15

  // Payroll Calculation Log Record Types // 1.5.37
  PR_CALCLOG_DEBUG = 'D';
  PR_CALCLOG_TRACE = 'T';
  PR_CALCLOG_WARN = 'W';

  // Payroll Warning Severity Levevls
  PR_SEVERITY_ERROR = 9;
  PR_SEVERITY_OVERRIDE = 1; // 3.4.6.6
  PR_SEVERITY_WARNING_LO = 0;

  // Payroll Event Type // 2.5.14
  PR_EVENT_PAYRATE_CHANGE = '#R';
  PR_EVENT_FIELD_CHANGE = '#F';
  PR_EVENT_LOAN = '#L';

  // Payroll Factor Value Types // 1.5.100
  PR_FACTORVALUETYPE_LOAN = 'L';
  PR_FACTORVALUETYPE_DDROUTING = 'DR';
  PR_FACTORVALUETYPE_DDACCTNO = 'DA';
  PR_FACTORVALUETYPE_DDACCTTYPE = 'DT';

  // system options constants
  OPT_AR_MONTHEND_SECTION = 'AR_MTHEND'; // 1.7.7
  OPT_AP_MONTHEND_SECTION = 'AP_MTHEND'; // 1.7.7

  //Plant Types
  AR_PLANTTYPE_CONCRETE = 'C';
  AR_PLANTTYPE_AGGREGATE = 'A';
  AR_PLANTTYPE_POINTOFSALE = 'P';
  AR_PLANTTYPE_BLOCK = 'B';
  AR_PLANTTYPE_OTHER = 'O';
  AR_PLANTTYPE_SILOLOADOUT = 'S';
  AR_PLANTTYPE_DISPATCH_CONCRETE = 'D';
  AR_PLANTTYPE_DISPATCH_AGGREGATE = 'E';
  AR_PLANTTYPE_DISPATCH_ASPHALT = 'F';
  AR_PLANTTYPE_DISPATCH_BLOCK = 'G';
  AR_PLANTTYPE_DISPATCH_SILOLOADOUT = 'H';

  // Dispatch Order status codes // 2.1.15
  DI_ORDERSTATUS_CANCELLED = 'X';
  DI_ORDERSTATUS_CLOSED = 'C';
  DI_ORDERSTATUS_COMPLETED = 'F';
  DI_ORDERSTATUS_HOLD = 'H';
  DI_ORDERSTATUS_OPEN = 'O';
  DI_ORDERSTATUS_QUOTE = 'Q';

  // Product Transaction Types // 2.5.2
  PRODTRX_TYPE_COST = 'C';
  PRODTRX_TYPE_PURCHASE_RECEIPT = 'R';
  PRODTRX_TYPE_SALE = 'S';
  PRODTRX_TYPE_PHYSICAL_ENTRY = 'P';
  PRODTRX_TYPE_PRODUCTION_RECEIPT = 'D'; // reinstated 2.9.5
  PRODTRX_TYPE_PRODRCPT_OUT = 'V'; // 2.7.28
  PRODTRX_TYPE_PRODRCPT_IN = 'W';  // 2.7.28
  PRODTRX_TYPE_BALANCE = 'B';
  PRODTRX_TYPE_MISC = 'M';
  PRODTRX_TYPE_TRANSFER_OUT = 'X';
  PRODTRX_TYPE_TRANSFER_IN = 'Y';
  PRODTRX_TYPE_PO_RECEIPT = 'I';
  PRODTRX_TYPE_LASTCOST = 'L'; // 2.7.28

  // product type constants // 3.2.8.1
  PRODUCT_TYPE_CONCRETE_MIX = 'M';
  PRODUCT_TYPE_INGREDIENT = 'I';
  PRODUCT_TYPE_AGGREGATE = 'A';
  PRODUCT_TYPE_DELIVERY = 'D';
  PRODUCT_TYPE_OTHER = 'Z';

  // embedded resource constants // 2.2
  resProductName = 0;
  resCompanyName = 1;
  resCompanyPhone = 2;
  resLegalCopyright = 3;
  resProductVersion = 4;
  resFileVersion = 5;
  resLookAndFeel = 6;

const
  LOG_LEVEL_PROG = 'PROG'; // Program start/stop
  LOG_LEVEL_ERROR = 'ERROR'; // Internal errors
  LOG_LEVEL_WARNING = 'WARN'; // Internal warnings
  LOG_LEVEL_INFO = 'INFO'; // Informational messages
  LOG_LEVEL_MAJOR = 'MAJOR'; // Database upgrade (start/end)
  LOG_LEVEL_MINOR = 'MINOR'; // Database upgrade script (start/end)
  LOG_LEVEL_SESSION = 'SESS'; // Client session (start/end)
  LOG_LEVEL_QUERY = 'QUERY'; // Query Trace
  LOG_LEVEL_TRACE = 'TRACE'; // Detail Method Trace
  DefLogEventTypes = LOG_LEVEL_PROG + ',' + LOG_LEVEL_ERROR; // 2.7.6

CCCONST (Client Programs' Constants)



unit ccconst;
const

  // A/R COD Flag constants // 2.4.12
  AR_COD_FLAG_COD = 'Y';
  AR_COD_FLAG_CHARGE = 'N';
  AR_COD_FLAG_CASH = 'C';
  AR_COD_FLAG_BLOCKED = 'B';
  AR_COD_FLAG_BADDEBT = 'D';

  AR_COD_FLAG_RECS: array[0..4] of TCodeDescRec = (
    (Code: AR_COD_FLAG_COD;             Description: 'C.O.D.'),
    (Code: AR_COD_FLAG_CHARGE;          Description: 'Charge'),
    (Code: AR_COD_FLAG_CASH;            Description: 'Cash'),
    (Code: AR_COD_FLAG_BLOCKED;         Description: 'Blocked'),
    (Code: AR_COD_FLAG_BADDEBT;         Description: 'Bad Debt'));

  QT_COD_FLAG_RECS: array [0..3] of TCodeDescRec = ( // 2.8
    (Code: AR_COD_FLAG_COD;             Description: 'C.O.D.'),
    (Code: AR_COD_FLAG_CHARGE;          Description: 'Charge'),
    (Code: AR_COD_FLAG_CASH;            Description: 'Cash'),
    (Code: AR_COD_FLAG_BLOCKED;         Description: 'Blocked'));

  // A/R PAY_TYPE constants // 3.6.99.59

  AR_PAY_TYPE_NONE = 'N';
  AR_PAY_TYPE_ACH = 'A';
  AR_PAY_TYPE_CC = 'D';
  AR_PAY_TYPE_CHECK = 'K';
  AR_PAY_TYPE_CASH = 'S';

  AR_PAY_TYPE_RECS: array [0..4] of TCodeDescRec = (
    (Code: AR_PAY_TYPE_NONE;            Description: '#'),
    (Code: AR_PAY_TYPE_ACH;             Description: 'Portal ACH'),
    (Code: AR_PAY_TYPE_CC;              Description: 'Portal CC'),
    (Code: AR_PAY_TYPE_CHECK;           Description: '#'),
    (Code: AR_PAY_TYPE_CASH;            Description: 'CASH') // 4.3.1.1
  );
  // A/R SHOW_JOB_PRODUCTS constants
  AR_SHOWJOBPROD_ACTIVE = '0';
  AR_SHOWJOBPROD_QUOTED_ACTIVE = '1';
  AR_SHOWJOBPROD_QUOTED = '2';
  AR_SHOWJOBPROD_QUOTED_LINE1 = '3';

  AR_SHOWJOBPROD_RECS: array[0..3] of TCodeDescRec = (
    (Code: AR_SHOWJOBPROD_ACTIVE;         Description: 'Active Plant Products'),
    (Code: AR_SHOWJOBPROD_QUOTED_ACTIVE;  Description: 'Quoted & Active Plant Products'),
    (Code: AR_SHOWJOBPROD_QUOTED;         Description: 'Quoted Products Only'),
    (Code: AR_SHOWJOBPROD_QUOTED_LINE1;   Description: 'Quoted Products Only Line 1'));

  // A/R separation constants // 3.0.8
  AR_SEPARATION_NONE = 'N';
  AR_SEPARATION_DIVISION = 'D';
  AR_SEPARATION_PLANT = 'P';

  // A/R P.O. Required constants // 4.0.3.1
  AR_PO_REQUIRED_NONE = 'N';
  AR_PO_REQUIRED_TICKETING = 'Y';
  AR_PO_REQUIRED_EVERYWHERE = 'E';
  AR_PO_REQUIRED_RECS: array[0..2] of TCodeDescRec = (
    (Code: AR_PO_REQUIRED_NONE;         Description: 'No'),
    (Code: AR_PO_REQUIRED_TICKETING;    Description: 'Ticketing'),
    (Code: AR_PO_REQUIRED_EVERYWHERE;   Description: 'Office & Ticketing'));

  // A/R Zone Required constants // 4.0.3.1
  AR_ZONE_REQUIRED_NONE = 'N';
  AR_ZONE_REQUIRED_TICKETING = 'Y';
  AR_ZONE_REQUIRED_EVERYWHERE = 'E';
  AR_ZONE_REQUIRED_RECS: array[0..2] of TCodeDescRec = (
    (Code: AR_ZONE_REQUIRED_NONE;         Description: 'No'),
    (Code: AR_ZONE_REQUIRED_TICKETING;    Description: 'Ticketing'),
    (Code: AR_ZONE_REQUIRED_EVERYWHERE;   Description: 'Office & Ticketing'));

  // device type constants // 3.6.99.9
  DEVICE_TYPE_SCALE = 'S';
  DEVICE_TYPE_BATCH = 'B';
  DEVICE_TYPE_ORDER = 'O';
  DEVICE_TYPE_GPS = 'G';
  DEVICE_TYPE_NOTIFICATION = 'N';

  DEVICE_TYPE_RECS: array[0..4] of TCodeDescRec = (
    (Code: DEVICE_TYPE_BATCH;    Description: 'Batch Control'),
    (Code: DEVICE_TYPE_GPS;      Description: 'GPS/Status'),
    (Code: DEVICE_TYPE_NOTIFICATION;  Description: 'Notification'),
    (Code: DEVICE_TYPE_ORDER;    Description: 'Order'),
    (Code: DEVICE_TYPE_SCALE;    Description: 'Scale')
  );

  // product type constants

  PRODUCT_TYPE_CONCRETE_MIX = 'M'; // 09/23/2005
  PRODUCT_TYPE_INGREDIENT = 'I';   // 09/23/2005
  PRODUCT_TYPE_AGGREGATE = 'A';    // 09/23/2005
  PRODUCT_TYPE_DELIVERY = 'D';     // 09/23/2005
  PRODUCT_TYPE_OTHER = 'Z';        // 09/23/2005
  PRODUCT_TYPE_ADDON_ADMIX = 'X';    // 3.5.9.1
  PRODUCT_TYPE_ADDON_DELIVERY = 'Y'; // 3.5.9.1
  PRODUCT_TYPE_MIX_MODIFIER = 'N';   // 3.5.99.39

  PRODUCT_TYPE_RECS: array[0..7] of TCodeDescRec = (
    (Code: PRODUCT_TYPE_CONCRETE_MIX;   Description: 'Concrete Mix'),
    (Code: PRODUCT_TYPE_INGREDIENT;     Description: 'Ingredient'),
    (Code: PRODUCT_TYPE_AGGREGATE;      Description: 'Aggregate'),
    (Code: PRODUCT_TYPE_DELIVERY;       Description: 'Delivery'),
    (Code: PRODUCT_TYPE_ADDON_ADMIX;    Description: 'Add On-Admixture'),
    (Code: PRODUCT_TYPE_ADDON_DELIVERY; Description: 'Add On-Delivery'),
    (Code: PRODUCT_TYPE_MIX_MODIFIER;   Description: 'Mix Modifier'),
    (Code: PRODUCT_TYPE_OTHER;          Description: 'Other')); // 3.5.99.39

  PRODINGRED_TYPE_RECS: array [0..4] of TCodeDescRec = (
    (Code: PRODINGRED_TYPE_CEMENT;      Description: 'Cement'),
    (Code: PRODINGRED_TYPE_COARSE_AGG;  Description: 'Coarse Agg'),
    (Code: PRODINGRED_TYPE_FINE_AGG;    Description: 'Fine Agg'),
    (Code: PRODINGRED_TYPE_WATER;       Description: 'Water'),
    (Code: PRODINGRED_TYPE_ADMIX;       Description: 'Admixture'));

  AUTO_QTY_NO = 'N';
  AUTO_QTY_YES = 'Y';
  AUTO_QTY_BRINGDOWN = 'B';
  AUTO_QTY_COLOR = 'C';
  AUTO_QTY_ORDERQTY = 'O';
  AUTO_QTY_ORDERREM = 'R';

  AUTO_QTY_RECS: array [0..5] of TCodeDescRec = (
    (Code: AUTO_QTY_NO;                 Description: 'No'),
    (Code: AUTO_QTY_YES;                Description: 'Yes'),
    (Code: AUTO_QTY_BRINGDOWN;          Description: 'Bring Down'),
    (Code: AUTO_QTY_COLOR;              Description: 'Mix Multiplier'),
    (Code: AUTO_QTY_ORDERQTY;           Description: 'Order Quantity'),
    (Code: AUTO_QTY_ORDERREM;           Description: 'Order Remaining')
  ); // 3.6.16.3

  // product transaction types // 2.7.28
  PRODTRX_TYPE_COST = 'C';
  PRODTRX_TYPE_PURCHASE_RECEIPT = 'R';
  PRODTRX_TYPE_SALE = 'S';
  PRODTRX_TYPE_PHYSICAL_ENTRY = 'P';
  PRODTRX_TYPE_PRODUCTION_RECEIPT = 'D'; // obsolete a/o 2.7.28
  PRODTRX_TYPE_PRODRCPT_OUT = 'V'; // 2.7.28
  PRODTRX_TYPE_PRODRCPT_IN = 'W';  // 2.7.28
  PRODTRX_TYPE_BALANCE = 'B';
  PRODTRX_TYPE_MISC = 'M';
  PRODTRX_TYPE_TRANSFER_OUT = 'X';
  PRODTRX_TYPE_TRANSFER_IN = 'Y';
  PRODTRX_TYPE_PO_RECEIPT = 'I';
  PRODTRX_TYPE_LASTCOST = 'L'; // 2.7.28
  PRODTRX_TYPE_TICKET = 'T';
  PRODTRX_TYPE_PEND_PO_RECEIPT = 'U';

  PRODTRX_TYPE_RECS: array [0..14] of TCodeDescRec = (
    (Code: PRODTRX_TYPE_COST; 			Description: 'Cost Change'),
    (Code: PRODTRX_TYPE_PURCHASE_RECEIPT; 	Description: 'Purch Rcpt'),
    (Code: PRODTRX_TYPE_SALE; 			Description: 'Sale'),
    (Code: PRODTRX_TYPE_PHYSICAL_ENTRY; 	Description: 'Physical'),
    (Code: PRODTRX_TYPE_PRODUCTION_RECEIPT; 	Description: 'Production'),
    (Code: PRODTRX_TYPE_PRODRCPT_OUT; 	Description: 'Prod Rcpt Out'),
    (Code: PRODTRX_TYPE_PRODRCPT_IN;  	Description: 'Prod Rcpt In'),
    (Code: PRODTRX_TYPE_BALANCE; 		Description: 'Balance'),
    (Code: PRODTRX_TYPE_MISC; 			Description: 'Misc.'),
    (Code: PRODTRX_TYPE_TRANSFER_OUT; 		Description: 'Xfr Out'),
    (Code: PRODTRX_TYPE_TRANSFER_IN; 		Description: 'Xfr In'),
    (Code: PRODTRX_TYPE_PO_RECEIPT; 		Description: 'P.O. Rcpt'),
    (Code: PRODTRX_TYPE_LASTCOST;   Description: 'Last Cost'),
    (Code: PRODTRX_TYPE_TICKET; 		Description: 'Ticket'),
    (Code: PRODTRX_TYPE_PEND_PO_RECEIPT; 	Description: 'Unposted P.O.'));

  // inventory reconciliation error codes // 2.7.28
  INVRECERR_NEGQOH = 'N';
  INVRECERR_POSQOH = 'P';
  INVRECERR_GLINV = 'I';
  INVRECERR_GLCOGS = 'S';
  INVRECERR_GLAPCLR = 'A';
  INVRECERR_GLPHYS = 'E';
  INVRECERR_GLMISC = 'M';
  INVRECERR_GLPRODOUT = 'V';
  INVRECERR_GLPRODIN = 'W';
  INVRECERR_NOXFROUT = 'X';
  INVRECERR_NEGCOST = 'C';
  INVRECERR_PRODRCPT = 'D';
  INVRECERR_MAXREACHED = 'Z';
  INVRECERR_NOPRODOUT = 'Y';

  INVRECERR_REASON_RECS: array [0..13] of TCodeDescRec = (
    (Code: INVRECERR_NEGQOH; 			Description: 'Negative Qty On Hand'),
    (Code: INVRECERR_POSQOH; 			Description: '   Neg->Pos Qty On Hand'),
    (Code: INVRECERR_GLINV; 			Description: 'Missing Inventory G/L'),
    (Code: INVRECERR_GLCOGS; 			Description: 'Missing Cost of Sales G/L'),
    (Code: INVRECERR_GLAPCLR;		  Description: 'Missing A/P Clear G/L'),
    (Code: INVRECERR_GLPHYS; 			Description: 'Missing Physical Inventory G/L'),
    (Code: INVRECERR_GLMISC; 			Description: 'Missing Miscellaneous G/L'),
    (Code: INVRECERR_GLPRODOUT;   Description: 'Missing Production Out G/L'),
    (Code: INVRECERR_GLPRODIN; 	  Description: 'Missing Production In G/L'),
    (Code: INVRECERR_NOXFROUT; 		Description: 'No Matching Xfr Out'),
    (Code: INVRECERR_NEGCOST; 		Description: 'Negative Cost'),
    (Code: INVRECERR_PRODRCPT; 		Description: 'Production Receipts not implemented'),
    (Code: INVRECERR_MAXREACHED;  Description: 'Too Many Errors'),
    (Code: INVRECERR_NOPRODOUT;   Description: 'No Matching Production Out')
  );

  // price source constants
  // (zone pricing indicated by lowercase equivalents of:)

  CC_PRICESOURCE_LIST = ' ';
  CC_PRICESOURCE_DESC_LIST = 'List Price'; // 05/17/01
  CC_PRICESOURCE_LINKLIST = 'L';
  CC_PRICESOURCE_JOB = 'J';
  CC_PRICESOURCE_PARENTJOB = 'U'; // 3.6.99.17
  CC_PRICESOURCE_LINKJOB = 'K';
  CC_PRICESOURCE_PARENTLINKJOB = 'V'; // 3.6.99.17
  CC_PRICESOURCE_CUST = 'C';
  CC_PRICESOURCE_LINKCUST = 'D';
  CC_PRICESOURCE_STMTCUST = 'S';
  CC_PRICESOURCE_LINKSTMTCUST = 'T';
  CC_PRICESOURCE_GROUP = 'G';
  CC_PRICESOURCE_LINKGROUP = 'H';
  CC_PRICESOURCE_STMTGROUP = 'E';
  CC_PRICESOURCE_LINKSTMTGROUP = 'F';
  CC_PRICESOURCE_DISC = 'P';
  CC_PRICESOURCE_LINKDISC = 'Q';
  CC_PRICESOURCE_ZONE = 'Z';
  CC_PRICESOURCE_DESC_ZONE = '(w/Zone Charge)'; // 05/17/01
  CC_PRICESOURCE_ORDER = 'R'; // 10/17/00 (Because 'O' looks like a zero)
  CC_PRICESOURCE_MANUAL = 'M'; // 10/13/00
  CC_PRICESOURCE_JOBBASE = 'j'; // 2.6
  CC_PRICESOURCE_PARENTJOBBASE = 'u'; // 3.6.99.17
  CC_PRICESOURCE_EXTERNAL = 'X'; // 3.3.1.8

  CC_PRICESOURCE_RECS: array [0..21] of TCodeDescRec = (
    (Code: CC_PRICESOURCE_LIST;         Description: CC_PRICESOURCE_DESC_LIST),
    (Code: CC_PRICESOURCE_LINKLIST;     Description: 'List Price - Linked Product'),
    (Code: CC_PRICESOURCE_JOB;          Description: 'Job Price'),
    (Code: CC_PRICESOURCE_PARENTJOB;    Description: 'Parent Job Price'), // 3.6.99.17
    (Code: CC_PRICESOURCE_JOBBASE;      Description: 'Job Price - Base Product'), // 2.6
    (Code: CC_PRICESOURCE_PARENTJOBBASE; Description: 'Parent Job Price - Base Product'), // 3.6.99.17
    (Code: CC_PRICESOURCE_LINKJOB;      Description: 'Job Price - Linked Product'),
    (Code: CC_PRICESOURCE_PARENTLINKJOB; Description: 'Parent Job Price - Linked Product'), // 3.6.99.17
    (Code: CC_PRICESOURCE_CUST;         Description: 'Customer Price'),
    (Code: CC_PRICESOURCE_LINKCUST;     Description: 'Customer Price - Linked Product'),
    (Code: CC_PRICESOURCE_STMTCUST;     Description: 'Statement Customer Price'),
    (Code: CC_PRICESOURCE_LINKSTMTCUST; Description: 'Statement Customer Price - Linked Product'),
    (Code: CC_PRICESOURCE_GROUP;        Description: 'Group Price'),
    (Code: CC_PRICESOURCE_LINKGROUP;    Description: 'Group Price - Linked Product'),
    (Code: CC_PRICESOURCE_STMTGROUP;    Description: 'Statement Customer Group Price'),
    (Code: CC_PRICESOURCE_LINKSTMTGROUP; Description: 'Statement Customer Group Price - Linked Product'),
    (Code: CC_PRICESOURCE_DISC;         Description: 'Discount'),
    (Code: CC_PRICESOURCE_LINKDISC;     Description: 'Discount - Linked Product'),
    (Code: CC_PRICESOURCE_ZONE;         Description: CC_PRICESOURCE_DESC_ZONE),
    (Code: CC_PRICESOURCE_ORDER;        Description: 'Order Price'),
    (Code: CC_PRICESOURCE_MANUAL;       Description: 'Manually Entered Price'),
    (Code: CC_PRICESOURCE_EXTERNAL;     Description: 'External Price') // 3.3.1.8
    );

  // unit of measure constants
  CC_UMSTYPE_AREA = 'A';
  CC_UMSTYPE_CONTAINER = 'C';
  CC_UMSTYPE_LINEAR = 'L';
  CC_UMSTYPE_OTHER = 'O';
  CC_UMSTYPE_TIME = 'T';
  CC_UMSTYPE_UNIT = 'U';
  CC_UMSTYPE_VOLUME = 'V';
  CC_UMSTYPE_WEIGHT = 'W';
  CC_UMSTYPE_WEIGHEDVOLUME = 'X'; // 3.6.13.1

  CC_UMSTYPE_RECS: array [0..8] of TCodeDescRec = (
    (Code: CC_UMSTYPE_AREA;              Description: 'Area'),
    (Code: CC_UMSTYPE_CONTAINER;         Description: 'Container'),
    (Code: CC_UMSTYPE_LINEAR;            Description: 'Linear'),
    (Code: CC_UMSTYPE_OTHER;             Description: 'Other'),
    (Code: CC_UMSTYPE_TIME;              Description: 'Time'),
    (Code: CC_UMSTYPE_UNIT;              Description: 'Unit'),
    (Code: CC_UMSTYPE_VOLUME;            Description: 'Volume'),
    (Code: CC_UMSTYPE_WEIGHT;            Description: 'Weight'),
    (Code: CC_UMSTYPE_WEIGHEDVOLUME;     Description: 'Weighed Volume') // 3.6.13.1
    );

  // price code constants // 04/24/01

  CC_PRICECODE_PRODUCT = 'P';
  CC_PRICECODE_COMMENT = 'C';
  CC_PRICECODE_DISCPRCL = 'D';
  CC_PRICECODE_DISCALL = 'A';
  CC_PRICECODE_ZONE = 'Z';

  // command-line parameter constants

  CMDLINE_PARAM_ADD = '/a'; // 1.5
  CMDLINE_PARAM_EDIT = '/e'; // 1.5
  CMDLINE_PARAM_APPCODE = '/a'; // 1.5.134
  CMDLINE_PARAM_PDYEAR = '/y'; // 1.5.134
  CMDLINE_PARAM_VIEWONLY = '/v'; // 2.8.7
  CMDLINE_PARAM_LIMITED = '/l'; // 2.8.7
  CMDLINE_PARAM_TASK = '/t'; // 2.9.18
  CMDLINE_PARAM_RUN = '/r'; // 3.1.9
  CMDLINE_PARAM_KSENDPOINT = '/q'; // 3.6.29.5
  CMDLINE_PARAM_VIEWMODE = '/m'; // 4.1.3.12

  // print invoice constants

  INVOICE_SEP_LO = 0;
  INVOICE_SEP_CUST_JOB_PO = 0;
  INVOICE_SEP_CUST_JOB = 1;
  INVOICE_SEP_CUST_JOB_PO_LOT = 2;
  INVOICE_SEP_CUST = 3;
  INVOICE_SEP_EACH_TICKET = 4;
  INVOICE_SEP_HI = 4;

  PROD_TOTALS_LO = 0;
  PROD_TOTALS_NONE = 0;
  PROD_TOTALS_UMS = 1;
  PROD_TOTALS_SUMMARY = 2;
  PROD_TOTALS_HI = 2;

  TICKET_COMMENTS_LO = 0;
  TICKET_COMMENTS_NONE = 0;
  TICKET_COMMENTS_FIRST = 1;
  TICKET_COMMENTS_ALL = 2;
  TICKET_COMMENTS_HI = 2;

 
  // cc period application code constants

  CC_PERIOD_APPCODE_AR = 'R';
  CC_PERIOD_APPCODE_AP = 'P';
  CC_PERIOD_APPCODE_CM = 'C';
  CC_PERIOD_APPCODE_GL = 'G';
  CC_PERIOD_APPCODE_JC = 'J'; // 2.2.5
  CC_PERIOD_APPCODE_PR = 'Y';

  // cc period type constants

  CC_PERIOD_TYPE_MONTH = 'M';
  CC_PERIOD_TYPE_QTR = 'Q';
  CC_PERIOD_TYPE_YEAR = 'Y';

  // cc period status constants // 1.5.134

  CC_PERIOD_STATUS_UNOPEN = 'N';
  CC_PERIOD_STATUS_OPEN = 'O';
  CC_PERIOD_STATUS_SOFTCLOSE = 'S';
  CC_PERIOD_STATUS_HARDCLOSE = 'C';

  // cc period rights action constants // 1.5.134

  CC_PERIODRIGHTS_ACTION_ALLOW = 'Y';
  CC_PERIODRIGHTS_ACTION_DISALLOW = 'N';
  CC_PERIODRIGHTS_ACTION_WARN = 'W';
  CC_PERIODRIGHTS_ACTION_WARNPASSWORD = 'P';

  // cc date protection constants // 1.5.134

  CC_DATEPROT_MINYEAR = 2000;
  CC_DATEPROT_MAXYEAR = 2049;
  CC_DATEPROT_NEWYEARRANGE = 1; // only allow Setup Periods to be run for dates within
                                // 1 year of the system date year



  // color constants

  COLOR_PNLTOP_BROWSE = clInfoBk; // 08/08/00
  COLOR_PNLTOP_EDITING = clBtnFace; // 08/08/00
  COLOR_PROGRESSDIALOG = clInfoBk; // 08/08/00
  COLOR_SEARCHKEY = clAqua; // (cyan) 08/08/00
  COLOR_USERHELP = clInfoBk; // clGradientActiveCaption; // 1.7.25

  // G/L account class constants

  GL_ACCTCLASS_AR = 'AR'; // 08/14/00
  GL_ACCTCLASS_BANKACCT = 'BA'; // 08/15/00
  GL_ACCTCLASS_CASH = 'CA'; // 3.0.8
  GL_ACCTCLASS_COGS = 'CG'; // 08/15/00
  GL_ACCTCLASS_FINCHG = 'FC'; // 08/14/00
  GL_ACCTCLASS_MISC = 'MI';
  GL_ACCTCLASS_RETEARN = 'RE'; // 03/04/02
  GL_ACCTCLASS_SALES = 'SA'; // 08/15/00
  GL_ACCTCLASS_SALESDISC = 'SD'; // 08/15/00
  GL_ACCTCLASS_SALESTAXPAYABLE = 'ST'; // 08/15/00
  GL_ACCTCLASS_INVENTORY = 'IN'; // 1.5.56
  GL_ACCTCLASS_AP = 'AP'; // 01/17/01
  GL_ACCTCLASS_APEXPENSE = 'EX'; // 01/17/01
  GL_ACCTCLASS_APPURCHDISC = 'PD'; // 01/17/01
  GL_ACCTCLASS_APSALESTAXEXPENSE = 'PT'; // 01/17/01

  GL_ACCTCLASS_DEFS: array[0..14] of TCodeDescRec = (
    (Code: GL_ACCTCLASS_AP;   Description: 'Accounts Payable'),
    (Code: GL_ACCTCLASS_AR;     Description: 'Accounts Receivable'),
    (Code: GL_ACCTCLASS_BANKACCT;     Description: 'Bank Account'),
    (Code: GL_ACCTCLASS_CASH;     Description: 'Cash (Other)'),
    (Code: GL_ACCTCLASS_COGS;     Description: 'Cost of Goods Sold'),
    (Code: GL_ACCTCLASS_APEXPENSE;     Description: 'Expense'),
    (Code: GL_ACCTCLASS_FINCHG;     Description: 'Finance Charge Income'),
    (Code: GL_ACCTCLASS_INVENTORY;     Description: 'Inventory'),
    (Code: GL_ACCTCLASS_MISC;     Description: 'Miscellaneous'),
    (Code: GL_ACCTCLASS_APPURCHDISC;     Description: 'A/P Discount'),
    (Code: GL_ACCTCLASS_APSALESTAXEXPENSE;     Description: 'A/P Tax'),
    (Code: GL_ACCTCLASS_RETEARN;     Description: 'Retained Earnings'),
    (Code: GL_ACCTCLASS_SALES;     Description: 'Sales'),
    (Code: GL_ACCTCLASS_SALESDISC;     Description: 'Sales Discount'),
    (Code: GL_ACCTCLASS_SALESTAXPAYABLE;     Description: 'Sales Tax Payable')
    ); // 3.0.8

  // G/L Segment Type constants // 2.5
  GL_SEG_TYPE_ACCOUNT = 'A';
  GL_SEG_TYPE_COMPANY = 'C';
  GL_SEG_TYPE_DIVISION = 'D';
  GL_SEG_TYPE_PLANT = 'P';
  GL_SEG_TYPE_NORMAL = 'N';

  GL_SEG_TYPE_RECS: array[0..4] of TCodeDescRec = (
    (Code: GL_SEG_TYPE_ACCOUNT;       Description: 'Account'),
    (Code: GL_SEG_TYPE_COMPANY;       Description: 'Company'),
    (Code: GL_SEG_TYPE_DIVISION;      Description: 'Division'),
    (Code: GL_SEG_TYPE_PLANT;         Description: 'Plant'),
    (Code: GL_SEG_TYPE_NORMAL;        Description: 'Normal'));

  // G/L source application constants

  GL_SOURCE_APP_AR = 'R';
  GL_SOURCE_APP_AP = 'P';
  GL_SOURCE_APP_GL = 'G';
  GL_SOURCE_APP_CM = 'C';
  GL_SOURCE_APP_PY = 'Y';

  // G/L source table constants // 10/08/03

  GL_SOURCE_TABLE_BUDGTENTRY = 'B';
  GL_SOURCE_TABLE_JOURNENTRY = 'J';

  // G/L transaction types
  GL_TRXTYPE_STANDARD = 'S';
  GL_TRXTYPE_BALANCEFORWARD = 'F';
  GL_TRXTYPE_BUDGET = 'B';
  GL_TRXTYPE_COMPARISON = 'C';
  GL_TRXTYPE_RETEARNINGS = 'R'; // 12/10/01

  // G/L Account Types // 10/16/01
  GL_ACCTTYPE_BALANCESHEET = 'B';
  GL_ACCTTYPE_INCOMESTATEMENT = 'I';

  GLACCT_TYPE_DEFS: array[0..1] of TCodeDescRec = (
    (Code: GL_ACCTTYPE_BALANCESHEET;   Description: 'Balance Sheet'),
    (Code: GL_ACCTTYPE_INCOMESTATEMENT;     Description: 'Income Statement')); // 2.3.18


  // G/L Account Types // 2.3.18
  GL_ACCT_INTRA_NO = 'N';
  GL_ACCT_INTRA_INTRA = 'A';
  GL_ACCT_INTRA_INTER = 'E';

  GLACCT_INTRA_RECS: array[0..2] of TCodeDescRec = (
    (Code: GL_ACCT_INTRA_NO;   Description: 'No'),
    (Code: GL_ACCT_INTRA_INTRA;     Description: 'IntraCompany'),
    (Code: GL_ACCT_INTRA_INTER;      Description: 'InterCompany')); // 2.3.18


  // G/L Financial Statement Constants 11/26/01

  // cmdno values
  GLFS_CMD_ADD = 1;
  GLFS_CMD_LO = GLFS_CMD_ADD;
  GLFS_CMD_PRINT = 2;
  GLFS_CMD_ADDPRINT = 3;
  GLFS_CMD_SETCOMP = 4;
  GLFS_CMD_SETFORMAT = 5;
  GLFS_CMD_NEWPAGE = 6;
  GLFS_CMD_DEFVAL = 7;
  GLFS_CMD_GROUPFILTER = 8;
  GLFS_CMD_SUBTRACT = 9; // 1.5.46
  GLFS_CMD_MULTIPLY = 10; // 1.5.88
  GLFS_CMD_DIVIDE = 11; // 1.5.88
  GLFS_CMD_SETACCTCONS = 12; // 1.5.140
  GLFS_CMD_NEWREPORT = 13; // 1.5.140
  GLFS_CMD_NEWMACRO = 14; // 1.7.16
  GLFS_CMD_CALLMACRO = 15; // 1.7.16
  GLFS_CMD_FONT = 16; // 2.6.6
  GLFS_CMD_HI = GLFS_CMD_FONT;

  GLFS_CMD_DESCS: array [GLFS_CMD_LO..GLFS_CMD_HI] of string =
    ('Add',
     'Print',
     'Add&Print',
     'Set Comp',
     'Set Format',
     'New Page',
     'Def Value',
     'Grp Filter',
     'Subtract', // 1.5.46
     'Multiply', // 1.5.88
     'Divide', // 1.5.88
     'Acct Cons', // 1.5.140
     'New Report', // 1.5.140
     'New Macro', // 1.7.16
     'Call Macro', // 1.7.16
     'Font' // 2.6.6
    );

  // param1_type values
  GLFS_ACCTTYPE_ACCT = 1;
  GLFS_ACCTTYPE_LO = GLFS_ACCTTYPE_ACCT;
  GLFS_ACCTTYPE_RANGE = 2;
  GLFS_ACCTTYPE_GROUP = 3;
  GLFS_ACCTTYPE_TOTAL = 4;
  GLFS_ACCTTYPE_NRMCA = 5; // 3.3.0.5
  GLFS_ACCTTYPE_HI = GLFS_ACCTTYPE_NRMCA;

  GLFS_ACCTTYPE_DESCS: array [GLFS_ACCTTYPE_LO..GLFS_ACCTTYPE_HI] of string =
    ('Account',
     'Range',
     'Group',
     'Total',
     'NRMCA'
    );

  // print functions
  GLFS_PRFUNC_BLANKLINE = 1;
  GLFS_PRFUNC_LO = GLFS_PRFUNC_BLANKLINE;
  GLFS_PRFUNC_SINGLEDASH = 2;
  GLFS_PRFUNC_DOUBLEDASH = 3;
  GLFS_PRFUNC_REPHEADER = 4;
  GLFS_PRFUNC_REPCENTER = 5;
  GLFS_PRFUNC_REPPERIOD = 6;
  GLFS_PRFUNC_LABEL = 7;
  GLFS_PRFUNC_COLHEADINGS = 8;
  GLFS_PRFUNC_HI = GLFS_PRFUNC_COLHEADINGS;

  GLFS_PRFUNC_DESCS: array [GLFS_PRFUNC_LO..GLFS_PRFUNC_HI] of string =
    ('Blank Line',
     'Single Dash Line',
     'Double Dash Line',
     'Report Header',
     'Report Center',
     'Report Period',
     'Print Text or Defined Value',
     'Print Column Headings'
    );

  // setformat format codes
  GLFS_FORMAT_BALSHEET = 1;
  GLFS_FORMAT_LO = GLFS_FORMAT_BALSHEET;
  GLFS_FORMAT_INCSTMT = 2;
  GLFS_FORMAT_PRINTACCTNOS = 3;
  GLFS_FORMAT_AUTOPAGE = 4;
  GLFS_FORMAT_SKIPZERO = 5;
  GLFS_FORMAT_SEGMENTS = 6;
  GLFS_FORMAT_LEGACY = 7;
  GLFS_FORMAT_ZEROSUPPRESS = 8; // 11/26/01
  GLFS_FORMAT_PRINTPRIOR = 9; // 03/26/03
  GLFS_FORMAT_SKIPZEROTOTALS = 10; // 04/11/03
  GLFS_FORMAT_DETAILLEVEL = 11; // 1.5.140
  GLFS_FORMAT_CRPARENTHESES = 12; // 1.5.140
  GLFS_FORMAT_COCONSOLIDATE = 13; // 1.8.0
  GLFS_FORMAT_HI = GLFS_FORMAT_COCONSOLIDATE;

  GLFS_FORMAT_DESCS: array [GLFS_FORMAT_LO..GLFS_FORMAT_HI] of string =
    ('Balance Sheet Format',
     'Income Statement Format',
     'Print Account Numbers',
     'Automatic Page Breaks',
     'Skip Zero Accounts',
     'Process Segments',
     'Legacy Mode',
     'Zero Suppress',
     'Print Prior Period',
     'Skip Zero Totals',
     'Detail Level', // 1.5.140
     'Print Credits in ()', // 1.5.140
     'Company Consolidation' // 1.8.0
    );

  // setformat balance sheet format codes
  GLFS_BALFORMAT_LEFT = 1;
  GLFS_BALFORMAT_LO = GLFS_BALFORMAT_LEFT;
  GLFS_BALFORMAT_STD = 2;
  GLFS_BALFORMAT_SINGLE_LEFT = 3; // 03/27/03
  GLFS_BALFORMAT_SINGLE_STD = 4; // 03/27/03
  GLFS_BALFORMAT_HI = GLFS_BALFORMAT_SINGLE_STD;

  GLFS_BALFORMAT_DESCS: array [GLFS_BALFORMAT_LO..GLFS_BALFORMAT_HI] of string =
    ('Left',
     'Standard',
     'Single Column Left',
     'Single Column Standard'
    );

  // setformat income statement format codes
  GLFS_INCFORMAT_NOCOMP = 1;
  GLFS_INCFORMAT_LO = GLFS_INCFORMAT_NOCOMP;
  GLFS_INCFORMAT_YTDLYRCOMP = 2;
  GLFS_INCFORMAT_CURLYRCOMP = 3;
  GLFS_INCFORMAT_CURBUDCOMP = 4;
  GLFS_INCFORMAT_TYRLYRCOMP = 5;
  GLFS_INCFORMAT_TYRBUDCOMP = 6;
  GLFS_INCFORMAT_TYRALLCOMP = 7;
  GLFS_INCFORMAT_ACTBUDCOMP = 8; // 2.6.5
  GLFS_INCFORMAT_HI = GLFS_INCFORMAT_ACTBUDCOMP;

  GLFS_INCFORMAT_DESCS: array [GLFS_INCFORMAT_LO..GLFS_INCFORMAT_HI] of string =
    (
     'NoComp',
     'YtdLyrComp',
     'CurLyComp',
     'CurYtdBud',
     'TyrLyrComp',
     'TyrBudSls',
     'TyrAllComp',
     'ActBudComp' // 2.6.5
    );

  // setformat detail level codes
  GLFS_DETAILLEVEL_1 = 1;
  GLFS_DETAILLEVEL_LO = GLFS_DETAILLEVEL_1;
  GLFS_DETAILLEVEL_2 = 2;
  GLFS_DETAILLEVEL_3 = 3;
  GLFS_DETAILLEVEL_4 = 4;
  GLFS_DETAILLEVEL_5 = 5;
  GLFS_DETAILLEVEL_6 = 6;
  GLFS_DETAILLEVEL_7 = 7;
  GLFS_DETAILLEVEL_8 = 8;
  GLFS_DETAILLEVEL_9 = 9;
  GLFS_DETAILLEVEL_HI = GLFS_DETAILLEVEL_9;

  GLFS_DETAILLEVEL_DESCS: array [GLFS_DETAILLEVEL_LO..GLFS_DETAILLEVEL_HI] of string =
    (
     '1 - Most Summarized',
     '2',
     '3',
     '4',
     '5',
     '6',
     '7',
     '8',
     '9 - Most Detailed'
    );

  // newpage predefined heading codes
  GLFS_NEWPAGE_ISLONG = 1;
  GLFS_NEWPAGE_LO = GLFS_NEWPAGE_ISLONG;
  GLFS_NEWPAGE_ISSHORT = 2;
  GLFS_NEWPAGE_BSLONG = 3;
  GLFS_NEWPAGE_BSSHORT = 4;
  GLFS_NEWPAGE_HI = GLFS_NEWPAGE_BSSHORT;

  GLFS_NEWPAGE_DESCS: array [GLFS_NEWPAGE_LO..GLFS_NEWPAGE_HI] of string =
    (
     'Income Statement Long',
     'Income Statement Short',
     'Balance Sheet Long',
     'Balance Sheet Short'
    );

  GLFS_YESNO_NO = 0;
  GLFS_YESNO_LO = GLFS_YESNO_NO;
  GLFS_YESNO_YES = 1;
  GLFS_YESNO_HI = GLFS_YESNO_YES;

  GLFS_YESNO_DESCS: array [GLFS_YESNO_LO..GLFS_YESNO_HI] of string =
    ('No',
     'Yes'
    );

  // font format codes
  GLFS_FONT_NAME = 1;
  GLFS_FONT_LO = GLFS_FONT_NAME;
  GLFS_FONT_BOLD = 2;
  GLFS_FONT_ITALIC = 3;
  GLFS_FONT_UNDERLINE = 4;
  GLFS_FONT_HI = GLFS_FONT_UNDERLINE;

  GLFS_FONT_DESCS: array [GLFS_FONT_LO..GLFS_FONT_HI] of string =
    (
      'Name',
      'Bold',
      'Italic',
      'Underline'
    );

  //Reports and Listings Description and Values strings
  //
  //AR Truck Types // 3.1.2
  AR_TRUCKTYPE_AGGREGATE = 'A';
  AR_TRUCKTYPE_BLOCK = 'B';
  AR_TRUCKTYPE_CONCRETE = 'C';
  AR_TRUCKTYPE_MISC = 'M';
  AR_TRUCKTYPE_PUMP = 'P';
  AR_TRUCKTYPE_RECS: array[0..4] of TCodeDescRec = (
    (Code: AR_TRUCKTYPE_AGGREGATE; Description: 'Aggregate'),
    (Code: AR_TRUCKTYPE_BLOCK;     Description: 'Block'),
    (Code: AR_TRUCKTYPE_CONCRETE;  Description: 'Concrete'),
    (Code: AR_TRUCKTYPE_MISC;      Description: 'Misc.'),
    (Code: AR_TRUCKTYPE_PUMP;      Description: 'Pump')
  );

  //COD Flag
  ARCODFlagDesc = 'C.O.D.;Charge;Cash;Blocked;Credit Warning;Bad Debt';
  ARCODFlagValue = 'Y;N;C;B;W;D';

  //Dunning Flag
  ARDunFlagDesc = 'Yes;No;No Statement';
  ARDunFlagValue = 'Y;N;*';

  //YesNo Flag
  YesNoFlagDesc = 'Yes;No';
  YesNoFlagValue = 'Y;N';
  YesNoFlagRecs: array[0..1] of TCodeDescRec = (
    (Code: 'Y'; Description: 'Yes'),
    (Code: 'N'; Description: 'No')
  );

  //Plant Types

  AR_PLANTTYPE_CONCRETE = 'C';
  AR_PLANTTYPE_AGGREGATE = 'A';
  AR_PLANTTYPE_POINTOFSALE = 'P';
  AR_PLANTTYPE_BLOCK = 'B';
  AR_PLANTTYPE_OTHER = 'O';
  AR_PLANTTYPE_SILOLOADOUT = 'S';
  AR_PLANTTYPE_DISPATCH_CONCRETE = 'D';
  AR_PLANTTYPE_DISPATCH_AGGREGATE = 'E';
  AR_PLANTTYPE_DISPATCH_ASPHALT = 'F';
  AR_PLANTTYPE_DISPATCH_BLOCK = 'G';
  AR_PLANTTYPE_DISPATCH_SILOLOADOUT = 'H';
  AR_PLANTTYPE_ALL =
    AR_PLANTTYPE_CONCRETE + ',' +
    AR_PLANTTYPE_AGGREGATE + ',' +
    AR_PLANTTYPE_POINTOFSALE + ',' +
    AR_PLANTTYPE_BLOCK + ',' +
    AR_PLANTTYPE_OTHER + ',' +
    AR_PLANTTYPE_SILOLOADOUT + ',' +
    AR_PLANTTYPE_DISPATCH_CONCRETE + ',' +
    AR_PLANTTYPE_DISPATCH_AGGREGATE + ',' +
    AR_PLANTTYPE_DISPATCH_ASPHALT + ',' +
    AR_PLANTTYPE_DISPATCH_BLOCK + ',' +
    AR_PLANTTYPE_DISPATCH_SILOLOADOUT; // 3.5.99.68


  AR_PLANTTYPE_RECS: array[0..10] of TCodeDescRec = (
    (Code: AR_PLANTTYPE_CONCRETE;             Description: 'Concrete'),
    (Code: AR_PLANTTYPE_AGGREGATE;            Description: 'Aggregate'),
    (Code: AR_PLANTTYPE_POINTOFSALE;          Description: 'Point of Sale'),
    (Code: AR_PLANTTYPE_BLOCK;                Description: 'Block'),
    (Code: AR_PLANTTYPE_OTHER;                Description: 'Other'),
    (Code: AR_PLANTTYPE_SILOLOADOUT;          Description: 'Silo Loadout'),
    (Code: AR_PLANTTYPE_DISPATCH_CONCRETE;    Description: 'Dispatch - Concrete'),
    (Code: AR_PLANTTYPE_DISPATCH_AGGREGATE;   Description: 'Dispatch - Aggregate'),
    (Code: AR_PLANTTYPE_DISPATCH_ASPHALT;     Description: 'Dispatch - Asphalt'),
    (Code: AR_PLANTTYPE_DISPATCH_BLOCK;       Description: 'Dispatch - Block'),
    (Code: AR_PLANTTYPE_DISPATCH_SILOLOADOUT; Description: 'Dispatch - Silo Loadout')
   );

  //Plant Mix Types // 2.6
  AR_PLANTMIXTYPE_DRY = 'D';
  AR_PLANTMIXTYPE_WET = 'W';

  AR_PLANTMIXTYPE_RECS: array[0..1] of TCodeDescRec = (
    (Code: AR_PLANTMIXTYPE_DRY;   Description: 'Dry'),
    (Code: AR_PLANTMIXTYPE_WET;   Description: 'Wet'));

  //Unit of Measure Systems
  ARUOMSystemDesc = 'English;Metric';
  ARUOMSystemValue = 'E;M';
  ARUOMSystemRecs: array[0..1] of TCodeDescRec = (
    (Code: 'E';   Description: 'English'),
    (Code: 'M';   Description: 'Metric')
  );

  // Quote Won/Lost Flag // 2.8
  QT_WONLOSTFLAG_OPEN = 'O';
  QT_WONLOSTFLAG_WON = 'W';
  QT_WONLOSTFLAG_LOST = 'L';
  QT_WONLOSTFLAG_CLOSED = 'C';

  QT_WONLOSTFLAG_RECS: array [0..3] of TCodeDescRec = (
    (Code: QT_WONLOSTFLAG_OPEN;    Description: 'Open'),
    (Code: QT_WONLOSTFLAG_WON;     Description: 'Won'),
    (Code: QT_WONLOSTFLAG_LOST;    Description: 'Lost'),
    (Code: QT_WONLOSTFLAG_CLOSED;  Description: 'Closed'));

  //Payroll Hourly/Salary Flag // 4.2.4.2
  PR_HOURSALFLAG_HOURLY = 'H';
  PR_HOURSALFLAG_SALARY = 'S';
  PR_HOURSALFLAG_RECS: array[0..1] of TCodeDescRec = (
    (Code: PR_HOURSALFLAG_HOURLY;   Description: 'Hourly'),
    (Code: PR_HOURSALFLAG_SALARY;   Description: 'Salary'));

  // predefined tax codes // 08/16/00
  TAXCODE_EXEMPTCUSTOMER = '1';
  TAXCODE_EXEMPTPRODUCT = '2';

  // batch type codes // 05/14/01
  BATCHTYPE_AP_HANDWRITTENCHECKS = 'HW'; // 08/14/01
  BATCHTYPE_AP_INVOICESETUP = 'IS'; // 08/31/04
  BATCHTYPE_AP_INVOICEVOUCHERING = 'IV'; // 08/14/01

  BATCHTYPE_AR_QUICKTICKETS = 'QT';
  BATCHTYPE_AR_PURCHRECEIPTS = 'IP';
  BATCHTYPE_AR_MISCTRANS = 'IT';
  BATCHTYPE_AR_PRODUCTION = 'IB';
  BATCHTYPE_AR_PHYSICALENTRY = 'IE';
  BATCHTYPE_AR_BALANCEENTRY = 'II'; // 1.5.72
  BATCHTYPE_AR_TRANSFERS = 'IX'; // 2.5

  BATCHTYPE_CM_TRXENTRY = 'TE'; // 04/15/03
  BATCHTYPE_CM_TRXBAL = 'TB'; // 1.5.138
  BATCHTYPE_CM_TRXIMPORT = 'TI'; // 3.6.6.3

  BATCHTYPE_GL_JOURNENTRY = 'JE'; // 08/21/01
  BATCHTYPE_GL_BUDGTENTRY = 'BE'; // 08/21/01

  BATCHTYPE_JC_TRXENTRY = 'TE'; // 2.2.5

  // batch post method codes
  BATCH_POSTMETHOD_NORMAL = 'N';
  BATCH_POSTMETHOD_RECURRING = 'R';
  BATCH_POSTMETHOD_REVERSING = 'V';
  BATCH_POSTMETHOD_TEMPRECURRING = 'P'; // 1.5

  //A/P invoice sources // 1.5.100.5
  AP_INVOICESOURCE_INVOICE = 'I';
  AP_INVOICESOURCE_SETUP = 'S';

  // A/R invoice types // 09/20/01
  AR_INVOICETYPE_BALANCE = 'B';
  AR_INVOICETYPE_CREDIT = 'C';
  AR_INVOICETYPE_INVOICE = 'I';
  AR_INVOICETYPE_SERVICECHARGE = 'S';

  AR_INVOICETYPE_RECS: array[0..3] of TCodeDescRec = ( // 3.2.8.6
    (Code: AR_INVOICETYPE_BALANCE;       Description: 'Balance'),
    (Code: AR_INVOICETYPE_CREDIT;        Description: 'Credit'),
    (Code: AR_INVOICETYPE_INVOICE;       Description: 'Invoice'),
    (Code: AR_INVOICETYPE_SERVICECHARGE; Description: 'Svc Chg')
  );

  // A/R invoice void flags // 1.5.104
  AR_INVVOIDFLAG_NORMAL = 'N';
  AR_INVVOIDFLAG_REVERSAL = 'R';
  AR_INVVOIDFLAG_VOID = 'V';

  // A/R plant tax authority methods // 4.2.1.5
  AR_PLTAXAUTHMETHOD_CUSTOMER = 'C';
  AR_PLTAXAUTHMETHOD_DEFAULT = 'D';
  AR_PLTAXAUTHMETHOD_FORCE = 'F';
  AR_PLTAXAUTHMETHOD_FORCENOEDIT = 'G';
  AR_PLTAXAUTHMETHOD_PLANTORDER = 'P';

  AR_PLTAXAUTHMETHOD_RECS: array[0..4] of TCodeDescRec = (
    (Code: AR_PLTAXAUTHMETHOD_CUSTOMER;    Description: 'Customer'),
    (Code: AR_PLTAXAUTHMETHOD_DEFAULT;     Description: 'Default'),
    (Code: AR_PLTAXAUTHMETHOD_FORCE;       Description: 'Force'),
    (Code: AR_PLTAXAUTHMETHOD_FORCENOEDIT; Description: 'Force No Edit'),
    (Code: AR_PLTAXAUTHMETHOD_PLANTORDER;  Description: 'Plant/Order')
  ); // 4.2.1.5

  // default invoice cutoff days // 2.3.10
  DEF_INVCUTOFFDAYS_AR = 365*5; // 5 years
  DEF_INVCUTOFFDAYS_TICK = 365; // 1 year
  DEF_INVCUTOFFDAYS_NONE = -1; // none

  //Cash Management STATUS
  CM_STATUS_OPEN = '1';
  CM_STATUS_CLEARED = '2';
  CM_STATUS_RECONCILED = '3';

  //Cash Management VOID_IND Flags // 1.5.135
  CM_VOIDIND_NORMAL = 'N';
  CM_VOIDIND_REVERSAL = 'R';
  CM_VOIDIND_VOID = 'V';

  //Cash Management TRANS_TYPEs // 12/18/01
type
  TCMTransTypeDef = record
    Number      : integer; // as stored in the database
    Code        : char;
    Description : string;
    ShortDesc   : string;
    AllowEntry  : boolean; // available to user
    IsDebit     : integer; // 1 if debit type, 0 if credit
  end;

  TCMTransType = (cmBalanceForward,     // 1
                  cmCheck,              // 2
                  cmAPCheck,            // 3
                  cmPaycheck,           // 4
                  cmDeposit,            // 5
                  cmARDeposit,          // 6
                  cmInterest,           // 7
                  cmServiceCharge,      // 8
                  cmTransfer,           // 9
                  cmTransferIn,         // 10 // 03/06/02 PCU
                  cmMiscellaneous,      // 11 // 03/06/02 PCU
                  cmDividend,           // 12 // 03/06/02 PCU
                  cmVoidCheck,          // 13 // 06/18/02 zz
                  cmInvalid );          // -1

const
  CM_BALANCE_FORWARD     = 1;
  CM_CHECK               = 2;
  CM_AP_CHECK            = 3;
  CM_PAYCHECK            = 4;
  CM_DEPOSIT             = 5;
  CM_AR_DEPOSIT          = 6;
  CM_INTEREST            = 7;
  CM_SERVICE_CHARGE      = 8;
  CM_TRANSFER            = 9;
  CM_TRANSFER_IN         = 10; // 03/06/02 PCU
  CM_MISCELLANEOUS       = 11; // 03/06/02 PCU
  CM_DIVIDEND            = 12; // 03/06/02 PCU
  CM_VOIDCHECK           = 13; // 06/18/02 zz
  CM_INVALID             = -1;

  CM_TRANS_TYPE_DEFS : array[TCMTransType] of TCMTransTypeDef = (
    (Number: CM_BALANCE_FORWARD; Code: 'B'; Description: 'Balance Forward'; ShortDesc: 'Bal Fwd';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_CHECK; Code: 'C'; Description: 'Check'; ShortDesc: 'Check' ;
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_AP_CHECK; Code: 'A'; Description: 'AP Check'; ShortDesc: 'Check-AP';
                                 AllowEntry: False; IsDebit: 0),
    (Number: CM_PAYCHECK; Code: 'P'; Description: 'Paycheck'; ShortDesc: 'Check-PY';
                                 AllowEntry: False; IsDebit: 0),
    (Number: CM_DEPOSIT; Code: 'D'; Description: 'Deposit'; ShortDesc: 'Deposit';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_AR_DEPOSIT; Code: 'R'; Description: 'AR Deposit'; ShortDesc: 'Dep-AR';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_INTEREST; Code: 'I'; Description: 'Interest'; ShortDesc: 'Interest';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_SERVICE_CHARGE; Code: 'S'; Description: 'Service Charge'; ShortDesc: 'Svc Chg';
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_TRANSFER; Code: 'T'; Description: 'Transfer'; ShortDesc: 'Transfer';
                                 AllowEntry: True;  IsDebit: 0),
    (Number: CM_TRANSFER_IN; Code: 'N'; Description: 'Transfer In'; ShortDesc: 'Transfer';
                                 AllowEntry: False;  IsDebit: 1),
    (Number: CM_MISCELLANEOUS; Code: 'M'; Description: 'Miscellaneous'; ShortDesc: 'Misc';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_DIVIDEND; Code: 'V'; Description: 'Dividend'; ShortDesc: 'Dividend';
                                 AllowEntry: True;  IsDebit: 1),
    (Number: CM_VOIDCHECK; Code: 'O'; Description: 'Void Check'; ShortDesc: 'Check-Void';
                                 AllowEntry: False; IsDebit: 1),
    (Number: CM_INVALID; Code: ' '; Description: ' '; ShortDesc: ' ';
                                 AllowEntry: False; IsDebit: 1)
  );

  // Location types // 11/17/00
  LOC_OFFICE = 'O';
  LOC_BATCH = 'B';
  LOC_REMOTE = 'R';
  LOC_ONLINE = 'T'; // 04/13/01
  LOC_PAYMENTS = 'P'; // 03/14/03
  LOC_EXPORT = 'E'; // 1.5.199.1
  LOC_DISPATCH = 'D'; // 2.0.8

  LOC_TYPE_RECS: array[0..6] of TCodeDescRec = (
    (Code: LOC_BATCH;     Description: 'Batch Tickets'),
    (Code: LOC_PAYMENTS;  Description: 'Batch Payments'),
    (Code: LOC_OFFICE;    Description: 'Office'),
    (Code: LOC_ONLINE;    Description: 'Online Ticketing'),
    (Code: LOC_REMOTE;    Description: 'Remote Ticketing'),
    (Code: LOC_EXPORT;    Description: 'Export Ticketing'),
    (Code: LOC_DISPATCH;  Description: 'Standalone Dispatch')
  );

  // Location transfer methods // 2.8.4
  LOC_XFRMETHOD_FILE = 'F';
  LOC_XFRMETHOD_NONE = 'N';

  LOC_XFRMETHOD_RECS: array[0..1] of TCodeDescRec = (
    (Code: LOC_XFRMETHOD_FILE;            Description: 'File'),
    (Code: LOC_XFRMETHOD_NONE;            Description: 'None')
    );

  // invoice number range // 3.0.5
  INVOICE_LO_RANGE = 1;
  INVOICE_HI_RANGE = 999999999;

  // ticket number range 10/23/01
  TICKET_LO_RANGE = 1;
  TICKET_HI_RANGE = 9999999;

  // check number range 03/01/02
  CHECK_LO_RANGE = 1;
  CHECK_HI_RANGE = 9999999;
  
  // form names 11/14/01
  FORM_AP_1099_INT = 'APTIN[COID].FRM'; // 12/11/02
  FORM_AP_1099_MISC = 'APTMI[COID].FRM'; // 12/11/02
  FORM_AP_1099_NEC = 'APTNE[COID].FRM'; // 3.6.20.1
  FORM_AP_ACHSTUB = 'APACH[COID].FRM'; // 2.5.1
  FORM_AP_CHECK = 'APCHK[COID].FRM';
  FORM_AP_PO = 'APPO[COID].FRM'; // 2.5.2
  FORM_AR_CREDIT = 'ARCRD[COID].FRM'; // 1.8.34
  FORM_AR_DUNNING = 'ARDUN[COID].FRM'; // 2.5.13
  FORM_AR_INVOICE = 'ARINV[COID].FRM';
  FORM_AR_JOBPRICE = 'ARJOB[COID].FRM';
  FORM_AR_ORDER = 'ARORD[COID].FRM'; // 09/25/02
  FORM_AR_PLANTRECEIPT = 'ARCSH[COID].FRM';
  FORM_AR_STATEMENT = 'ARSTM[COID].FRM';
  FORM_AR_TICKET = 'ARTCK[COID].FRM';
  FORM_PR_CHECK = 'PRCHK[COID].FRM'; // 1.5
  FORM_PR_DDSTUB = 'PRDDS[COID].FRM'; // 2.3.4
  FORM_QT_QUOTE = 'QTQTE[COID].FRM';

  // label form names 11/14/01
  LABEL_AR_CUSTOMER = 'ARCUS[COID].LBL';
  LABEL_AR_PRODUCT = 'ARPRD[COID].LBL'; // 12/04/01
  LABEL_AP_VENDER = 'APVEN[COID].LBL';
  LABEL_PR_EMPLOYEE = 'PREMP[COID].LBL'; // 12/11/03

  // CC device types // 2.7.28
  CC_DEVICE_BATCHCONTROL = 'B'; // 06/10/02
  CC_DEVICE_SCALE = 'S';
  CC_DEVICE_GPS = 'G';
  CC_DEVICE_ORDER = 'O';

  // CC contact entity types // 3.2.8.10
  CC_CONTACT_CUSTOMER = CONTACT_ENTITY_TYPE_CUSTOMER;
  CC_CONTACT_EMPLOYEE = CONTACT_ENTITY_TYPE_EMPLOYEE;
  CC_CONTACT_VENDOR = CONTACT_ENTITY_TYPE_VENDOR;
  CC_CONTACT_PROSPECT = CONTACT_ENTITY_TYPE_PROSPECT;
  CC_CONTACT_JOB = CONTACT_ENTITY_TYPE_JOB;
  CC_CONTACT_QUOTE = CONTACT_ENTITY_TYPE_QUOTE;
  CC_CONTACT_ORDER = CONTACT_ENTITY_TYPE_ORDER;

  // contact email options // 3.2.8.4
  type
    TContactEmailOptRec = record
      FieldName: string;
      Description: string;
    end;

  const
  CC_CONTACT_EMAIL_OPT_LO = 1;
  CC_CONTACT_EMAIL_OPT_HI = 10;
  CC_CONTACT_TYPE_LO = 1;
  CC_CONTACT_TYPE_HI = 10;

  AR_CONTACT_EMAIL_OPTS: array [0..6] of TContactEmailOptRec = (
    (FieldName: 'EMAIL_OPT_1'; Description: 'Email Inv'),
    (FieldName: 'EMAIL_OPT_2'; Description: 'Email Stmt'),
    (FieldName: 'EMAIL_OPT_3'; Description: 'Email Tkt'),
    (FieldName: 'EMAIL_OPT_4'; Description: 'Email Quote'),
    (FieldName: 'EMAIL_OPT_5'; Description: 'Email Order'), // 3.4.4.3
    (FieldName: 'EMAIL_OPT_6'; Description: 'Email BWt'), // 3.6.9.5
    (FieldName: 'EMAIL_OPT_7'; Description: 'Email OrdCmp') // 3.6.10.2
  );

  // email control constants // 2.2

  EMAIL_CTL_NO = 'N';
  EMAIL_CTL_YES = 'Y';
  EMAIL_CTL_CC = 'C';
  EMAIL_CTL_BCC = 'B';

  EMAIL_CTL_RECS: array[0..3] of TCodeDescRec = (
    (Code: EMAIL_CTL_NO;   Description: 'No'),
    (Code: EMAIL_CTL_YES;  Description: 'Yes'),
    (Code: EMAIL_CTL_CC;   Description: 'CC'),
    (Code: EMAIL_CTL_BCC;  Description: 'BCC'));

  EMAIL_CTL_ARINVOICE = 1;
  EMAIL_CTL_ARSTATEMENT = 2;
  EMAIL_CTL_ARTICKET = 3;

  // 1099 form names // 3.6.20.1
  AP_1099_INT = '1099-INT';
  AP_1099_MISC = '1099-MISC';
  AP_1099_NEC = '1099-NEC';



  // AP Tax Type

  AP_TAX_ID_TYPE_IND = 'I'; // 12/17/2010
  AP_TAX_ID_TYPE_CORP = 'C'; // 12/17/2010
  AP_TAX_ID_TYPE_CORP_S = 'S'; // 11/07/2011
  AP_TAX_ID_TYPE_PART = 'P'; // 12/17/2010
  AP_TAX_ID_TYPE_3 = '3'; // 11/27/2012
  AP_TAX_ID_TYPE_4 = '4'; // 11/27/2012
  AP_TAX_ID_TYPE_TRUST = 'T'; // 11/07/2011
  AP_TAX_ID_TYPE_LLC_D = 'D'; // 12/17/2010
  AP_TAX_ID_TYPE_LLC_C = 'L'; // 12/17/2010
  AP_TAX_ID_TYPE_LLC_S = 'X'; // 11/07/2011
  AP_TAX_ID_TYPE_LLC_P = 'R'; // 12/17/2010
  AP_TAX_ID_TYPE_OTH = 'O'; // 12/17/2010
  AP_TAX_ID_TYPE_1 = '1'; // 12/17/2010
  AP_TAX_ID_TYPE_2 = '2'; // 12/17/2010

  AP_TAX_ID_TYPE: array[0..13] of TCodeDescRec = ( //2.5.16 11/27/12
    (Code: AP_TAX_ID_TYPE_IND;       Description: 'Individual/Sole proprietor'),
    (Code: AP_TAX_ID_TYPE_CORP;      Description: 'C Corporation'),
    (Code: AP_TAX_ID_TYPE_CORP_S;    Description: 'S Corporation'),
    (Code: AP_TAX_ID_TYPE_PART;      Description: 'Partnership'),
    (Code: AP_TAX_ID_TYPE_TRUST;     Description: 'Trust/Estate'),
    (Code: AP_TAX_ID_TYPE_LLC_C;     Description: 'LLC C Corporation'),
    (Code: AP_TAX_ID_TYPE_LLC_S;     Description: 'LLC S Corporation'),
    (Code: AP_TAX_ID_TYPE_LLC_P;     Description: 'LLC Partnership'),
    (Code: AP_TAX_ID_TYPE_3;         Description: 'Corporation'), // 2.5.16
    (Code: AP_TAX_ID_TYPE_4;         Description: 'LLC'), // 2.5.16
    (Code: AP_TAX_ID_TYPE_LLC_D;     Description: 'LLC Disregarded Entity*'),
    (Code: AP_TAX_ID_TYPE_OTH;       Description: 'Other*'),
    (Code: AP_TAX_ID_TYPE_1;         Description: 'Unspecified Business*'),
    (Code: AP_TAX_ID_TYPE_2;         Description: 'Unspecified Individual*')); // 2.4.2

  // AP Payment Methods // 2.5.1

  AP_PAYMENT_METHOD_ACH = 'AC';
  AP_PAYMENT_METHOD_CHECK = 'CK';

  AP_PAYMENT_METHOD_RECS: array [0..1] of TCodeDescRec = (
    (Code: AP_PAYMENT_METHOD_CHECK;   Description: 'Check'),
    (Code: AP_PAYMENT_METHOD_ACH;     Description: 'ACH'));

  // P.O. Statuses // 2.5.2

  PO_STATUS_NEW = 'N';
  PO_STATUS_APPROVED = 'A';
  PO_STATUS_COMPLETE = 'C';
  PO_STATUS_CANCELLED = 'X';

  PO_STATUS_RECS: array [0..3] of TCodeDescRec = (
    (Code: PO_STATUS_NEW;             Description: 'New'),
    (Code: PO_STATUS_APPROVED;        Description: 'Approved'),
    (Code: PO_STATUS_COMPLETE;        Description: 'Complete'),
    (Code: PO_STATUS_CANCELLED;       Description: 'Cancelled'));

  // Company Database Events
  CODB_EVENT_ORDERCHANGE = 0;

  // Payroll Category / Link Types
  PR_LINKTYPE_DEDUCT = 'D';
  PR_LINKTYPE_NETPAY = 'N';
  PR_LINKTYPE_PAY = 'P';
  PR_LINKTYPE_TAXES = 'T';

  // Payroll DEF Types
  PR_DEFTYPE_CHECKAMOUNT = 'C';
  PR_DEFTYPE_DEDUCTION = 'D';
  PR_DEFTYPE_DIRDEPAMOUNT = 'A';
  PR_DEFTYPE_GROSSPAY = 'Z';
  PR_DEFTYPE_HOURS = 'H';
  PR_DEFTYPE_NETPAY = 'N';
  PR_DEFTYPE_PAY = 'P';
  PR_DEFTYPE_PRETAX = 'X';
  PR_DEFTYPE_REIMBURSE = 'R';
  PR_DEFTYPE_TAX = 'T';
  PR_DEFTYPE_TAXGROSS = 'G';
  PR_DEFTYPE_WORKING = 'W';

  PR_DEFTYPE_RECS: array [0..11] of TCodeDescRec = ( // 2.5.16
    (Code: PR_DEFTYPE_CHECKAMOUNT;  Description: 'Chk Amt'),
    (Code: PR_DEFTYPE_DEDUCTION;    Description: 'Deduction'),
    (Code: PR_DEFTYPE_DIRDEPAMOUNT; Description: 'Dir Dep'),
    (Code: PR_DEFTYPE_GROSSPAY;     Description: 'Gross Pay'),
    (Code: PR_DEFTYPE_HOURS;        Description: 'Hours'),
    (Code: PR_DEFTYPE_NETPAY;       Description: 'Net Pay'),
    (Code: PR_DEFTYPE_PAY;          Description: 'Pay'),
    (Code: PR_DEFTYPE_PRETAX;       Description: 'Pre-Tax Ded'),
    (Code: PR_DEFTYPE_REIMBURSE;    Description: 'Reimburse'),
    (Code: PR_DEFTYPE_TAX;          Description: 'Tax'),
    (Code: PR_DEFTYPE_TAXGROSS;     Description: 'Tax Gross'),
    (Code: PR_DEFTYPE_WORKING;      Description: 'Working'));

  // Payroll Link Calc Groups // 3.6.9.2
  PR_CALCGROUP_PAY = '100';
  PR_CALCGROUP_TAX = '200';
  PR_CALCGROUP_DEDUCTION = '300';
  PR_CALCGROUP_NETPAY = '400';

  PR_CALCGROUP_RECS: array[0..3] of TCodeDescRec = (
    (Code: PR_CALCGROUP_PAY; Description: 'Pay'),
    (Code: PR_CALCGROUP_TAX; Description: 'Tax'),
    (Code: PR_CALCGROUP_DEDUCTION; Description: 'Deduction'),
    (Code: PR_CALCGROUP_NETPAY; Description: 'Net Pay')
  );

  // Payroll Rate Method Types // 2.7.23
  PR_RATEMETHOD_RATE = 'R';
  PR_RATEMETHOD_PREVAIL = 'P';

  PR_RATEMETHOD_RECS: array [0..1] of TCodeDescRec = ( 
    (Code: PR_RATEMETHOD_RATE;      Description: 'Rate'),
    (Code: PR_RATEMETHOD_PREVAIL;   Description: 'Prevailing'));

  // Payroll Employment Status types // 1.6.24
type
  TPREmpStatusType = (esActive,
                      esTerminated,
                      esRetired,
                      esDeceased,
                      esDisabled,
                      esLongTermDisability,
                      esLeaveOfAbsence,
                      esMilitaryLeaveOfAbsence,
                      esLayoff,
                      esLayoffSeasonal,
                      esFamilyLeaveAct,
                      esWorkmansComp
                      );

const
  // Payroll Employee Status // 1.6.2
  PR_EMPSTATUS_ACTIVE = 'A';
  PR_EMPSTATUS_TERMINATED = 'TE';
  PR_EMPSTATUS_RETIRED = 'RE';
  PR_EMPSTATUS_DECEASED = 'DE';
  PR_EMPSTATUS_DISABLED = 'DI';
  PR_EMPSTATUS_LONGTERMDIS = 'LD';
  PR_EMPSTATUS_ABSENCE = 'LA';
  PR_EMPSTATUS_MILITARY = 'LM';
  PR_EMPSTATUS_LAYOFF = 'LO';
  PR_EMPSTATUS_LAYOFFSEASONAL = 'LS';
  PR_EMPSTATUS_FAMILYLEAVEACT = 'FL';  //2.2.31
  PR_EMPSTATUS_WORKMANSCOMP = 'WC';   //2.2.31


  // 1.6.24
  PR_EMPSTATUS_DEFS: array[TPREmpStatusType] of TCodeDescRec = ( // 2.7.7
    (Code: PR_EMPSTATUS_ACTIVE;         Description: 'Active'),
    (Code: PR_EMPSTATUS_TERMINATED;     Description: 'Terminated'),
    (Code: PR_EMPSTATUS_RETIRED;        Description: 'Retired'),
    (Code: PR_EMPSTATUS_DECEASED;       Description: 'Deceased'),
    (Code: PR_EMPSTATUS_DISABLED;       Description: 'Disabled'),
    (Code: PR_EMPSTATUS_LONGTERMDIS;    Description: 'Long-term Disability'),
    (Code: PR_EMPSTATUS_ABSENCE;        Description: 'Leave of Absence'),
    (Code: PR_EMPSTATUS_MILITARY;       Description: 'Military Leave'),
    (Code: PR_EMPSTATUS_LAYOFF;       Description: 'Layoff'),
    (Code: PR_EMPSTATUS_LAYOFFSEASONAL;       Description: 'Layoff Seasonal'),
    (Code: PR_EMPSTATUS_FAMILYLEAVEACT;       Description: 'Family Leave Act'), //2.2.31
    (Code: PR_EMPSTATUS_WORKMANSCOMP;       Description: 'Workmans Comp')    ); //2.2.31

  PR_ACADEPTYPE_EMPLOYEE = 'E';
  PR_ACADEPTYPE_SPOUSE = 'S';
  PR_ACADEPTYPE_PARTNER = 'P';
  PR_ACADEPTYPE_CHILD = 'C';
  PR_ACADEPTYPE_RELATIVE = 'R';
  PR_ACADEPTYPE_COURTORDER = 'O';

  PR_ACADEPTYPE_RECS: array [0..5] of TCodeDescRec = ( // 2.9.13
      (Code: PR_ACADEPTYPE_EMPLOYEE;    Description: 'Employee'),
      (Code: PR_ACADEPTYPE_SPOUSE;      Description: 'Spouse'),
      (Code: PR_ACADEPTYPE_PARTNER;     Description: 'Partner'),
      (Code: PR_ACADEPTYPE_CHILD;       Description: 'Child'),
      (Code: PR_ACADEPTYPE_RELATIVE;    Description: 'Relative'),
      (Code: PR_ACADEPTYPE_COURTORDER;  Description: 'Court Ord')
    );

  // Payroll Tax Library Tax Types // 1.5.39
  PR_TAXLIB_TYPE_FIT = 'F';
  PR_TAXLIB_TYPE_SOCIALSECURITY = 'O';
  PR_TAXLIB_TYPE_MEDICARE = 'M';
  PR_TAXLIB_TYPE_STATE = 'S';
  PR_TAXLIB_TYPE_LOCAL = 'L';
  PR_TAXLIB_TYPE_OTHER = 'Z';

  // Payroll Run Status Codes
  PR_RUNSTATUS_SETUP = 'S';
  PR_RUNSTATUS_PROCESSED = 'P';
  PR_RUNSTATUS_CHECKS = 'C';
  PR_RUNSTATUS_DIRDEP = 'D';
  PR_RUNSTATUS_ACCEPTED = 'A';
  PR_RUNSTATUS_REJECTED = 'R';
  PR_RUNSTATUS_REPORTS = PR_RUNSTATUS_CHECKS;
  PR_RUNSTATUS_TIMECARDS = PR_RUNSTATUS_PROCESSED;

  // Payroll Calculation Client Action Values
  PR_CLIENTACTION_NONE = 0;
  PR_CLIENTACTION_LOG = 1;
  PR_CLIENTACTION_PROMPT = 2;
  PR_CLIENTACTION_DEBUG = 3;
  PR_CLIENTACTION_STOP = 4;
  PR_CLIENTACTION_PROGRESS = 5; // 1.5.5

  // Payroll Calculation Server Action Values
  PR_SERVERACTION_CONTINUE = 0;
  PR_SERVERACTION_ABORT = 1;
  PR_SERVERACTION_SKIPDEF = 2;
  PR_SERVERACTION_SKIPEMP = 3;
  PR_SERVERACTION_STOP = 4;

  // Payroll Operation Codes
  PR_OP_LO = 1;
  PR_OP_ADD = 1;
  PR_OP_SUBTRACT = 2;
  PR_OP_MULTIPLY = 3;
  PR_OP_DIVIDE = 4;
  PR_OP_MOD = 5;
  PR_OP_CLEAR = 6;
  PR_OP_ABS = 7;
  PR_OP_SET = 8;
  PR_OP_MIN = 9;
  PR_OP_MAX = 10;
  PR_OP_EXIT = 11;
  PR_OP_WRITE = 12;
  PR_OP_WARN = 13;
  PR_OP_DEBUG = 14;
  PR_OP_IF = 15;
  PR_OP_ELSE = 16;
  PR_OP_ENDIF = 17;
  PR_OP_WARNIF = 18;
  PR_OP_PROMPTIF = 19;
  PR_OP_EXITIF = 20;
  PR_OP_STOPIF = 21;
  PR_OP_PROCESSXREF = 22;
  PR_OP_SUMDEFTYPE = 23;
  PR_OP_CALCTAX = 24;
  PR_OP_TIMECARD = 25;
  PR_OP_MACRO = 26;
  PR_OP_EVENT = 27;
  PR_OP_APBEGIN = 28; // 2.5.1
  PR_OP_APFIELD = 29; // 2.5.1
  PR_OP_APEND = 30; // 2.5.1
  PR_OP_SETNZ = 31; // 3.2.3.3
  PR_OP_HI = 31; // 3.2.3.3

  // Payroll Time Card Sources
  PR_TCSOURCE_MANUAL = 'M';
  PR_TCSOURCE_AUTO = 'A';
  PR_TCSOURCE_IMPORTED = 'X';
  PR_TCSOURCE_OVERRIDE = 'O'; // 1.5.15
  PR_TCSOURCE_CALCULATED = 'C'; // 1.5.15

  // Payroll Tax Code Types
  PR_TAXCODE_FIT = 'F';
  PR_TAXCODE_FICA_SS = 'O';
  PR_TAXCODE_FICA_MED = 'M';
  PR_TAXCODE_STATE = 'S';
  PR_TAXCODE_LOCAL = 'L';
  PR_TAXCODE_OTHER = 'Z';

  // Payroll Warning Severity Levevls
  PR_SEVERITY_ERROR = 9;
  PR_SEVERITY_OVERRIDE = 1; // 3.4.6.6
  PR_SEVERITY_WARNING_LO = 0;

  // Payroll Calculation Log Record Types // 1.5.37
  PR_CALCLOG_DEBUG = 'D';
  PR_CALCLOG_TRACE = 'T';
  PR_CALCLOG_WARN = 'W';

  // Payroll Factor Value Types // 1.5.41
  PR_FACTOR_VALUETYPE_AUTODEF = 'AD';
  PR_FACTOR_VALUETYPE_LOAN = 'L';

  // Payroll Employee Net Pay History Record Types // 1.5.100
  PR_NETPAY_RECTYPE_ADJUSTMENT = 'A';
  PR_NETPAY_RECTYPE_LOAN = 'L';
  PR_NETPAY_RECTYPE_NETPAY = 'N';
  PR_NETPAY_RECTYPE_REVERSAL = 'R';
  PR_NETPAY_RECTYPE_VOID = 'V';

  // Payroll Employee Def History Trx Types
  PR_EMPDEF_TRXTYPE_STANDARD = 'S';
  PR_EMPDEF_TRXTYPE_BALANCE = 'B';
  PR_EMPDEF_TRXTYPES = PR_EMPDEF_TRXTYPE_STANDARD +
                       PR_EMPDEF_TRXTYPE_BALANCE;

  //W-2 Magnetic Media Tax Types
  PR_MMTAXTYPE_CITY = 'C';
  PR_MMTAXTYPE_COUNTY = 'D';
  PR_MMTAXTYPE_SCHOOLDIST = 'E';
  PR_MMTAXTYPE_OTHER = 'F';

  //W-2 Form Groups Types
  //   If a form group is added, then make modifications
  //        to the Count and EveryItem constants below.
  PR_FORMGRP_ADVEIC = 'W2_ADVEIC';
  PR_FORMGRP_ALLTIPS = 'W2_ALLTIPS';
  PR_FORMGRP_COMPHSA = 'W2_COMPHSA';
  PR_FORMGRP_DEFCOMP401 = 'W2_DEFCOMP401';
  PR_FORMGRP_DEFCOMP403 = 'W2_DEFCOMP403';
  PR_FORMGRP_DEFCOMP408 = 'W2_DEFCOMP408';
  PR_FORMGRP_DEFCOMP457 = 'W2_DEFCOMP457';
  PR_FORMGRP_DEFCOMP501 = 'W2_DEFCOMP501';
  PR_FORMGRP_DEPCARE = 'W2_DEPCARE';
  PR_FORMGRP_ELDEF = 'W2_ELDEF';
  PR_FORMGRP_EMPMSA = 'W2_EMPMSA';
  PR_FORMGRP_FED = 'W2_FED';
  PR_FORMGRP_LOCAL = 'W2_LOC';
  PR_FORMGRP_MC = 'W2_MC';
  PR_FORMGRP_NQPLAN = 'W2_NQPLAN';
  PR_FORMGRP_OTHER = 'W2_OTHER';
  PR_FORMGRP_SS = 'W2_SS';
  PR_FORMGRP_SSTIPS = 'W2_SSTIPS';
  PR_FORMGRP_STATE = 'W2_ST';

type
  PRFormGroupRec = record
    W2Group : string;
  end;

  PROpDescRec = record
    OpDesc : string;
  end;

const
  //If a form group is added, then make modifications
  //   to the Count and EveryItem constants below.
  PR_FORMGRP_COUNT = 19;
  PR_FORMGRP_EVERYITEM : array[1..PR_FORMGRP_COUNT] of PRFormGroupRec =
                                       ((W2Group: PR_FORMGRP_ADVEIC),
                                        (W2Group: PR_FORMGRP_ALLTIPS),
                                        (W2Group: PR_FORMGRP_COMPHSA),
                                        (W2Group: PR_FORMGRP_DEFCOMP401),
                                        (W2Group: PR_FORMGRP_DEFCOMP403),
                                        (W2Group: PR_FORMGRP_DEFCOMP408),
                                        (W2Group: PR_FORMGRP_DEFCOMP457),
                                        (W2Group: PR_FORMGRP_DEFCOMP501),
                                        (W2Group: PR_FORMGRP_DEPCARE),
                                        (W2Group: PR_FORMGRP_ELDEF),
                                        (W2Group: PR_FORMGRP_EMPMSA),
                                        (W2Group: PR_FORMGRP_FED),
                                        (W2Group: PR_FORMGRP_LOCAL),
                                        (W2Group: PR_FORMGRP_MC),
                                        (W2Group: PR_FORMGRP_NQPLAN),
                                        (W2Group: PR_FORMGRP_OTHER),
                                        (W2Group: PR_FORMGRP_SS),
                                        (W2Group: PR_FORMGRP_SSTIPS),
                                        (W2Group: PR_FORMGRP_STATE));


  PR_OPDESC_EVERYITEM : array[PR_OP_LO..PR_OP_HI] of PROpDescRec =
                                       ((OpDesc: 'ADD'),         //PR_OP_ADD = 1
                                        (OpDesc: 'SUBTRACT'),    //PR_OP_SUBTRACT = 2
                                        (OpDesc: 'MULTIPLY'),    //PR_OP_MULTIPLY = 3
                                        (OpDesc: 'DIVIDE'),      //PR_OP_DIVIDE = 4
                                        (OpDesc: 'MOD'),         //PR_OP_MOD = 5
                                        (OpDesc: 'CLEAR'),       //PR_OP_CLEAR = 6
                                        (OpDesc: 'ABS'),         //PR_OP_ABS = 7
                                        (OpDesc: 'SET'),         //PR_OP_SET = 8
                                        (OpDesc: 'MIN'),         //PR_OP_MIN = 9
                                        (OpDesc: 'MAX'),         //PR_OP_MAX = 10
                                        (OpDesc: 'EXIT'),        //PR_OP_EXIT = 11
                                        (OpDesc: 'WRITE'),       //PR_OP_WRITE = 12
                                        (OpDesc: 'WARN'),        //PR_OP_WARN = 13
                                        (OpDesc: 'DEBUG'),       //PR_OP_DEBUG = 14
                                        (OpDesc: 'IF'),          //PR_OP_IF = 15
                                        (OpDesc: 'ELSE'),        //PR_OP_ELSE = 16
                                        (OpDesc: 'ENDIF'),       //PR_OP_ENDIF = 17
                                        (OpDesc: 'WARNIF'),      //PR_OP_WARNIF = 18
                                        (OpDesc: 'PROMPTIF'),    //PR_OP_PROMPTIF = 19
                                        (OpDesc: 'EXITIF'),      //PR_OP_EXITIF = 20
                                        (OpDesc: 'STOPIF'),      //PR_OP_STOPIF = 21
                                        (OpDesc: 'PROCESSXREF'), //PR_OP_PROCESSXREF = 22
                                        (OpDesc: 'SUMDEFTYPE'),  //PR_OP_SUMDEFTYPE = 23
                                        (OpDesc: 'CALCTAX'),     //PR_OP_CALCTAX = 24
                                        (OpDesc: 'TIMECARD'),    //PR_OP_TIMECARD = 25
                                        (OpDesc: 'MACRO'),       //PR_OP_MACRO = 26
                                        (OpDesc: 'EVENT'),       //PR_OP_EVENT = 27
                                        (OpDesc: 'APBEGIN'),     //PR_OP_APBEGIN = 28
                                        (OpDesc: 'APFIELD'),     //PR_OP_APFIELD = 29
                                        (OpDesc: 'APEND'),       //PR_OP_APEND = 30
                                        (OpDesc: 'SETNZ'));      //PR_OP_SETNZ = 31

  // Payroll W-2 Boxes // 2.5.20
  PR_W2BOX_1 = '1';
  PR_W2BOX_2 = '2';
  PR_W2BOX_3 = '3';
  PR_W2BOX_4 = '4';
  PR_W2BOX_5 = '5';
  PR_W2BOX_6 = '6';
  PR_W2BOX_7 = '7';
  PR_W2BOX_8 = '8';
  PR_W2BOX_9 = '9';
  PR_W2BOX_10 = '10';
  PR_W2BOX_11 = '11';
  PR_W2BOX_12 = '12';
  PR_W2BOX_13 = '13';
  PR_W2BOX_14 = '14';
  PR_W2BOX_15 = '15';
  PR_W2BOX_16 = '16';
  PR_W2BOX_17 = '17';
  PR_W2BOX_18 = '18';
  PR_W2BOX_19 = '19';
  PR_W2BOX_20 = '20';

  // Payroll W-2 Box 12 Codes // 3.2.3.3
  PR_W2BOX12_D = 'D'; // elective deferrals to 401(k)
  PR_W2BOX12_E = 'E'; // elective deferrals to 403(b)
  PR_W2BOX12_F = 'F'; // elective deferrals to 408(k)(6)
  PR_W2BOX12_G = 'G'; // elective deferrals and employer contributions to 457(b)
  PR_W2BOX12_H = 'H'; // elective deferrals to 501(c)(18)(D)
  PR_W2BOX12_R = 'R'; // employee contributions to Archer MSA
  PR_W2BOX12_W = 'W'; // employer contributions to health savings account
  PR_W2BOX12_AA = 'AA'; // designated Roth contributions to 401(k)
  PR_W2BOX12_BB = 'BB'; // designated Roth contributions to 403(b)
  PR_W2BOX12_DD = 'DD'; // cost of employer-sponsored health coverage
  PR_W2BOX12_FF = 'FF'; // Permitted Benefits Under a Qualified Small Employer Health Reimbursement Arrangement // 3.2.3.3
  PR_W2BOX12_GG = 'GG'; // Income from Qualified Equity Grants under section 83(i) // 3.5.0.2 -- 2018
  PR_W2BOX12_HH = 'HH'; // Aggregate Deferrals under section 83(i) // 3.5.0.2 -- 2018


  DI_STATUS_VALIDSCHEDULE = [DI_STATUS_BEGINLOAD, DI_STATUS_ENDLOAD,
                             DI_STATUS_TOJOB, DI_STATUS_ONJOB,
                             DI_STATUS_BEGINPOUR, DI_STATUS_ENDPOUR,
                             DI_STATUS_RETURNING]; // 2.1


  DI_STATUS_RECS: array[DI_STATUS_LO..DI_STATUS_HI] of TiCodeDescRec = (
    (Code: DI_STATUS_UNKNOWN;          Description: 'Unknown'),
    (Code: DI_STATUS_BEGINLOAD;        Description: 'Beg Load'),
    (Code: DI_STATUS_ENDLOAD;          Description: 'End Load'),
    (Code: DI_STATUS_TOJOB;            Description: 'To Job'),
    (Code: DI_STATUS_ONJOB;            Description: 'On Job'),
    (Code: DI_STATUS_BEGINPOUR;        Description: 'Beg Pour'),
    (Code: DI_STATUS_ENDPOUR;          Description: 'End Pour'),
    (Code: DI_STATUS_RETURNING;        Description: 'Returning'),
    (Code: DI_STATUS_ARRIVEPLANT;      Description: 'At Plant'),
    (Code: DI_STATUS_INSERVICE;        Description: 'In Service'),
    (Code: DI_STATUS_OUTOFSERVICE;     Description: 'Out of Service'),
    (Code: DI_STATUS_CLOCKIN;          Description: 'Trk Clock In'),
    (Code: DI_STATUS_CLOCKOUT;         Description: 'Trk Clock Out'),
    (Code: DI_STATUS_TRAVEL;           Description: 'Travel'),
    (Code: DI_STATUS_PRETICKET;        Description: 'PreTicket'),
    (Code: DI_STATUS_DRIVER_CLOCKIN;   Description: 'Drv Clock In'),
    (Code: DI_STATUS_DRIVER_CLOCKOUT;  Description: 'Drv Clock Out'),
    (Code: DI_STATUS_RETCONC;          Description: 'Ret Conc'),
    (Code: DI_STATUS_ADDWATER;         Description: 'Add Water'),
    (Code: DI_STATUS_BEGINPOSTPOURWASH; Description: 'Beg PP Wash'), // 4.0.5.4
    (Code: DI_STATUS_ENDPOSTPOURWASH;   Description: 'End PP Wash') // 4.0.5.4
  );

  DI_STATUS_REASON_RECS: array [DI_STATUS_REASON_LO..DI_STATUS_REASON_HI] of TiCodeDescRec = ( // 2.9.92
    (Code: DI_STATUS_REASON_GPS;                  Description: 'GPS'),
    (Code: DI_STATUS_REASON_MANUAL;               Description: 'Manual'),
    (Code: DI_STATUS_REASON_AUTO;                 Description: 'Auto'),
    (Code: DI_STATUS_REASON_ONJOB_STOPTIME;       Description: 'On Job Stop'),
    (Code: DI_STATUS_REASON_ONJOB_BUTTON;         Description: 'On Job Button'),
    (Code: DI_STATUS_REASON_LOADED_BATCHRESULTS;  Description: 'Batch Weights'),
    (Code: DI_STATUS_REASON_RELEASE_PRETICKET;    Description: 'Rel PreTicket'),
    (Code: DI_STATUS_REASON_GEOFENCE;             Description: 'Geofence'),
    (Code: DI_STATUS_REASON_CUSTOM_STATUS;        Description: 'Set Mode'),
    (Code: DI_STATUS_REASON_SETORDERLOC;          Description: 'GPS')
  );

  // Dispatch Truck Stack Statuses // 2.6.8
  DI_TRUCKSTATUS_UNKNOWN = 0;
  DI_TRUCKSTATUS_LO = DI_TRUCKSTATUS_UNKNOWN;
  DI_TRUCKSTATUS_CLOCKEDIN = 1;
  DI_TRUCKSTATUS_RETURNING = 2;
  DI_TRUCKSTATUS_PRETICKET = 3;
  DI_TRUCKSTATUS_CLOCKEDOUT = 4;
  DI_TRUCKSTATUS_ACTIVELOAD = 5;
  DI_TRUCKSTATUS_HI = DI_TRUCKSTATUS_ACTIVELOAD;

  DI_TRUCKSTATUS_RECS: array [DI_TRUCKSTATUS_LO..DI_TRUCKSTATUS_HI] of TiCodeDescRec = (
    (Code: DI_TRUCKSTATUS_UNKNOWN;     Description: ''),
    (Code: DI_TRUCKSTATUS_CLOCKEDIN;   Description: 'In Yard'),
    (Code: DI_TRUCKSTATUS_RETURNING;   Description: 'Returning'),
    (Code: DI_TRUCKSTATUS_PRETICKET;   Description: 'Pre-ticket'),
    (Code: DI_TRUCKSTATUS_CLOCKEDOUT;  Description: 'Clocked Out'),
    (Code: DI_TRUCKSTATUS_ACTIVELOAD;  Description: 'Active')
  );

  // Dispatch Load Categories // 1.8.31
  DI_LOADCATEGORY_OUT         = 1;
  DI_LOADCATEGORY_SCHEDULED   = 2;
  DI_LOADCATEGORY_WILLCALL    = 3;
  DI_LOADCATEGORY_COMPLETED   = 4;

  // Dispatch Order Status constants // 3.5.99.38
  DI_ORDERSTATUS_CANCELLED = 'X';
  DI_ORDERSTATUS_CLOSED = 'C';
  DI_ORDERSTATUS_COMPLETED = 'F';
  DI_ORDERSTATUS_HOLD = 'H';
  DI_ORDERSTATUS_OPEN = 'O';
  DI_ORDERSTATUS_QUOTE = 'Q';
  DI_ORDERSTATUS_REQUEST = 'R';

  DI_ORDERSTATUS_RECS: array[0..5] of TCodeDescRec = (
    (Code: DI_ORDERSTATUS_OPEN;         Description: 'Open'),
    (Code: DI_ORDERSTATUS_COMPLETED;    Description: 'Complete'),
    (Code: DI_ORDERSTATUS_CANCELLED;    Description: 'Cancel'),
    (Code: DI_ORDERSTATUS_HOLD;         Description: 'Hold'),
    (Code: DI_ORDERSTATUS_QUOTE;        Description: 'Quote'), // 2.1.15
    (Code: DI_ORDERSTATUS_REQUEST;      Description: 'Request')); // 3.5.99.38

  // dispatch order lookback values // 3.1.9
  OrderLookbackDescs: array [0..5] of string = ('1 Month', '3 Months', '6 Months', '1 Year', '2 Years', 'All');
  OrderLookbackValues: array [0..5] of integer = (-1, -3, -6, -12, -24, MaxInt);
  ORDER_LOOKBACK_DEFAULT = 1; // 3 months

  // dispatch allow returned concrete options // 3.3.1.9
  DI_ALLOWRETCONC_YES = 'Y';
  DI_ALLOWRETCONC_NO = 'N';
  DI_ALLOWRETCONC_TRACK = 'T';

  // system map directions providers // 3.6.99.24
  CC_MAPDIRPROV_LO = 0; // google
  CC_MAPDIRPROV_HI = 1; // here
  CC_MAPDIRPROV_DEFAULT = 0; // google

  // system map geocoding providers // 3.6.99.24
  CC_MAPGEOPROV_LO = 0; // google
  CC_MAPGEOPROV_HI = 1; // here
  CC_MAPGEOPROV_DEFAULT = 0; // google

  // system map vehicle parameters // 3.6.99.58
  CC_MAPVLENGTH_DEFAULT = 35; // feet
  CC_MAPVWIDTH_DEFAULT = 8.6667; // feet
  CC_MAPVHEIGHT_DEFAULT = 13.3333; // feet
  CC_MAPVGROSSWEIGHT_DEFAULT = 40; // tons

  // job cost amount type constants // 2.2.5
  JC_AMTTYPE_CURRENCY = 'C';
  JC_AMTTYPE_HOURS = 'H';
  JC_AMTTYPE_QUANTITY = 'Q';

  // sales tax constants // 2.2.28

  LOC_LEVEL_STATE = '1';
  LOC_LEVEL_COUNTY = '2';
  LOC_LEVEL_CITY = '3';
  LOC_LEVEL_DISTRICT = '4';

  LOC_LEVEL_RECS: array[0..3] of TCodeDescRec = (
     (Code: LOC_LEVEL_STATE;    Description: 'State'),
     (Code: LOC_LEVEL_COUNTY;   Description: 'County/Parish'),
     (Code: LOC_LEVEL_CITY;     Description: 'City'),
     (Code: LOC_LEVEL_DISTRICT; Description: 'School District')
    );

  CALC_METHOD_PCTGRS = '1';
  CALC_METHOD_PCTQTY = '2';
  CALC_METHOD_PCTGRSTAX = '3';

  CALC_METHOD_RECS: array[0..2] of TCodeDescRec = (
     (Code: CALC_METHOD_PCTGRS;     Description: '%/Gross'),
     (Code: CALC_METHOD_PCTQTY;     Description: '%/Qty Sold'),
     (Code: CALC_METHOD_PCTGRSTAX;  Description: '%/Gross+Tax')
    );

  // Payroll Full/Part Time constants // 2.5.14
  PR_FULLPARTTIME_FULL = 'F';
  PR_FULLPARTTIME_PART = 'P';
  PR_FULLPARTTIME_UNKNOWN = 'U';

  PR_FULLPARTTIME_RECS: array[0..2] of TCodeDescRec = (
      (Code: PR_FULLPARTTIME_FULL;    Description: 'Full-Time'),
      (Code: PR_FULLPARTTIME_PART;    Description: 'Part-Time'),
      (Code: PR_FULLPARTTIME_UNKNOWN; Description: 'Unspecified')
    );

  // A/R Order Preapproval Status constants // 2.9.9

  AR_ORDERPREAPP_APPROVED = 'A';
  AR_ORDERPREAPP_NONE = 'N';
  AR_ORDERPREAPP_PENDING = 'P';
  AR_ORDERPREAPP_REJECTED = 'R';

  AR_ORDERPREAPP_RECS: array[0..3] of TCodeDescRec = (
      (Code: AR_ORDERPREAPP_APPROVED;  Description: 'Approved'),
      (Code: AR_ORDERPREAPP_PENDING;   Description: 'Pending'),
      (Code: AR_ORDERPREAPP_REJECTED;  Description: 'Rejected'),
      (Code: AR_ORDERPREAPP_NONE;      Description: 'None')
    );

  // Company Color default color table // 2.7.8

  CC_COMPANYCOLOR_RECS: array [0..20] of TColorDescRec =
    ((Color: clDefault;   Description: 'None'),
     (Color: clRed;       Description: 'Red'),
     (Color: clGreen;     Description: 'Green'),
     (Color: clBlue;      Description: 'Blue'),
     (Color: clYellow;    Description: 'Yellow'),
     (Color: clPurple;    Description: 'Purple'),
     (Color: clAqua;      Description: 'Aqua'),
     (Color: clMaroon;    Description: 'Maroon'),
     (Color: clLime;      Description: 'Lime'),
     (Color: clNavy;      Description: 'Navy'),
     (Color: clFuchsia;   Description: 'Fuchsia'),
     (Color: clTeal;      Description: 'Teal'),
     (Color: clSkyBlue;   Description: 'Sky Blue'),
     (Color: clOlive;     Description: 'Olive'),
     (Color: clBlack;     Description: 'Black'),
     (Color: clWhite;     Description: 'White'),
     (Color: clWebDarkOrange; Description: 'Orange'),
     (Color: clWebSienna;  Description: 'Brown'),
     (Color: clWebSalmon; Description: 'Salmon'),
     (Color: clWebKhaki;  Description: 'Khaki'),
     (Color: clWebHotPink;   Description: 'Pink')
    );

  AR_TAXLOCCALCMETHOD_RECS: array[0..2] of TCodeDescRec = (
    (Code: '1';  Description: '%Grs'),
    (Code: '2';  Description: '%Qty'),
    (Code: '3';  Description: '%Grs+'));

  AR_TAXLOCLEVEL_RECS: array[0..3] of TCodeDescRec = (
    (Code: '1';  Description: 'State'),
    (Code: '2';  Description: 'Cnty'),
    (Code: '3';  Description: 'City'),
    (Code: '4';  Description: 'Dist'));

  // Keystone Session Status Flags // 3.6.99.3

  CC_STATUSFLAG_RECS: array[0..2] of TCodeDescRec = (
    (Code: 'A';  Description: 'Active'),
    (Code: 'E';  Description: 'Exception'),
    (Code: 'I';  Description: 'Inactive')
  );

  // C/M Account Types // 3.6.99.8
  CM_ACCTTYPE_RECS: array[0..6] of TCodeDescRec = (
    (Code: 'CA';  Description: 'Cash'),
    (Code: 'CH';  Description: 'Checking'),
    (Code: 'CC';  Description: 'Credit Card'),
    (Code: 'IN';  Description: 'Investment'),
    (Code: 'NP';  Description: 'Note Payable'),
    (Code: 'NR';  Description: 'Note Receivable'),
    (Code: 'SA';  Description: 'Savings')
  );

  // DOT States // 3.6.99.26
  DOT_STATE_RECS: array[0..0] of TCodeDescRec = (
    (Code: 'PA';  Description: 'Pennsylvania')
  );

  // Keystone Online E-Ticket Form Type Source // 3.6.7.4

  KO_ETICKET_PLANTFORMTYPE = 'P';
  KO_ETICKET_SLSPNFORMTYPE = 'S';

  // RTF filename constants // 1.5.100.4

  RTF_LICENSE_FILENAME = 'License.rtf';
  RTF_RELNOTES_FILENAME = 'Release Notes.rtf';

  // miscellaneous constants

  CC_GRID_PACKET_RECORDS = 50; // 1.5
  CC_SHORT_DATE_FORMAT = 'm/d/yyyy';
  CCSYSOPT_DEFAULT_ID = 'DEFAULT';
  ADDING_NEW_ITEM_TIMEOUT = 3; // number of seconds to display the
                               // "You are adding a new item" message box
                               // before automatically closing it
  ENV_CCLOCTZ = 'CCLOCTZ'; // CCLOCTZ environment variable name // 1.5.113
  MANUAL_WEIGHT_ENTRY_THRESHOLD_NONE: currency = -1; // 2.7.18
//  DEF_DBKEEPALIVE_SECS = 60 * SecsPerMin; // 60 minutes // 3.4.0.3
  AUTOREFRESH_DBKEEPALIVE = 2 * MSecsPerSec; // 2 seconds
  DBKEEPALIVE_FOREVER = -1;
  DEF_DBKEEPALIVE_SECS = DBKEEPALIVE_FOREVER; // keep company DB connections open forever // 3.5.3.3
  DEF_LOCALCACHEPATH = '[commondir]'; // 3.6.99.37
  ASPING_NEVER = 0;
  DEF_ASPING_INTERVAL = 295; // ping the Application Server every 4 minutes & 55 seconds // 4.2.0.1

  TCCFormClassName = 'TCCBaseForm'; // 07/07/00

  IMPORT_BACKUP_LEVELS = 9; // 2.5.5
  IMPORT_BACKUP_EXT = '.bk'; // 2.5.5

  // slump constants // 2.6.5
  
  MIN_SLUMP = 0;
  MAX_SLUMP = 25;