From d46824a4acf7cfd37c064d9e55527532f67af87d Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Tue, 3 Aug 2021 16:00:01 +0200 Subject: [PATCH] Lieferland UST CH, Reverse Charge --- app/Http/Controllers/AdminUserController.php | 7 +- app/Http/Controllers/CountryController.php | 2 + app/Http/Controllers/DataTableController.php | 10 ++- app/Http/Controllers/UserDataController.php | 44 ++++++++++- app/Models/Country.php | 4 +- app/Models/UserAccount.php | 6 ++ app/Repositories/UserRepository.php | 69 +++++++++++++++++ ...18_09_29_145909_create_countries_table.php | 3 +- resources/lang/de/validation.php | 5 +- resources/views/admin/country/form.blade.php | 28 ++++++- resources/views/admin/country/index.blade.php | 4 + resources/views/admin/user/index.blade.php | 46 +++++++++++- resources/views/user/user_form.blade.php | 48 +++++++++++- .../web/layouts/includes/footer.blade.php | 51 ++++++++++++- resources/views/web/templates/card.blade.php | 4 +- .../web/templates/produkte-show.blade.php | 2 +- .../web/templates/versandkosten.blade.php | 15 ++++ .../web/templates/zahlungsarten.blade.php | 75 +++++++++++++++++++ .../user/layouts/includes/footer.blade.php | 73 +++++++++++++----- 19 files changed, 455 insertions(+), 41 deletions(-) create mode 100644 resources/views/web/templates/versandkosten.blade.php create mode 100644 resources/views/web/templates/zahlungsarten.blade.php diff --git a/app/Http/Controllers/AdminUserController.php b/app/Http/Controllers/AdminUserController.php index 9e8d563..7a7b670 100755 --- a/app/Http/Controllers/AdminUserController.php +++ b/app/Http/Controllers/AdminUserController.php @@ -63,7 +63,12 @@ class AdminUserController extends Controller { $data = Request::all(); $user = User::findOrFail($data['id']); - + + if(isset($data['user-delete'])){ + if(isset($data['realy_delete_user'])){ + return redirect(route('admin_user_delete', [$user->id])); + } + } if(isset($data['save-admin'])){ $user->admin = $data['admin']; SysLog::action('save-admin', 'admin_user', 3) diff --git a/app/Http/Controllers/CountryController.php b/app/Http/Controllers/CountryController.php index 7629043..c491ac7 100755 --- a/app/Http/Controllers/CountryController.php +++ b/app/Http/Controllers/CountryController.php @@ -52,10 +52,12 @@ class CountryController extends Controller $data['active'] = isset($data['active']) ? true : false; $data['switch'] = isset($data['switch']) ? true : false; + $data['eu_country'] = isset($data['eu_country']) ? true : false; $data['own_eur'] = isset($data['own_eur']) ? true : false; $data['currency'] = isset($data['currency']) ? true : false; $data['currency_faktor'] = $data['currency_faktor'] == "" ? null : reFormatNumber($data['currency_faktor']); + if(!isset($data['attr'])){ $data['attr'] = []; } diff --git a/app/Http/Controllers/DataTableController.php b/app/Http/Controllers/DataTableController.php index adfc9b9..ed109b4 100644 --- a/app/Http/Controllers/DataTableController.php +++ b/app/Http/Controllers/DataTableController.php @@ -80,10 +80,12 @@ class DataTableController extends Controller return $link.' '.$user->getPaymentMethodsShort().''; }) - ->addColumn('action_delete', function (User $user) { - return ' - '; + ->addColumn('action_login', function (User $user) { + return ''; }) + ->addColumn('action_delete', function (User $user) { + return ''; + }) ->addColumn('test_mode', function (User $user) { $link = ''; return $user->test_mode ? $link.'' : $link.''; @@ -94,7 +96,7 @@ class DataTableController extends Controller ->orderColumn('active', 'active $1') ->orderColumn('shop', 'shop $1') ->orderColumn('admin', 'active $1') - ->rawColumns(['id', 'admin', 'confirmed', 'active', 'account', 'shop', 'my_payment_methods', 'test_mode', 'action_delete']) + ->rawColumns(['id', 'admin', 'confirmed', 'active', 'account', 'shop', 'my_payment_methods', 'test_mode', 'action_login', 'action_delete']) ->make(true); } } diff --git a/app/Http/Controllers/UserDataController.php b/app/Http/Controllers/UserDataController.php index 3357bba..8e85648 100755 --- a/app/Http/Controllers/UserDataController.php +++ b/app/Http/Controllers/UserDataController.php @@ -2,11 +2,12 @@ namespace App\Http\Controllers; -use App\Repositories\UserRepository; -use App\User; use Auth; use Request; +use App\User; use Validator; +use App\Models\UserAccount; +use App\Repositories\UserRepository; class UserDataController extends Controller @@ -45,6 +46,44 @@ class UserDataController extends Controller $user->account = new UserAccount(); }*/ + $data = Request::all(); + if(isset($data['reverse_charge_validate'])){ + + $rules = array( + 'tax_identification_number' => 'required', + 'reverse_charge' => 'required', + ); + $validator = Validator::make(Request::all(), $rules); + if ($validator->fails()) { + $data = [ + 'user' => $user, + ]; + return view('user.edit', $data)->withErrors($validator); + } + $ret = $this->userRepo->reverse_charge_activate(Request::all(), $user); + if($ret === 'error'){ + $validator = Validator::make(Request::all(), []); + $validator->errors()->add('tax_identification_number', __('Die UST-ID konnte nicht validiert werden, Eingabe bitte prüfen.')); + $data['reverse_charge'] = 0; + return redirect(route('user_edit'))->withErrors($validator)->withInput($data); + } + if($ret === 'valid'){ + \Session()->flash('alert-success', 'UST-ID erfolgreich eingetragen.'); + return redirect('/user/edit'); + + } + } + if(isset($data['reverse_charge_delete'])){ + $user->account->tax_identification_number = ''; + $user->account->reverse_charge = 0; + $user->account->reverse_charge_valid = null; + $user->account->save(); + \Session()->flash('alert-success', 'Reverse Charge Verfahren und UST-ID gelöscht.'); + return redirect('/user/edit'); + + } + + $rules = array( 'salutation' => 'required', 'first_name'=>'required', @@ -72,7 +111,6 @@ class UserDataController extends Controller $validator = Validator::make(Request::all(), $rules); if ($validator->fails()) { - return view('user.edit', $data)->withErrors($validator); } else { diff --git a/app/Models/Country.php b/app/Models/Country.php index f398114..8aba2a4 100644 --- a/app/Models/Country.php +++ b/app/Models/Country.php @@ -64,6 +64,8 @@ class Country extends Model protected $casts = [ 'switch' => 'bool', + 'supply_country' => 'bool', + 'eu_country' => 'bool', 'own_eur' => 'bool', 'currency' => 'bool', 'currency_calc' => 'bool', @@ -73,7 +75,7 @@ class Country extends Model protected $fillable = [ 'code', 'phone', 'en', 'de', 'es', 'fr', 'it', 'ru', - 'switch', 'own_eur', 'currency', 'currency_unit', 'currency_calc', 'currency_faktor', + 'supply_country', 'eu_country', 'switch', 'own_eur', 'currency', 'currency_unit', 'currency_calc', 'currency_faktor', 'active', 'trans_name', 'attr', ]; diff --git a/app/Models/UserAccount.php b/app/Models/UserAccount.php index 537a40b..f3a049a 100644 --- a/app/Models/UserAccount.php +++ b/app/Models/UserAccount.php @@ -129,10 +129,12 @@ class UserAccount extends Model 'shipping_salutation', 'shipping_company', 'shipping_firstname', 'shipping_lastname', 'shipping_address', 'shipping_address_2', 'shipping_zipcode', 'shipping_city', 'shipping_country_id', 'shipping_pre_phone_id', 'shipping_phone', 'birthday', 'website', 'facebook', 'facebook_fanpage', 'instagram', 'notice' ]; + //'reverse_charge', 'reverse_charge_valid' protected $casts = [ 'payment_data' => 'array', 'notice' => 'array', + //'reverse_charge' => 'bool' ]; use SoftDeletes; @@ -191,6 +193,10 @@ class UserAccount extends Model return Carbon::parse($this->attributes['accept_contract'])->format(\Util::formatDateTimeDB()); } + public function getReverseChargeValidFormat(){ + if(!$this->attributes['reverse_charge_valid']){ return ""; } + return Carbon::parse($this->attributes['reverse_charge_valid'])->format(\Util::formatDateTimeDB()); + } public function getCountryAttrAs($attr, $as = false){ if($this->country){ diff --git a/app/Repositories/UserRepository.php b/app/Repositories/UserRepository.php index ac2abfd..57ed280 100644 --- a/app/Repositories/UserRepository.php +++ b/app/Repositories/UserRepository.php @@ -45,6 +45,7 @@ class UserRepository extends BaseRepository { $data['same_as_billing'] = !isset($data['same_as_billing']) ? 0 : 1; + $account->fill($data)->save(); if(!$this->model->account_id){ @@ -78,7 +79,75 @@ class UserRepository extends BaseRepository { return $this->model; } + public function reverse_charge_activate($data, $user){ + /* 'AT' => 'AT-Oesterreich', + 'BE' => 'BE-Belgien', + 'BG' => 'BG-Bulgarien', + 'CY' => 'CY-Zypern', + 'CZ' => 'CZ-Tschechische Republik', + 'DE' => 'DE-Deutschland', + 'DK' => 'DK-Dänemark', + 'EE' => 'EE-Estland', + 'EL' => 'EL-Griechenland', + 'ES' => 'ES-Spanien', + 'FI' => 'FI-Finnland', + 'FR' => 'FR-Frankreich ', + 'HR' => 'HR-Kroatien ', + 'HU' => 'HU-Ungarn', + 'IE' => 'IE-Irland', + 'IT' => 'IT-Italien', + 'LT' => 'LT-Litauen', + 'LU' => 'LU-Luxemburg', + 'LV' => 'LV-Lettland', + 'MT' => 'MT-Malta', + 'NL' => 'NL-Niederlande', + 'PL' => 'PL-Polen', + 'PT' => 'PT-Portugal', + 'RO' => 'RO-Rumänien', + 'SE' => 'SE-Schweden', + 'SI' => 'SI-Slowenien', + 'SK' => 'SK-Slowakei', + 'XI' => 'XI-Nordirland', */ + $countryCode = 'DE'; + + if($user->account->country_id){ + $countryCode = $user->account->country->code; + } + + $vatid = str_replace(array(' ', '.', '-', ',', ', '), '', trim($data['tax_identification_number'])); + $cc = substr($vatid, 0, 2); + $vatNo = substr($vatid, 2); + + $options = [ + 'cache_wsdl' => WSDL_CACHE_NONE, + 'trace' => 1, + 'stream_context' => stream_context_create( + [ + 'ssl' => [ + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] + ] + ) + ]; + + $client = new \SoapClient("https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl", $options); + $result = $client->checkVat(['countryCode' => $countryCode, 'vatNumber' => $vatNo]); + + if($result->valid == true) { + $user->account->tax_identification_number = $data['tax_identification_number']; + $user->account->reverse_charge = 1; + $user->account->reverse_charge_valid = now(); + $user->account->save(); + return 'valid'; + } else { + return 'error'; + } + + + } public function deleteUser(User $user) { if($user->account){ diff --git a/database/migrations/2018_09_29_145909_create_countries_table.php b/database/migrations/2018_09_29_145909_create_countries_table.php index 5bd2555..ccf8a42 100644 --- a/database/migrations/2018_09_29_145909_create_countries_table.php +++ b/database/migrations/2018_09_29_145909_create_countries_table.php @@ -25,7 +25,8 @@ class CreateCountriesTable extends Migration $table->string('ru', 100); $table->boolean('active')->default(true); - + $table->boolean('supply_country')->default(false); + $table->boolean('eu_country')->default(false); $table->boolean('switch')->default(false); $table->boolean('own_eur')->default(false); $table->boolean('currency')->default(false); diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index 74cc151..3d3105b 100755 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -210,6 +210,9 @@ return [ 'has_customer_buyed' => 'Die Angabe', 'billing_country_code' => 'Land Code', 'sales_partnership' => 'Vertriebspartnerschaft', - 'sales_partnership_message' => 'Vertriebspartnerschaft Hinweis' + 'sales_partnership_message' => 'Vertriebspartnerschaft Hinweis', + 'tax_number' => 'Steuernummer', + 'tax_identification_number' => 'USt-ID Nummer', + 'reverse_charge' => 'Reverse Charge Verfahren' ], ]; diff --git a/resources/views/admin/country/form.blade.php b/resources/views/admin/country/form.blade.php index 1088766..69b0226 100755 --- a/resources/views/admin/country/form.blade.php +++ b/resources/views/admin/country/form.blade.php @@ -50,6 +50,32 @@ +
+
+ Lieferland +
+
+
+ +
+
+ +
+ + +
+
+
+
@@ -60,7 +86,7 @@
diff --git a/resources/views/admin/country/index.blade.php b/resources/views/admin/country/index.blade.php index 41f20cc..96ebe89 100644 --- a/resources/views/admin/country/index.blade.php +++ b/resources/views/admin/country/index.blade.php @@ -15,7 +15,9 @@ {{__('Code')}} {{__('Phone')}} {{__('Status')}} + {{__('Reverse Charge')}} {{__('Länderwechsel')}} + {{__('Lieferland') }} {{__('e. Preis')}} {{__('e. Währung')}} {{__('Kalkulation')}} @@ -33,7 +35,9 @@ {{ $value->code }} {{ $value->phone }} {!! get_active_badge($value->active) !!} + {!! get_active_badge($value->eu_country) !!} {!! get_active_badge($value->switch) !!} + {!! get_active_badge($value->supply_country) !!} {!! get_active_badge($value->own_eur) !!} {!! get_active_badge($value->currency) !!} {{$value->currency_unit}} diff --git a/resources/views/admin/user/index.blade.php b/resources/views/admin/user/index.blade.php index ae975c5..19e2c9a 100644 --- a/resources/views/admin/user/index.blade.php +++ b/resources/views/admin/user/index.blade.php @@ -25,6 +25,7 @@ {{__('Shop')}} ab {{__('Zahlungsarten')}} {{__('Test Modus')}} + {{__('login')}} {{__('delete')}} @@ -187,7 +188,7 @@
- + + + + + diff --git a/resources/views/web/layouts/includes/footer.blade.php b/resources/views/web/layouts/includes/footer.blade.php index 7a73e8b..d1996ba 100644 --- a/resources/views/web/layouts/includes/footer.blade.php +++ b/resources/views/web/layouts/includes/footer.blade.php @@ -22,7 +22,12 @@ - + + + + + + - \ No newline at end of file + +
+
+ +
+
+
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+
+
+
diff --git a/resources/views/web/templates/card.blade.php b/resources/views/web/templates/card.blade.php index ef8df5f..8676381 100644 --- a/resources/views/web/templates/card.blade.php +++ b/resources/views/web/templates/card.blade.php @@ -326,7 +326,7 @@
{{ Yard::instance('shopping')->shipping() }} € - Versandkosten: + Versandkosten:

@@ -354,7 +354,7 @@



-

Alle Preise inkl. gesetzl. Mehrwertsteuer zzgl. Versandkosten, wenn nicht anders beschrieben

+

Alle Preise inkl. gesetzl. Mehrwertsteuer zzgl. Versandkosten, wenn nicht anders beschrieben

diff --git a/resources/views/web/templates/produkte-show.blade.php b/resources/views/web/templates/produkte-show.blade.php index 0621f49..0f357b3 100644 --- a/resources/views/web/templates/produkte-show.blade.php +++ b/resources/views/web/templates/produkte-show.blade.php @@ -103,7 +103,7 @@ {{ $product->getFormattedPrice() }} € @endif
{{$product->getBasePriceFormattedFull()}}
- inkl. {{$product->getFormattedTax()}}% MwSt. zzgl. Versandkosten + inkl. {{$product->getFormattedTax()}}% MwSt. zzgl. Versandkosten
diff --git a/resources/views/web/templates/versandkosten.blade.php b/resources/views/web/templates/versandkosten.blade.php new file mode 100644 index 0000000..ebca744 --- /dev/null +++ b/resources/views/web/templates/versandkosten.blade.php @@ -0,0 +1,15 @@ +@extends($user_shop ?'web.user.layouts.layout' : 'web.layouts.layout') + +@section('content') +
+
+ +
+

Versandarten & Versandkosten

+
+ +
+
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/web/templates/zahlungsarten.blade.php b/resources/views/web/templates/zahlungsarten.blade.php new file mode 100644 index 0000000..9406770 --- /dev/null +++ b/resources/views/web/templates/zahlungsarten.blade.php @@ -0,0 +1,75 @@ +@extends($user_shop ?'web.user.layouts.layout' : 'web.layouts.layout') + +@section('content') +
+
+ +
+

Zahlungsarten

+
+ + +
+
+ +
+
+

Zahlung mit Paypal

+

Nach der erfolgreichen Überprüfung werden Sie auf die abgesicherte Bezahlseite von Paypal umgeleitet, um die Zahlung fortzusetzen. Bitte schließen Sie den Browser nach der erfolgreichen Zahlung nicht, bis Sie zum Shop zurückgeleitet wurden.

+
+
+ +
+ +
+
+ +
+
+

Sofortüberweisung

+

Nach der erfolgreichen Überprüfung werden Sie auf die abgesicherte Zahlungsseite von PAYONE für SOFORT Überweisungen umgeleitet, um die Zahlung fortzusetzen. Bitte schließen Sie den Browser nach der erfolgreichen Zahlung nicht, bis Sie zum Shop zurückgeleitet wurden.

+
+
+ +
+ +
+
+ +
+
+

SEPA Lastschrift

+

Ihr Konto wird nach Abschicken der Bestellung für diese eine Bestellung belastet. Das SEPA-Lastschriftverfahren wird über unseren Zahlungsdienstleister PAYONE abgewickelt.

+
+
+ +
+ +
+
+ +
+
+

Kreditkarte

+

Der Betrag wird von Ihrer Kreditkarte abgebucht, sobald die Bestellung abgeschickt wird. Das Kreditkartenverfahren wird über unseren Zahlungsdienstleister PAYONE abgewickelt.

+
+
+ +
+ +
+
+ +
+
+

Vorauskasse

+

Nachdem Sie die Bestellung abgeschickt haben, erhalten Sie eine Email mit den Bankdaten, um die Zahlung durchzuführen. Nach Eingang des Betrages, wird Deine Ware verschickt.

+
+
+ + +
+
+
+ +@endsection diff --git a/resources/views/web/user/layouts/includes/footer.blade.php b/resources/views/web/user/layouts/includes/footer.blade.php index 17a93ae..149d096 100644 --- a/resources/views/web/user/layouts/includes/footer.blade.php +++ b/resources/views/web/user/layouts/includes/footer.blade.php @@ -112,24 +112,61 @@ - \ No newline at end of file + +
+
+ +
+
+
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+
+
+
\ No newline at end of file