396 lines
25 KiB
PHP
Executable file
396 lines
25 KiB
PHP
Executable file
<div class="card mb-2">
|
|
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingOrganisation"
|
|
aria-expanded="false" aria-controls="collapseBookingOrganisation">
|
|
<strong style="line-height: 1.6em">Organisation</strong>
|
|
</h6>
|
|
<div class="collapse" id="collapseBookingOrganisation">
|
|
<div class="card-body px-2 py-2">
|
|
{{-- Wenn keine Organisation vorhanden ist --}}
|
|
@if (
|
|
(!$booking->booking_draft_items || $booking->booking_draft_items->count()) == 0 &&
|
|
(!$booking->arrangements || $booking->arrangements->count() == 0))
|
|
<div class="alert alert-warning mb-4">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<div>
|
|
<i class="fa fa-info-circle"></i>
|
|
<strong>Keine Organisation vorhanden</strong>
|
|
<br>
|
|
<small>Laden Sie eine Vorlage, um schnell mit der Organisation zu beginnen.</small>
|
|
</div>
|
|
<div class="d-flex align-items-center">
|
|
<select class="custom-select custom-select-sm mr-2" name="draft_id" id="draft_selector"
|
|
style="min-width: 200px;">
|
|
<option value="">Vorlage auswählen...</option>
|
|
@php
|
|
$drafts = \App\Models\Draft::where('active', true)->orderBy('name')->get();
|
|
@endphp
|
|
@foreach ($drafts as $draft)
|
|
<option value="{{ $draft->id }}">{{ $draft->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
<button type="submit" name="action" value="loadDraftToBooking"
|
|
class="btn btn-sm btn-primary" id="load_draft_btn" disabled
|
|
onclick="return confirm('{{ __('Vorlage laden? Bestehende Organisation wird überschrieben.') }}');">
|
|
<i class="fa fa-download"></i> Vorlage laden
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class="alert alert-info">
|
|
<div>
|
|
<i class="fa fa-info-circle"></i>
|
|
<strong>Leitungen hinzufügen</strong>
|
|
<br>
|
|
<small>Alternativ können Sie die Leitungen individualisiert hinzufügen.</small>
|
|
</div>
|
|
|
|
</div>
|
|
<script>
|
|
// Handler für neue Buchungen ohne Organisation
|
|
var draftSelectorNew = document.getElementById('draft_selector');
|
|
var loadBtnNew = document.getElementById('load_draft_btn');
|
|
if (draftSelectorNew && loadBtnNew) {
|
|
draftSelectorNew.addEventListener('change', function() {
|
|
loadBtnNew.disabled = !this.value;
|
|
});
|
|
}
|
|
</script>
|
|
|
|
{{-- <div class="float-right pr-2 pb-2">
|
|
<div class="mb-2">
|
|
<select class="custom-select custom-select-sm" name="draft_id" id="draft_selector_existing"
|
|
style="min-width: 150px; display: inline-block;">
|
|
<option value="">Vorlage laden...</option>
|
|
@php
|
|
$drafts = \App\Models\Draft::where('active', true)->orderBy('name')->get();
|
|
@endphp
|
|
@if (isset($drafts))
|
|
@foreach ($drafts as $draft)
|
|
<option value="{{ $draft->id }}">{{ $draft->name }}</option>
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
<button type="submit" name="action" value="loadDraftToBooking"
|
|
class="btn btn-sm btn-outline-secondary ml-1" id="load_draft_existing_btn" disabled
|
|
onclick="return confirm('{{ __('Vorlage laden? Bestehende Organisation wird überschrieben.') }}');">
|
|
<i class="fa fa-download"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
// Handler für bestehende Buchungen
|
|
<script>
|
|
var draftSelectorExisting = document.getElementById('draft_selector_existing');
|
|
var loadBtnExisting = document.getElementById('load_draft_existing_btn');
|
|
if (draftSelectorExisting && loadBtnExisting) {
|
|
draftSelectorExisting.addEventListener('change', function() {
|
|
loadBtnExisting.disabled = !this.value;
|
|
});
|
|
}
|
|
</script>
|
|
--}}
|
|
|
|
|
|
|
|
@endif
|
|
|
|
|
|
@if ($booking->arrangements && $booking->arrangements->count() > 0)
|
|
<div class="mb-4">
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<h6 class="text-muted mb-0">
|
|
<i class="fa fa-history"></i> Alte Arrangements
|
|
<span class="badge badge-info">{{ $booking->arrangements->count() }}</span>
|
|
</h6>
|
|
@if ($booking->arrangements->count() > 0)
|
|
<button type="submit" name="action" value="convertArrangementsToDrafts"
|
|
class="btn btn-sm btn-outline-primary"
|
|
onclick="return confirm('{{ __('Alle ' . $booking->arrangements->count() . ' Arrangements in die neue Draft-Struktur übernehmen? Dies kann nicht rückgängig gemacht werden.') }}');">
|
|
<i class="fa fa-exchange-alt"></i> In neue Struktur übernehmen
|
|
</button>
|
|
@endif
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-sm mb-0" style="min-width: 1080px">
|
|
<thead class="thead-light">
|
|
<tr>
|
|
<th style="width: 1em">#</th>
|
|
<th>Typ</th>
|
|
<th style="width: 9em">Datum von</th>
|
|
<th style="width: 9em">Datum bis</th>
|
|
<th>Daten</th>
|
|
<th style="width: 8em">Status</th>
|
|
</tr>
|
|
</thead>
|
|
@php($arr_i = 1)
|
|
@foreach ($booking->arrangements->sortByDesc('view_position') as $arrangement)
|
|
<tbody style="background-color: rgba(248, 249, 250, 1)">
|
|
<tr
|
|
@if ($arrangement->arrangement_type && $arrangement->arrangement_type->color) style="background-color: {{ $arrangement->arrangement_type->color }}" @endif>
|
|
<td>{{ $arr_i++ }}</td>
|
|
<td>
|
|
@if ($arrangement->arrangement_type)
|
|
{{ $arrangement->arrangement_type->name ?? $arrangement->type_s }}
|
|
@else
|
|
{{ $arrangement->type_s }}
|
|
@endif
|
|
</td>
|
|
<td>
|
|
@if ($arrangement->begin)
|
|
{{ $arrangement->begin->format('d.m.Y') }}
|
|
@endif
|
|
</td>
|
|
<td>
|
|
@if ($arrangement->end)
|
|
{{ $arrangement->end->format('d.m.Y') }}
|
|
@endif
|
|
</td>
|
|
<td>
|
|
@if ($arrangement->data_s)
|
|
<small class="text-muted">{{ $arrangement->getDataS() }}</small>
|
|
@endif
|
|
</td>
|
|
<td>
|
|
@if ($arrangement->in_pdf)
|
|
<span class="badge badge-success">Im PDF</span>
|
|
@else
|
|
<span class="badge badge-secondary">Nicht im PDF</span>
|
|
@endif
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
@endforeach
|
|
</table>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
@if (!$booking->arrangements || $booking->arrangements->count() == 0)
|
|
@php($i = 1)
|
|
<div class="float-right pr-2 pb-2">
|
|
|
|
<div class="input-group">
|
|
<select class="custom-select small-select" name="add_draft_items_up_number">
|
|
{!! HTMLHelper::getRangeOptions(1, 30, '') !!}
|
|
</select>
|
|
<span class="input-group-append">
|
|
<button type="submit" name="action" value="addItemUp" class="btn btn-sm btn-primary"><i
|
|
class="fa fa-plus"></i> Neue Leistung hinzufügen <i
|
|
class="fa fa-arrow-up"></i></button>
|
|
</span>
|
|
</div>
|
|
<button type="button" name="" class="btn btn-sm btn-info mt-2" data-toggle="modal"
|
|
data-target="#modals-change-travel-dates"><i class="fa fa-sync"></i> Datum der Reise ändern
|
|
</button>
|
|
|
|
</div>
|
|
<div class="text-left pl-2">
|
|
<button type="submit" name="action" value="saveAll"
|
|
class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>
|
|
<a href="{{ route('requests') }}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
|
|
</div>
|
|
|
|
|
|
<div class="table-responsive mb-4">
|
|
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
|
|
<thead class="thead-dark">
|
|
<tr>
|
|
<th style="width: 1em"></th>
|
|
<th style="width: 1em">#</th>
|
|
<th>Leistung</th>
|
|
<th style="width: 9em">Datum von</th>
|
|
<th style="width: 9em">Datum bis</th>
|
|
<th style="width: 15em">Teilnehmer/EP</th>
|
|
<th style="width: 15em">Kinder/EP</th>
|
|
<th style="width: 8em">#</th>
|
|
</tr>
|
|
</thead>
|
|
@foreach ($booking->booking_draft_items as $booking_draft_item)
|
|
<tbody class="draft_item_tbody" style="background-color: rgba(218, 218, 229, 1)">
|
|
<tr
|
|
@if ($booking_draft_item->draft_type) style="background-color: {{ $booking_draft_item->draft_type->color }}" @endif>
|
|
<td>
|
|
<span
|
|
class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
|
|
</td>
|
|
<td><span class="item_pos_number">{{ $i++ }}</span></td>
|
|
<td>
|
|
<select class="selectpicker" data-style="btn-light"
|
|
name="draft_item[{{ $booking_draft_item->id }}][draft_type_id]"
|
|
id="draft_item_{{ $booking_draft_item->id }}_draft_type_id"
|
|
data-live-search="true" required>
|
|
<option value="" disabled>Vorlagen-Typ*</option>
|
|
{!! HTMLHelper::getDraftTypes($booking_draft_item->draft_type_id) !!}
|
|
</select>
|
|
</td>
|
|
<td>
|
|
{{ Form::text('draft_item[' . $booking_draft_item->id . '][start_date]', $booking_draft_item->start_date, ['placeholder' => __('Start Datum'), 'class' => 'form-control datepicker-base', 'id' => 'draft_item_' . $booking_draft_item->id . '_start_dat']) }}
|
|
</td>
|
|
<td>
|
|
{{ Form::text('draft_item[' . $booking_draft_item->id . '][end_date]', $booking_draft_item->end_date, ['placeholder' => __('End Datum'), 'class' => 'form-control datepicker-base', 'id' => 'draft_item_' . $booking_draft_item->id . '_end_date']) }}
|
|
</td>
|
|
@if (in_array($booking_draft_item->draft_type_id, [24, 26, 30, 31, 32, 33, 34, 35, 36, 37, 41, 42]))
|
|
<td>
|
|
<div class="input-group">
|
|
<select class="custom-select"
|
|
name="draft_item[{{ $booking_draft_item->id }}][adult]"
|
|
id="draft_item_{{ $booking_draft_item->id }}_adult">
|
|
<option value="">0</option>
|
|
{!! HTMLHelper::getRangeOptions($booking_draft_item->adult, 20, '') !!}
|
|
</select>
|
|
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price_adult]', $booking_draft_item->price_adult, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price_adult', 'maxlength' => 10]) }}
|
|
<span class="input-group-append">
|
|
<span class="input-group-text">€</span>
|
|
</span>
|
|
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="input-group">
|
|
<select class="custom-select"
|
|
name="draft_item[{{ $booking_draft_item->id }}][children]"
|
|
id="draft_item_{{ $booking_draft_item->id }}_children">
|
|
<option value="">0</option>
|
|
{!! HTMLHelper::getRangeOptions($booking_draft_item->children, 20, '') !!}
|
|
</select>
|
|
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price_children]', $booking_draft_item->price_children, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price_children']) }}
|
|
<span class="input-group-append">
|
|
<span class="input-group-text">€</span>
|
|
</span>
|
|
</div>
|
|
</td>
|
|
@else
|
|
<td>-</td>
|
|
<td>-</td>
|
|
@endif
|
|
<td>
|
|
<button type="button" name=""
|
|
value="up_{{ $booking_draft_item->id }}"
|
|
class="btn btn-xs btn-primary py-0 move-up-btn"><i
|
|
class="fa fa-arrow-up"></i> </button>
|
|
<button type="button" name=""
|
|
value="down_{{ $booking_draft_item->id }}"
|
|
class="btn btn-xs btn-primary mr-2 move-down-btn"><i
|
|
class="fa fa-arrow-down"></i> </button>
|
|
|
|
<a class="text-danger"
|
|
href="{{ route('booking_draft_item_delete', [$booking_draft_item->id]) }}"
|
|
onclick="return confirm('{{ __('Wirklich löschen?') }}');"><i
|
|
class="fa fa-trash-alt"></i></a>
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
<tr @if ($booking_draft_item->draft_type) style="background-color: {{ $booking_draft_item->draft_type->color }}" @endif
|
|
class="border-none">
|
|
|
|
@if (in_array($booking_draft_item->draft_type_id, [36, 37]))
|
|
<td colspan="3">
|
|
<select class="custom-select"
|
|
name="draft_item[{{ $booking_draft_item->id }}][days_duration]"
|
|
id="draft_item_{{ $booking_draft_item->id }}_days_duration">
|
|
<option value="">0 Tage</option>
|
|
{!! HTMLHelper::getRangeOptions($booking_draft_item->days_duration, 40, ' Tage') !!}
|
|
</select>
|
|
</td>
|
|
<td colspan="4">
|
|
@elseif(in_array($booking_draft_item->draft_type_id, [38, 39, 40]))
|
|
<td colspan="3">
|
|
<div class="input-group">
|
|
@if (in_array($booking_draft_item->draft_type_id, [38]))
|
|
<select class="custom-select"
|
|
name="draft_item[{{ $booking_draft_item->id }}][days_duration]"
|
|
id="draft_item_{{ $booking_draft_item->id }}_days_duration">
|
|
<option value="">0 Tage</option>
|
|
{!! HTMLHelper::getRangeOptions($booking_draft_item->days_duration, 40, ' T.') !!}
|
|
</select>
|
|
@endif
|
|
{{ Form::text('draft_item[' . $booking_draft_item->id . '][price]', $booking_draft_item->price, ['placeholder' => __('Preis in €'), 'class' => 'form-control', 'id' => 'draft_item_' . $booking_draft_item->id . '_price']) }}
|
|
<span class="input-group-append">
|
|
<span class="input-group-text">€</span>
|
|
</span>
|
|
</div>
|
|
</td>
|
|
<td colspan="4">
|
|
@else
|
|
<td colspan="7">
|
|
@endif
|
|
{{ Form::textarea('draft_item[' . $booking_draft_item->id . '][service]', $booking_draft_item->service, ['placeholder' => __('Leistungen'), 'class' => 'form-control autoExpand', 'id' => 'draft_item_' . $booking_draft_item->id . '_service', 'rows' => '1', 'data-min-rows' => '1']) }}
|
|
</td>
|
|
<td>
|
|
<div style="display: inline-flex">
|
|
<label class="custom-control custom-checkbox mt-2"
|
|
style="margin-right: 10px;">
|
|
{!! Form::checkbox('draft_item[' . $booking_draft_item->id . '][in_pdf]', 1, $booking_draft_item->in_pdf, [
|
|
'class' => 'custom-control-input',
|
|
]) !!}
|
|
<span class="custom-control-label">{{ __('PDF') }}</span>
|
|
</label>
|
|
</div>
|
|
<div style="display: inline-flex">
|
|
<label class="custom-control custom-checkbox mt-2" style="">
|
|
{!! Form::checkbox('draft_item_delete[' . $booking_draft_item->id . ']', 1, 0, [
|
|
'class' => 'custom-control-input color-danger',
|
|
]) !!}
|
|
<span class="custom-control-label"> </span>
|
|
</label>
|
|
</div>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
</tbody>
|
|
@endforeach
|
|
</table>
|
|
</div>
|
|
|
|
<div class="float-right pr-2 text-right pb-2">
|
|
<div class="d-block float-right">
|
|
<div class="input-group">
|
|
<select class="custom-select small-select" name="add_draft_items_down_number">
|
|
{!! HTMLHelper::getRangeOptions(1, 30, '') !!}
|
|
</select>
|
|
<span class="input-group-append">
|
|
<button type="submit" name="action" value="addItemDown"
|
|
class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neue Leistung hinzufügen
|
|
<i class="fa fa-arrow-down"></i></button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="d-block">
|
|
<button type="button" name="" value="" class="mt-2 btn btn-sm btn-warning"
|
|
onclick="selectAllForDeletion()">
|
|
<i class="fa fa-check-square"></i> Alle Leistungen zum Löschen markieren <i
|
|
class="fa fa-trash"></i></button>
|
|
|
|
<button type="submit" name="action" value="deleteAllChecked"
|
|
class="mt-2 btn btn-sm btn-danger"
|
|
onclick="return confirm('{{ __('Wirklich alle ausgewählten Leistungen löschen?') }}');">
|
|
<i class="fa fa-check-circle"></i> alle ausgewählten Leistungen löschen <i
|
|
class="fa fa-trash"></i></button>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="text-left mt-3 pl-2">
|
|
<button type="submit" name="action" value="saveAll"
|
|
class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>
|
|
<a href="{{ route('requests') }}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
|
|
</div>
|
|
@endif
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function selectAllForDeletion() {
|
|
// Alle Checkboxes mit dem Namen draft_item_delete[...] finden und markieren
|
|
const checkboxes = document.querySelectorAll('input[name^="draft_item_delete["]');
|
|
checkboxes.forEach(function(checkbox) {
|
|
checkbox.checked = true;
|
|
});
|
|
|
|
// Optional: Eine Bestätigungsnachricht anzeigen
|
|
alert('Alle Leistungen wurden zum Löschen markiert.');
|
|
}
|
|
</script>
|