/// <summary>
        /// Übernahme des Einwurfs in das Münzdepot.
        /// Rückgabe des Retourgeldes aus der Kasse. Staffelung des Retourgeldes
        /// hängt vom Inhalt der Kasse ab.
        /// </summary>
        /// <param name="coins">Aktueller Zustand des Münzdepots</param>
        public void FinishPayment(IEnumerable <Coin> coins)
        {
            foreach (var v in ThrownInCoinValues
                     .Split(";")
                     .Select(s => Convert.ToInt32(s))
                     .GroupBy(s => s))
            {
                coins
                .First(c => c.CoinValue == v.Key)
                .Amount += v.Count();
            }
            coins = coins.OrderByDescending(c => c.CoinValue);
            int sum = ThrownInCents - Product.PriceInCents;

            foreach (Coin c in coins)
            {
                for (int i = 0; i < c.Amount && sum != 0; i++)
                {
                    if (c.CoinValue <= sum)
                    {
                        ReturnCoinValues += c.CoinValue + ";";
                        sum -= c.CoinValue;
                        c.Amount--;
                    }
                }
            }

            if (ReturnCoinValues != null)
            {
                ReturnCoinValues = ReturnCoinValues.Substring(0, ReturnCoinValues.Length - 1);
            }
            else
            {
                ReturnCoinValues = "0";
            }
        }