Esempio n. 1
0
 private void DeleteExecute(object obj)
 {
     if (m_deleteConfirmationViewService.Show("budget transaction"))
     {
         Transactions.Remove(SelectedTransaction);
         SelectedTransaction = null;// is this necessary?
     }
 }
Esempio n. 2
0
        private void CreateExecute(object obj)
        {
            IBudgetTransactionItemViewModel initialTransactionViewModel =
                Transactions
                .Single(t => t.Type == BudgetTransactionType.Initial);
            IAccountLinkViewModel suggestedCreditAccount =
                initialTransactionViewModel.SelectedDebitAccount;

            // For the debit account, we want the next unused asset account.
            // Failing that, we want an asset account.
            // Failing that, we'll take anything!
            IEnumerable <IAccountLinkViewModel> assetAccountLinks = m_accountLinks
                                                                    .Where(alvm => alvm.Type == AccountType.Asset &&
                                                                           alvm != suggestedCreditAccount);
            IEnumerable <IAccountLinkViewModel> usedAssetAccountLinks =
                Transactions
                .Select(t => t.SelectedDebitAccount)
                .Where(al => al.Type == AccountType.Asset);
            IEnumerable <IAccountLinkViewModel> unusedAssetAccountLinks =
                assetAccountLinks
                .Except(usedAssetAccountLinks);

            IAccountLinkViewModel suggestedDebitAccount = null;

            if (unusedAssetAccountLinks.Any())
            {
                suggestedDebitAccount = unusedAssetAccountLinks.First();
            }
            else if (usedAssetAccountLinks.Any())
            {
                suggestedDebitAccount = usedAssetAccountLinks.First();
            }
            else if (m_accountLinks.Any())
            {
                suggestedDebitAccount = m_accountLinks.First();
            }

            var newTransaction = new BudgetTransaction
            {
                CreditAccount = suggestedCreditAccount.ToAccountLink(),
                DebitAccount  = suggestedDebitAccount.ToAccountLink(),
                Amount        = 0m
            };

            Transactions.Insert(
                Transactions.Count - 1,// we maintain that the surplus transaction is last, so - 1
                CreateItemViewModel(newTransaction, BudgetTransactionType.Regular)
                );
        }
Esempio n. 3
0
        private IBudgetTransactionItemViewModel CreateItemViewModel(
            BudgetTransaction budgetTransaction,
            BudgetTransactionType type)
        {
            IBudgetTransactionItemViewModel transactionViewModel =
                m_budgetTransactionItemViewModelFactory.Create(
                    m_accountLinks,
                    budgetTransaction,
                    type
                    );

            if (type != BudgetTransactionType.Surplus)
            {
                ((BaseViewModel)transactionViewModel).PropertyChanged += OnItemPropertyChanged;
            }

            return(transactionViewModel);
        }
        public Budget ToBudget()
        {
            IBudgetTransactionItemViewModel initialTransaction = TransactionListViewModel.Transactions
                                                                 .Single(t => t.Type == BudgetTransactionType.Initial);
            IBudgetTransactionItemViewModel surplusTransaction = TransactionListViewModel.Transactions
                                                                 .Single(t => t.Type == BudgetTransactionType.Surplus);
            IEnumerable <IBudgetTransactionItemViewModel> regularTransactions =
                TransactionListViewModel.Transactions.Where(t => t.Type == BudgetTransactionType.Regular);

            Budget budget = new Budget
            {
                BudgetId           = m_budgetId,
                Name               = Name,
                Period             = SelectedPeriod,
                InitialTransaction = initialTransaction.ToBudgetTransaction(),
                Transactions       = regularTransactions.Select(t => t.ToBudgetTransaction()),
                SurplusTransaction = surplusTransaction.ToBudgetTransaction(),
            };

            return(budget);
        }
Esempio n. 5
0
        private void CalculateSurplusAmount()
        {
            IBudgetTransactionItemViewModel initialTransaction =
                Transactions.Single(t => t.Type == BudgetTransactionType.Initial);

            decimal surplusAmount = initialTransaction.Amount;

            IEnumerable <IBudgetTransactionItemViewModel> regularTransactions =
                Transactions.Where(t => t.Type == BudgetTransactionType.Regular);

            foreach (IBudgetTransactionItemViewModel regularTransaction in regularTransactions)
            {
                if (regularTransaction.SelectedCreditAccount == initialTransaction.SelectedDebitAccount)
                {
                    surplusAmount -= regularTransaction.Amount;
                }
            }

            IBudgetTransactionItemViewModel surplusTransaction =
                Transactions.Single(t => t.Type == BudgetTransactionType.Surplus);

            surplusTransaction.Amount = surplusAmount;
        }