Skip to content
Snippets Groups Projects
Commit b7b8131c authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#596 - eliminated special page for editing recurring transactions

parent aa6ffd32
Branches
Tags
No related merge requests found
......@@ -132,10 +132,14 @@ public class TransactionController extends BaseController
}
@PostMapping(value = "/newTransaction/normal")
public String postNormal(Model model,
@CookieValue("currentDate") String cookieDate,
public String postRepeating(Model model, @CookieValue("currentDate") String cookieDate,
@ModelAttribute("NewTransaction") Transaction transaction, BindingResult bindingResult,
@RequestParam(value = "previousType", required = false) TransactionType previousType)
@RequestParam(value = "isRepeating", required = false) boolean isRepeating,
@RequestParam(value = "previousType", required = false) TransactionType previousType,
@RequestParam(value = "repeatingModifierNumber", required = false) int repeatingModifierNumber,
@RequestParam(value = "repeatingModifierType", required = false) String repeatingModifierType,
@RequestParam(value = "repeatingEndType", required = false) String repeatingEndType,
@RequestParam(value = "repeatingEndValue", required = false) String repeatingEndValue)
{
DateTime date = dateService.getDateTimeFromCookie(cookieDate);
......@@ -147,9 +151,17 @@ public class TransactionController extends BaseController
transactionService.handleAmount(transaction);
transactionService.handleTags(transaction);
if(isRepeating)
{
final RepeatingOption repeatingOption = createRepeatingOption(transaction.getDate(), repeatingModifierNumber, repeatingModifierType, repeatingEndType, repeatingEndValue);
transaction.setRepeatingOption(repeatingOption);
}
else
{
transaction.setRepeatingOption(null);
}
return handleRedirect(model, transaction.getID() != null, transaction, bindingResult, date, "transactions/newTransactionNormal");
return handleRedirect(model, transaction.getID() != null, transaction, bindingResult, date, "transactions/newTransaction");
}
private void handlePreviousType(TransactionType previousType, Transaction transaction)
......@@ -161,31 +173,8 @@ public class TransactionController extends BaseController
}
@SuppressWarnings("ConstantConditions")
@PostMapping(value = "/newTransaction/repeating")
public String postRepeating(Model model, @CookieValue("currentDate") String cookieDate,
@ModelAttribute("NewTransaction") Transaction transaction, BindingResult bindingResult,
@RequestParam(value = "isRepeating", required = false) boolean isRepeating,
@RequestParam(value = "previousType", required = false) TransactionType previousType,
@RequestParam(value = "repeatingModifierNumber", required = false) int repeatingModifierNumber,
@RequestParam(value = "repeatingModifierType", required = false) String repeatingModifierType,
@RequestParam(value = "repeatingEndType", required = false) String repeatingEndType,
@RequestParam(value = "repeatingEndValue", required = false) String repeatingEndValue)
{
DateTime date = dateService.getDateTimeFromCookie(cookieDate);
// handle repeating transactions
if(transaction.getID() != null && isRepeating)
private RepeatingOption createRepeatingOption(DateTime startDate, int repeatingModifierNumber, String repeatingModifierType, String repeatingEndType, String repeatingEndValue)
{
transactionService.deleteTransaction(transaction.getID());
}
TransactionValidator transactionValidator = new TransactionValidator();
transactionValidator.validate(transaction, bindingResult);
transactionService.handleAmount(transaction);
transactionService.handleTags(transaction);
RepeatingOption repeatingOption;
RepeatingModifierType type = RepeatingModifierType.getByLocalization(repeatingModifierType);
RepeatingModifier repeatingModifier = RepeatingModifier.fromModifierType(type, repeatingModifierNumber);
......@@ -205,10 +194,7 @@ public class TransactionController extends BaseController
break;
}
repeatingOption = new RepeatingOption(transaction.getDate(), repeatingModifier, repeatingEnd);
transaction.setRepeatingOption(repeatingOption);
return handleRedirect(model, transaction.getID() != null, transaction, bindingResult, date, "transactions/newTransactionRepeating");
return new RepeatingOption(startDate, repeatingModifier, repeatingEnd);
}
@PostMapping(value = "/newTransaction/transfer")
......@@ -270,11 +256,6 @@ public class TransactionController extends BaseController
DateTime date = dateService.getDateTimeFromCookie(cookieDate);
transactionService.prepareModelNewOrEdit(model, true, date, null, transaction, accountService.getAllActivatedAccountsAsc());
if(transaction.isRepeating())
{
return "transactions/newTransactionRepeating";
}
if(transaction.isTransfer())
{
return "transactions/newTransactionTransfer";
......@@ -355,6 +336,7 @@ public class TransactionController extends BaseController
transactionCopy.setRepeatingOption(null);
redirectUrl = "transactions/newTransactionNormal";
break;
// TODO
case REPEATING:
transactionCopy.setTransferAccount(null);
redirectUrl = "transactions/newTransactionRepeating";
......
......@@ -410,7 +410,7 @@ function validateForm(allowEmptyAmount = false)
}
}
if(document.getElementsByName('isRepeating')[0].value === '1')
if(document.getElementsByName('isRepeating')[0].value)
{
if(!validateNumber($(transactionRepeatingModifierID).val(), transactionRepeatingModifierID.substr(1), "hidden-" + transactionRepeatingModifierID.substr(1), numberValidationMessage, REGEX_NUMBER))
{
......
......@@ -39,6 +39,7 @@
may then override an existing transactions if the ID is also already used in transactions table -->
<input type="hidden" name="ID" value="<#if transaction.class.simpleName == "Transaction" && transaction.getID()??>${transaction.getID()?c}</#if>">
<input type="hidden" name="previousType" value="<#if previousType??>${previousType.name()}</#if>">
<input type="hidden" name="isRepeating" value="${transaction.isRepeating()?c}">
<#-- isPayment switch -->
<@newTransactionMacros.isExpenditureSwitch transaction/>
......
<html>
<head>
<#import "../helpers/header.ftl" as header>
<@header.globals/>
<#assign title = locale.getString("title.transaction.new.repeating.long")/>
<#if isEdit>
<#assign title=locale.getString("title.transaction.edit", title)/>
<#else>
<#assign title=locale.getString("title.transaction.new", title)/>
</#if>
<@header.header "BudgetMaster - ${title}"/>
<@header.style "transactions"/>
<@header.style "datepicker"/>
<#import "/spring.ftl" as s>
</head>
<@header.body>
<#import "../helpers/navbar.ftl" as navbar>
<@navbar.navbar "transactions" settings/>
<#import "newTransactionMacros.ftl" as newTransactionMacros>
<#import "../helpers/customSelectMacros.ftl" as customSelectMacros>
<main>
<div class="card main-card background-color">
<div class="container">
<div class="section center-align">
<div class="headline">${title}</div>
</div>
</div>
<@header.content>
<div class="container">
<#import "../helpers/validation.ftl" as validation>
<form name="NewTransaction" action="<@s.url '/transactions/newTransaction/repeating'/>" method="post" onsubmit="return validateForm()">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<input type="hidden" name="ID" value="<#if transaction.getID()??>${transaction.getID()?c}</#if>">
<input type="hidden" name="isRepeating" value="${transaction.isRepeating()?c}">
<input type="hidden" name="previousType" value="<#if previousType??>${previousType.name()}</#if>">
<#-- isPayment switch -->
<@newTransactionMacros.isExpenditureSwitch transaction/>
<#assign hint=helpers.getHintByLocalizationKey("hint.transaction.save")/>
<@header.hint hint=hint/>
<#-- name -->
<@newTransactionMacros.transactionName transaction suggestionsJSON/>
<#-- amount -->
<@newTransactionMacros.transactionAmount transaction/>
<#-- category -->
<@customSelectMacros.customCategorySelect categories transaction.getCategory() "col s12 m12 l8 offset-l2" locale.getString("transaction.new.label.category")/>
<#-- date -->
<@newTransactionMacros.transactionStartDate transaction currentDate/>
<#-- description -->
<@newTransactionMacros.transactionDescription transaction/>
<#-- tags -->
<@newTransactionMacros.transactionTags transaction/>
<#-- account -->
<#if transaction.getAccount()??>
<#assign selectedAccount = transaction.getAccount()/>
<#else>
<#assign selectedAccount = helpers.getCurrentAccountOrDefault()/>
</#if>
<@customSelectMacros.customAccountSelect "account-select-wrapper" "account" accounts selectedAccount "col s12 m12 l8 offset-l2" locale.getString("transaction.new.label.account") "transaction-account"/>
<#-- repeating options -->
<@newTransactionMacros.transactionRepeating transaction currentDate/>
<#-- buttons -->
<@newTransactionMacros.buttons "/transactions"/>
<@newTransactionMacros.buttonTransactionActions isEdit false previousType??/>
</form>
<div id="changeTransactionTypeModalContainer"></div>
</div>
</@header.content>
</div>
</main>
<!-- Pass localization to JS -->
<#import "../helpers/globalDatePicker.ftl" as datePicker>
<@datePicker.datePickerLocalization/>
<!-- Scripts-->
<#import "../helpers/scripts.ftl" as scripts>
<@scripts.scripts/>
<script src="<@s.url '/js/libs/spectrum.js'/>"></script>
<script src="<@s.url '/js/helpers.js'/>"></script>
<script src="<@s.url '/js/transactions.js'/>"></script>
<script src="<@s.url '/js/transactionActions.js'/>"></script>
</@header.body>
</html>
......@@ -144,10 +144,6 @@
<a href="<@s.url '/transactions/newTransaction/transfer'/>" class="btn-floating btn background-green-dark"><i class="material-icons">swap_horiz</i></a>
<a href="<@s.url '/transactions/newTransaction/transfer'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new.transfer")}</a>
</li>
<li>
<a href="<@s.url '/transactions/newTransaction/repeating'/>" class="btn-floating btn background-blue"><i class="material-icons">repeat</i></a>
<a href="<@s.url '/transactions/newTransaction/repeating'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new.repeating")}</a>
</li>
<li>
<a href="<@s.url '/transactions/newTransaction/normal'/>" class="btn-floating btn background-orange"><i class="material-icons">payment</i></a>
<a href="<@s.url '/transactions/newTransaction/normal'/>" class="btn-floating btn mobile-fab-tip no-wrap">${locale.getString("title.transaction.new.normal")}</a>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment