Skip to content

Commit cc0be3d

Browse files
authored
Allow for setting the category, tags and budget on import jobs. (#21)
1 parent 9b6fb7a commit cc0be3d

File tree

7 files changed

+29
-4
lines changed

7 files changed

+29
-4
lines changed

bpmn-process/src/main/java/com/jongsoft/finance/bpmn/delegate/scheduler/GenerateTransactionJsonDelegate.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.camunda.bpm.engine.variable.value.StringValue;
1313

1414
import java.time.LocalDate;
15+
import java.util.List;
1516

1617
@Singleton
1718
public class GenerateTransactionJsonDelegate implements JavaDelegate, JavaBean {
@@ -37,7 +38,10 @@ public void execute(DelegateExecution execution) throws Exception {
3738
null,
3839
null,
3940
schedule.getDestination().getIban(),
40-
schedule.getDestination().getName());
41+
schedule.getDestination().getName(),
42+
null,
43+
null,
44+
List.of());
4145

4246
execution.setVariable("destinationId", schedule.getDestination().getId());
4347
execution.setVariable("sourceId", schedule.getSource().getId());

bpmn-process/src/main/java/com/jongsoft/finance/bpmn/delegate/transaction/CreateTransactionDelegate.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.jongsoft.finance.messaging.commands.transaction.CreateTransactionCommand;
88
import com.jongsoft.finance.messaging.handlers.TransactionCreationHandler;
99
import com.jongsoft.finance.providers.AccountProvider;
10+
import com.jongsoft.lang.Collections;
11+
import com.jongsoft.lang.Control;
1012
import jakarta.inject.Singleton;
1113
import lombok.extern.slf4j.Slf4j;
1214
import org.camunda.bpm.engine.delegate.DelegateExecution;
@@ -70,6 +72,11 @@ public void execute(DelegateExecution execution) throws Exception {
7072
.bookDate(parsedTransaction.bookDate())
7173
.interestDate(parsedTransaction.interestDate())
7274
.description(parsedTransaction.description())
75+
.category(parsedTransaction.category())
76+
.budget(parsedTransaction.budget())
77+
.tags(Control.Option(parsedTransaction.tags())
78+
.map(Collections::List)
79+
.getOrSupply(() -> null))
7380
.importSlug(batchImportSlug));
7481

7582
long transactionId = creationHandler.handleCreatedEvent(new CreateTransactionCommand(transaction));

gradle/wrapper/gradle-wrapper.jar

-19.8 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

transaction-importer/transaction-importer-api/src/main/java/com/jongsoft/finance/importer/api/TransactionDTO.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.micronaut.serde.annotation.Serdeable;
55

66
import java.time.LocalDate;
7+
import java.util.List;
78

89
@Serdeable
910
public record TransactionDTO(
@@ -22,7 +23,13 @@ public record TransactionDTO(
2223
// The IBAN of the opposing account
2324
String opposingIBAN,
2425
// The name of the opposing account
25-
String opposingName) {
26+
String opposingName,
27+
// Optional: The name of the budget the transaction falls under
28+
String budget,
29+
// Optional: The category of the transaction
30+
String category,
31+
// Optional: The tags of the transaction
32+
List<String> tags) {
2633

2734
@Override
2835
public String toString() {

transaction-importer/transaction-importer-csv/src/main/java/com/jongsoft/finance/importer/csv/CSVImportProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.InputStreamReader;
2424
import java.time.LocalDate;
2525
import java.time.format.DateTimeFormatter;
26+
import java.util.List;
2627
import java.util.function.Function;
2728

2829
@Singleton
@@ -129,6 +130,9 @@ private TransactionDTO readLine(String[] line, CSVConfiguration configuration) {
129130
parseDate.apply(columnLocator.apply(ColumnRole.INTEREST_DATE)),
130131
parseDate.apply(columnLocator.apply(ColumnRole.BOOK_DATE)),
131132
columnLocator.apply(ColumnRole.OPPOSING_IBAN),
132-
columnLocator.apply(ColumnRole.OPPOSING_NAME));
133+
columnLocator.apply(ColumnRole.OPPOSING_NAME),
134+
columnLocator.apply(ColumnRole.BUDGET),
135+
columnLocator.apply(ColumnRole.CATEGORY),
136+
List.of());
133137
}
134138
}

transaction-importer/transaction-importer-csv/src/main/java/com/jongsoft/finance/importer/csv/ColumnRole.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public enum ColumnRole {
1010
ACCOUNT_IBAN("account-iban"),
1111
AMOUNT("amount"),
1212
CUSTOM_INDICATOR("custom-indicator"),
13+
TAGS("tags"),
14+
BUDGET("budget"),
15+
CATEGORY("category"),
1316
DESCRIPTION("description");
1417

1518
private final String label;

0 commit comments

Comments
 (0)