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 5c21cadb..a889eadd 100644 --- a/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java +++ b/accounting/src/main/java/de/srsoftware/umbrella/accounting/SqliteDb.java @@ -295,7 +295,7 @@ public class SqliteDb extends BaseDb implements AccountDb { } } else if (transaction.isDirty()) { try { - if (transaction.amount() == 0) { + if (transaction.amount() == 0 || transaction.source().isEmpty() || transaction.destination().isEmpty()) { delete().from(TABLE_TRANSACTIONS).where(Field.ID, equal(transaction.id())).where(ACCOUNT, equal(transaction.accountId())).execute(db); } else { replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/IdOrString.java b/core/src/main/java/de/srsoftware/umbrella/core/model/IdOrString.java index 37310fd3..d95de3d6 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/IdOrString.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/IdOrString.java @@ -6,6 +6,9 @@ import de.srsoftware.umbrella.core.constants.Field; import java.util.HashMap; import java.util.Map; +import static de.srsoftware.tools.Optionals.isSet; +import static de.srsoftware.tools.Optionals.nullIfEmpty; + public class IdOrString implements Mappable { private final Long id; private final String value; @@ -52,6 +55,10 @@ public class IdOrString implements Mappable { return map; } + public boolean isEmpty() { + return id == null && !isSet(value); + } + @Override public String toString() { return value; @@ -60,4 +67,4 @@ public class IdOrString implements Mappable { public String value(){ return value; } - } \ No newline at end of file +} \ No newline at end of file