X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionActivity.java;h=6f0ea1a809646c7e5fde31cddd8d32c477786bf0;hp=f075929d9c85e8227fb0b8c0b98e91d1d1ebd8b0;hb=02c179e4ce41f55cf179ea6d2aabe4bb79f81a72;hpb=3699284937e8abb641fc19a4be2bda60e197ab64 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);