// aktualizacja danych obiektu po odebraniu ich z sieci
 internal void Update(DTO.AccountData data)
 {
     AvailableCash  = data.AvailableCash;
     AvailableFunds = data.AvailableFunds;
     DepositDeficit = data.DepositDeficit;
     DepositBlocked = data.DepositBlocked;
     DepositValue   = data.DepositValue;
     PortfolioValue = data.PortfolioValue;
     Papers.Update(data.Papers);
     UpdateTime = DateTime.Now;
 }
		// aktualizacja stanu jednego z rachunków
		private void AccountUpdateHandler(AccountData acccountData)
		{
			var account = Accounts[acccountData.Number];
			account.Update(acccountData);
			InvokeUpdate(account);
		}
		// wewnętrzna obsługa komunikatu "Statement"
		// - wywołuje zdarzenia "AccountUpdateEvent", po jednym na każdy rachunek
		private void StatementMsgHandler(StatementMsg msg)
		{
			if (AccountUpdateEvent != null)
			{
				foreach (var statement in msg.Statements)
				{
					var account = new AccountData();
					account.Number = statement.AccountNumber;
					// otwarte pozycje...
					account.Papers = statement.Positions.
						Select(p => new Paper {
							Instrument = p.Key.Convert(),
							Account110 = p.Value.Acc110,
							Account120 = p.Value.Acc120,
						}).ToArray();
					// najważniejsze kwoty...
					account.AvailableCash = statement.Funds[StatementFundType.Cash];
					if (!statement.Funds.ContainsKey(StatementFundType.Deposit))
					{
						// rachunek akcyjny
						account.AvailableFunds = statement.Funds[StatementFundType.CashReceivables];
					}
					else
					{
						// rachunek kontraktowy
						account.AvailableFunds = account.AvailableCash + statement.Funds[StatementFundType.DepositFree];
						if (statement.Funds.ContainsKey(StatementFundType.DepositDeficit))
							account.DepositDeficit = statement.Funds[StatementFundType.DepositDeficit];
						account.DepositBlocked = statement.Funds[StatementFundType.DepositBlocked];
						account.DepositValue = statement.Funds[StatementFundType.Deposit];
					}
					account.PortfolioValue = statement.Funds[StatementFundType.PortfolioValue];

					// wywołanie zdarzenia z przygotowanymi danymi
					AccountUpdateEvent(account);
				}
			}
		}