private void saveGoalTransaction(GoalTransactionUIModel goalTransactionUIModel) {
      try {
        TransactionUIModel transactionUIModel = goalTransactionUIModel.getTransaction();
        Transaction transaction = transactionDao.queryForId(transactionUIModel.getId());

        GoalTransaction goalTransaction = new GoalTransaction(transaction);
        goalTransactionDao.create(goalTransaction);

        transaction.setGoalTransaction(goalTransaction);
        transaction.setAmount(transactionUIModel.getAmount());
        transactionDao.update(transaction);

        transactionsUpdateListener.onTransactionsUpdated(transactionUIModel);
      } catch (SQLException e) {
        Log.e(TAG, "Error updating goal transaction", e);
      }
    }
    private void splitTransaction(
        TransactionUIModel transaction, GoalTransactionUIModel goalTransaction) {
      try {
        TransactionUIModel parentTransaction = goalTransaction.getTransaction();
        Double rest =
            new BigDecimal(transaction.getAmount())
                .add(new BigDecimal(parentTransaction.getAmount()).negate())
                .doubleValue();

        saveGoalTransaction(goalTransaction);

        Transaction clone = transactionDao.queryForId(transaction.getId()).getClone();
        clone.setAmount(rest);
        transactionDao.create(clone);
        transactionsUpdateListener.onTransactionAdded(
            ConvertUtil.convertToUIModel(clone), parentTransaction);
      } catch (SQLException e) {
        Log.e(TAG, "Error splitting transaction", e);
      }
    }