From 053c63a5fe6756805dc3cd389b7f669b6ea624ec Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 10 Dec 2017 12:53:07 +0100
Subject: [PATCH] Fixed #242 - dont't prefill enddate if not set by user; Fixed
 #241 - repeating every x days not working properly if no enddate is set

---
 .../ui/controller/NewPaymentController.java   | 22 ++++++++++++++-----
 .../budgetmaster/languages/_de.properties     |  2 +-
 .../budgetmaster/languages/_en.properties     |  2 +-
 .../budgetmaster/ui/fxml/NewPaymentGUI.fxml   |  1 +
 4 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java
index 0dcd07c18..f72708456 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/NewPaymentController.java
@@ -71,6 +71,7 @@ public class NewPaymentController extends BaseController implements Styleable
 	@FXML private TextArea textArea;
 	@FXML private HBox hboxTags;
 	@FXML private Button buttonTagsHelp;
+	@FXML private CheckBox checkBoxEndDate;
 
 	private Stage parentStage;
 	private Controller controller;
@@ -248,6 +249,10 @@ public class NewPaymentController extends BaseController implements Styleable
 				}
 			}
 		});
+		
+		checkBoxEndDate.selectedProperty().addListener((obs, oldValue, newValue)->{
+			datePickerEnddate.setDisable(!newValue);
+		});
 	}
 	
 	private void initSpinnerRepeatingPeriod()
@@ -334,6 +339,8 @@ public class NewPaymentController extends BaseController implements Styleable
 						toggleRepeatingArea(true);
 						comboBoxRepeatingDay.getSelectionModel().select(currentPayment.getRepeatMonthDay()-1);
 					}
+					
+					checkBoxEndDate.setSelected(currentPayment.getRepeatEndDate() != null);
 					if(currentPayment.getRepeatEndDate() != null)
 					{
 						datePickerEnddate.setValue(LocalDate.parse(currentPayment.getRepeatEndDate()));
@@ -445,17 +452,18 @@ public class NewPaymentController extends BaseController implements Styleable
 				return;
 			}
 
-			if(datePickerEnddate.getValue() != null && datePickerEnddate.getValue().isBefore(date))
+			if(checkBoxEndDate.isSelected() && datePickerEnddate.getValue() != null && datePickerEnddate.getValue().isBefore(date))
 			{
 				showWarning(Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE));				
 				return;
 			}			
 
 			if(edit)
-			{				
+			{
 				try
-				{		
-					RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
+				{
+					LocalDate endDate = checkBoxEndDate.isSelected() ? datePickerEnddate.getValue() : null;
+					RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(endDate), repeatingDay);
 							
 					ServerConnection connection = new ServerConnection(controller.getSettings());
 					if(payment instanceof NormalPayment)
@@ -481,7 +489,8 @@ public class NewPaymentController extends BaseController implements Styleable
 			}
 			else
 			{
-				RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval,Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
+				LocalDate endDate = checkBoxEndDate.isSelected() ? datePickerEnddate.getValue() : null;
+				RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(endDate), repeatingDay);
 				try
 				{
 					ServerConnection connection = new ServerConnection(controller.getSettings());
@@ -599,7 +608,8 @@ public class NewPaymentController extends BaseController implements Styleable
 			spinnerRepeatingPeriod.setDisable(!selected);
 			comboBoxRepeatingDay.setDisable(!selected);
 		}
-		datePickerEnddate.setDisable(!selected);
+		checkBoxEndDate.setDisable(!selected);
+		datePickerEnddate.setDisable(!selected || !checkBoxEndDate.isSelected());
 		radioButtonPeriod.setDisable(!selected);
 		radioButtonDay.setDisable(!selected);
 		labelText1.setDisable(!selected);
diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties
index 3161b37ad..b0c2bac13 100644
--- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties
+++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties
@@ -292,7 +292,7 @@ payment.new.label.repeating=Wiederholung:
 payment.new.label.repeating.all=Alle
 payment.new.label.repeating.days=Tage
 payment.new.label.repeating.monthday=jeden Monat am:
-payment.new.label.enddate=Enddatum
+payment.new.label.enddate=Enddatum:
 payment.new.button.save=Speichern
 
 paymenttab.button.new.income=\ Neue Einnahme
diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties
index d5ad30110..5d1b2c64d 100644
--- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties
+++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties
@@ -292,7 +292,7 @@ payment.new.label.repeating=Repeating:
 payment.new.label.repeating.all=every
 payment.new.label.repeating.days=days
 payment.new.label.repeating.monthday=every month at:
-payment.new.label.enddate=Enddate
+payment.new.label.enddate=Enddate:
 payment.new.button.save=Save
 
 paymenttab.button.new.income=\ New Income
diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
index caffbf8e6..e61d435c4 100644
--- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
+++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
@@ -190,6 +190,7 @@
                                     <Font name="System Bold" size="14.0" />
                                  </font>
                               </Label>
+                              <CheckBox fx:id="checkBoxEndDate" mnemonicParsing="false" />
                               <DatePicker fx:id="datePickerEnddate" maxWidth="1.7976931348623157E308" prefHeight="29.0" HBox.hgrow="ALWAYS" />
                            </children>
                         </HBox>
-- 
GitLab