implemented dropping transaction by clearing amount, source or destination field

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-05-04 15:27:51 +02:00
parent a261d8eb9b
commit dee494f7ca
2 changed files with 9 additions and 2 deletions
@@ -295,7 +295,7 @@ public class SqliteDb extends BaseDb implements AccountDb {
} }
} else if (transaction.isDirty()) { } else if (transaction.isDirty()) {
try { 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); delete().from(TABLE_TRANSACTIONS).where(Field.ID, equal(transaction.id())).where(ACCOUNT, equal(transaction.accountId())).execute(db);
} else { } else {
replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION) replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
@@ -6,6 +6,9 @@ import de.srsoftware.umbrella.core.constants.Field;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static de.srsoftware.tools.Optionals.isSet;
import static de.srsoftware.tools.Optionals.nullIfEmpty;
public class IdOrString implements Mappable { public class IdOrString implements Mappable {
private final Long id; private final Long id;
private final String value; private final String value;
@@ -52,6 +55,10 @@ public class IdOrString implements Mappable {
return map; return map;
} }
public boolean isEmpty() {
return id == null && !isSet(value);
}
@Override @Override
public String toString() { public String toString() {
return value; return value;
@@ -60,4 +67,4 @@ public class IdOrString implements Mappable {
public String value(){ public String value(){
return value; return value;
} }
} }