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
|
|
@ -23,7 +23,6 @@ use App\Services\Shop;
|
|||
use App\Services\UserService;
|
||||
use App\Services\Util;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Request;
|
||||
use Yard;
|
||||
|
||||
|
|
@ -128,10 +127,7 @@ class AboController extends Controller
|
|||
AboOrderCart::initYard($user_abo);
|
||||
|
||||
if ($changeLocked) {
|
||||
$message = __('abo.error_change_locked', [
|
||||
'days' => (int) now()->diffInDays(Carbon::parse($user_abo->next_date), false),
|
||||
'lock' => AboRepository::getLockDaysChange(),
|
||||
]);
|
||||
$message = AboHelper::lockMessage('error_change_locked', $user_abo, AboRepository::getLockDaysChange());
|
||||
}
|
||||
|
||||
// addProduct
|
||||
|
|
@ -745,7 +741,7 @@ class AboController extends Controller
|
|||
if (! Request::boolean('abo_order_info_checkbox')) {
|
||||
$data['error'] = __('abo.abo_order_info_checkbox_required');
|
||||
$data['step'] = 4;
|
||||
} elseif (! in_array((int) Request::input('abo_interval'), UserAbo::$aboDeliveryDays, true)) {
|
||||
} elseif (! UserAbo::isAllowedDeliveryDay(Request::input('abo_interval'))) {
|
||||
$data['error'] = __('abo.error_abo_interval');
|
||||
$data['step'] = 4;
|
||||
} elseif (! $this->preCheckCheckout()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue