diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java index cff145c71e815710f85163cc2b4f2e556918e03c..deff361fd8fbdc384095fea72ce4cd59b9a87efd 100644 --- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java +++ b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java @@ -3,6 +3,8 @@ package de.deadlocker8.budgetmaster.ui; import java.time.LocalDate; import java.util.ArrayList; +import org.joda.time.DateTime; + import de.deadlocker8.budgetmaster.logic.Category; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.NormalPayment; @@ -15,6 +17,7 @@ import de.deadlocker8.budgetmaster.ui.cells.RepeatingDayCell; import de.deadlocker8.budgetmaster.ui.cells.SmallCategoryCell; import fontAwesome.FontIcon; import fontAwesome.FontIconType; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; @@ -161,7 +164,11 @@ public class NewPaymentController } } }); - + //preselect correct month and year + DateTime currentDate = controller.getCurrentDate(); + datePicker.setValue(LocalDate.now().withYear(currentDate.getYear()).withMonth(currentDate.getMonthOfYear()).withDayOfMonth(currentDate.getDayOfMonth())); + Platform.runLater(()->{datePicker.getEditor().clear();}); + if(edit) { //prefill diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java index 291ea648251df9d0b62faa172097dbb2ec20252c..5a3009bfdaaf3ed58b29e8ec1c99df5f31622b2c 100644 --- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java +++ b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java @@ -3,8 +3,6 @@ package de.deadlocker8.budgetmaster.ui; import java.io.IOException; import java.util.ArrayList; -import org.joda.time.DateTime; - import de.deadlocker8.budgetmaster.logic.Budget; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.NormalPayment; @@ -241,15 +239,7 @@ public class PaymentController implements Refreshable refreshListView(); refreshCounter(); - Label labelPlaceholder; - if(controller.getCurrentDate().isAfter(DateTime.now())) - { - labelPlaceholder = new Label("Datum liegt in der Zukunft"); - } - else - { - labelPlaceholder = new Label("Keine Daten verfügbar"); - } + Label labelPlaceholder = new Label("Keine Daten verfügbar"); labelPlaceholder.setStyle("-fx-font-size: 16"); listView.setPlaceholder(labelPlaceholder); } diff --git a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java index 1d645f716c574109e752e3c2b2abeeeee8981d1a..d9b5163d50da921d0b2e91e10a58194f3d97a34a 100644 --- a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java +++ b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java @@ -12,6 +12,8 @@ import static spark.Spark.secure; import java.io.File; +import org.joda.time.DateTime; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -75,7 +77,7 @@ public class SparkServer halt(401, "Unauthorized"); } - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(); + new RepeatingPaymentUpdater(handler).updateRepeatingPayments(DateTime.now()); }); // Category @@ -105,7 +107,7 @@ public class SparkServer get("/rest", new RestGet(handler, gson)); after((request, response) -> { - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(); + new RepeatingPaymentUpdater(handler).updateRepeatingPayments(DateTime.now()); }); Spark.exception(Exception.class, (exception, request, response) -> { diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java index dcaab7e845fcd85d0aa9238e29367689d047df24..967cbae9fd99ba3e79197632bbb03a1fb4fe052d 100644 --- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java +++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java @@ -4,10 +4,13 @@ import static spark.Spark.halt; import java.util.ArrayList; +import org.joda.time.DateTime; + import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.NormalPayment; import de.deadlocker8.budgetmasterserver.main.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; import spark.Route; @@ -44,6 +47,15 @@ public class PaymentGet implements Route halt(400, "Bad Request"); } + //refresh repeating entries + DateTime date = DateTime.now().withYear(year).withMonthOfYear(month); + date = date.dayOfMonth().withMaximumValue(); + if(date.isBefore(DateTime.now())) + { + date = DateTime.now().dayOfMonth().withMaximumValue(); + } + new RepeatingPaymentUpdater(handler).updateRepeatingPayments(date); + try { ArrayList<NormalPayment> payments = new ArrayList<>(); diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java index 0d1551c5b864179033bfc4a23245dfad80a77448..3c053d1142b95a5e2dadadafaafac1f817100e2c 100644 --- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java +++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java @@ -4,10 +4,13 @@ import static spark.Spark.halt; import java.util.ArrayList; +import org.joda.time.DateTime; + import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry; import de.deadlocker8.budgetmasterserver.main.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; import spark.Route; @@ -44,6 +47,15 @@ public class RepeatingPaymentGetAll implements Route halt(400, "Bad Request"); } + //refresh repeating entries + DateTime date = DateTime.now().withYear(year).withMonthOfYear(month); + date = date.dayOfMonth().withMaximumValue(); + if(date.isBefore(DateTime.now())) + { + date = DateTime.now().dayOfMonth().withMaximumValue(); + } + new RepeatingPaymentUpdater(handler).updateRepeatingPayments(date); + try { ArrayList<RepeatingPaymentEntry> payments = new ArrayList<>(); diff --git a/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java b/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java index facd9aaf152d1e6a7b1dba4af98737cd8f5201b6..0b7246a911ffcb06200b782759ce1c01eb3482d9 100644 --- a/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java +++ b/src/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java @@ -20,17 +20,16 @@ public class RepeatingPaymentUpdater this.handler = handler; } - public void updateRepeatingPayments() + public void updateRepeatingPayments(DateTime now) { try { ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); - ArrayList<LatestRepeatingPayment> latest = handler.getLatestRepeatingPaymentEntries();; + ArrayList<LatestRepeatingPayment> latest = handler.getLatestRepeatingPaymentEntries(); for(RepeatingPayment currentPayment : repeatingPayments) { - int index = latest.indexOf(currentPayment); - DateTime now = DateTime.now(); + int index = latest.indexOf(currentPayment); if(currentPayment.getRepeatEndDate() != null) { DateTime endDate = DateTime.parse(currentPayment.getRepeatEndDate()); @@ -79,8 +78,8 @@ public class RepeatingPaymentUpdater //repeat every x days if(payment.getRepeatInterval() != 0) { - int numberOfDays = Days.daysBetween(startDate, now).getDays(); - int occurrences = numberOfDays % payment.getRepeatInterval(); + int numberOfDays = Days.daysBetween(startDate, now).getDays(); + int occurrences = numberOfDays / payment.getRepeatInterval(); for(int i = 0; i <= occurrences + 1; i++) { dates.add(startDate.plusDays(i * payment.getRepeatInterval())); @@ -95,7 +94,6 @@ public class RepeatingPaymentUpdater dates.add(startDate.plusMonths(i)); } } - return dates; } } \ No newline at end of file