diff --git a/accounting/src/main/java/de/srsoftware/umbrella/accounting/AccountingModule.java b/accounting/src/main/java/de/srsoftware/umbrella/accounting/AccountingModule.java index 21c5a350..8345d494 100644 --- a/accounting/src/main/java/de/srsoftware/umbrella/accounting/AccountingModule.java +++ b/accounting/src/main/java/de/srsoftware/umbrella/accounting/AccountingModule.java @@ -9,6 +9,7 @@ import static de.srsoftware.umbrella.core.Util.mapValues; import static de.srsoftware.umbrella.core.constants.Path.*; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidField; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingField; +import static java.lang.System.Logger.Level.WARNING; import com.sun.net.httpserver.HttpExchange; import de.srsoftware.configuration.Configuration; @@ -28,6 +29,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Optional; + +import org.json.JSONArray; import org.json.JSONObject; public class AccountingModule extends BaseHandler implements AccountingService { @@ -179,6 +182,8 @@ public class AccountingModule extends BaseHandler implements AccountingService { var transaction = accountDb.save(new Transaction(accountId,dateTime,source,destination,amount.doubleValue(),purpose)); + var tags = json.has(Field.TAGS) && json.get(Field.TAGS) instanceof JSONArray t ? t : null; + if (tags != null) LOG.log(WARNING, "Tagging transactions not implemented!"); return sendContent(ex,newAccount != null ? newAccount : transaction); } diff --git a/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java b/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java index f94be490..227c083a 100644 --- a/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java +++ b/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java @@ -117,7 +117,7 @@ public class SqliteDb extends BaseDb implements AccountDb { public List loadTransactions(Account account) { try { var list = new ArrayList(); - var rs = select(ALL).from(TABLE_TRANSACTIONS).where(Field.ACCOUNT,equal(account.id())).exec(db); + var rs = select(ALL).from(TABLE_TRANSACTIONS).where(Field.ACCOUNT,equal(account.id())).sort(Field.TIMESTAMP).exec(db); while (rs.next()) list.add(Transaction.of(rs)); rs.close(); return list; diff --git a/frontend/src/routes/accounting/add_entry.svelte b/frontend/src/routes/accounting/add_entry.svelte index 582ad190..c526981a 100644 --- a/frontend/src/routes/accounting/add_entry.svelte +++ b/frontend/src/routes/accounting/add_entry.svelte @@ -6,6 +6,7 @@ import { error, yikes } from '../../warn.svelte'; import { user } from '../../user.svelte'; import Autocomplete from '../../Components/Autocomplete.svelte'; + import Tags from '../tags/TagList.svelte'; let defaultAccount = { id : 0, @@ -23,7 +24,8 @@ }, destination : {}, amount : 0.0, - purpose : {} + purpose : {}, + tags : [] }); let router = useTinyRouter(); @@ -73,6 +75,7 @@ let res = await post(url, data); if (res.ok) { yikes(); + entry.tags = []; onSave(); document.getElementById('date-input').focus(); } else error(res); @@ -130,6 +133,9 @@ {t('purpose')} + {t('tags')} + +