internal TrialBalance Build()
        {
            var helper = new TrialBalanceHelper(_command);
            List <TrialBalanceEntry> trialBalanceComparative = new List <TrialBalanceEntry>();

            FixedList <TrialBalanceEntry> trialBalanceFirstPeriod = helper.GetPostingEntries();

            FixedList <TrialBalanceEntry> trialBalanceSecondPeriod = helper.GetPostingEntries(true);

            trialBalanceComparative.AddRange(trialBalanceFirstPeriod);
            trialBalanceComparative.AddRange(trialBalanceSecondPeriod);

            var returnBalance = new FixedList <ITrialBalanceEntry>(trialBalanceComparative.Select(x => (ITrialBalanceEntry)x));

            return(new TrialBalance(_command, returnBalance));
        }
        internal TrialBalance BuildForBalancesGeneration()
        {
            var helper = new TrialBalanceHelper(_command);

            FixedList <TrialBalanceEntry> trialBalance = helper.GetPostingEntries();

            var returnBalance = new FixedList <ITrialBalanceEntry>(trialBalance.Select(x => (ITrialBalanceEntry)x));

            return(new TrialBalance(_command, returnBalance));
        }
        internal TrialBalance Build()
        {
            var helper = new TrialBalanceHelper(_command);

            FixedList <TrialBalanceEntry> postingEntries = helper.GetPostingEntries();

            List <TrialBalanceEntry> summaryEntries = helper.GenerateSummaryEntries(postingEntries);

            List <TrialBalanceEntry> trialBalance = helper.CombineSummaryAndPostingEntries(
                summaryEntries, postingEntries);

            FixedList <TrialBalanceEntry> summaryGroupEntries = helper.GenerateTotalSummaryGroups(postingEntries);

            trialBalance = helper.CombineGroupEntriesAndPostingEntries(trialBalance, summaryGroupEntries);

            List <TrialBalanceEntry> summaryTotalDebtorCreditorEntries =
                helper.GenerateTotalSummaryDebtorCreditor(postingEntries.ToList());

            trialBalance = helper.CombineDebtorCreditorAndPostingEntries(trialBalance,
                                                                         summaryTotalDebtorCreditorEntries);

            List <TrialBalanceEntry> summaryTotalCurrencies = helper.GenerateTotalSummaryCurrency(
                summaryTotalDebtorCreditorEntries);

            trialBalance = helper.CombineCurrencyTotalsAndPostingEntries(trialBalance, summaryTotalCurrencies);

            List <TrialBalanceEntry> summaryTotalConsolidatedByLedger =
                helper.GenerateTotalSummaryConsolidatedByLedger(summaryTotalCurrencies);

            trialBalance = helper.CombineTotalConsolidatedByLedgerAndPostingEntries(
                trialBalance, summaryTotalConsolidatedByLedger);

            List <TrialBalanceEntry> summaryTrialBalanceConsolidated = helper.GenerateTotalSummaryConsolidated(
                summaryTotalCurrencies);

            trialBalance = helper.CombineTotalConsolidatedAndPostingEntries(
                trialBalance, summaryTrialBalanceConsolidated);

            trialBalance = helper.RestrictLevels(trialBalance);

            var returnBalance = new FixedList <ITrialBalanceEntry>(trialBalance.Select(x => (ITrialBalanceEntry)x));

            return(new TrialBalance(_command, returnBalance));
        }