예제 #1
0
        public void addCats2Display()
        {
            CatDisplay.Clear();
            string category = "";

            using (var conn = new NpgsqlConnection(buildConnString()))
            {
                conn.Open();
                using (var cmd = new NpgsqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandText = "select distinct category from categories where business_id = '" + ((Milestone1.MainWindow.Business)businessGrid.SelectedValue).bid.ToString() + "';";
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            category += reader.GetString(0) + "\n";
                        }
                        CatDisplay.Text = category;
                    }
                }
                conn.Close();
            }
        }
예제 #2
0
        public CatDisplayVM CategoryBudget(DateTime startDate, DateTime endDate)
        {
            int? HhId = Convert.ToInt32(User.Identity.GetHouseholdId());
            var hh = db.Households.Find(Convert.ToInt32(User.Identity.GetHouseholdId()));
            var deals = hh.BankAccts.SelectMany(a => a.Deals).OrderByDescending(a => a.DealDate).ToList();
            var categories = db.Categories.Where(c => c.HouseholdId == HhId).OrderBy(c => c.IsExpense).ThenBy(c => c.Name).ToList();
            var catDVM = new CatDisplayVM();
            decimal totalActual = 0;
            decimal totalBudget = 0;
            decimal totalReconciled = 0;
            foreach (var cat in categories)
            {
                if (cat.IsExpense)
                    break;
                var cVM = new CatDisplay();

                cVM.Id = cat.Id;
                cVM.Name = cat.Name;
                cVM.Budget = cat.BudgetAmount;

                foreach (var d in deals)
                {
                    if (d.DealDate >= startDate && d.DealDate <= endDate)
                    {
                        if (d.CategoryId == cat.Id)
                        {
                            cVM.Actual += d.Amount;
                            if (d.Reconciled)
                                cVM.Reconciled += d.Amount;
                        }
                    }
                }
                if ((endDate - startDate).TotalDays > 80)
                {
                    cVM.Actual /= 3;
                    cVM.Reconciled /= 3;
                }
                cVM.Unreconciled = cVM.Actual - cVM.Reconciled;
                cVM.Variance = cVM.Actual - cat.BudgetAmount;
                catDVM.IncCats.Add(cVM);
                totalActual += cVM.Actual;
                totalBudget += cVM.Budget;
                totalReconciled += cVM.Reconciled;
            }
            catDVM.IncTotal.Name = "Total Income";
            catDVM.IncTotal.Reconciled = totalReconciled;
            catDVM.IncTotal.Unreconciled = totalActual - totalReconciled;
            catDVM.IncTotal.Actual = totalActual;
            catDVM.IncTotal.Budget = totalBudget;
            catDVM.IncTotal.Variance = totalActual - totalBudget;
            catDVM.IncTotal.IsTotal = true;
            totalActual = totalBudget = totalReconciled = 0;
            foreach (var cat in categories)
            {
                if (!cat.IsExpense)
                    continue;
                var cVM = new CatDisplay();
                cVM.Id = cat.Id;
                cVM.Name = cat.Name;
                cVM.Budget = cat.BudgetAmount;

                foreach (var d in deals)
                {
                    if (d.DealDate >= startDate && d.DealDate <= endDate)
                    {
                        if (d.CategoryId == cat.Id)
                        {
                            cVM.Actual -= d.Amount;
                            if (d.Reconciled)
                                cVM.Reconciled -= d.Amount;
                        }
                    }
                }
                if ((endDate - startDate).TotalDays > 80)
                {
                    cVM.Actual /= 3;
                    cVM.Reconciled /= 3;
                }
                cVM.Budget *= -1;
                cVM.Unreconciled = cVM.Actual - cVM.Reconciled;
                cVM.Variance = cVM.Actual - cat.BudgetAmount;
                catDVM.ExpCats.Add(cVM);
                totalActual += cVM.Actual;
                totalBudget += cVM.Budget;
                totalReconciled += cVM.Reconciled;
            }
            catDVM.ExpTotal.Name = "Total Expense";
            catDVM.ExpTotal.Reconciled = totalReconciled;
            catDVM.ExpTotal.Unreconciled = totalActual - totalReconciled;
            catDVM.ExpTotal.Actual = totalActual;
            catDVM.ExpTotal.Budget = totalBudget;
            catDVM.ExpTotal.Variance = totalActual - totalBudget;
            catDVM.ExpTotal.IsTotal = true;
            catDVM.NetTotal.Name = "Combined Total";
            catDVM.NetTotal.Reconciled = catDVM.IncTotal.Reconciled + catDVM.ExpTotal.Reconciled;
            catDVM.NetTotal.Unreconciled = catDVM.IncTotal.Unreconciled + catDVM.ExpTotal.Unreconciled;
            catDVM.NetTotal.Actual = catDVM.IncTotal.Actual + catDVM.ExpTotal.Actual;
            catDVM.NetTotal.Budget = catDVM.IncTotal.Budget + catDVM.ExpTotal.Budget;
            catDVM.NetTotal.Variance = catDVM.IncTotal.Variance + catDVM.ExpTotal.Variance;
            catDVM.NetTotal.IsTotal = true;
            return catDVM;
        }