diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java index 65919d5fe94e85ae54708cf298f0fdba99c8cce9..95ef20d1df989518771476944b59f90e799adde7 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java @@ -161,6 +161,7 @@ public class TransactionImportController extends BaseController { final String date = csvRow.getColumns().get(csvColumnSettings.columnDate() - 1); final String name = csvRow.getColumns().get(csvColumnSettings.columnName() - 1); + final String description = csvRow.getColumns().get(csvColumnSettings.columnDescription() - 1); final String amount = csvRow.getColumns().get(csvColumnSettings.columnAmount() - 1); final Optional<Integer> parsedAmountOptional = AmountParser.parse(amount); @@ -170,7 +171,7 @@ public class TransactionImportController extends BaseController continue; } - csvTransactions.add(new CsvTransaction(date, name, parsedAmountOptional.get(), CsvTransactionStatus.PENDING)); + csvTransactions.add(new CsvTransaction(date, name, parsedAmountOptional.get(), description, CsvTransactionStatus.PENDING)); } catch(IndexOutOfBoundsException e) { @@ -248,6 +249,7 @@ public class TransactionImportController extends BaseController // update original CsvTransaction attributes with values from user (from newCsvTransaction) csvTransaction.setName(newCsvTransaction.getName()); + csvTransaction.setDescription(newCsvTransaction.getDescription()); final Transaction newTransaction = createTransactionFromCsvTransaction(csvTransaction); transactionService.getRepository().save(newTransaction); @@ -261,6 +263,7 @@ public class TransactionImportController extends BaseController // TODO parse first // newTransaction.setDate(csvTransaction.getDate()); newTransaction.setName(csvTransaction.getName()); + newTransaction.setDescription(csvTransaction.getDescription()); newTransaction.setAmount(csvTransaction.getAmount()); newTransaction.setIsExpenditure(true); newTransaction.setAccount(helpers.getCurrentAccountOrDefault()); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java index 0780b17f8dedbd636d5f1198d6c090a931739b72..4affb3e24f370e3cae5690c32dde8c0b4c94f732 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java @@ -1,5 +1,5 @@ package de.deadlocker8.budgetmaster.transactions.csvimport; -public record CsvColumnSettings(int columnDate, int columnName, int columnAmount) +public record CsvColumnSettings(int columnDate, int columnName, int columnAmount, int columnDescription) { } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvTransaction.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvTransaction.java index 7473d5f3ca659adb399ef33ff012b03161f789c7..82b4a70587e650b978a6feeb5ad4ef0da1e56dbc 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvTransaction.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvTransaction.java @@ -7,13 +7,15 @@ public final class CsvTransaction private final String date; private String name; private final Integer amount; + private String description; private CsvTransactionStatus status; - public CsvTransaction(String date, String name, Integer amount, CsvTransactionStatus status) + public CsvTransaction(String date, String name, Integer amount, String description, CsvTransactionStatus status) { this.date = date; this.name = name; this.amount = amount; + this.description = description; this.status = status; } @@ -37,6 +39,16 @@ public final class CsvTransaction return amount; } + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + public CsvTransactionStatus getStatus() { return status; @@ -53,13 +65,13 @@ public final class CsvTransaction if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; CsvTransaction that = (CsvTransaction) o; - return Objects.equals(date, that.date) && Objects.equals(name, that.name) && Objects.equals(amount, that.amount) && status == that.status; + return Objects.equals(date, that.date) && Objects.equals(name, that.name) && Objects.equals(amount, that.amount) && Objects.equals(description, that.description) && status == that.status; } @Override public int hashCode() { - return Objects.hash(date, name, amount, status); + return Objects.hash(date, name, amount, description, status); } @Override @@ -68,7 +80,8 @@ public final class CsvTransaction return "CsvTransaction{" + "date='" + date + '\'' + ", name='" + name + '\'' + - ", amount='" + amount + '\'' + + ", amount=" + amount + + ", description='" + description + '\'' + ", status=" + status + '}'; } diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl index 538736e0e029f5a2996603d42ada68bc10825985..275b9afa822e63a39855c4e6f43037dfcce2c9d8 100644 --- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl +++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl @@ -153,6 +153,18 @@ <label class="input-label" for="columnAmount">${locale.getString("transactions.import.column")}</label> </div> </div> + <div class="row"> + <div class="col s6 m4 offset-m2 l3 offset-l3"> + <div class="transaction-import-text-with-icon"> + <i class="material-icons">article</i> + ${locale.getString("transaction.new.label.description")} + </div> + </div> + <div class="input-field col s6 m4 l3 no-margin-top no-margin-bottom"> + <input id="columnDescription" type="number" min="1" max="${csvRows?size}" name="columnDescription" <@validation.validation "columnDescription"/> value="<#if csvColumnSettings??>${csvColumnSettings.columnDescription()}</#if>"> + <label class="input-label" for="columnDescription">${locale.getString("transactions.import.column")}</label> + </div> + </div> <br> @@ -195,6 +207,7 @@ <td class="bold">${locale.getString("transactions.import.status")}</td> <td class="bold">${locale.getString("transaction.new.label.date")}</td> <td class="bold">${locale.getString("transaction.new.label.name")}</td> + <td class="bold">${locale.getString("transaction.new.label.description")}</td> <td class="bold">${locale.getString("transaction.new.label.amount")}</td> <td class="bold">${locale.getString("transactions.import.actions")}</td> </tr> @@ -217,6 +230,11 @@ <input class="no-margin-bottom" type="text" name="name" required value="${csvTransaction.getName()}"> </div> </td> + <td> + <div class="input-field no-margin-top no-margin-bottom"> + <input class="no-margin-bottom" type="text" name="description" value="${csvTransaction.getDescription()}"> + </div> + </td> <td>${currencyService.getCurrencyString(csvTransaction.getAmount())}</td> <td> <@header.buttonSubmit name='action' icon='save' localizationKey='' classes='text-white'/>