Store Customer, Store Booking details

This commit is contained in:
Kevin Adametz 2021-05-19 18:04:31 +02:00
parent b362b93bca
commit 6706d28f51
33 changed files with 1048 additions and 257 deletions

View file

@ -5,41 +5,59 @@
<div class="collapse" id="collapseBookingBooking">
<div class="card-body row">
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="sf_guard_user_id">{{ __('Sachbearbeiter') }}</label>
{{ Form::text('sf_guard_user_id', $booking->sf_guard_user->first_name." ".$booking->sf_guard_user->last_name, array('placeholder'=>__('Sachbearbeiter'), 'class'=>'form-control', 'id'=>'sf_guard_user_id', 'readonly')) }}
<label for="sf_guard_user_id" class="form-label">{{ __('Sachbearbeiter') }}*</label>
{{ Form::select('sf_guard_user_id', \App\Services\Model::getSfGuardUserArray() , $booking->sf_guard_user_id, array('class'=>'custom-select', 'id'=>'sf_guard_user_id', 'required'=>true)) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="booking_date">{{ __('Buchungsdatum') }}</label>
{{ Form::text('booking_date', _format_date($booking->booking_date), array('placeholder'=>__('Buchungsdatum'), 'class'=>'form-control', 'id'=>'booking_date', 'readonly')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travel_country_id">{{ __('Reiseland') }}</label>
{{ Form::text('travel_country_id', $booking->travel_country ? $booking->travel_country->name : '', array('placeholder'=>__('Reiseland'), 'class'=>'form-control', 'id'=>'travel_country_id', 'readonly')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('booking_date', _format_date($booking->booking_date), array('placeholder'=>__('Buchungsdatum'), 'class'=>'form-control datepicker-base', 'id'=>'booking_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travel_number">{{ __('Reisenummer') }}</label>
{{ Form::text('travel_number', $booking->travel_number, array('placeholder'=>__('Reisenummer'), 'class'=>'form-control', 'id'=>'travel_number', 'readonly')) }}
{{ Form::text('travel_number', $booking->travel_number, array('placeholder'=>__('Reisenummer'), 'class'=>'form-control', 'id'=>'travel_number')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label for="travel_country_id" class="form-label">{{ __('Reiseland') }}</label>
{{ Form::select('travel_country_id', \App\Services\Model::getSymTravelCountryArray(true) , $booking->travel_country_id, array('class'=>'custom-select', 'id'=>'travel_country_id')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travelagenda_id">{{ __('Reiseprogramm') }}</label>
{{ Form::text('travelagenda_id', $booking->travel_agenda ? $booking->travel_agenda->name : '', array('placeholder'=>__('Reiseprogramm'), 'class'=>'form-control', 'id'=>'travelagenda_id', 'readonly')) }}
{{ Form::select('travelagenda_id', \App\Services\Model::getTravelAgendaArray(true) , $booking->travelagenda_id, array('class'=>'custom-select', 'id'=>'travelagenda_id')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travel_category_id">{{ __('Reiseart') }}</label>
{{ Form::text('travel_category_id', $booking->travel_category ? $booking->travel_category->name : '', array('placeholder'=>__('Reiseart'), 'class'=>'form-control', 'id'=>'travel_category_id', 'readonly')) }}
{{ Form::select('travel_category_id', \App\Services\Model::getTravelCategoryArray(true) , $booking->travel_category_id, array('class'=>'custom-select', 'id'=>'travel_category_id')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="start_date">{{ __('Aufenthalt vom') }}</label>
{{ Form::text('start_date', _format_date($booking->start_date), array('placeholder'=>__('Aufenthalt vom'), 'class'=>'form-control', 'id'=>'start_date', 'readonly')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('start_date', _format_date($booking->start_date), array('placeholder'=>__('Aufenthalt vom'), 'class'=>'form-control datepicker-base', 'id'=>'start_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="end_date">{{ __('Aufenthalt bis') }}</label>
{{ Form::text('end_date', _format_date($booking->end_date), array('placeholder'=>__('Aufenthalt bis'), 'class'=>'form-control', 'id'=>'end_date', 'readonly')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('end_date', _format_date($booking->end_date), array('placeholder'=>__('Aufenthalt bis'), 'class'=>'form-control datepicker-base', 'id'=>'end_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="title">{{ __('Reisetitel') }}</label>
{{ Form::text('title', $booking->title, array('placeholder'=>__('Reisetitel'), 'class'=>'form-control', 'id'=>'title', 'readonly')) }}
{{ Form::text('title', $booking->title, array('placeholder'=>__('Reisetitel'), 'class'=>'form-control', 'id'=>'title')) }}
</div>
<div class="col-12">
@ -60,7 +78,12 @@
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="refund_date">{{ __('Refund Datum') }}</label>
{{ Form::text('refund_date', _format_date($booking->refund_date), array('placeholder'=>__('Refund Datum'), 'class'=>'form-control datepicker-base', 'id'=>'refund_date')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('refund_date', _format_date($booking->refund_date), array('placeholder'=>__('Refund Datum'), 'class'=>'form-control datepicker-base', 'id'=>'refund_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="xx_tkt">{{ __('XX TKT') }}</label>
@ -68,7 +91,12 @@
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="xx_tkt_date">{{ __('XX TKT Datum') }}</label>
{{ Form::text('xx_tkt_date', _format_date($booking->xx_tkt_date), array('placeholder'=>__('XX TKT Datum'), 'class'=>'form-control datepicker-base', 'id'=>'xx_tkt_date')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('xx_tkt_date', _format_date($booking->xx_tkt_date), array('placeholder'=>__('XX TKT Datum'), 'class'=>'form-control datepicker-base', 'id'=>'xx_tkt_date')) }}
</div>
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="hold">{{ __('Hold') }}</label>
@ -91,7 +119,12 @@
</div>
<div class="form-group col-sm-6 col-md-3">
<label class="form-label" for="lawyer_date">{{ __('Anwaltsfrist') }}</label>
{{ Form::text('lawyer_date', _format_date($booking->lawyer_date), array('placeholder'=>__('Anwaltsfrist'), 'class'=>'form-control datepicker-base', 'id'=>'lawyer_date')) }}
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('lawyer_date', _format_date($booking->lawyer_date), array('placeholder'=>__('Anwaltsfrist'), 'class'=>'form-control datepicker-base', 'id'=>'lawyer_date')) }}
</div>
</div>
<div class="form-group col-sm-12 col-md-12">

View file

@ -15,11 +15,14 @@
{{ Form::text('lead[id]', $booking->lead->id, array('placeholder'=>__('Anfrage ID'), 'class'=>'form-control', 'id'=>'lead_id', 'readonly')) }}
</div>
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="lead_status_id">{{ __('Status') }}</label>
{{ Form::text('lead[status_id]', $booking->lead->status ? $booking->lead->status->name : '', array('placeholder'=>__('Status'), 'class'=>'form-control', 'id'=>'lead_status_id', 'readonly')) }}
<div class="form-group col-sm-6 col-md-6">
<label class="form-label" for="lead_status_id">{{ __('Status ändern') }} </label>
{{ Form::select('lead[status_id]', \App\Models\Lead::getStatusArray() , $booking->lead->status_id, array('class'=>'custom-select')) }}
</div>
<div class="form-group col-sm-6">
<label class="custom-control custom-checkbox mt-2">
{!! Form::checkbox('lead[is_rebook]', 1, $booking->lead->is_rebook, ['class'=>'custom-control-input', 'readonly']) !!}
@ -33,6 +36,13 @@
<span class="custom-control-label">{{__('Vorgang abgeschlossen')}}</span>
</label>
</div>
<div class="col-sm-12">
<div class="text-left mt-2">
<button type="submit" name="action" value="save_lead_status" class="btn btn-sm btn-secondary">Änderungen speichern</button>&nbsp;
<a href="{{route('leads')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>
@endif
</div>
</div>

View file

@ -3,20 +3,28 @@
<strong style="line-height: 1.6em">MyJack</strong>
</h6>
<div class="collapse" id="collapseBookingMyJack">
<div class="card-body row">
<div class="form-group col-sm-4">
<label class="form-label" for="merlin_order_number">{{ __('MyJack Nr.') }}</label>
{{ Form::text('merlin_order_number', $booking->merlin_order_number, array('placeholder'=>__('MyJack Nr.'), 'class'=>'form-control', 'id'=>'merlin_order_number')) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="ev_number">{{ __('EV Nummer') }}</label>
{{ Form::text('ev_number', $booking->ev_number, array('placeholder'=>__('EV Nummer'), 'class'=>'form-control', 'id'=>'ev_number', 'readonly')) }}
{{ Form::select('ev_number', ['E01'=>'E01', 'E02'=>'E02', 'E03'=>'E03', 'E04'=>'E04'] , $booking->ev_number, array('class'=>'custom-select', 'id'=>'ev_number' )) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="booking_konto">{{ __('Konto') }}</label>
{{ Form::text('booking_konto', 4011, array('placeholder'=>__('Konto'), 'class'=>'form-control', 'id'=>'booking_konto', 'readonly')) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="merlin_order_number">{{ __('MyJack Nr.') }}</label>
{{ Form::text('merlin_order_number', $booking->merlin_order_number, array('placeholder'=>__('MyJack Nr.'), 'class'=>'form-control', 'id'=>'merlin_order_number', 'readonly')) }}
{{ Form::text('booking_konto', $booking->getKontoNumber(), array('placeholder'=>__('Konto'), 'class'=>'form-control', 'id'=>'booking_konto')) }}
</div>
<div class="col-12">
<hr>
<div class="text-left mt-3">
<button type="submit" name="action" value="update_booking_number" class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('bookings')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>
</div>
</div>
</div>

View file

@ -98,7 +98,7 @@
<div class="input-group-prepend">
<span class="input-group-text"></span>
</div>
{{ Form::text('deposit_total', $booking->deposit_total, array('placeholder'=>__('Anzahlung'), 'class'=>'form-control', 'id'=>'deposit_total', 'readonly')) }}
{{ Form::text('deposit_total', $booking->deposit_total, array('placeholder'=>__('Anzahlung'), 'class'=>'form-control', 'id'=>'deposit_total')) }}
</div>
</div>
<div class="form-group">
@ -107,20 +107,29 @@
<div class="input-group-prepend">
<span class="input-group-text"></span>
</div>
{{ Form::text('final_payment', $booking->final_payment, array('placeholder'=>__('Restzahlung'), 'class'=>'form-control', 'id'=>'final_payment', 'readonly')) }}
{{ Form::text('final_payment', $booking->final_payment, array('placeholder'=>__('Restzahlung'), 'class'=>'form-control', 'id'=>'final_payment')) }}
</div>
</div>
<div class="form-group">
<label class="form-label" for="final_payment_date">{{ __('Restzahlung bis') }}</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"></span>
<span class="input-group-text"><i class="fa fa-calendar-alt"></i></span>
</div>
{{ Form::text('final_payment_date', $booking->getFinalPaymentDateFormat(), array('placeholder'=>__('Restzahlung bis'), 'class'=>'form-control', 'id'=>'final_payment_date', 'readonly')) }}
{{ Form::text('final_payment_date', $booking->getFinalPaymentDateFormat(), array('placeholder'=>__('Restzahlung bis'), 'class'=>'form-control datepicker-base', 'id'=>'final_payment_date')) }}
</div>
</div>
</div>
<div class="col-12">
<hr>
<div class="text-left mt-3">
<button type="submit" name="action" value="update_booking_price" class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('bookings')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>
</div>
</div>
</div>

View file

@ -82,7 +82,7 @@
<div class="col-12">
<hr>
<div class="text-left mt-3">
<button type="submit" name="action" value="update_booking" class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<button type="submit" name="action" value="update_booking_services" class="btn btn-sm btn-secondary">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('bookings')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>

View file

@ -102,7 +102,7 @@
</li>
</ul>
{!! Form::open(['url' => route('booking_detail', [$id]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['url' => route('booking_detail', [$id]), 'class' => 'form-horizontal', 'id'=>'booking-form-validation']) !!}
<input type="hidden" name="id" id="id" value="{{$id}}">

View file

@ -0,0 +1,171 @@
<div class="card mb-2 border-primary">
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseCustomerBooking" aria-expanded="false" aria-controls="collapseCustomerBooking">
<strong style="line-height: 1.6em">Anfragen
<span class="badge badge-secondary">{{ $customer->leads->count()}} </span> |
</strong>
<strong style="line-height: 1.6em">Buchung
<span class="badge badge-secondary">{{ $customer->bookings->count()}} </span> |
</strong>
<strong style="line-height: 1.6em">Gutscheine
<span class="badge badge-secondary">{{ $customer->coupons->count()}} </span>
</strong>
</h6>
<div class="collapse" id="collapseCustomerBooking">
<div class="card-body">
<div class="row">
<div class="col-sm-12">
<table class="table table-striped table-sm">
<thead>
<tr>
<th style="max-width: 60px;">AnfrageID</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Status')}}</th>
<th>{{__('Anfrage-Datum')}}</th>
</tr>
</thead>
<tbody>
@if($customer->leads)
@foreach ($customer->leads as $lead)
<tr>
<td>
<a href="{{ route('lead_detail', [$lead->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
{{ $lead->id }}
</td>
<td>
@if($lead->sf_guard_user_id && $lead->sf_guard_user)
{{ $lead->sf_guard_user->first_name }} {{ $lead->sf_guard_user->last_name }}
@endif
</td>
<td>
{!! $lead->getStatusBadge() !!}
</td>
<td>
{{ _format_date($lead->request_date) }}
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
<hr class="mt-3 mb-3">
<table class="table table-striped table-sm">
<thead>
<tr>
<th style="max-width: 60px;">BuchnungsID</th>
<th>{{__('Reiseland')}}</th>
<th>{{__('Programm')}}</th>
<th>{{__('Anreise')}}</th>
<th>{{__('Abreise')}}</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Status')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
<tbody>
@if($customer->bookings)
@foreach ($customer->bookings as $booking)
<tr>
<td>
<a href="{{ route('booking_detail', [$booking->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
{{ $booking->id }}
</td>
<td>
@if($booking->travel_country_id && $booking->travel_country)
{{ $booking->travel_country->name }}
@endif
</td>
<td>
@if($booking->travelagenda_id && $booking->travel_agenda)
{{ $booking->travel_agenda->name }}
@endif
</td>
<td>{{ _format_date($booking->start_date) }}</td>
<td>{{ _format_date($booking->end_date) }}</td>
<td>
@if($booking->sf_guard_user_id && $booking->sf_guard_user)
{{ $booking->sf_guard_user->first_name }} {{ $booking->sf_guard_user->last_name }}
@endif
</td>
<td>
@if($booking->lead)
{!! $booking->lead->getStatusBadge($booking) !!}
@endif
</td>
<td>
{{ _format_date($booking->booking_date) }}
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
<hr class="mt-3 mb-3">
<table class="table table-striped table-sm">
<thead>
<tr>
<th>{{__('Gutschein')}}</th>
<th>{{__('Wert')}}</th>
<th>{{__('Ausstellungsdatum')}}</th>
<th>{{__('Gültig bis')}}</th>
<th>{{__('Eingelöst')}}</th>
<th>{{__('#')}}</th>
</tr>
</thead>
<tbody>
@if($customer->coupons)
@foreach ($customer->coupons as $coupon)
<tr>
<td>
<a href="{{ route('customer_file_show', ['coupon', $coupon->id]) }}" target="_blank" class="badge badge-md badge-warning">
<i class="fa fa-file-pdf mr-1"></i> Gutschein {{$coupon->number}}
</a>
</td>
<td>
{{ \App\Services\Util::_number_format($coupon->value)}} &euro;
</td>
<td>
{{\App\Services\Util::_format_date($coupon->issue_date, 'date')}}
</td>
<td>
{{\App\Services\Util::_format_date($coupon->valid_date, 'date')}}
</td>
<td>
@if($coupon->is_redeemed)
<i class="fa fa-check-circle text-success"></i> {{\App\Services\Util::_format_date($coupon->redeem_date, 'date')}}
@else
<i class="fa fa-times-circle text-danger"></i>
@endif
</td>
<td>
<a href="{{ route('customer_file_show', ['coupon', $coupon->id, true]) }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,77 @@
<div class="card mb-2 border-primary">
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseCustomerDetail" aria-expanded="false" aria-controls="collapseCustomerDetail">
<strong style="line-height: 1.6em">Kunde</strong>
</h6>
<div class="collapse" id="collapseCustomerDetail">
<div class="card-body">
@if($customer->count())
<div class="form-row">
<div class="form-group col-sm-6">
<label class="form-label" for="customer_id">{{ __('Kunden ID') }}</label>
{{ Form::text('customer_id', $customer->id, array('placeholder'=>__('Kunden ID'), 'class'=>'form-control', 'id'=>'customer_id', 'readonly')) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-3">
<label for="salutation_id" class="form-label">{{ __('Anrede') }}*</label>
{{ Form::select('salutation_id', \App\Models\Customer::$salutationType , $customer->salutation_id, array('class'=>'custom-select', 'required'=>true)) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="firstname">{{ __('Vorname') }}*</label>
{{ Form::text('firstname', $customer->firstname, array('placeholder'=>__('Vorname'), 'class'=>'form-control', 'id'=>'firstname', 'required'=>true)) }}
</div>
<div class="form-group col-sm-5">
<label class="form-label" for="name">{{ __('Nachname') }}*</label>
{{ Form::text('name', $customer->name, array('placeholder'=>__('Nachname'), 'class'=>'form-control', 'id'=>'name', 'required'=>true)) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="street">{{ __('Straße') }}</label>
{{ Form::text('street', $customer->street, array('placeholder'=>__('Straße'), 'class'=>'form-control', 'id'=>'street')) }}
</div>
<div class="form-group col-sm-3">
<label class="form-label" for="zip">{{ __('PLZ') }}</label>
{{ Form::text('zip', $customer->zip, array('placeholder'=>__('PLZ'), 'class'=>'form-control', 'id'=>'zip')) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="city">{{ __('Stadt') }}</label>
{{ Form::text('city', $customer->city, array('placeholder'=>__('Stadt'), 'class'=>'form-control', 'id'=>'city')) }}
</div>
<div class="form-group col-sm-5">
<label class="form-label" for="country_id">{{ __('Land') }}*</label>
{{ Form::select('country_id', \App\Models\Customer::getCustomerCountriesArray() , $customer->country_id, array('class'=>'custom-select', 'required'=>true)) }}
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="phone">{{ __('Telefon') }}</label>
{{ Form::text('phone', $customer->phone, array('placeholder'=>__('Telefon'), 'class'=>'form-control', 'id'=>'phone')) }}
</div>
<div class="form-group col-sm-6">
<label class="form-label" for="phonemobile">{{ __('Telefon Mobil') }}</label>
{{ Form::text('phonemobile', $customer->phonemobile, array('placeholder'=>__('Telefon Mobil'), 'class'=>'form-control', 'id'=>'phonemobile')) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="email">{{ __('E-Mail') }}*</label>
{{ Form::text('email', $customer->email, array('placeholder'=>__('E-Mail'), 'class'=>'form-control', 'id'=>'email', 'required'=>true)) }}
</div>
<div class="col-sm-12">
<div class="text-left mt-2">
<button type="submit" name="action" value="saveCustomer" class="btn btn-sm btn-secondary">Änderungen speichern</button>&nbsp;
<a href="{{route('customers')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
</div>
</div>
</div>
@endif
</div>
</div>
</div>

View file

@ -4,12 +4,6 @@
<style>
body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btn-xs {
line-height: 1.3em;
@ -32,40 +26,104 @@
.input-group-text {
padding: 0.438rem 0.475rem;
}
</style>
<div class="float-right mt-3">
<a href="{{route('customers')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
<a href="{{ make_old_url('/index.php/customer/'.$customer->id.'/edit') }}" class="btn btn-sm btn-default float-right">{{ __('zurück ins CRM v2') }}</a>
</div>
<h4 class="font-weight-bold py-3 mb-1">
Kunden verwalten
</h4>
{!! Form::open(['url' => route('customer_detail', [$id]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
<ul class="nav nav-sm nav-tabs nav-justified tabs-alt mb-3" id="top-nav-quick-jump">
<li class="nav-item">
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseCustomerDetail">
Kunde
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseCustomerBooking">
Anfrage / Buchung
</a>
</li>
</ul>
{!! Form::open(['url' => route('customer_detail', [$id]), 'class' => 'form-horizontal', 'id'=>'customer-form-validation']) !!}
<input type="hidden" name="id" id="id" value="{{$id}}">
<!-- Kunde -->
@include('customer._detail_customer')
<!-- draft -->
<div class="card mb-2">
<div class="card-body row">
<div class="form-group col-sm-6">
<label class="form-label" for="customer_id">{{ __('Nr.') }}*</label>
{{ Form::text('id', $customer->id, array('placeholder'=>__('Nr.'), 'class'=>'form-control', 'id'=>'customer_id', 'readonly')) }}
</div>
</div>
</div>
<div class="text-left mt-3">
<button type="submit" name="action" value="saveAll" class="btn btn-submit">{{ __('save changes') }}</button>&nbsp;
<a href="{{route('customers')}}" class="btn btn-default">{{ __('zur Übersicht') }}</a>
<a href="{{ make_old_url('/index.php/customer/'.$customer->id.'/edit') }}" class="btn btn-default float-right">{{ __('zurück ins CRM v2') }}</a>
@if($id !== "new" && $customer)
@include('customer._detail_booking')
@endif
<div class="float-right mt-3">
<a href="{{route('customers')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>
<a href="{{ make_old_url('/index.php/customer/'.$customer->id.'/edit') }}" class="btn btn-sm btn-default float-right">{{ __('zurück ins CRM v2') }}</a>
</div>
{!! Form::close() !!}
<script>
$(document).ready(function() {
var collapseHashValue = null;
$('[rel="tooltip"]').tooltip({trigger: "hover"});
$('#top-nav-quick-jump .nav-link').on('click', function (e) {
e.preventDefault();
$('#top-nav-quick-jump .nav-link').removeClass('active');
$(this).addClass('active');
var collapse_id = $(this).data('collapse');
//console.log(collapse_id);
$(collapse_id).collapse('show');
// animate
$('html, body').animate({
scrollTop: $(collapse_id).parent('.card').offset().top
}, 300, function(){
// when done, add hash to url
// (default click behaviour)
window.location.hash = collapse_id;
});
});
$(".collapse").on('shown.bs.collapse', function (){
if(collapseHashValue){
$('a[data-collapse="#'+collapseHashValue+'"]').click();
collapseHashValue = null;
}
CookiesAddJSONValue('customer_collapse', $(this).attr('id'));
window.location.hash = "#"+$(this).attr('id');
});
$(".collapse").on('hidden.bs.collapse', function (){
CookiesRemoveJSONValue('customer_collapse', $(this).attr('id'));
});
function init_site(){
if(window.location.hash){
value = $(window.location.hash).attr('id');
if(value){
collapseHashValue = value;
CookiesAddJSONValue('customer_collapse', value);
}
}
var customer_collapses = Cookies.get('customer_collapse');
if (customer_collapses != null)
{
customer_collapses = JSON.parse(customer_collapses);
for (var customer_collapse in customer_collapses){
$("#"+customer_collapses[customer_collapse]).collapse("show");
}
}
}
init_site();
});
</script>

View file

@ -51,14 +51,16 @@
<ul class="sidenav-menu">
@if(Auth::user()->isPermission('crm-bo-re'))
<li class="sidenav-item{{ Request::is('requests') ? ' active' : '' }}">
<a href="{{ route('requests') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-search"></i><div>Übersicht</div></a>
<a href="{{ route('requests') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-search"></i><div>Buchungen</div></a>
</li>
@endif
@if(Auth::user()->isPermission('crm-bo-bo'))
{{--
@if(Auth::user()->isPermission('crm-bo-bo'))
<li class="sidenav-item{{ Request::is(['bookings', 'booking/*']) ? ' active' : '' }}">
<a href="{{ route('bookings') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-bed"></i><div>Buchungen</div></a>
</li>
@endif
--}}
@if(Auth::user()->isPermission('crm-bo-le'))
<li class="sidenav-item{{ Request::is(['leads', 'lead/*']) ? ' active' : '' }}">
<a href="{{ route('leads') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-contact"></i><div>Anfragen</div></a>
@ -69,11 +71,6 @@
<a href="{{ route('customers') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-people"></i><div>Kunden</div></a>
</li>
@endif
@if(Auth::user()->isPermission('crm-bo-ma'))
<li class="sidenav-item{{ Request::is(['customer_mails', 'customer_mail/*']) ? ' active' : '' }}">
<a href="{{ route('customer_mails') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-mail"></i><div>Kunden Mails</div></a>
</li>
@endif
</ul>
</li>
@endif
@ -97,6 +94,32 @@
</ul>
</li>
@endif
@if(Auth::user()->isPermission('crm-mail'))
<li class="sidenav-item{{ Request::is(['mail/leads', 'mail/bookings', 'mail/booking_fewos']) ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-ios-mail"></i>
<div>E-Mails</div>
</a>
<ul class="sidenav-menu">
@if(Auth::user()->isPermission('crm-mail-le'))
<li class="sidenav-item{{ Request::is(['mail/leads', 'mail/lead/*']) ? ' active' : '' }}">
<a href="{{ route('mail_leads') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-people"></i><div>Anfragen </div></a>
</li>
@endif
@if(Auth::user()->isPermission('crm-mail-bo'))
<li class="sidenav-item{{ Request::is(['mail/bookings', 'mail/booking/*']) ? ' active' : '' }}">
<a href="{{ route('mail_bookings') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-bed"></i><div>Buchungen</div></a>
</li>
@endif
@if(Auth::user()->isPermission('crm-mail-bf'))
<li class="sidenav-item{{ Request::is(['mail/booking_fewos', 'mail/booking_fewo/*']) ? ' active' : '' }}">
<a href="{{ route('mail_booking_fewos') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-home"></i><div>Buchungen (FeWo)</div></a>
</li>
@endif
</ul>
</li>
@endif
@endif
@if(Auth::user()->isPermission('crm-old-cm'))
<li class="sidenav-divider mb-1"></li>

View file

@ -0,0 +1,71 @@
<div class="card mb-2 border-primary">
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseLeadBooking" aria-expanded="false" aria-controls="collapseLeadBooking">
<strong style="line-height: 1.6em">Buchung
<span class="badge badge-secondary">{{ $lead->bookings->count()}} </span>
</strong>
</h6>
<div class="collapse" id="collapseLeadBooking">
<div class="card-body">
<div class="row">
<div class="col-sm-12"><hr></div>
<div class="col-sm-12">
<table class="table table-striped table-sm">
<thead>
<tr>
<th style="max-width: 60px;">BuchnungsID</th>
<th>{{__('Reiseland')}}</th>
<th>{{__('Programm')}}</th>
<th>{{__('Anreise')}}</th>
<th>{{__('Abreise')}}</th>
<th>{{__('Sachbearbeiter')}}</th>
<th>{{__('Status')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
<tbody>
@if($lead->bookings)
@foreach ($lead->bookings as $booking)
<tr>
<th scope="row">
<a href="{{ route('booking_detail', [$booking->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
{{ $booking->id }}
</th>
<td>
@if($booking->travel_country_id && $booking->travel_country)
{{ $booking->travel_country->name }}
@endif
</td>
<td>
@if($booking->travelagenda_id && $booking->travel_agenda)
{{ $booking->travel_agenda->name }}
@endif
</td>
<td>{{ _format_date($booking->start_date) }}</td>
<td>{{ _format_date($booking->end_date) }}</td>
<td>
@if($booking->sf_guard_user_id && $booking->sf_guard_user)
{{ $booking->sf_guard_user->first_name }} {{ $booking->sf_guard_user->last_name }}
@endif
</td>
<td>
@if($booking->lead)
{!! $booking->lead->getStatusBadge($booking) !!}
@endif
</td>
<td>
{{ _format_date($booking->booking_date) }}
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

View file

@ -18,7 +18,7 @@
</div>
<div class="form-group col-sm-6 col-md-4">
<label for="sf_guard_user_id" class="form-label">{{ __('Sachbearbeiter') }}*</label>
{{ Form::select('sf_guard_user_id', \App\Models\Lead::getSfGuardUserArray() , $lead->sf_guard_user_id, array('class'=>'custom-select', 'required'=>true)) }}
{{ Form::select('sf_guard_user_id', \App\Services\Model::getSfGuardUserArray() , $lead->sf_guard_user_id, array('class'=>'custom-select', 'required'=>true)) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="request_date">{{ __('Anfragedatum') }}*</label>
@ -45,17 +45,17 @@
<div class="form-group col-sm-6 col-md-4">
<label for="travelcountry_id" class="form-label">{{ __('Reiseland') }}*</label>
{{ Form::select('travelcountry_id', \App\Models\Lead::getTravelCountryArray(true) , $lead->travelcountry_id, array('class'=>'custom-select')) }}
{{ Form::select('travelcountry_id', \App\Services\Model::getTravelCountryArray(true) , $lead->travelcountry_id, array('class'=>'custom-select')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travelagenda_id">{{ __('Reiseprogramm') }}</label>
{{ Form::select('travelagenda_id', \App\Models\Lead::getTravelAgendaArray(true) , $lead->travelagenda_id, array('class'=>'custom-select')) }}
{{ Form::select('travelagenda_id', \App\Services\Model::getTravelAgendaArray(true) , $lead->travelagenda_id, array('class'=>'custom-select')) }}
</div>
<div class="form-group col-sm-6 col-md-4">
<label class="form-label" for="travelcategory_id">{{ __('Reiseart') }}</label>
{{ Form::select('travelcategory_id', \App\Models\Lead::getTravelCategoryArray(true) , $lead->travelcategory_id, array('class'=>'custom-select')) }}
{{ Form::select('travelcategory_id', \App\Services\Model::getTravelCategoryArray(true) , $lead->travelcategory_id, array('class'=>'custom-select')) }}
</div>
<div class="col-sm-12">

View file

@ -2,7 +2,6 @@
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseLeadMails" aria-expanded="false" aria-controls="collapseLeadMails">
<strong style="line-height: 1.6em">E-Mails</strong>
<span class="badge badge-secondary">{{$lead->lead_mails->count()}}</span>
</h6>
<div class="collapse" id="collapseLeadMails">
<div class="container-fluid d-flex align-items-stretch flex-grow-1 p-0">

View file

@ -5,9 +5,6 @@
<div class="collapse" id="collapseLeadStatus">
<div class="card-body">
@if($lead->count())
<div class="row">
<div class="col-sm-6">

View file

@ -57,7 +57,11 @@
Status
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseLeadBooking">
Buchung
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:void(0)" data-collapse="#collapseLeadMails">
E-Mails
@ -86,12 +90,13 @@
@include('lead._detail_status')
{!! Form::close() !!}
@if($id !== "new")
@if($id !== "new" && $lead)
@include('lead._detail_booking')
@include('lead._detail_mails')
@include('lead._detail_files')
@include('lead._detail_notice')
@endif
@include('lead._detail_notice')
<div class="float-right mt-3">
<a href="{{route('leads')}}" class="btn btn-sm btn-default">{{ __('zur Übersicht') }}</a>

View file

@ -0,0 +1,52 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-4">
{{ __('E-Mails Buchungen') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-mails table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('BuchungID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('Buchung')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-mails').dataTable({
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_booking_datatable') !!}',
"order": [[ 8, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'booking_id', name: 'booking_id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'booking', name: 'booking', searchable: false },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -0,0 +1,52 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-4">
{{ __('E-Mails Buchungen FeWo') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-mails table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('BuchnungID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('Buchung')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-mails').dataTable({
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_booking_fewo_datatable') !!}',
"order": [[ 8, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'booking_id', name: 'booking_id' },
{ data: 'customer.first_name', name: 'customer.first_name' },
{ data: 'customer.last_name', last_name: 'customer.name' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'booking', name: 'booking' },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -0,0 +1,50 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-4">
{{ __('E-Mails Buchungen') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-mails table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('AnfrageID')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Betreff')}}</th>
<th>{{__('gesendet')}}</th>
<th>{{__('Datum')}}</th>
</tr>
</thead>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
$('.datatables-mails').dataTable({
"processing": true,
"serverSide": true,
"ajax": '{!! route('mail_lead_datatable') !!}',
"order": [[ 7, "desc" ]],
"columns": [
{ data: 'action_edit', orderable: false, searchable: false},
{ data: 'lead_id', name: 'lead_id' },
{ data: 'customer.firstname', name: 'customer.firstname' },
{ data: 'customer.name', name: 'customer.name' },
{ data: 'email', name: 'email' },
{ data: 'subject', name: 'subject' },
{ data: 'send', name: 'send', searchable: false },
{ data: 'date', name: 'date' },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -54,6 +54,7 @@
<th>{{__('Mails')}}</th>
<th>{{__('N.')}}</th>
<th>{{__('Kanal')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Datum')}}</th>
<th>{{__('R.-Nr.')}}</th>
<th style="max-width: 60px;">{{__('delete')}}</th>
@ -90,6 +91,7 @@
{ data: 'is_mail', name: 'is_mail', orderable: false },
{ data: 'booking_fewo_notice', name: 'booking_fewo_notice', orderable: false },
{ data: 'travel_booking_fewo_channel.name', name: 'travel_booking_fewo_channel.name' },
{ data: 'last_fewo_email', name: 'last_fewo_email' },
{ data: 'booking_date', name: 'booking_date' },
{ data: 'invoice_number', name: 'invoice_number' },
{ data: 'action_delete', orderable: false, searchable: false},