| ... | ... |
@@ -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 |
} |