public static void AddAccount(BankImportRule rule, GLCategoryEnum categoryType)
        {
            var os = rule.ObjectSpace;

            var code    = rule.RuleName;
            var op      = CriteriaOperator.Parse("[Code]=?", code);
            var account = os.FindObject <Account>(op) ?? CreateAccount(code, categoryType, os);

            rule.ToAccount = account;
            rule.ObjectSpace.ReloadObject(rule);
        }
        public static Account CreateAccount(string code, GLCategoryEnum type, IObjectSpace os)
        {
            var account      = os.CreateObject <Account>();
            var glCriteria   = CriteriaOperator.Parse("[Category] == ? ", type);
            var glCategories = os.GetObjects <GLCategory>(glCriteria);
            var glCategory   = glCategories.FirstOrDefault();
            var criteria     = CriteriaOperator.Parse("Parent_ID == null && [GLCategory_Id] == ? ", glCategory.Id);

            var rootExpenseAccount = os.FindObject <Account>(criteria);

            account.Parent   = rootExpenseAccount;
            account.Category = glCategory;
            var isPandL = type == GLCategoryEnum.CostOfSales ||
                          type == GLCategoryEnum.Income ||
                          type == GLCategoryEnum.Expense ||
                          type == GLCategoryEnum.OtherExpense ||
                          type == GLCategoryEnum.OtherIncome;

            account.GstCategory = HandyDefaults.DefaultGstCategory(os, isPandL);
            account.Code        = code;
            os.ModifiedObjects.Add(account);
            return(account);
        }