if (!canApplyReimbursement(amountToReimburse)) { throw new DomainException( "error.accounting.AccountingTransaction.cannot.reimburse.events.that.may.open"); }  if (!getToAccountEntry().canApplyReimbursement(amountToReimburse)) { throw new DomainExceptionWithLabelFormatter( "error.accounting.AccountingTransaction.amount.to.reimburse.exceeds.entry.amount", getToAccountEntry().getDescription()); }
    public AccountingTransaction reimburse(User responsibleUser, PaymentMode paymentMode,	    Money amountToReimburse) {	final AccountingTransaction transaction = new AccountingTransaction(responsibleUser, new Entry(		EntryType.ADJUSTMENT, amountToReimburse.negate(), getToAccount()), new Entry(		EntryType.ADJUSTMENT, amountToReimburse, getFromAccount()),		new AccountingTransactionDetail(new DateTime(), paymentMode), this);	getEvent().recalculateState(getWhenRegistered());	return transaction;    }