... | ... |
@@ -46,7 +46,7 @@ |
46 | 46 |
<select id="res-behaelter" name="behaelter" required> |
47 | 47 |
<option value="">-</option> |
48 | 48 |
{% for option in buchen.behaelter %} |
49 |
- {% if option > slot.behaelter %} |
|
49 |
+ {% if option > slot.behaelterAvailable %} |
|
50 | 50 |
<option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }} ({{ 'MSC.wa_approval_needed'|trans([], 'contao_default') }})</option> |
51 | 51 |
{% else %} |
52 | 52 |
<option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }}</option> |
... | ... |
@@ -101,6 +101,11 @@ |
101 | 101 |
{% if toast is defined %} |
102 | 102 |
{{ toast|raw }} |
103 | 103 |
{% endif %} |
104 |
+ {% if slot.behaelterAvailable < 1 %} |
|
105 |
+ <div class="toast toast--warning mx-0"> |
|
106 |
+ <p class="warning">Für diesen Slot können nur noch Reservierungsanfragen gestellt werden.</p> |
|
107 |
+ </div> |
|
108 |
+ {% endif %} |
|
104 | 109 |
{% if buchen.buchbar %} |
105 | 110 |
<form hx-post="/_ajax/vr_wa/v1/slot?do=reservate" enctype="multipart/form-data"> |
106 | 111 |
<input type="hidden" name="id" value="{{ id }}"> |
... | ... |
@@ -167,6 +167,7 @@ class SlotAjaxController extends AbstractController |
167 | 167 |
$arrLage = array_combine($Lage->fetchEach('id'),$Lage->fetchEach('title')); |
168 | 168 |
} |
169 | 169 |
|
170 |
+ $intReservedBehaelter = $Slot->getReservedBehaelter(); |
|
170 | 171 |
$intAvailableBehaelter = max(0,$Slot->getAvailableBehaelter()); |
171 | 172 |
|
172 | 173 |
$arrData = [ |
... | ... |
@@ -175,14 +176,15 @@ class SlotAjaxController extends AbstractController |
175 | 176 |
'slot' => array_merge($Slot->row(),[ |
176 | 177 |
'anmerkungen' => $insertTagService->replace($Slot->anmerkungen ?? ''), |
177 | 178 |
'sorte' => $arrSorten, |
178 |
- 'behaelterAvailable' => $intAvailableBehaelter |
|
179 |
+ 'behaelterAvailable' => $intAvailableBehaelter, |
|
180 |
+ 'behaelterBooked' => $Slot->getReservedBehaelter(), |
|
179 | 181 |
]), |
180 | 182 |
'standort' => $Slot->getRelated('pid'), |
181 | 183 |
'lage' => $arrLage, |
182 | 184 |
'ernteart' => $arrErnteart, |
183 | 185 |
'buchen' => [ |
184 |
- 'buchbar' => (boolean) $intAvailableBehaelter, |
|
185 |
- 'behaelter' => range(min($intAvailableBehaelter,1),$Slot->behaelter*3), |
|
186 |
+ 'buchbar' => (boolean) ($Slot->behaelter*3 > $intReservedBehaelter), |
|
187 |
+ 'behaelter' => range(max($intAvailableBehaelter,1),$Slot->behaelter*3-$intReservedBehaelter), |
|
186 | 188 |
'sorten' => $arrSorten, |
187 | 189 |
'lage' => $arrLage, |
188 | 190 |
'ernteart' => $arrErnteart, |
... | ... |
@@ -366,7 +368,8 @@ class SlotAjaxController extends AbstractController |
366 | 368 |
$arrLagenBooked = explode(',', $Booking->lage); |
367 | 369 |
} |
368 | 370 |
|
369 |
- $intAvailableBehaelter = max(0,$Slot->getAvailableBehaelter()); |
|
371 |
+ $intReservedBehaelter = $Slot->getReservedBehaelter(); |
|
372 |
+ $intAvailableBehaelter = max($Booking->behaelter,$Slot->getAvailableBehaelter()); |
|
370 | 373 |
|
371 | 374 |
$arrData = array_merge($arrData,[ |
372 | 375 |
'modal' => $blnModal, |
... | ... |
@@ -375,6 +378,7 @@ class SlotAjaxController extends AbstractController |
375 | 378 |
'anmerkungen' => $insertTagService->replace($Slot->anmerkungen ?? ''), |
376 | 379 |
'sorte' => $arrSortenAvailable, |
377 | 380 |
'behaelterAvailable' => $intAvailableBehaelter, |
381 |
+ 'behaelterBooked' => $Slot->getReservedBehaelter(), |
|
378 | 382 |
]), |
379 | 383 |
'buchung' => array_merge($Booking->row(),[ |
380 | 384 |
'sorten' => $arrSortenBooked, |
... | ... |
@@ -384,7 +388,7 @@ class SlotAjaxController extends AbstractController |
384 | 388 |
'standort' => $Slot->getRelated('pid'), |
385 | 389 |
'buchen' => [ |
386 | 390 |
'buchbar' => (boolean) $intAvailableBehaelter, |
387 |
- 'behaelter' => range(min($intAvailableBehaelter,1),max($intAvailableBehaelter+$Booking->behaelter,$Slot->behaelter*3)), |
|
391 |
+ 'behaelter' => range(min($intAvailableBehaelter,1),$Slot->behaelter*3-$Slot->getReservedBehaelter()+$Booking->behaelter), |
|
388 | 392 |
'sorten' => $arrSortenAvailable, |
389 | 393 |
'ernteart' => $arrErnteartAvailable, |
390 | 394 |
'lage' => $arrLagenAvailable, |
... | ... |
@@ -434,7 +438,7 @@ class SlotAjaxController extends AbstractController |
434 | 438 |
if (($Slot = WeinanlieferungSlotsModel::findByPk($_REQUEST['id'])) !== null) |
435 | 439 |
{ |
436 | 440 |
// if (Input::post('behaelter') > $Slot->getAvailableBehaelter()) |
437 |
- if (Input::post('behaelter') > $Slot->behaelter*3) |
|
441 |
+ if (Input::post('behaelter') > $Slot->behaelter*3-$Slot->getReservedBehaelter()) |
|
438 | 442 |
{ |
439 | 443 |
return $this->renderDetails(false,sprintf('<div class="toast toast--danger mx-0">Fehler: Es sind mittlerweile nur noch %s Behälter verfügbar.</div>',$Slot->getAvailableBehaelter())); |
440 | 444 |
} |