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
|
|
@ -27,7 +27,7 @@ class AboController extends Controller
|
|||
public function index()
|
||||
{
|
||||
if (Request::get('reset') === 'filter') {
|
||||
foreach (['filter_member_id', 'filter_status', 'filter_state', 'filter_active', 'filter_is_for', 'filter_payment', 'filter_start_month', 'filter_start_year', 'filter_next_day'] as $attr) {
|
||||
foreach (['filter_member_id', 'filter_status', 'filter_state', 'filter_active', 'filter_is_for', 'filter_payment', 'filter_start_month', 'filter_start_year', 'filter_next_from', 'filter_next_to'] as $attr) {
|
||||
set_user_attr($attr, null);
|
||||
}
|
||||
|
||||
|
|
@ -41,7 +41,6 @@ class AboController extends Controller
|
|||
'filter_statuses' => $this->getStatusFilterOptions(),
|
||||
'filter_months' => $this->getMonthFilterOptions(),
|
||||
'filter_years' => $this->getStartYearFilterOptions(),
|
||||
'filter_next_days' => UserAbo::$aboDeliveryDays,
|
||||
];
|
||||
|
||||
return view('admin.abo.index', $data);
|
||||
|
|
@ -226,9 +225,15 @@ class AboController extends Controller
|
|||
$query->whereYear('start_date', (int) Request::get('filter_start_year'));
|
||||
}
|
||||
|
||||
set_user_attr('filter_next_day', Request::get('filter_next_day'));
|
||||
if (Request::get('filter_next_day') != '') {
|
||||
$query->where('abo_interval', '=', (int) Request::get('filter_next_day'));
|
||||
// Ticket A1: Liefertage sind frei (1-31), daher Datumsbereich statt Tages-Dropdown.
|
||||
set_user_attr('filter_next_from', Request::get('filter_next_from'));
|
||||
if (Request::get('filter_next_from') != '') {
|
||||
$query->whereDate('next_date', '>=', Request::get('filter_next_from'));
|
||||
}
|
||||
|
||||
set_user_attr('filter_next_to', Request::get('filter_next_to'));
|
||||
if (Request::get('filter_next_to') != '') {
|
||||
$query->whereDate('next_date', '<=', Request::get('filter_next_to'));
|
||||
}
|
||||
|
||||
return \DataTables::eloquent($query)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue