Abo (A1+A2): Liefertag frei waehlbar 1-31, Aenderung nur nach vorn, Sperre erst am Ausfuehrungstag
A1: Jeder Monatstag ist als Liefertag erlaubt (UserAbo::allowedDeliveryDays), Tage 29-31 liefern in kuerzeren Monaten am letzten Tag. Eine Stelle AboHelper::dateForDayInMonth klammert; setNextDate, Erstausfuehrung, Admin-Termin und Pause rechnen darueber, der Folgemonat immer aus dem Liefertag (31.01 -> 28.02 -> 31.03). Liefertag-Aenderung gilt fuer den laufenden Zyklus und nur nach vorn: ist der Tag im Referenzmonat vorbei, wird abgelehnt, der Monat verschiebt sich nie (Rueckfrage R1). Admin-Filter "naechste Ausfuehrung" als Datumsbereich. Prognose-Kacheln bekommen die Kachel Monatsende, Team-Abos rechnen bis Monatsende. A2: Sperrfristen Default 0, Setting 0 ist ausdruecklich 0 (fiel bisher auf den Default zurueck). Bedingung Kalendertage <= Sperre, zentral in AboHelper::isWithinLock: am Ausfuehrungstag ab 0:00 Uhr fixiert, Vortag bis 23:59 Uhr frei, fuer Liefertag, Produkte, Pause und Kuendigung (R2). Texte mit _zero-Varianten ueber AboHelper::lockMessage. Sprachdateien de/en/es/fr, neuer AboDeliveryDayTest, bestehende Tests angepasst, Plan-Status mit Deploy-Schritt (Settings auf 0). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
d6efe56cd4
commit
cf0311afc1
30 changed files with 638 additions and 185 deletions
|
|
@ -113,7 +113,7 @@ class HTMLHelper
|
|||
|
||||
public static function getAboDeliveryOptions($default = 5)
|
||||
{
|
||||
$values = UserAbo::$aboDeliveryDays;
|
||||
$values = UserAbo::allowedDeliveryDays();
|
||||
$ret = '';
|
||||
foreach ($values as $value) {
|
||||
$attr = ($value == $default) ? 'selected="selected"' : '';
|
||||
|
|
@ -128,7 +128,14 @@ class HTMLHelper
|
|||
|
||||
public static function getAboStrLang($num)
|
||||
{
|
||||
return $num.'. '.__('abo.of_month');
|
||||
$label = $num.'. '.__('abo.of_month');
|
||||
|
||||
// Tage 29-31 gibt es nicht in jedem Monat: dann liefert das Abo am letzten Tag.
|
||||
if ((int) $num >= 29) {
|
||||
$label .= ' '.__('abo.of_month_short_hint');
|
||||
}
|
||||
|
||||
return $label;
|
||||
}
|
||||
|
||||
public static function getAboFirstExecutionDate($date, $interval)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue