| ... | ... |
@@ -53,10 +53,12 @@ |
| 53 | 53 |
<div class="grid-c-6 mb-2 mb-0-md"> |
| 54 | 54 |
<fieldset> |
| 55 | 55 |
<label for="res-behaeltereinheit"><strong>Liefernde Botticheinheit<sup class="text-danger">*</sup></strong></label> |
| 56 |
- <select id="res-behaeltereinheit" name="unit" hx-get="/_ajax/vr_wa/v1/slot?do=availableBookingUnitAmount&id={{ id }}" hx-target="#wa-booking-{{ id }} #res-behaelter">
|
|
| 57 |
- <option value="">{{ 'tl_vr_wa_units.containers.0'|trans([], 'contao_tl_vr_wa_units') }}</option>
|
|
| 56 |
+ <select id="res-behaeltereinheit" name="unit" hx-get="/_ajax/vr_wa/v1/slot?do=availableBookingUnitAmount&id={{ id }}" hx-target="#wa-booking-{{ id }} #res-behaelter" hx-trigger="change, load">
|
|
| 57 |
+ {% if not buchen.disable_base_unit %}
|
|
| 58 |
+ <option value=""{% if buchen.default_unit == '' %} selected{% endif %}>{{ 'tl_vr_wa_units.containers.0'|trans([], 'contao_tl_vr_wa_units') }}</option>
|
|
| 59 |
+ {% endif %}
|
|
| 58 | 60 |
{% for value, option in buchen.units %}
|
| 59 |
- <option value="{{ value }}"{{ buchung.unit == value ? ' selected' : '' }}>{{ option }}</option>
|
|
| 61 |
+ <option value="{{ value }}"{% if buchen.default_unit == value %} selected{% endif %}>{{ option }}</option>
|
|
| 60 | 62 |
{% endfor %}
|
| 61 | 63 |
</select> |
| 62 | 64 |
</fieldset> |
| ... | ... |
@@ -87,10 +87,12 @@ |
| 87 | 87 |
<div class="grid-c-6 mb-2 mb-0-md"> |
| 88 | 88 |
<fieldset> |
| 89 | 89 |
<label for="res-behaeltereinheit"><strong>Liefernde Botticheinheit<sup class="text-danger">*</sup></strong></label> |
| 90 |
- <select id="res-behaeltereinheit" name="unit" hx-get="/_ajax/vr_wa/v1/slot?do=availableUnitAmount&id={{ id }}" hx-target="#wa-slot-{{ id }} #res-behaelter">
|
|
| 91 |
- <option value="">{{ 'tl_vr_wa_units.containers.0'|trans([], 'contao_tl_vr_wa_units') }}</option>
|
|
| 90 |
+ <select id="res-behaeltereinheit" name="unit" hx-get="/_ajax/vr_wa/v1/slot?do=availableUnitAmount&id={{ id }}" hx-target="#wa-slot-{{ id }} #res-behaelter" hx-trigger="change, load">
|
|
| 91 |
+ {% if not buchen.disable_base_unit %}
|
|
| 92 |
+ <option value=""{% if buchen.default_unit == '' %} selected{% endif %}>{{ 'tl_vr_wa_units.containers.0'|trans([], 'contao_tl_vr_wa_units') }}</option>
|
|
| 93 |
+ {% endif %}
|
|
| 92 | 94 |
{% for value, option in buchen.units %}
|
| 93 |
- <option value="{{ value }}">{{ option }}</option>
|
|
| 95 |
+ <option value="{{ value }}"{% if buchen.default_unit == value %} selected{% endif %}>{{ option }}</option>
|
|
| 94 | 96 |
{% endfor %}
|
| 95 | 97 |
</select> |
| 96 | 98 |
</fieldset> |
| ... | ... |
@@ -214,6 +214,25 @@ class SlotAjaxController extends AbstractController |
| 214 | 214 |
} |
| 215 | 215 |
} |
| 216 | 216 |
|
| 217 |
+ $standort = $Slot->getRelated('pid');
|
|
| 218 |
+ $disable_base_unit = !empty($standort->disable_base_unit); |
|
| 219 |
+ |
|
| 220 |
+ // Determine default selected unit |
|
| 221 |
+ $defaultUnitId = ''; |
|
| 222 |
+ if ($disable_base_unit && !empty($arrUnits)) {
|
|
| 223 |
+ // If base unit is disabled, select the first available unit |
|
| 224 |
+ reset($arrUnits); |
|
| 225 |
+ $defaultUnitId = key($arrUnits); |
|
| 226 |
+ } |
|
| 227 |
+ |
|
| 228 |
+ // Adjust quantity options based on default unit |
|
| 229 |
+ $behaelterOptions = range(min($intBookableBehaelter,1), $intBookableBehaelter); |
|
| 230 |
+ if ($defaultUnitId && ($Unit = WeinanlieferungUnitsModel::findByPk($defaultUnitId)) !== null) {
|
|
| 231 |
+ $intDefault = floor($intAvailableBehaelter / max(1, $Unit->containers)); |
|
| 232 |
+ $intAmount = floor($intBookableBehaelter / max(1, $Unit->containers)); |
|
| 233 |
+ $behaelterOptions = $intAmount ? range(1, $intAmount) : []; |
|
| 234 |
+ } |
|
| 235 |
+ |
|
| 217 | 236 |
$arrData = [ |
| 218 | 237 |
'modal' => $blnModal, |
| 219 | 238 |
'id' => $Slot->id, |
| ... | ... |
@@ -221,11 +240,13 @@ class SlotAjaxController extends AbstractController |
| 221 | 240 |
'anmerkungen' => $insertTagService->replace($Slot->anmerkungen ?? ''), |
| 222 | 241 |
'behaelterAvailable' => $intAvailableBehaelter |
| 223 | 242 |
]), |
| 224 |
- 'standort' => $Slot->getRelated('pid'),
|
|
| 243 |
+ 'standort' => $standort, |
|
| 225 | 244 |
'buchen' => [ |
| 226 | 245 |
'buchbar' => (boolean) $intAvailableBehaelter, |
| 227 |
- 'behaelter' => range(min($intBookableBehaelter,1),$intBookableBehaelter), |
|
| 246 |
+ 'behaelter' => $behaelterOptions, |
|
| 228 | 247 |
'units' => $arrUnits, |
| 248 |
+ 'disable_base_unit' => $disable_base_unit, |
|
| 249 |
+ 'default_unit' => $defaultUnitId |
|
| 229 | 250 |
], |
| 230 | 251 |
'reservations' => $arrReservations, |
| 231 | 252 |
'attribute_groups' => $arrAttributeGroups |
| ... | ... |
@@ -466,6 +487,20 @@ class SlotAjaxController extends AbstractController |
| 466 | 487 |
} |
| 467 | 488 |
} |
| 468 | 489 |
|
| 490 |
+ $standort = $Slot->getRelated('pid');
|
|
| 491 |
+ $disable_base_unit = !empty($standort->disable_base_unit); |
|
| 492 |
+ |
|
| 493 |
+ // Determine default selected unit |
|
| 494 |
+ $defaultUnitId = $Booking->unit ?: ''; |
|
| 495 |
+ if ($defaultUnitId === '' && $disable_base_unit && !empty($arrUnits)) {
|
|
| 496 |
+ // If base unit is disabled and no unit is selected, select the first available unit |
|
| 497 |
+ reset($arrUnits); |
|
| 498 |
+ $defaultUnitId = key($arrUnits); |
|
| 499 |
+ } |
|
| 500 |
+ |
|
| 501 |
+ // Adjust quantity options based on default unit if needed |
|
| 502 |
+ $behaelterOptions = $intUnitAmount ? range(1, $intUnitAmount) : []; |
|
| 503 |
+ |
|
| 469 | 504 |
$arrData = array_merge($arrData,[ |
| 470 | 505 |
'modal' => $blnModal, |
| 471 | 506 |
'id' => $Booking->id, |
| ... | ... |
@@ -474,12 +509,14 @@ class SlotAjaxController extends AbstractController |
| 474 | 509 |
'behaelterAvailable' => $intAvailableBehaelter + $Booking->behaelter, |
| 475 | 510 |
]), |
| 476 | 511 |
'buchung' => $Booking->row(), |
| 477 |
- 'standort' => $Slot->getRelated('pid'),
|
|
| 512 |
+ 'standort' => $standort, |
|
| 478 | 513 |
'buchen' => [ |
| 479 | 514 |
'buchbar' => (boolean) $intBookableBehaelter, |
| 480 | 515 |
'default' => $intDefaultAmount, |
| 481 |
- 'behaelter' => $intUnitAmount ? range(1,$intUnitAmount) : [], |
|
| 516 |
+ 'behaelter' => $behaelterOptions, |
|
| 482 | 517 |
'units' => $arrUnits, |
| 518 |
+ 'disable_base_unit' => $disable_base_unit, |
|
| 519 |
+ 'default_unit' => $defaultUnitId |
|
| 483 | 520 |
], |
| 484 | 521 |
'attribute_groups' => $arrAttributeGroups |
| 485 | 522 |
]); |