openjverein / jverein

Open JVerein - Open Source Vereinsverwaltung
https://openjverein.github.io
GNU General Public License v3.0
42 stars 15 forks source link

Fix: Mandatsdatum und Geburtsdatum bei Kursteilnehmern #264

Closed SchachtnerTh closed 1 month ago

SchachtnerTh commented 1 month ago

Beim Anlegen von Kursteilnehmern wird eine Fehlermeldung angezeigt, wenn kein Mandatsdatum eingegeben wurde. Dieses Feld ist aber nicht als notwendig gekennzeichnet. Geändert.

Beim Erzeugen des Formulars zum Anlegen neuer Kursteilnehmer wird die Einstellung "kursteilnehmergebgespflicht" verwendet. Bei der Übernahme der Daten aus dem Formular, wird das Geburtsdatum aber nur übernommen, wenn die Einstellung "geburtsdatumpflicht" gesetzt ist. Das kann dazu führen, dass das Geburtsdatum zwar als Pflichtfeld angegeben werden muss, beim Abspeichern aber dann nicht ausgelesen wird (weil die normalen Mitglieder kein Geburtsdatum angeben müssen) und dann eine Fehlermeldung ausgegeben wird. Geändert.

JohannMaierhofer commented 1 month ago

Ich stimme dem auch zu, habe aber noch etwas gefunden. In KursteilnehmerImpl.java im Plausi Check Zeile 94 wird die Einstellung auch verwendet aber nur das Geburstdatum überprüft und nicht auch das Geschlecht. Kann man das noch mitmachen oder soll ich einen eigenen Pull Request machen?

if (Einstellungen.getEinstellung().getKursteilnehmerGebGesPflicht())
{
  if (getGeburtsdatum() == null)
  {
    throw new ApplicationException("Bitte Geburtsdatum eingeben");
  }
}
SchachtnerTh commented 1 month ago

Das passt thematisch gut zusammen. Das nehme ich gerne noch mit dazu, wenn ich wieder am PC bin. Brauchst keinen eigenen PR dafür zu erstellen. Danke für den Hinweis!

SchachtnerTh commented 1 month ago

Ich habe mir das mit dem Geschlecht angeschaut und denke, eine Lösung gefunden zu haben. Leider wird aktuell nur bei Text-Pflichtfeldern ein gelber Hintergrund angezeigt, wenn sie noch nicht befüllt sind. @willuhn : Wäre es denn möglich, das auch bei SelectInput-Feldern so zu machen?

Dazu könnte man in der Klasse AbstractInput in Jameica den Listener nicht nur für TextInput-Felder verwenden, sondern z. B. auch für Combos.

In der Zeile 190 von AbstractInfo.java habe ich diese Zeile:

if (control == null || !(control instanceof Text) so abgeändert (+ ein import-Statement für die Combo-Klasse): if (control == null || !(control instanceof Text || control instanceof Combo))

Und bei SelectInput.java wird aktuell bei der update()-Methode gar nichts gemacht, also auch nicht update() der Basisklasse ausgeführt. Vielleicht gibt es einen Grund dafür. Aber wenn ich hier das update() der Basisklasse ausführe, werden auch SelectInputs gelb markiert, wenn es sich um Pflichtfelder handelt und beim Auswählen eines Wertes dann weiß.

Da habe ich das...

@Override
  protected void update() throws OperationCanceledException
  {
    // Wir machen hier nichts. 
  }

in das abgeändert:

@Override
  protected void update() throws OperationCanceledException
  {
    // Wir machen hier nichts. 
    super.update();
  }

Alternativ lasse ich es so, dass die SelectInputs nicht gelb hinterlegt sind, wenn es Pflichtfelder sind. (Ist beim Betrag ja auch so...) Ich weiß nicht, ob das vielleicht irgendwelche Seiteneffekte in Jameica hat... Alternativ könnte ich natürlich auch selbst eine neue Klasse in JVerein ableiten, aber das ist die Sache irgendwie nicht wert, finde ich.

JohannMaierhofer commented 1 month ago

Ich dachte jetzt nicht an die gelbe Farbe sondern einen expliziten Check beim Speichern so wie hier:

if (Einstellungen.getEinstellung().getKursteilnehmerGebGesPflicht())
{
  if (getGeburtsdatum() == null)
  {
    throw new ApplicationException("Bitte Geburtsdatum eingeben");
  }
  if (getGeschlecht() == null)
  {
    throw new ApplicationException("Bitte Geschlecht eingeben");
  }
}

Beim Testen habe ich jetzt aber festgestellt, dass man nicht in diesen Code läuft, auch wenn man kein Geschlecht ausgewählt hat. Das liegt daran, dass die getGeschlecht() Methode ein "m" liefert wenn nichts ausgewählt ist. Damit ist dieser Vorschlag hinfällig.

willuhn commented 1 month ago

Leider wird aktuell nur bei Text-Pflichtfeldern ein gelber Hintergrund angezeigt, wenn sie noch nicht befüllt sind.

Ich bin mir sicher, dass das mal funktioniert hatte. Kann aber leider nicht mehr sagen, wann ich das kaputt gemacht hab ;)

In der Zeile 190 von AbstractInfo.java habe ich diese Zeile:

if (control == null || !(control instanceof Text) so abgeändert (+ ein import-Statement für die Combo-Klasse): if (control == null || !(control instanceof Text || control instanceof Combo)) ....

Gute Idee. Hab's übernommen.

Ich weiß nicht, ob das vielleicht irgendwelche Seiteneffekte in Jameica hat...

Da bin ich mir auch nicht ganz sicher. Ich kann derzeit aber keine kritischen Stellen erkennen.