private BudgetData GetBudgetData(int budgetId, int year)
        {
            FinancialAccount account     = FinancialAccount.FromIdentity(budgetId);
            double           budget      = -account.GetBudget(year);
            Int64            actualCents = account.GetDeltaCents(new DateTime(year, 1, 1), new DateTime(year + 1, 1, 1));
            double           actual      = actualCents / 100.0;

            // Get suballocated

            FinancialAccounts accountTree = account.GetTree();

            double budgetTotal     = -accountTree.GetBudgetSum(year);
            Int64  deltaTotalCents = accountTree.GetDeltaCents(new DateTime(year, 1, 1), new DateTime(year + 1, 1, 1));
            double deltaTotal      = deltaTotalCents / 100.0;

            BudgetData result = new BudgetData();

            result.AccountName = account.Name;

            if (budgetTotal > 0.0)
            {
                result.PercentActual           = actual / budgetTotal * 100.0;
                result.PercentSuballocated     = (budgetTotal - budget) / budgetTotal * 100.0;
                result.PercentSuballocatedUsed = (deltaTotal - actual) / budgetTotal * 100.0;
            }

            return(result);
        }