From e670b92f5d6fbbef80d1f831315c60e81bbbfaea Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Thu, 29 Apr 2021 16:36:11 +0200 Subject: [PATCH] Gutschriften Anpassungen --- .env | 2 +- app/Http/Controllers/ModalController.php | 9 +- .../Controllers/PaymentCreditController.php | 26 ++++- .../Controllers/PaymentInvoiceController.php | 1 + .../Controllers/SyS/AdminToolsController.php | 6 +- app/Mail/MailCheckout.php | 2 - app/Models/ShoppingOrder.php | 1 + app/Models/UserAccount.php | 8 +- app/Models/UserCredit.php | 24 ++++ app/Repositories/CreditRepository.php | 6 +- app/Repositories/InvoiceRepository.php | 1 + app/Services/Credit.php | 23 ++-- app/Services/HTMLHelper.php | 12 ++ ...23_163527_create_shopping_orders_table.php | 2 + ...03_23_191712_create_user_credits_table.php | 1 + resources/lang/de/email.php | 6 +- resources/lang/de/navigation.php | 3 +- .../admin/modal/add_pay_credit.blade.php | 4 +- .../admin/modal/user-credit-status.blade.php | 82 ++++++++++++++ .../admin/modal/user_pay_credits.blade.php | 4 +- .../admin/payment/credit/index.blade.php | 104 +++++++++--------- .../admin/payment/invoice/index.blade.php | 12 +- .../admin/payment/pay_credit/index.blade.php | 2 +- resources/views/dashboard.blade.php | 2 +- .../layouts/includes/layout-navbar.blade.php | 2 +- .../layouts/includes/layout-sidenav.blade.php | 2 +- .../views/user/payment/paycredit.blade.php | 2 +- resources/views/user/user_form.blade.php | 53 +++++++++ 28 files changed, 303 insertions(+), 99 deletions(-) create mode 100644 resources/views/admin/modal/user-credit-status.blade.php diff --git a/.env b/.env index a684077..fd74c62 100644 --- a/.env +++ b/.env @@ -49,7 +49,7 @@ MAIL_USERNAME=web28p3 MAIL_PASSWORD=WeE2bmI9GjB7pDgi #MAIL_ENCRYPTION=SSL MAIL_FROM_ADDRESS=partner@gruene-seele.bio -MAIL_FROM_NAME="Partner Grüne Seele bio" +MAIL_FROM_NAME="Partner GRÜNE SEELE Naturkosmetik" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= diff --git a/app/Http/Controllers/ModalController.php b/app/Http/Controllers/ModalController.php index 2ba2733..0c41eaf 100644 --- a/app/Http/Controllers/ModalController.php +++ b/app/Http/Controllers/ModalController.php @@ -7,7 +7,7 @@ use App\Models\HomepartyUser; use App\Models\Product; use App\Models\ShoppingOrder; use App\Models\ShoppingUser; - +use App\Models\UserCredit; use App\User; use Request; @@ -73,6 +73,13 @@ class ModalController extends Controller $ret = view("admin.modal.add_pay_credit", compact('value', 'data'))->render(); } + if($data['action'] === 'user-credit-status'){ + $value = UserCredit::find($data['id']); //current user form order + $ret = view("admin.modal.user-credit-status", compact('value', 'data'))->render(); + } + + + /*if($data['action'] === 'homeparty-add-product') { $homeparty = Homeparty::find($data['id']); $homeparty_user = HomepartyUser::find($data['user_id']); diff --git a/app/Http/Controllers/PaymentCreditController.php b/app/Http/Controllers/PaymentCreditController.php index bfae52f..2820ade 100644 --- a/app/Http/Controllers/PaymentCreditController.php +++ b/app/Http/Controllers/PaymentCreditController.php @@ -67,17 +67,27 @@ class PaymentCreditController extends Controller public function create(){ $data = Request::all(); - if(!isset($data['userid'])){ - abort(404); - } if(isset($data['action'])){ if($data['action'] === 'create_credit'){ + if(!isset($data['userid'])){ + abort(404); + } $user = User::findOrFail($data['userid']); $invoice_repo = new CreditRepository($user); $invoice_repo->create($data); + \Session()->flash('alert-success', "Gutschrift erstellt"); return redirect($data['back']); } + if($data['action'] === 'user-credit-status'){ + $UserCredit = UserCredit::findOrFail($data['id']); + $UserCredit->status = $data['status']; + $UserCredit->save(); + \Session()->flash('alert-success', "Status gespeichert"); + return back(); + } } + + } private function setActiveYears(){ @@ -127,10 +137,18 @@ class PaymentCreditController extends Controller return $ret; }) + ->addColumn('status', function (UserCredit $UserCredit) { + return ' + '.$UserCredit->getStatusType().' + '; + }) + + ->orderColumn('id', 'id $1') ->orderColumn('status', 'status $1') ->orderColumn('total', 'total $1') - ->rawColumns(['shipping_order', 'total', 'credit', 'user_margins']) + ->rawColumns(['shipping_order', 'total', 'credit', 'status', 'user_margins']) ->make(true); } } \ No newline at end of file diff --git a/app/Http/Controllers/PaymentInvoiceController.php b/app/Http/Controllers/PaymentInvoiceController.php index 81774c8..4e5c26e 100644 --- a/app/Http/Controllers/PaymentInvoiceController.php +++ b/app/Http/Controllers/PaymentInvoiceController.php @@ -92,6 +92,7 @@ class PaymentInvoiceController extends Controller }) ->orderColumn('id', 'id $1') + ->orderColumn('invoice_number', 'invoice_number $1') ->orderColumn('txaction', 'txaction $1') ->orderColumn('shipped', 'shipped $1') ->orderColumn('total_shipping', 'total_shipping $1') diff --git a/app/Http/Controllers/SyS/AdminToolsController.php b/app/Http/Controllers/SyS/AdminToolsController.php index b9280eb..1bea719 100755 --- a/app/Http/Controllers/SyS/AdminToolsController.php +++ b/app/Http/Controllers/SyS/AdminToolsController.php @@ -34,7 +34,8 @@ class AdminToolsController extends Controller public function index($action) { - + + dd($action); switch ($action) { case 'pay_credits': # code... @@ -56,7 +57,10 @@ class AdminToolsController extends Controller public function store($action) { + + dd($action); + $data = []; switch ($action) { case 'pay_credits': diff --git a/app/Mail/MailCheckout.php b/app/Mail/MailCheckout.php index ba80033..2432bca 100644 --- a/app/Mail/MailCheckout.php +++ b/app/Mail/MailCheckout.php @@ -32,14 +32,12 @@ class MailCheckout extends Mailable if($this->txaction === 'paid'){ $this->subject = __('email.checkout_subject_paid')." "; - $this->subject .= ".gruene-seele.bio"; }elseif($this->txaction === 'extern'){ $this->subject = __('email.checkout_subject_extern').": "; $this->subject .= $shopping_order->member->account->m_first_name." ".$shopping_order->member->account->m_last_name." - "; $this->subject .= $shopping_order->shopping_user->billing_firstname." ".$shopping_order->shopping_user->billing_lastname; }else{ $this->subject = __('email.checkout_subject')." "; - $this->subject .= ".gruene-seele.bio"; } /*if($shopping_order->user_shop){ diff --git a/app/Models/ShoppingOrder.php b/app/Models/ShoppingOrder.php index df8a464..c4cae08 100644 --- a/app/Models/ShoppingOrder.php +++ b/app/Models/ShoppingOrder.php @@ -126,6 +126,7 @@ class ShoppingOrder extends Model 'weight', 'paid', 'invoice', + 'invoice_number', 'txaction', 'wp_invoice_path', 'wp_notice', diff --git a/app/Models/UserAccount.php b/app/Models/UserAccount.php index 162caf7..9a7df46 100644 --- a/app/Models/UserAccount.php +++ b/app/Models/UserAccount.php @@ -127,12 +127,12 @@ class UserAccount extends Model 'm_account', 'm_salutation', 'm_first_name', 'm_last_name', 'm_notes', 'company', 'salutation', 'first_name', 'last_name', 'address', 'address_2', 'zipcode', 'city', 'country_id', 'pre_phone_id', 'phone', 'pre_mobil_id', 'mobil', 'tax_number', 'tax_identification_number', 'taxable_sales', 'same_as_billing', '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' + 'birthday', 'website', 'facebook', 'facebook_fanpage', 'instagram', 'notice', 'payment_data' ]; protected $casts = [ 'payment_data' => 'array', - 'notice' => 'array', + 'notice' => 'array' ]; use SoftDeletes; @@ -194,6 +194,10 @@ class UserAccount extends Model return Carbon::parse($this->attributes['accept_contract'])->format(\Util::formatDateTimeDB()); } + public function getPaymentData($key) + { + return isset($this->payment_data[$key]) ? $this->payment_data[$key] : ''; + } public function getCountryAttrAs($attr, $as = false){ if($this->country){ diff --git a/app/Models/UserCredit.php b/app/Models/UserCredit.php index 89ba7ed..e2284bd 100644 --- a/app/Models/UserCredit.php +++ b/app/Models/UserCredit.php @@ -65,6 +65,7 @@ class UserCredit extends Model protected $fillable = [ 'auth_user_id', + 'credit_number', 'net', 'tax_rate', 'tax', @@ -77,6 +78,20 @@ class UserCredit extends Model 'status' ]; + public static $statusTypes = [ + 0 => 'offen', + 1 => 'bezahlt', + 2 => 'prüfen', + 10 => 'storniert' + ]; + + public static $statusColors = [ + 0 => 'warning', + 1 => 'success', + 2 => 'secondary', + 10 => 'danger', + ]; + public function user() { return $this->belongsTo(\App\User::class, 'auth_user_id'); @@ -112,5 +127,14 @@ class UserCredit extends Model { return formatNumber($this->attributes['total']); } + + + public function getStatusType(){ + return isset(self::$statusTypes[$this->status]) ? self::$statusTypes[$this->status] : ""; + } + + public function getStatusColor(){ + return isset(self::$statusColors[$this->status]) ? self::$statusColors[$this->status] : "default"; + } } diff --git a/app/Repositories/CreditRepository.php b/app/Repositories/CreditRepository.php index ff3ebdc..336638c 100644 --- a/app/Repositories/CreditRepository.php +++ b/app/Repositories/CreditRepository.php @@ -58,11 +58,12 @@ class CreditRepository extends BaseRepository { 'filename' => $filename, 'dir' => $dir, 'disk' => 'public', - 'invoice_number' => $credit_number, + 'credit_number' => $credit_number, 'credit_date' => $credit_date, ]; $user_credit = UserCredit::create([ 'auth_user_id' => $this->model->id, + 'credit_number' => $credit_number, 'net' => $user_credits->net, 'tax_rate' => $user_credits->tax_rate, 'tax' => $user_credits->tax, @@ -78,10 +79,7 @@ class CreditRepository extends BaseRepository { Credit::sendCreditMail($user_credit); } $this->finishUserCredit($user_credit); - return true; - //return $pdf->stream('invoice.pdf'); - //return $this->output($path.$dir, $filename); } private function finishUserCredit($user_credit){ diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php index c68ccd2..57e01b5 100644 --- a/app/Repositories/InvoiceRepository.php +++ b/app/Repositories/InvoiceRepository.php @@ -55,6 +55,7 @@ class InvoiceRepository extends BaseRepository { 'invoice_date' => $invoice_date, ]; $this->model->invoice = $data_file; + $this->model->invoice_number = $invoice_number; $this->model->save(); if($invoice_send_mail){ diff --git a/app/Services/Credit.php b/app/Services/Credit.php index 029c954..005661e 100644 --- a/app/Services/Credit.php +++ b/app/Services/Credit.php @@ -16,23 +16,23 @@ class Credit public static function makeNextCreditNumber(){ - $invoice_number = self::getCreditNumber(); - $invoice_number = $invoice_number+1; - Setting::setContentBySlug('credit-number', $invoice_number, 'int'); - return $invoice_number; + $credit_number = self::getCreditNumber(); + $credit_number = $credit_number+1; + Setting::setContentBySlug('credit-number', $credit_number, 'int'); + return $credit_number; } - public static function createCreditNumber($invoice_number, $invoice_date){ - $prefix = "GS".\Carbon::parse($invoice_date)->format('Ym'); - return $prefix.$invoice_number; + public static function createCreditNumber($credit_number, $credit_date){ + $prefix = "GS".\Carbon::parse($credit_date)->format('Ym'); + return $prefix.$credit_number; } - public static function getCreditStorageDir($invoice_date){ - return "/credit/".\Carbon::parse($invoice_date)->format('Y/m/'); + public static function getCreditStorageDir($credit_date){ + return "/credit/".\Carbon::parse($credit_date)->format('Y/m/'); } - public static function makeCreditFilename($invoice_number){ - return "Gutschrift-".$invoice_number.".pdf"; + public static function makeCreditFilename($credit_number){ + return "Gutschrift-".$credit_number.".pdf"; } public static function isCredit(UserCredit $user_credit){ @@ -64,7 +64,6 @@ class Credit public static function sendCreditMail(UserCredit $user_credit){ $bcc = []; $email = $user_credit->user->email; - $email = "kevin.adametz@me.com"; if(!$email){ if($user_credit->user->mode === 'test'){ }else{ diff --git a/app/Services/HTMLHelper.php b/app/Services/HTMLHelper.php index c44569e..8310aeb 100644 --- a/app/Services/HTMLHelper.php +++ b/app/Services/HTMLHelper.php @@ -394,6 +394,18 @@ class HTMLHelper return $ret; } + public static function getAnyOptions($id, $options = [], $all=true){# + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($options as $key=>$value){ + $attr = ($key == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + public static function getOptionRange($select, $from=1, $to=50){ $values = range($from, $to); $ret = ""; diff --git a/database/migrations/2020_12_23_163527_create_shopping_orders_table.php b/database/migrations/2020_12_23_163527_create_shopping_orders_table.php index 75fe1cc..70010fc 100644 --- a/database/migrations/2020_12_23_163527_create_shopping_orders_table.php +++ b/database/migrations/2020_12_23_163527_create_shopping_orders_table.php @@ -47,6 +47,8 @@ class CreateShoppingOrdersTable extends Migration $table->boolean('paid')->default(false); $table->text('invoice')->nullable(); + + $table->string('invoice_number', 255)->nullable(); $table->string('wp_invoice_path', 255)->nullable(); $table->text('wp_notice')->nullable(); diff --git a/database/migrations/2021_03_23_191712_create_user_credits_table.php b/database/migrations/2021_03_23_191712_create_user_credits_table.php index 59798c1..709a793 100644 --- a/database/migrations/2021_03_23_191712_create_user_credits_table.php +++ b/database/migrations/2021_03_23_191712_create_user_credits_table.php @@ -16,6 +16,7 @@ class CreateUserCreditsTable extends Migration Schema::create('user_credits', function (Blueprint $table) { $table->id(); $table->unsignedInteger('auth_user_id'); + $table->string('credit_number', 255)->nullable(); $table->decimal('net', 13, 2)->nullable(); $table->decimal('tax_rate', 8, 2)->nullable(); $table->decimal('tax', 8, 2)->nullable(); diff --git a/resources/lang/de/email.php b/resources/lang/de/email.php index 9b99fcc..381f27a 100644 --- a/resources/lang/de/email.php +++ b/resources/lang/de/email.php @@ -13,8 +13,8 @@ 'sender' => 'Dein Team von Grüne Seele', 'request_from' => 'Anfrage von Grüne Seele', 'your_request_from' => 'Deine Anfrage von', - 'checkout_subject' => 'Deine Bestellung bei', - 'checkout_subject_paid' => 'Zahlungsbestätigung - Deine Bestellung bei', + 'checkout_subject' => 'Deine Bestellung', + 'checkout_subject_paid' => 'Zahlungsbestätigung - Deine Bestellung', 'checkout_subject_extern' => 'Neue Bestellung', 'change_e_mail' => 'E-Mail Adresse ändern', 'salutation' => 'Hallo', @@ -48,7 +48,7 @@ 'invoice_title' => 'Rechnung zu Deiner Bestellung auf Grüne Seele', 'credit_title' => 'Gutschrift aus Vertriebspartnerbestellungen auf Grüne Seele', 'invoice_copy1line' => 'vielen Dank für Deine Bestellung bei Grüne Seele. Nachfolgend senden wir Dir die Rechnung zu deiner Bestellung: ', - 'credit_copy1line' => 'vielen Dank für Deine Vertriebspartnerschaft bei Grüne Seele. Nachfolgend senden wir Dir eine Gutschrift zu Bestellungen von deinen Vertriebspartnern: ', + 'credit_copy1line' => 'vielen Dank für Deine Vertriebspartnerschaft bei Grüne Seele. Nachfolgend senden wir Dir Deine Gutschrift zu. Der Betrag wird zeitnah angewiesen, bitte prüfen deine Zahlungsdaten in deinem Konto: Mein Konto -> Meine Daten.', 'footer_copy1' => 'GRÜNE SEELE GbR | Hauptstrasse 174 | 51143 Köln | Telefon: (+49) 2203 183 86 14 | E-Mail: service@gruene-seele.bio', 'footer_copy2' => '', 'footer_copy3' => '© 2021 All Rights Reserved', diff --git a/resources/lang/de/navigation.php b/resources/lang/de/navigation.php index 6896b1f..601cf6b 100755 --- a/resources/lang/de/navigation.php +++ b/resources/lang/de/navigation.php @@ -44,5 +44,6 @@ return [ 'credit' => 'Gutschriften', 'invoice' => 'Rechnungen', 'revenue' => 'Umsätze', - 'paycredit' => 'Guthaben', + 'paycredit' => 'Einkaufsguthaben', + 'commissions' => 'Provisionen' ]; diff --git a/resources/views/admin/modal/add_pay_credit.blade.php b/resources/views/admin/modal/add_pay_credit.blade.php index 0b99f2f..97cad8f 100644 --- a/resources/views/admin/modal/add_pay_credit.blade.php +++ b/resources/views/admin/modal/add_pay_credit.blade.php @@ -1,7 +1,7 @@ {!! Form::open(['url' => route('admin_payments_paycredit'), 'class' => 'modal-content', 'enctype' => 'multipart/form-data']) !!} {!! Form::close() !!} diff --git a/resources/views/admin/modal/user-credit-status.blade.php b/resources/views/admin/modal/user-credit-status.blade.php new file mode 100644 index 0000000..6975570 --- /dev/null +++ b/resources/views/admin/modal/user-credit-status.blade.php @@ -0,0 +1,82 @@ +{!! Form::open(['url' => route('admin_payments_credit_create'), 'class' => 'modal-content', 'enctype' => 'multipart/form-data']) !!} + + + + + + + + +{!! Form::close() !!} + + diff --git a/resources/views/admin/modal/user_pay_credits.blade.php b/resources/views/admin/modal/user_pay_credits.blade.php index f2037be..a1abe6d 100644 --- a/resources/views/admin/modal/user_pay_credits.blade.php +++ b/resources/views/admin/modal/user_pay_credits.blade.php @@ -1,7 +1,7 @@ - + @@ -228,5 +179,50 @@ + @endsection diff --git a/resources/views/admin/payment/invoice/index.blade.php b/resources/views/admin/payment/invoice/index.blade.php index 2900c5d..db4aaa6 100755 --- a/resources/views/admin/payment/invoice/index.blade.php +++ b/resources/views/admin/payment/invoice/index.blade.php @@ -22,15 +22,16 @@ - + + + - - + @@ -55,14 +56,15 @@ "order": [[0, "desc" ]], "columns": [ { data: 'id', searchable: false }, + { data: 'invoice_number', name: 'invoice_number' }, + { data: 'invoice', name: 'invoice', orderable: false, searchable: false }, { data: 'shopping_user.billing_firstname', name: 'shopping_user.billing_firstname', orderable: false }, { data: 'shopping_user.billing_lastname', name: 'shopping_user.billing_lastname', orderable: false }, { data: 'shopping_user.billing_email', name: 'shopping_user.billing_email', orderable: false }, { data: 'total_shipping', name: 'total_shipping' }, { data: 'created_at', name: 'shopping_orders.created_at' }, - { data: 'shipping_order', name: 'shipping_order', orderable: false }, { data: 'txaction', name: 'txaction', searchable: false }, - { data: 'invoice', name: 'invoice', orderable: false, searchable: false }, + { data: 'shipping_order', name: 'shipping_order', orderable: false }, ], "bLengthChange": false, "iDisplayLength": 100, diff --git a/resources/views/admin/payment/pay_credit/index.blade.php b/resources/views/admin/payment/pay_credit/index.blade.php index 9f8aa6b..ca94a98 100755 --- a/resources/views/admin/payment/pay_credit/index.blade.php +++ b/resources/views/admin/payment/pay_credit/index.blade.php @@ -10,7 +10,7 @@ data-id="new" data-action="add-user-pay-credit" data-back="{{url()->current()}}" - data-route="{{ route('modal_load') }}"> Guthaben aufladen + data-route="{{ route('modal_load') }}"> Einkaufsguthaben aufladen diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index d1377da..a6d18b7 100755 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -204,7 +204,7 @@ zur Übersicht - {{__('Guthaben')}}: {{ $user->getFormattedPaymentCredit() }} € + {{__('Einkaufsguthaben')}}: {{ $user->getFormattedPaymentCredit() }} €


diff --git a/resources/views/layouts/includes/layout-navbar.blade.php b/resources/views/layouts/includes/layout-navbar.blade.php index 246e90c..636a33c 100644 --- a/resources/views/layouts/includes/layout-navbar.blade.php +++ b/resources/views/layouts/includes/layout-navbar.blade.php @@ -22,7 +22,7 @@ @endif diff --git a/resources/views/user/user_form.blade.php b/resources/views/user/user_form.blade.php index a640a05..d471aab 100644 --- a/resources/views/user/user_form.blade.php +++ b/resources/views/user/user_form.blade.php @@ -322,7 +322,60 @@ + + +
+
+
+
+ Zahlungsdaten +
+
+
+
+
+
+ + +

Bitte wählen Deine bevorzugte Auszahlungsart

+
+
+ + {{ Form::text('payment_data[bankaccountholder]', $user->account->getPaymentData('bankaccountholder'), array('placeholder'=>__('Vornamen Nachname'), 'class'=>'form-control', 'id'=>'payment_data_bankaccountholder')) }} +
+
+ + {{ Form::text('payment_data[iban]', $user->account->getPaymentData('iban'), array('placeholder'=>__('DE0212030000000012345'), 'class'=>'form-control', 'id'=>'payment_data_iban')) }} +
+
+ + {{ Form::text('payment_data[bic]', $user->account->getPaymentData('bic'), array('placeholder'=>__('BYLADEM1234'), 'class'=>'form-control', 'id'=>'payment_data_bic')) }} +
+
+
+
+
+ + {{ Form::text('payment_data[paypal_address]', $user->account->getPaymentData('paypal_address'), array('placeholder'=>__('E-Mail-Adresse'), 'class'=>'form-control', 'id'=>'payment_data_paypal_address')) }} +
Hinweis: Bei einer Auszahlung über PayPal fallen Gebühren an!
+ +
+
+
+
+ +
+
+
+
+ Steuerdaten +
+ +
+
ID#{{__('Re.Nr.')}}{{__('Rechnung')}} {{__('Vorname')}} {{__('Nachname') }} {{__('E-Mail') }} {{__('Betrag') }} {{__('Datum') }}{{__('Order')}} {{__('Status')}}{{__('Rechnung')}}{{__('Order')}}
{{ trans('payment.'.$user_pay_credit->message) }} @if($user_pay_credit->shopping_order_id) - + @endif