Сделайте учетную запись серией транзакций, а не только текущей суммой:
case class Transaction(numberOfSeashells: Int)
case class Account(transactions: Iterable[Transaction])
def addNewTransaction(startingBalance: Int, t: Transaction) = startingBalance + t.numberOfSeashells
def balance(account: Account) = account.transactions.foldLeft(0)(addNewTransaction)
val acct = Account(List(Transaction(3), Transaction(-1)))
val newBalance = balance(acct)
Результат:
scala> val acct = Account(List(Transaction(3), Transaction(-1)))
acct: Account = Account(List(Transaction(3), Transaction(-1)))
scala> val newBalance = balance(acct)
newBalance: Int = 2
Таким образом вы сможете удалить недействительные транзакции (возвратные платежи и т. Д.).