From b1b6ed54bc4f82bbccedafaf53f7a9d3b109cc88 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Tue, 19 Oct 2021 22:33:22 +0200
Subject: [PATCH] #577 - show button for transactions from readonly accounts
 too

---
 .../budgetmaster/transactions/Transaction.java  | 17 +++++++++++++++++
 .../transactions/transactionsMacros.ftl         |  2 ++
 2 files changed, 19 insertions(+)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
index b802a127f..ffac19287 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/Transaction.java
@@ -232,6 +232,23 @@ public class Transaction implements TransactionBase
 		return isAccountEditable && isTransferAccountEditable;
 	}
 
+	/**
+	 * States whether this transaction is allowed to be used to create a new transaction
+	 * and prefill all inputs with the data from this transaction.
+	 */
+	public boolean isAllowedToFillNewTransaction()
+	{
+		boolean isRestCategory = category.getType().equals(CategoryType.REST);
+		if(isRestCategory)
+		{
+			return false;
+		}
+
+		boolean isAccountEditable = account.getAccountState().equals(AccountState.FULL_ACCESS);
+		boolean isAccountReadOnly = account.getAccountState().equals(AccountState.READ_ONLY);
+		return isAccountEditable || isAccountReadOnly;
+	}
+
 	@Override
 	public String toString()
 	{
diff --git a/src/main/resources/templates/transactions/transactionsMacros.ftl b/src/main/resources/templates/transactions/transactionsMacros.ftl
index 0f79a9d61..98519d63f 100644
--- a/src/main/resources/templates/transactions/transactionsMacros.ftl
+++ b/src/main/resources/templates/transactions/transactionsMacros.ftl
@@ -53,6 +53,8 @@
             <#if transaction.isEditable()>
                 <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/edit' icon='edit' localizationKey='' classes="no-padding text-default"/>
                 <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-transaction" isDataUrl=true/>
+            </#if>
+            <#if transaction.isAllowedToFillNewTransaction()>
                 <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/newFromExisting' icon='content_copy' localizationKey='' classes="no-padding text-default button-new-from-existing"/>
             </#if>
         </div>
-- 
GitLab