/** * Builds a QIF entry representing this transaction * * @return String QIF representation of this transaction */ public String toQIF() { final String newLine = "\n"; AccountsDbAdapter accountsDbAdapter = new AccountsDbAdapter(GnuCashApplication.getAppContext()); // all transactions are double transactions String splitAccountFullName = QifHelper.getImbalanceAccountName(mAmount.getCurrency()); if (mDoubleEntryAccountUID != null && mDoubleEntryAccountUID.length() > 0) { splitAccountFullName = accountsDbAdapter.getFullyQualifiedAccountName(mDoubleEntryAccountUID); } StringBuffer transactionQifBuffer = new StringBuffer(); transactionQifBuffer .append(QifHelper.DATE_PREFIX) .append(QifHelper.formatDate(mTimestamp)) .append(newLine); transactionQifBuffer.append(QifHelper.MEMO_PREFIX).append(mName).append(newLine); transactionQifBuffer .append(QifHelper.SPLIT_CATEGORY_PREFIX) .append(splitAccountFullName) .append(newLine); if (mDescription != null && mDescription.length() > 0) { transactionQifBuffer.append(QifHelper.SPLIT_MEMO_PREFIX).append(mDescription).append(newLine); } transactionQifBuffer .append(QifHelper.SPLIT_AMOUNT_PREFIX) .append(mAmount.asString()) .append(newLine); transactionQifBuffer.append(QifHelper.ENTRY_TERMINATOR).append(newLine); accountsDbAdapter.close(); return transactionQifBuffer.toString(); }
@Override public void onReceive(Context context, Intent intent) { Log.i("TransactionRecorder", "Received transaction recording intent"); Bundle args = intent.getExtras(); String name = args.getString(Intent.EXTRA_TITLE); String note = args.getString(Intent.EXTRA_TEXT); BigDecimal amountBigDecimal = (BigDecimal) args.getSerializable(Transaction.EXTRA_AMOUNT); String currencyCode = args.getString(Account.EXTRA_CURRENCY_CODE); if (currencyCode == null) currencyCode = Money.DEFAULT_CURRENCY_CODE; String accountUID = args.getString(Transaction.EXTRA_ACCOUNT_UID); if (accountUID == null) // if no account was assigned, throw an exception throw new IllegalArgumentException("No account specified for the transaction"); String doubleAccountUID = args.getString(Transaction.EXTRA_DOUBLE_ACCOUNT_UID); if (doubleAccountUID == null || doubleAccountUID.length() == 0) doubleAccountUID = QifHelper.getImbalanceAccountName(Currency.getInstance(Money.DEFAULT_CURRENCY_CODE)); Transaction.TransactionType type = Transaction.TransactionType.valueOf(args.getString(Transaction.EXTRA_TRANSACTION_TYPE)); Money amount = new Money(amountBigDecimal, Currency.getInstance(currencyCode)); Transaction transaction = new Transaction(amount, name); transaction.setTime(System.currentTimeMillis()); transaction.setDescription(note); transaction.setAccountUID(accountUID); transaction.setDoubleEntryAccountUID(doubleAccountUID); transaction.setTransactionType(type); TransactionsDbAdapter transacionsDbAdapter = new TransactionsDbAdapter(context); transacionsDbAdapter.addTransaction(transaction); WidgetConfigurationActivity.updateAllWidgets(context); transacionsDbAdapter.close(); }