From: Damyan Ivanov Date: Fri, 29 Mar 2019 11:31:23 +0000 (+0200) Subject: transaction auto-fill: honor the preferred account filter X-Git-Tag: v0.9~38 X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=commitdiff_plain;h=02c179e4ce41f55cf179ea6d2aabe4bb79f81a72 transaction auto-fill: honor the preferred account filter --- diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java index f075929d..6f0ea1a8 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java @@ -487,10 +487,28 @@ public class NewTransactionActivity extends ProfileThemedActivity Log.d("descr selected", description); if (!inputStateIsInitial()) return; - try (Cursor c = MLDB.getDatabase().rawQuery( - "select profile, id from transactions where description=? order by date desc " + - "limit 1", new String[]{description})) - { + MobileLedgerProfile currentProfile = Data.profile.get(); + String accFilter = currentProfile.getPreferredAccountsFilter(); + + ArrayList params = new ArrayList<>(); + StringBuilder sb = new StringBuilder( + "select t.profile, t.id from transactions t where t.description=?"); + params.add(description); + + if (accFilter != null) { + sb.append(" AND EXISTS (").append("SELECT 1 FROM transaction_accounts ta ") + .append("WHERE ta.profile = t.profile").append(" AND ta.transaction_id = t.id") + .append(" AND UPPER(ta.account_name) LIKE '%'||?||'%')"); + params.add(accFilter.toUpperCase()); + } + + sb.append(" ORDER BY date desc limit 1"); + + final String sql = sb.toString(); + Log.d("descr", sql); + Log.d("descr", params.toString()); + + try (Cursor c = MLDB.getDatabase().rawQuery(sql, params.toArray(new String[]{}))) { if (!c.moveToNext()) return; String profileUUID = c.getString(0);