internal CashAccountTransaction(Guid id, Date date, string description, decimal amount, BankAccountTransactionType type, decimal balance)
 {
     Id          = id;
     Date        = date;
     Description = description;
     Amount      = amount;
     Type        = type;
     Balance     = balance;
 }
 public void AddTransaction(Date date, decimal amount, string description, BankAccountTransactionType type)
 {
     if (((type == BankAccountTransactionType.Withdrawl) || (type == BankAccountTransactionType.Fee)) && (amount > 0.00m))
     {
         _Transactions.Add(date, -amount, description, type);
     }
     else
     {
         _Transactions.Add(date, amount, description, type);
     }
 }
        public void MakeCashTransaction(Date transactionDate, BankAccountTransactionType type, decimal amount, string comment, Guid transactionId)
        {
            var @event = new CashTransactionOccurredEvent(Id, Version, transactionId, transactionDate, comment)
            {
                CashTransactionType = type,
                Amount = amount
            };

            Apply(@event);

            PublishEvent(@event);
        }
            public void Add(Date date, decimal amount, string description, BankAccountTransactionType type)
            {
                if ((Count == 0) || (date >= Latest))
                {
                    var transaction = new CashAccountTransaction(Guid.NewGuid(), date, description, amount, type, _CashAccount.Balance() + amount);
                    Add(transaction);
                }
                else
                {
                    var transaction = new CashAccountTransaction(Guid.NewGuid(), date, description, amount, type, _CashAccount.Balance(date) + amount);
                    Add(transaction);

                    // Update balance on subsequent transactions
                    var index = IndexOf(date, TransationListPosition.Last);
                    for (var i = index + 1; i < Count; i++)
                    {
                        this[i].Balance += amount;
                    }
                }
            }