From def143704f163ae9c510b41a305a7137412e00b1 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 9 May 2021 11:35:59 +0200
Subject: [PATCH] Fixed #614 - create transaction from template: fallback to
 default account if template uses hidden/readonly account

---
 .../budgetmaster/templates/TemplateController.java          | 6 +++---
 .../deadlocker8/budgetmaster/templates/TemplateService.java | 6 ++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
index 0779259de..2b280ca9f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
@@ -139,13 +139,13 @@ public class TemplateController extends BaseController
 
 		if(newTransaction.getAmount() == null && newTransaction.isExpenditure() == null)
 		{
-			template.setIsExpenditure(true);
+			newTransaction.setIsExpenditure(true);
 		}
 
 		final DateTime date = dateService.getDateTimeFromCookie(cookieDate);
-		transactionService.prepareModelNewOrEdit(model, false, date, null, template, accountService.getAllActivatedAccountsAsc());
+		transactionService.prepareModelNewOrEdit(model, false, date, null, newTransaction, accountService.getAllActivatedAccountsAsc());
 
-		if(template.isTransfer())
+		if(newTransaction.isTransfer())
 		{
 			return "transactions/newTransactionTransfer";
 		}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
index b49351020..f03ee377c 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
@@ -91,6 +91,12 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>
 		{
 			template.setAccount(accountService.getRepository().findByIsDefault(true));
 		}
+
+		final Account transferAccount = template.getTransferAccount();
+		if(transferAccount != null && transferAccount.getAccountState() != AccountState.FULL_ACCESS)
+		{
+			template.setTransferAccount(accountService.getRepository().findByIsDefault(true));
+		}
 	}
 
 	public void prepareModelNewOrEdit(Model model, boolean isEdit, TransactionBase item, List<Account> accounts)
-- 
GitLab