diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java index e21718cab96026edeeb161f531bce69daccb483d..f42e236ba5ed54217ac32dbdfdc8c4b49ed69340 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java @@ -153,7 +153,8 @@ public class TemplateController extends BaseController public String post(Model model, @ModelAttribute("NewTemplate") Template template, BindingResult bindingResult, @RequestParam(value = "isPayment", required = false) boolean isPayment, - @RequestParam(value = "includeAccount", required = false) boolean includeAccount) + @RequestParam(value = "includeAccount", required = false) boolean includeAccount, + @RequestParam(value = "includeTransferAccount", required = false) boolean includeTransferAccount) { template.setTemplateName(template.getTemplateName().trim()); @@ -186,6 +187,11 @@ public class TemplateController extends BaseController template.setAccount(null); } + if(!includeTransferAccount) + { + template.setTransferAccount(null); + } + templateService.getRepository().save(template); return "redirect:/templates"; } @@ -200,13 +206,9 @@ public class TemplateController extends BaseController } Template template = templateOptional.get(); - + templateService.prepareTemplateForNewTransaction(template, false); templateService.prepareModelNewOrEdit(model, true, template, template.getAmount() <= 0, accountService.getAllAccountsAsc()); - if(template.isTransfer()) - { - return "templates/newTransferTemplate"; - } return "templates/newTemplate"; } } \ No newline at end of file diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index e7b0784d127700a2eb4d72b0dbbc08e5ec668e88..7ef5c77bc06c9f1e582e082302a800877b4f6b73 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -250,6 +250,7 @@ search.in.tags=Tags template.checkbox.include.category=Kategorie übernehmen template.checkbox.include.account=Konto übernehmen +template.checkbox.include.account.transfer=Zielkonto übernehmen # ABOUT about=Über {0} diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 762a81a7c46a6ef1e5bf194341346ce950427594..7fda4a8d90fe262ece16a4d672259c3cdac6db64 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -250,6 +250,7 @@ search.in.tags=Tags template.checkbox.include.category=Include category template.checkbox.include.account=Include account +template.checkbox.include.account.transfer=Include destination account # ABOUT about=About {0} diff --git a/src/main/resources/static/js/templates.js b/src/main/resources/static/js/templates.js index 7daf9a19a441753d742cf1fcd5c16353e0b3feb9..822ea631cf2679fe348b973681035ffe763a3ab1 100644 --- a/src/main/resources/static/js/templates.js +++ b/src/main/resources/static/js/templates.js @@ -51,17 +51,27 @@ $(document).ready(function() if($("#include-account").length) { - document.getElementById('include-account').addEventListener('change', (event) => - { - let accountSelect = document.getElementById('transaction-account') - let accountSelectInstance = M.FormSelect.getInstance(accountSelect); - accountSelectInstance.destroy(); - accountSelect.disabled = !event.target.checked; - M.FormSelect.init(document.querySelectorAll('#transaction-account'), {}); - }); + handleIncludeAccountCheckbox('include-account', 'transaction-account') + } + + if($("#include-transfer-account").length) + { + handleIncludeAccountCheckbox('include-transfer-account', 'transaction-transfer-account') } }); +function handleIncludeAccountCheckbox(checkboxID, selectID) +{ + document.getElementById(checkboxID).addEventListener('change', (event) => + { + let accountSelect = document.getElementById(selectID) + let accountSelectInstance = M.FormSelect.getInstance(accountSelect); + accountSelectInstance.destroy(); + accountSelect.disabled = !event.target.checked; + M.FormSelect.init(document.querySelectorAll('#' + selectID), {}); + }); +} + function createAndOpenModal(data) { let modalID = '#modalCreateFromTransaction'; diff --git a/src/main/resources/templates/templates/newTemplate.ftl b/src/main/resources/templates/templates/newTemplate.ftl index 0da3a789acdecd6924eca34965362c3094af7915..9a6f030b90a031400e663d16bf0c1f1be9ff5d3f 100644 --- a/src/main/resources/templates/templates/newTemplate.ftl +++ b/src/main/resources/templates/templates/newTemplate.ftl @@ -58,6 +58,15 @@ <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-account" "account" "", true/> </#if> + <#-- transfer account --> + <#if template.getTransferAccount()??> + <@templateFunctions.templateIncludeAccountCheckbox "include-transfer-account" "includeTransferAccount" locale.getString('template.checkbox.include.account.transfer') true/> + <@newTransactionMacros.account accounts template.getTransferAccount() "transaction-transfer-account" "transferAccount" "" false/> + <#else> + <@templateFunctions.templateIncludeAccountCheckbox "include-transfer-account" "includeTransferAccount" locale.getString('template.checkbox.include.account.transfer') false/> + <@newTransactionMacros.account accounts helpers.getCurrentAccountOrDefault() "transaction-transfer-account" "transferAccount" "", true/> + </#if> + <br> <#-- buttons --> <@newTransactionMacros.buttons/>