diff --git a/.env b/.env index 5f2c5c9..6d449db 100755 --- a/.env +++ b/.env @@ -2,8 +2,8 @@ APP_NAME="STERN TOURS CRM" APP_ENV=local APP_KEY=base64:cxq+xNckU1xLwp8V9Bfj9+nOK5iZL6urcZ1EBO8usXg= APP_DEBUG=true -APP_URL=http://crm-stern-tours.local -APP_OLD_URL = http://cms-stern-tours.local +APP_URL=http://mein.sterntours.local +APP_OLD_URL = http://mein.sterntours.local #APP_URL_V2=https://v2.stern-tours.de APP_URL_V2=http://v2-sterntours.local diff --git a/.idea/.name b/.idea/.name index e842fd0..b04698a 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1 +1 @@ -_crm \ No newline at end of file +mein.sterntours \ No newline at end of file diff --git a/.idea/deployment.xml b/.idea/deployment.xml index 5ee7a0b..7688ec4 100644 --- a/.idea/deployment.xml +++ b/.idea/deployment.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/_crm.iml b/.idea/mein.sterntours.iml similarity index 100% rename from .idea/_crm.iml rename to .idea/mein.sterntours.iml diff --git a/.idea/modules.xml b/.idea/modules.xml index 9eb3d39..1ccbf38 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 19b157d..6fd4d48 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,19 +2,25 @@ + + + + + - - - + + + + + + - - - - + + @@ -41,15 +47,15 @@ - - + + - + @@ -57,19 +63,19 @@ - - - + + + - + - - - + + + @@ -77,104 +83,128 @@ - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -189,6 +219,9 @@ translations draft version + selectpicker + travel_pr + modi @@ -205,15 +238,11 @@ - - - - @@ -232,14 +261,11 @@ - - - @@ -251,11 +277,18 @@ - - - + + + + + + + + + + @@ -383,10 +416,10 @@ - - - - + + + + @@ -399,13 +432,8 @@ - - - - - - - + + @@ -418,11 +446,11 @@ + - @@ -502,17 +530,23 @@ + + + + + + + - + - - + - + @@ -529,6 +563,7 @@ + @@ -553,188 +588,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -802,23 +655,6 @@ - - - - - - - - - - - - - - - - - @@ -829,13 +665,6 @@ - - - - - - - @@ -843,13 +672,6 @@ - - - - - - - @@ -857,17 +679,225 @@ - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/Http/Controllers/API/DraftController.php b/app/Http/Controllers/API/DraftController.php index d72a82f..3bfbaf3 100755 --- a/app/Http/Controllers/API/DraftController.php +++ b/app/Http/Controllers/API/DraftController.php @@ -50,6 +50,88 @@ class DraftController extends Controller } + if ($action == "create_drafts_from_fewo") { + $data = \Input::all(); + $start_date = Carbon::parse($data['startDateStr']); + $end_date = Carbon::parse($data['endDateStr']); + $pos = 0; + if(isset($data['priceResult']) && is_array($data['priceResult'])){ + + if(isset($data['priceResult']['season']) && is_array($data['priceResult']['season'])){ + foreach ($data['priceResult']['season'] as $season => $values){ + + $service = '* Saison: '.$season."\n". + '* Mindestbelegung: '.$values['minimumStay'].' '.($values['minimumStay'] < 2 ? 'Nacht' : 'Nächte')."\n". + '* Preis: '.number_format($values['price'], 2, ',', '.').' € / '. $values['numberDays'].' '.($values['numberDays'] < 2 ? 'Nacht' : 'Nächte').' x '.number_format($values['perNight'], 2, ',', '.')." € \n"; + + + + $from_date = Carbon::parse($values['fromDay']); + $to_date = Carbon::parse($values['toDay']); + $to_date->modify('+1 day'); + + BookingDraftItem::create([ + 'booking_id' => $data['booking_id'], + 'fewo_lodging_id' => $data['fewo_lodging_id'], + 'draft_type_id' => 38, + 'request_date' => $data['request_date'], + 'days_duration' => $values['numberDays'], + 'start_date' => $from_date->format("Y-m-d"), + 'end_date' => $to_date->format("Y-m-d"), + 'service' => $service, + 'price' => $values['perNight'], + 'pos' => $pos, + 'in_pdf' => true, + ]); + $pos++; + + } + } + if(isset($data['priceResult']['flatPrice'])){ + $service = '* Service-Gebühr: '.number_format($data['priceResult']['deposit'], 2, ',', '.'); + BookingDraftItem::create([ + 'booking_id' => $data['booking_id'], + 'fewo_lodging_id' => $data['fewo_lodging_id'], + 'draft_type_id' => 39, + 'request_date' => $data['request_date'], + 'days_duration' => $data['priceResult']['days'], + 'start_date' => $start_date->format("Y-m-d"), + 'end_date' => $end_date->format("Y-m-d"), + 'service' => $service, + 'price' => $data['priceResult']['flatPrice'], + 'pos' => $pos, + 'in_pdf' => true, + ]); + $pos++; + + + } + if(isset($data['priceResult']['deposit'])){ + $service = '* Kaution: '.number_format($data['priceResult']['deposit'], 2, ',', '.'); + BookingDraftItem::create([ + 'booking_id' => $data['booking_id'], + 'fewo_lodging_id' => $data['fewo_lodging_id'], + 'draft_type_id' => 40, + 'request_date' => $data['request_date'], + 'days_duration' => $data['priceResult']['days'], + 'start_date' => $start_date->format("Y-m-d"), + 'end_date' => $end_date->format("Y-m-d"), + 'service' => $service, + 'price' => $data['priceResult']['flatPrice'], + 'pos' => $pos, + 'in_pdf' => true, + ]); + } + + + } + + return response()->json(['success' => $data['booking_id']], $this->successStatus); + + } + + + if ($action == "create_drafts_from_booking") { $data = \Input::all(); $this->data = $data; @@ -96,6 +178,7 @@ class DraftController extends Controller $price_info_rooms[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 30, @@ -140,6 +223,7 @@ class DraftController extends Controller $price_info_rooms_before[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 36, @@ -170,6 +254,7 @@ class DraftController extends Controller $price_info_rooms_after[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 37, @@ -202,6 +287,7 @@ class DraftController extends Controller $price_info_extra_charge[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 33, @@ -233,6 +319,7 @@ class DraftController extends Controller $price_info_class_options[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 32, @@ -264,6 +351,7 @@ class DraftController extends Controller $price_info_travel_options[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => 34, @@ -323,6 +411,7 @@ class DraftController extends Controller $info_texts[] = [ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => $draft_item->id, 'draft_type_id' => $draft_item->draft_type->id, @@ -347,6 +436,7 @@ class DraftController extends Controller BookingDraftItem::create([ 'booking_id' => $data['booking_id'], 'travel_program_id' => $data['travel_program_id'], + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => $draft_item->id, 'draft_type_id' => $draft_item->draft_type->id, diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 1bc6388..7479b60 100755 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -75,6 +75,7 @@ class BookingController extends Controller $booking->booking_draft_items()->create([ 'booking_id' => $booking->id, 'travel_program_id' => $travel_program_id, + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => null, @@ -88,6 +89,7 @@ class BookingController extends Controller 'adult' => null , 'price_children' => 0, 'children' => 0, + 'price' => 0, 'pos' => $i, 'in_pdf' => true, 'comfort' => $comfort @@ -106,6 +108,9 @@ class BookingController extends Controller if(isset($draft_item['days_duration'])){ $di->days_duration = $draft_item['days_duration']; } + if(isset($draft_item['price'])){ + $di->price = $draft_item['price']; + } $di->service = $draft_item['service']; $di->in_pdf = isset($draft_item['in_pdf']) ? true : false; $di->pos = $i++; @@ -126,6 +131,7 @@ class BookingController extends Controller $booking->booking_draft_items()->create([ 'booking_id' => $booking->id, 'travel_program_id' => $travel_program_id, + 'fewo_lodging_id' => null, 'travel_class_id' => null, 'draft_item_id' => null, 'draft_type_id' => null, @@ -139,6 +145,7 @@ class BookingController extends Controller 'adult' => null , 'price_children' => 0, 'children' => 0, + 'price' => 0, 'pos' => $i, 'in_pdf' => true, 'comfort' => $comfort diff --git a/app/Http/Controllers/DraftController.php b/app/Http/Controllers/DraftController.php index 9f6a777..ec97efd 100755 --- a/app/Http/Controllers/DraftController.php +++ b/app/Http/Controllers/DraftController.php @@ -150,6 +150,7 @@ class DraftController extends Controller $draft_type = DraftType::create([ 'name' => $data['name'], 'active' => isset($data['active']) ? true : false, + 'color' => $data['color'], ]); }else{ $draft_type = DraftType::find($data['id']); diff --git a/app/Http/Controllers/Settings/TravelCountryController.php b/app/Http/Controllers/Settings/TravelCountryController.php new file mode 100755 index 0000000..c4be04c --- /dev/null +++ b/app/Http/Controllers/Settings/TravelCountryController.php @@ -0,0 +1,65 @@ +middleware('admin'); + + } + + public function index($step = false) + { + $data = [ + 'drafts' => Draft::all()->sortByDesc("id"), + 'draft_types' => DraftType::all()->sortByDesc("id"), + 'step' => $step + ]; + return view('drafts.index', $data); + } + + + public function store(){ + + $data = Input::all(); + if($data['id'] == "new"){ + $draft_type = DraftType::create([ + 'name' => $data['name'], + 'active' => isset($data['active']) ? true : false, + 'color' => $data['color'], + ]); + }else{ + $draft_type = DraftType::find($data['id']); + $draft_type->name = $data['name']; + $draft_type->active = isset($data['active']) ? true : false; + $draft_type->color = $data['color']; + + $draft_type->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('drafts', ['type'])); + + } + public function delete($id){ + + if(DraftItem::where('draft_type_id', $id)->count()){ + \Session()->flash('alert-error', 'Eintrag wird verwendet'); + return redirect(route('drafts')); + } + $draft_type = DraftType::findOrFail($id); + $draft_type->delete(); + \Session()->flash('alert-success', 'Eintrag gelöscht'); + return redirect(route('drafts', ['type'])); + } +} + + diff --git a/app/Models/BookingDraftItem.php b/app/Models/BookingDraftItem.php index b8e0270..3924ee8 100644 --- a/app/Models/BookingDraftItem.php +++ b/app/Models/BookingDraftItem.php @@ -65,6 +65,7 @@ class BookingDraftItem extends Model protected $fillable = [ 'booking_id', 'travel_program_id', + 'fewo_lodging_id', 'travel_class_id', 'draft_item_id', 'draft_type_id', @@ -78,6 +79,7 @@ class BookingDraftItem extends Model 'adult', 'price_children', 'children', + 'price', 'pos', 'in_pdf', 'comfort', @@ -104,6 +106,10 @@ class BookingDraftItem extends Model return $this->belongsTo('App\Models\DraftType', 'draft_type_id'); } + public function _format_number($value){ + return preg_replace("/[^0-9,]/", "", $value); + } + public function getStartDateAttribute(){ return isset($this->attributes['start_date']) ? Carbon::parse($this->attributes['start_date'])->format("d.m.Y") : ''; } @@ -127,4 +133,21 @@ class BookingDraftItem extends Model } } + public function setPriceAttribute($value) + { + $value = $this->_format_number($value); + $this->attributes['price'] = floatval(str_replace(',', '.', $value)); + } + + public function getPriceAttribute() + { + // 2 = decimal places | '.' = decimal seperator | ',' = thousand seperator + return number_format(($this->attributes['price']), 2, ',', '.'); + } + + public function getPriceRaw() + { + return isset($this->attributes['price']) ? $this->attributes['price'] : 0; + } + } diff --git a/app/Models/DraftItem.php b/app/Models/DraftItem.php index 508ab85..c55524b 100644 --- a/app/Models/DraftItem.php +++ b/app/Models/DraftItem.php @@ -106,5 +106,22 @@ class DraftItem extends Model return isset($this->attributes['price_children']) ? $this->attributes['price_children'] : 0; } + public function setPriceAttribute($value) + { + $value = $this->_format_number($value); + $this->attributes['price'] = floatval(str_replace(',', '.', $value)); + } + + public function getPriceAttribute() + { + // 2 = decimal places | '.' = decimal seperator | ',' = thousand seperator + return number_format(($this->attributes['price']), 2, ',', '.'); + } + + public function getPriceRaw() + { + return isset($this->attributes['price']) ? $this->attributes['price'] : 0; + } + } diff --git a/app/Models/DraftType.php b/app/Models/DraftType.php index f5bea0f..4b3a677 100644 --- a/app/Models/DraftType.php +++ b/app/Models/DraftType.php @@ -27,7 +27,7 @@ class DraftType extends Model protected $table = 'draft_types'; protected $fillable = [ - 'name', 'active', + 'name', 'active', 'color', ]; public function draft_items() diff --git a/database/migrations/2018_10_19_114521_create_draft_items_table.php b/database/migrations/2018_10_19_114521_create_draft_items_table.php index 2ca4453..71387d3 100644 --- a/database/migrations/2018_10_19_114521_create_draft_items_table.php +++ b/database/migrations/2018_10_19_114521_create_draft_items_table.php @@ -27,6 +27,9 @@ class CreateDraftItemsTable extends Migration $table->decimal('price_children', 8, 2)->nullable(); $table->tinyInteger('children')->unsigned()->nullable(); + $table->decimal('price', 8, 2)->nullable(); + + $table->tinyInteger('pos')->unsigned()->nullable(); $table->boolean('in_pdf')->default(true); $table->boolean('active')->default(true); diff --git a/database/migrations/2018_10_29_193339_create_booking_draft_items_table.php b/database/migrations/2018_10_29_193339_create_booking_draft_items_table.php index 05ba62f..8cfab9b 100644 --- a/database/migrations/2018_10_29_193339_create_booking_draft_items_table.php +++ b/database/migrations/2018_10_29_193339_create_booking_draft_items_table.php @@ -39,6 +39,8 @@ class CreateBookingDraftItemsTable extends Migration $table->decimal('price_children', 8, 2)->nullable(); $table->tinyInteger('children')->unsigned()->nullable(); + $table->decimal('price', 8, 2)->nullable(); + $table->tinyInteger('pos')->unsigned()->nullable(); $table->boolean('in_pdf')->default(true); $table->boolean('status')->default(false); diff --git a/public/js/custom.js b/public/js/custom.js index 70db6ea..984903e 100644 --- a/public/js/custom.js +++ b/public/js/custom.js @@ -53,7 +53,7 @@ $(function() { orientation: 'auto left', calendarWeeks: true, todayBtn: 'linked', - daysOfWeekDisabled: '1', + // daysOfWeekDisabled: '1', todayHighlight: true, multidate: false, daysOfWeekHighlighted: '0,6', diff --git a/resources/views/booking/detail.blade.php b/resources/views/booking/detail.blade.php index 62b59f2..a6820db 100755 --- a/resources/views/booking/detail.blade.php +++ b/resources/views/booking/detail.blade.php @@ -126,10 +126,31 @@ {{ Form::text('draft_item['.$booking_draft_item->id.'][price_children]', $booking_draft_item->price_children, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$booking_draft_item->id.'_price_children')) }} - - @endif + @if(in_array($booking_draft_item->draft_type_id, [38, 39,40])) + + + + € + + {{ Form::text('draft_item['.$booking_draft_item->id.'][price]', $booking_draft_item->price, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$booking_draft_item->id.'_price',)) }} + + + @if(in_array($booking_draft_item->draft_type_id, [38])) + + + + + A: + + {{ Form::text('draft_item['.$booking_draft_item->id.'][days_duration]', $booking_draft_item->days_duration, array('placeholder'=>__('Anzahl Tage'), 'class'=>'form-control', 'id'=>'draft_item_'.$booking_draft_item->id.'_days_duration',)) }} + + + @endif + + @endif + diff --git a/resources/views/layouts/includes/layout-sidenav.blade.php b/resources/views/layouts/includes/layout-sidenav.blade.php index ebae0b5..db26767 100755 --- a/resources/views/layouts/includes/layout-sidenav.blade.php +++ b/resources/views/layouts/includes/layout-sidenav.blade.php @@ -77,6 +77,26 @@ SUPERADMIN + + + + + + Einstellungen + + + + + {{ __('Reiseländer') }} + + + {{ __('Reiseprogramme') }} + + + + + + {{ __('User Rechte') }} @@ -90,13 +110,10 @@ {{ __('Vorlagen') }} - {{ __('Allgemein') }} - - diff --git a/routes/web.php b/routes/web.php index 93256ac..ddc5a1b 100755 --- a/routes/web.php +++ b/routes/web.php @@ -179,6 +179,15 @@ Route::group(['middleware' => ['superadmin']], function() { Route::get('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@edit')->name('admin_translate_file_edit'); Route::post('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@update')->name('admin_translate_file_update'); + + Route::get('/admin/settings/travel/country', 'DraftController@index')->name('admin_settings_travel_country'); + Route::post('/admin/settings/travel/country/update', 'DraftController@update')->name('admin_settings_travel_country_update'); + Route::get('/admin/settings/travel/country/delete/{id}', 'DraftController@delete')->name('admin_settings_travel_country_delete'); + + Route::get('/admin/settings/travel/program/{id?}', 'DraftController@index')->name('admin_settings_travel_program'); + + + // });