... | ... |
@@ -97,7 +97,7 @@ $GLOBALS['TL_DCA']['tl_vr_wa_reservation'] = array |
97 | 97 |
'palettes' => array |
98 | 98 |
( |
99 | 99 |
'__selector__' => array(), |
100 |
- 'default' => 'pid,uid,behaelter,sorten,lage,ernteart,upload' |
|
100 |
+ 'default' => 'pid,uid,behaelter,sorten,lage,ernteart,upload,approved' |
|
101 | 101 |
), |
102 | 102 |
|
103 | 103 |
// Subpalettes |
... | ... |
@@ -151,7 +151,7 @@ $GLOBALS['TL_DCA']['tl_vr_wa_reservation'] = array |
151 | 151 |
'exclude' => true, |
152 | 152 |
'inputType' => 'text', |
153 | 153 |
'eval' => array('rgxp'=>'natural','tl_class'=>'w50'), |
154 |
- 'sql' => "smallint(3) unsigned NOT NULL default 0", |
|
154 |
+ 'sql' => "int(4) unsigned NOT NULL default 0", |
|
155 | 155 |
), |
156 | 156 |
'sorten' => array |
157 | 157 |
( |
... | ... |
@@ -185,5 +185,19 @@ $GLOBALS['TL_DCA']['tl_vr_wa_reservation'] = array |
185 | 185 |
), |
186 | 186 |
'sql' => "varchar(255) BINARY NOT NULL default ''" |
187 | 187 |
), |
188 |
+ 'approved' => array |
|
189 |
+ ( |
|
190 |
+ 'exclude' => true, |
|
191 |
+ 'inputType' => 'checkbox', |
|
192 |
+ 'eval' => array('tl_class'=>'w50 m12'), |
|
193 |
+ 'sql' => "char(1) NOT NULL default '1'" |
|
194 |
+ ), |
|
195 |
+ 'approved_on' => array |
|
196 |
+ ( |
|
197 |
+ 'exclude' => true, |
|
198 |
+ 'inputType' => 'text', |
|
199 |
+ 'eval' => array('rgxp' => 'datim', 'datepicker' => true, 'tl_class' => 'clr w50 wizard'), |
|
200 |
+ 'sql' => "int(10) unsigned NOT NULL default '0'" |
|
201 |
+ ), |
|
188 | 202 |
) |
189 | 203 |
); |
... | ... |
@@ -151,20 +151,20 @@ $GLOBALS['TL_DCA']['tl_vr_wa_slot'] = array |
151 | 151 |
'sql' => "blob NULL", |
152 | 152 |
'relation' => array('type' => 'hasMany', 'load' => 'lazy') |
153 | 153 |
), |
154 |
- 'behaelter' => array |
|
154 |
+ 'behaelter' => array |
|
155 | 155 |
( |
156 | 156 |
'exclude' => true, |
157 |
- 'inputType' => 'select', |
|
158 |
- 'options_callback' => function () { |
|
159 |
- $range = []; |
|
160 |
- for ($i = 1; $i <= 30; $i++) |
|
161 |
- { |
|
162 |
- $range[] = $i; |
|
163 |
- } |
|
164 |
- return $range; |
|
165 |
- }, |
|
166 |
- 'eval' => array('rgxp' => 'natural', 'mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'), |
|
167 |
- 'sql' => "smallint(3) unsigned NOT NULL default 0" |
|
157 |
+ 'inputType' => 'text', |
|
158 |
+ 'eval' => array |
|
159 |
+ ( |
|
160 |
+ 'mandatory' => true, |
|
161 |
+ 'maxlength' => 4, |
|
162 |
+ 'maxval' => 9999, |
|
163 |
+ 'minval' => 1, |
|
164 |
+ 'rgxp' => 'natural', |
|
165 |
+ 'tl_class' => 'w50' |
|
166 |
+ ), |
|
167 |
+ 'sql' => "int(4) unsigned NOT NULL default 0" |
|
168 | 168 |
), |
169 | 169 |
'sorten' => array |
170 | 170 |
( |
... | ... |
@@ -10,6 +10,7 @@ |
10 | 10 |
|
11 | 11 |
$GLOBALS['TL_LANG']['MSC']['wa_sorte'] = 'Rebsorte'; |
12 | 12 |
$GLOBALS['TL_LANG']['MSC']['wa_leseart'] = 'Leseart'; |
13 |
+$GLOBALS['TL_LANG']['MSC']['wa_approval_needed'] = 'erfordert Freigabe'; |
|
13 | 14 |
|
14 | 15 |
$GLOBALS['TL_LANG']['REF']['wa_ernteart'] = [ |
15 | 16 |
'handlese' => 'Handlese', |
... | ... |
@@ -46,8 +46,15 @@ |
46 | 46 |
<select id="res-behaelter" name="behaelter" required> |
47 | 47 |
<option value="">-</option> |
48 | 48 |
{% for option in buchen.behaelter %} |
49 |
- <option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }}</option> |
|
49 |
+ {% if option > slot.behaelter %} |
|
50 |
+ <option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }} ({{ 'MSC.wa_approval_needed'|trans([], 'contao_default') }})</option> |
|
51 |
+ {% else %} |
|
52 |
+ <option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }}</option> |
|
53 |
+ {% endif %} |
|
50 | 54 |
{% endfor %} |
55 |
+ {#{% for option in buchen.behaelter %} |
|
56 |
+ <option value="{{ option }}"{{ buchung.behaelter == option ? ' selected' : '' }}>{{ option }}</option> |
|
57 |
+ {% endfor %}#} |
|
51 | 58 |
</select> |
52 | 59 |
</fieldset> |
53 | 60 |
<fieldset> |
... | ... |
@@ -109,8 +109,15 @@ |
109 | 109 |
<select id="res-behaelter" name="behaelter" required> |
110 | 110 |
<option value="">-</option> |
111 | 111 |
{% for option in buchen.behaelter %} |
112 |
- <option value="{{ option }}">{{ option }}</option> |
|
112 |
+ {% if option > slot.behaelterAvailable %} |
|
113 |
+ <option value="{{ option }}">{{ option }} ({{ 'MSC.wa_approval_needed'|trans([], 'contao_default') }})</option> |
|
114 |
+ {% else %} |
|
115 |
+ <option value="{{ option }}">{{ option }}</option> |
|
116 |
+ {% endif %} |
|
113 | 117 |
{% endfor %} |
118 |
+ {#{% for option in buchen.behaelter %} |
|
119 |
+ <option value="{{ option }}">{{ option }}</option> |
|
120 |
+ {% endfor %}#} |
|
114 | 121 |
</select> |
115 | 122 |
</fieldset> |
116 | 123 |
<fieldset> |
... | ... |
@@ -182,7 +182,7 @@ class SlotAjaxController extends AbstractController |
182 | 182 |
'ernteart' => $arrErnteart, |
183 | 183 |
'buchen' => [ |
184 | 184 |
'buchbar' => (boolean) $intAvailableBehaelter, |
185 |
- 'behaelter' => range(min($intAvailableBehaelter,1),$intAvailableBehaelter), |
|
185 |
+ 'behaelter' => range(min($intAvailableBehaelter,1),$Slot->behaelter*3), |
|
186 | 186 |
'sorten' => $arrSorten, |
187 | 187 |
'lage' => $arrLage, |
188 | 188 |
'ernteart' => $arrErnteart, |
... | ... |
@@ -384,7 +384,7 @@ class SlotAjaxController extends AbstractController |
384 | 384 |
'standort' => $Slot->getRelated('pid'), |
385 | 385 |
'buchen' => [ |
386 | 386 |
'buchbar' => (boolean) $intAvailableBehaelter, |
387 |
- 'behaelter' => range(min($intAvailableBehaelter,1),$intAvailableBehaelter+$Booking->behaelter), |
|
387 |
+ 'behaelter' => range(min($intAvailableBehaelter,1),max($intAvailableBehaelter+$Booking->behaelter,$Slot->behaelter*3)), |
|
388 | 388 |
'sorten' => $arrSortenAvailable, |
389 | 389 |
'ernteart' => $arrErnteartAvailable, |
390 | 390 |
'lage' => $arrLagenAvailable, |
... | ... |
@@ -433,7 +433,8 @@ class SlotAjaxController extends AbstractController |
433 | 433 |
// Form validation |
434 | 434 |
if (($Slot = WeinanlieferungSlotsModel::findByPk($_REQUEST['id'])) !== null) |
435 | 435 |
{ |
436 |
- if (Input::post('behaelter') > $Slot->getAvailableBehaelter()) |
|
436 |
+// if (Input::post('behaelter') > $Slot->getAvailableBehaelter()) |
|
437 |
+ if (Input::post('behaelter') > $Slot->behaelter*3) |
|
437 | 438 |
{ |
438 | 439 |
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())); |
439 | 440 |
} |
... | ... |
@@ -532,7 +533,8 @@ class SlotAjaxController extends AbstractController |
532 | 533 |
// Form validation |
533 | 534 |
if (($Slot = $Reservation->getRelated('pid')) !== null) |
534 | 535 |
{ |
535 |
- if (Input::post('behaelter') > $Slot->getAvailableBehaelter()+$Reservation->behaelter) |
|
536 |
+// if (Input::post('behaelter') > $Slot->getAvailableBehaelter()+$Reservation->behaelter) |
|
537 |
+ if (Input::post('behaelter') > $Slot->behaelter*3) |
|
536 | 538 |
{ |
537 | 539 |
return $this->renderBooking(false,sprintf('<div class="toast toast--danger mx-0">Fehler: Es sind mittlerweile nur noch %s Behälter verfügbar.</div>',$Slot->getAvailableBehaelter()+$Reservation->behaelter)); |
538 | 540 |
} |