diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 9047b26..52a8c81 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -10988,6 +10988,23 @@ function adminEditBegegnungSpielplan($bestaetigen): void } +// Kann ein Spiel dieses Satzmodus ueberhaupt unentschieden enden? +// +// Gleichstand ist nicht immer ein Unentschieden. Wo eine Zahl von GEWINNSAETZEN gilt, hat ein +// Spiel mit gleichem Satzstand noch keinen Sieger — es ist unfertig, und dafuer gibt es keinen +// Punkt. Ohne Angabe zur Satzzahl bleibt es beim bisherigen Verhalten. +// +// Steht bewusst auf Dateiebene und nicht als Closure im Speicher-Loop: die Spielpunkte werden +// an ZWEI Stellen berechnet — hier beim Speichern eines Spielberichts und in +// begegnungenAktualisieren() bei einer Modus-/Wettbewerbsaenderung. Dort fehlte die Regel, +// sodass beide Wege demselben Spiel verschiedene Spielpunkte gaben (gefunden 2026-09-08). +function remisMoeglich($saetze_modus): bool +{ + if ($saetze_modus == 0) return true; // keine Angabe + if ($saetze_modus < 0) return false; // Gewinnsaetze: am Ende steht keiner gleich + return $saetze_modus % 2 == 0; // feste Satzzahl: nur eine gerade endet remis +} + function adminSaveBegegnungSpielplan(): void { $app = Factory::getContainer()->get(SiteApplication::class); @@ -11325,16 +11342,6 @@ function adminSaveBegegnungSpielplan(): void $total_heim_punkte += $spiel_heim_punkte; $total_gast_punkte += $spiel_gast_punkte; - // Gleichstand ist nicht immer ein Unentschieden. Wo eine Zahl von GEWINNSAETZEN - // gilt, hat ein Spiel mit gleichem Satzstand einfach noch keinen Sieger — es ist - // unfertig, und dafuer gibt es keinen Punkt. Ohne Angabe zur Satzzahl bleibt es - // beim bisherigen Verhalten. - $remis_moeglich = function ($saetze_modus) { - if ($saetze_modus == 0) return true; // keine Angabe - if ($saetze_modus < 0) return false; // Gewinnsaetze: am Ende steht keiner gleich - return $saetze_modus % 2 == 0; // feste Satzzahl: nur eine gerade endet remis - }; - if ($spieltyp[0] != "D") { if ($spielpunkte_wertung_einzel == 2) { $spiel_heim_spielpunkte = $spiel_heim_punkte; @@ -11350,7 +11357,7 @@ function adminSaveBegegnungSpielplan(): void $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; } else if ($spielpunkte_wertung_einzel != 3 - && $remis_moeglich($teamspiel_modus->saetze_modus_einzel)) { + && remisMoeglich($teamspiel_modus->saetze_modus_einzel)) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { @@ -11373,7 +11380,7 @@ function adminSaveBegegnungSpielplan(): void $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; } else if ($spielpunkte_wertung_doppel != 3 - && $remis_moeglich($teamspiel_modus->saetze_modus_doppel)) { + && remisMoeglich($teamspiel_modus->saetze_modus_doppel)) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 0bd74c7..303a2b3 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -6196,7 +6196,8 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_einzel != 3) { + } else if ($spielpunkte_wertung_einzel != 3 + && remisMoeglich($teamspiel_modus->saetze_modus_einzel)) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else { @@ -6218,7 +6219,8 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo } else if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) { $spiel_heim_spielpunkte = 0; $spiel_gast_spielpunkte = 0; - } else if ($spielpunkte_wertung_doppel != 3) { + } else if ($spielpunkte_wertung_doppel != 3 + && remisMoeglich($teamspiel_modus->saetze_modus_doppel)) { $spiel_heim_spielpunkte = 1; $spiel_gast_spielpunkte = 1; } else {