/// <summary>
        /// TAccountPropertyEnum defines a set of special accounts and here one of them
        /// can be selected. ..
        /// </summary>
        /// <param name="AENum"></param>
        public void SetSpecialAccountCode(TAccountPropertyEnum AENum)
        {
            FAccountRow = null;

            if (FAccountPropertyHandler == null)
            {
                FAccountPropertyHandler = new THandleAccountPropertyInfo(FLedgerInfo);
            }

            string account = FAccountPropertyHandler.GetAccountCode(AENum);

            if (!account.Equals(string.Empty))
            {
                AccountCode = account;
            }
        }
        /// <summary>
        /// TAccountPropertyEnum defines a set of special accounts and here one of them
        /// can be selected. ..
        /// </summary>
        /// <param name="AENum"></param>
        public void SetSpecialAccountCode(TAccountPropertyEnum AENum)
        {
            FAccountRow = null;

            if (FAccountPropertyHandler == null)
            {
                FAccountPropertyHandler = new THandleAccountPropertyInfo(FLedgerInfo);
            }

            string account = FAccountPropertyHandler.GetAccountCode(AENum);

            if (!account.Equals(string.Empty))
            {
                AccountCode = account;
            }
        }
        /// <summary>
        /// Get access on a special account...
        /// </summary>
        /// <param name="AEnum"></param>
        /// <returns></returns>
        public string GetAccountCode(TAccountPropertyEnum AEnum)
        {
            foreach (AAccountPropertyRow row in propertyCodeTable.Rows)
            {
                if (row.PropertyCode.Equals("Is_Special_Account"))
                {
                    if (row.PropertyValue == AEnum.ToString())
                    {
                        return(row.AccountCode);
                    }
                }
            }

            // if special account flag is not set in the property table, then use config parameters and hardcoded defaults
            switch (AEnum)
            {
            case TAccountPropertyEnum.GIFT_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "GIFT"));

            case TAccountPropertyEnum.INTER_LEDGER_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "ILT"));

            case TAccountPropertyEnum.BANK_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "CASH"));

            case TAccountPropertyEnum.BALANCE_SHEET_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "BAL"));

            case TAccountPropertyEnum.DEBTOR_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "DRS"));

            case TAccountPropertyEnum.CREDITOR_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "CRS"));

            case TAccountPropertyEnum.TOTAL_ASSET_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "ASSETS"));

            case TAccountPropertyEnum.TOTAL_LIABILITY_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "LIABS"));

            case TAccountPropertyEnum.EQUITY_HEADING:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "RET EARN"));

            case TAccountPropertyEnum.EARNINGS_BF_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "9700"));

            case TAccountPropertyEnum.DIRECT_XFER_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "5501"));

            case TAccountPropertyEnum.ICH_SETTLEMENT_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "5601"));

            case TAccountPropertyEnum.ICH_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "8500"));

            case TAccountPropertyEnum.INTERNAL_XFER_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "9800"));

            case TAccountPropertyEnum.ADMIN_FEE_INCOME_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "3400"));

            case TAccountPropertyEnum.ADMIN_FEE_EXPENSE_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "4900"));

            case TAccountPropertyEnum.FUND_TRANSFER_INCOME_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "3300"));

            case TAccountPropertyEnum.FUND_TRANSFER_EXPENSE_ACCT:
                return(TAppSettingsManager.GetValue(AEnum.ToString(), "4800"));
            }

            TLogging.Log("THandleAccountPropertyInfo: cannot find Account code for " + AEnum.ToString());
            return(String.Empty);
        }
        /// <summary>
        /// Get access on a special account...
        /// </summary>
        /// <param name="AEnum"></param>
        /// <returns></returns>
        public string GetAccountCode(TAccountPropertyEnum AEnum)
        {
            foreach (AAccountPropertyRow row in propertyCodeTable.Rows)
            {
                if (row.PropertyCode.Equals("Is_Special_Account"))
                {
                    if (row.PropertyValue == AEnum.ToString())
                    {
                        return row.AccountCode;
                    }
                }
            }

            // if special account flag is not set in the property table, then use config parameters and hardcoded defaults
            switch (AEnum)
            {
                case TAccountPropertyEnum.GIFT_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "GIFT");

                case TAccountPropertyEnum.INTER_LEDGER_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "ILT");

                case TAccountPropertyEnum.BANK_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "CASH");

                case TAccountPropertyEnum.BALANCE_SHEET_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "BAL");

                case TAccountPropertyEnum.DEBTOR_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "DRS");

                case TAccountPropertyEnum.CREDITOR_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "CRS");

                case TAccountPropertyEnum.TOTAL_ASSET_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "ASSETS");

                case TAccountPropertyEnum.TOTAL_LIABILITY_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "LIABS");

                case TAccountPropertyEnum.EQUITY_HEADING:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "RET EARN");

                case TAccountPropertyEnum.EARNINGS_BF_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "9700");

                case TAccountPropertyEnum.DIRECT_XFER_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "5501");

                case TAccountPropertyEnum.ICH_SETTLEMENT_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "5601");

                case TAccountPropertyEnum.ICH_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "8500");

                case TAccountPropertyEnum.INTERNAL_XFER_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "9800");

                case TAccountPropertyEnum.ADMIN_FEE_INCOME_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "3400");

                case TAccountPropertyEnum.ADMIN_FEE_EXPENSE_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "4900");

                case TAccountPropertyEnum.FUND_TRANSFER_INCOME_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "3300");

                case TAccountPropertyEnum.FUND_TRANSFER_EXPENSE_ACCT:
                    return TAppSettingsManager.GetValue(AEnum.ToString(), "4800");
            }

            TLogging.Log("THandleAccountPropertyInfo: cannot find Account code for " + AEnum.ToString());
            return String.Empty;
        }