private ActivitiesGroupSumTurnOver GetAccountActivitiesGroupSumTurnOver(Guid accountId, long fromDate, decimal lastYearBalance, decimal lastYearDebtor, decimal lastYearCreditor)
        {
            var firstOfThisYear = PDateClass.GetFirstDateOfYear(fromDate);

            var turnover = GetAccountActivitiesGroupSumTurnOver(accountId, firstOfThisYear, fromDate);

            var activitiesGroupSumTurnOver = new ActivitiesGroupSumTurnOver
            {
                //موجودی از سال قبل تا امسال
                Balance = lastYearBalance + turnover.Balance,

                //گردش بدهکاراز سال قبل تا امسال
                SumOfDebitAmount = lastYearDebtor + turnover.SumOfDebitAmount,

                //گردش بستانکاراز سال قبل تا امسال
                SumOfCreditAmount = lastYearCreditor + turnover.SumOfCreditAmount
            };

            return activitiesGroupSumTurnOver;
        }
        private ActivitiesGroupSumTurnOver GetAccountActivitiesGroupSumTurnOver(Guid accountId, long fromDate, long toDate)
        {
            var groupActivities = GroupAccountActivitiesByTransactionType(accountId, fromDate, toDate);

            var turnover = new ActivitiesGroupSumTurnOver
            {
                //موجودی امسال
                Balance = groupActivities.Sum(d => d.SumBalance),

                //گردش بدهکار امسال
                SumOfDebitAmount = groupActivities
                    .Where(d => d.TransactionType == 1 /*TransactionType.Debit*/)
                    .Select(ga => (decimal?) ga.SumBalance).FirstOrDefault() ?? Decimal.Zero,

                //گردش بستانکار امسال
                SumOfCreditAmount = groupActivities
                    .Where(d => d.TransactionType == -1 /*TransactionType.Credit*/)
                    .Select(ga => (decimal?) ga.SumBalance).FirstOrDefault() ?? Decimal.Zero
            };

            return turnover;
        }