middleware('admin'); } public function users(){ if(Request::get('reset') === 'filter'){ return redirect(route('admin_sales_users')); } $data = [ ]; return view('admin.sales.users', $data); } public function usersDetail($id) { $ShoppingOrder = ShoppingOrder::find($id); if($ShoppingOrder->shipped === 0){ $ShoppingOrder->shipped = 1; $ShoppingOrder->save(); } $data = [ 'shopping_order' => $ShoppingOrder, 'isAdmin' => true, 'isView' => 'sales_user', ]; return view('admin.sales.user_detail', $data); } public function usersStore($id) { die("keine funktion"); $data = [ 'shopping_order' => ShoppingOrder::find($id), 'isAdmin' => true, ]; return view('admin.sales.user_detail', $data); } public function usersDatatable(){ $query = ShoppingOrder::with('shopping_user', 'shopping_payments')->select('shopping_orders.*')->where('shopping_orders.auth_user_id', '!=', NULL); return \DataTables::eloquent($query) ->addColumn('id', function (ShoppingOrder $ShoppingOrder) { return ''; }) ->addColumn('created_at', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->created_at->format("d.m.Y"); }) ->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) { return Payment::getShoppingOrderBadge($ShoppingOrder); }) ->addColumn('total_shipping', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getFormattedTotalShipping()." €"; }) ->addColumn('payment', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getLastShoppingPayment('getPaymentType'); }) ->addColumn('shipped', function (ShoppingOrder $ShoppingOrder) { return ''.$ShoppingOrder->getShippedType().''; }) ->addColumn('payment_for', function (ShoppingOrder $ShoppingOrder) { return Payment::getPaymentForTypeBadge($ShoppingOrder); }) ->addColumn('reference', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getLastShoppingPayment('reference'); }) ->addColumn('orders', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->orders : ''; }) ->orderColumn('id', 'id $1') ->orderColumn('txaction', 'txaction $1') ->orderColumn('payment_for', 'payment_for $1') ->orderColumn('shipped', 'shipped $1') ->orderColumn('total_shipping', 'total_shipping $1') ->rawColumns(['id', 'txaction', 'payment_for', 'shipped']) ->make(true); } public function customers() { if(Request::get('reset') === 'filter'){ set_user_attr('filter_txaction', null); set_user_attr('filter_member_id', null); return redirect(route('admin_sales_customers')); } $filter_members = ShoppingOrder::join('users', 'member_id', '=', 'users.id')->groupBy('member_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get(); //->pluck('email', 'id')->unique()->toArray(); $data = [ 'filter_members' => $filter_members, ]; return view('admin.sales.customers', $data); } public function customersDetail($id) { $ShoppingOrder = ShoppingOrder::find($id); if($ShoppingOrder->shipped === 0){ $ShoppingOrder->shipped = 1; $ShoppingOrder->save(); } $data = [ 'shopping_order' => $ShoppingOrder, 'isAdmin' => true, 'isView' => 'sales_customer', ]; return view('admin.sales.customer_detail', $data); } public function customersStore($id) { $data = Request::all(); $change_member_error = false; if($data['action']==='shopping-order-change-member'){ if(!isset($data['change_member_key']) || $data['change_member_key'] !== config('main.edit_data_pass')){ $change_member_error = "Das Passwort ist falsch."; }else{ //change $shopping_order = ShoppingOrder::findOrFail($data['id']); CustomerPriority::newMemberForOrder($shopping_order, $data['change_member_id'], $data['customer_set_member_for']); \Session()->flash('alert-save', true); return redirect(route('admin_sales_customers_detail', [$shopping_order->id])); } } if($data['action']==='shopping-user-is-like-member'){ if(!isset($data['change_member_key']) || $data['change_member_key'] !== config('main.edit_data_pass')){ \Session()->flash('alert-error', 'Das Passwort ist falsch.'); return redirect($data['back']); }else{ if(!isset($data['is_like_shopping_user_id'])){ \Session()->flash('alert-error', 'Keine Änderung ausgewählt'); return redirect($data['back']); } $shopping_user = ShoppingUser::findOrFail($data['id']); $set_like_shopping_user = ShoppingUser::findOrFail($data['is_like_shopping_user_id']); $send_member_mail = isset($data['send_member_mail']) ? true : false; $change_shopping_user = isset($data['change_shopping_user']) ? true : false; //Mail send in setIsLike CustomerPriority::setIsLike($shopping_user, $set_like_shopping_user, $send_member_mail, $change_shopping_user); \Session()->flash('alert-save', true); return redirect($data['back']); } } $data = [ 'change_member_error' => $change_member_error, 'shopping_order' => ShoppingOrder::find($id), 'isAdmin' => true, 'isView' => 'sales_customer', ]; return view('admin.sales.customer_detail', $data); } public function customersDatatable(){ $query = ShoppingOrder::with('shopping_user')->select('shopping_orders.*')->where('shopping_orders.auth_user_id', NULL); set_user_attr('filter_txaction', Request::get('filter_txaction')); if(Request::get('filter_txaction') != ""){ if(Request::get('filter_txaction') === 'NULL'){ $query->where('txaction', '=', NULL); }else{ $query->where('txaction', '=', Request::get('filter_txaction')); } } set_user_attr('filter_member_id', Request::get('filter_member_id')); if(Request::get('filter_member_id') != ""){ $query->where('member_id', '=', Request::get('filter_member_id')); } return \DataTables::eloquent($query) ->addColumn('id', function (ShoppingOrder $ShoppingOrder) { return ''; }) ->addColumn('created_at', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->created_at->format("d.m.Y"); }) ->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) { return Payment::getShoppingOrderBadge($ShoppingOrder); }) ->addColumn('total_shipping', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getFormattedTotalShipping()." €"; }) ->addColumn('payment', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getLastShoppingPayment('getPaymentType'); }) ->addColumn('shipped', function (ShoppingOrder $ShoppingOrder) { return ''.$ShoppingOrder->getShippedType().''; }) ->addColumn('payment_for', function (ShoppingOrder $ShoppingOrder) { return Payment::getPaymentForTypeBadge($ShoppingOrder); }) ->addColumn('reference', function (ShoppingOrder $ShoppingOrder) { return $ShoppingOrder->getLastShoppingPayment('reference'); }) ->addColumn('member_id', function (ShoppingOrder $ShoppingOrder) { if($ShoppingOrder->member_id) { return $ShoppingOrder->member_id ? '' . $ShoppingOrder->member->getFullName() . '' : ''; } if($ShoppingOrder->shopping_user && $ShoppingOrder->shopping_user->is_like){ return ''; } return ''; }) ->orderColumn('id', 'id $1') ->orderColumn('txaction', 'txaction $1') ->orderColumn('payment_for', 'payment_for $1') ->orderColumn('member_id', 'member_id $1') ->orderColumn('shipped', 'shipped $1') ->orderColumn('total_shipping', 'total_shipping $1') ->rawColumns(['id', 'member_id', 'txaction', 'user_shop_id', 'payment_for', 'shipped']) ->make(true); } public function store(){ $data = Request::all(); if(!isset($data['id'])){ abort(404); } if(isset($data['action'])){ if($data['action'] === 'store_shipped' && isset($data['shipped'])){ $shopping_order = ShoppingOrder::findOrFail($data['id']); $shopping_order->shipped = $data['shipped']; $shopping_order->save(); //handel Promotion Product and credit by storno Payment::handelUserPromotionOrder($shopping_order); Payment::handelUserShopOrder($shopping_order); if($shopping_order->getAPIShippedType() === 'sent' || $shopping_order->getAPIShippedType() === 'close'){ if(!$shopping_order->shipped_at){ $shopping_order->shipped_at = now(); $shopping_order->save(); //is shipped set pending_to if($shopping_order->shopping_order_margin){ if($shopping_order->shopping_order_margin->hasPartnerCommission()){ $days = Setting::getContentBySlug('pending_partner_commissions_in_days'); $days = $days ? $days : 20; $partner_commission_pending_to = $shopping_order->shipped_at; $partner_commission_pending_to->addDays($days); $shopping_order->shopping_order_margin->partner_commission_pending_to = $partner_commission_pending_to; $shopping_order->shopping_order_margin->save(); }else{ $days = Setting::getContentBySlug('pending_order_margins_in_days'); $days = $days ? $days : 20; $margin_pending_to = $shopping_order->shipped_at; $margin_pending_to->addDays($days); $shopping_order->shopping_order_margin->margin_pending_to = $margin_pending_to; $shopping_order->shopping_order_margin->save(); } } } }else{ $shopping_order->shipped_at = null; $shopping_order->save(); if($shopping_order->shopping_order_margin){ //zurücksetzen der pending_to $shopping_order->shopping_order_margin->partner_commission_pending_to = null; $shopping_order->shopping_order_margin->margin_pending_to = null; $shopping_order->shopping_order_margin->save(); } } if($shopping_order->getAPIShippedType() === 'cancel'){ if($shopping_order->shopping_order_margin){ $shopping_order->shopping_order_margin->cancellation = true; $shopping_order->shopping_order_margin->partner_commission_pending_to = null; $shopping_order->shopping_order_margin->margin_pending_to = null; $shopping_order->shopping_order_margin->save(); } }else{ if($shopping_order->shopping_order_margin && $shopping_order->shopping_order_margin->cancellation){ $shopping_order->shopping_order_margin->cancellation = false; $shopping_order->shopping_order_margin->partner_commission_pending_to = null; $shopping_order->shopping_order_margin->margin_pending_to = null; $shopping_order->shopping_order_margin->save(); } } } if($data['action'] === 'store_txaction' && isset($data['txaction']) && isset($data['payment_id'])){ $shopping_order = ShoppingOrder::findOrFail($data['id']); $shopping_payment = ShoppingPayment::findOrFail($data['payment_id']); if($shopping_payment->txaction === $data['txaction']){ return back(); } //shopping_order_margin Bestellung im partner Center if($shopping_order->shopping_order_margin && $shopping_order->shopping_order_margin->from_payment_credit > 0){ $last_UserPayCredit = UserPayCredit::where('shopping_order_id', $shopping_order->id)->whereIn('status', [2, 4])->orderBy('id', 'DESC')->first(); //Status Keine Zahlung, Guthaben zurückführen, wenn status 2 / deduction from payment if($last_UserPayCredit && $data['txaction'] === 'non' && $last_UserPayCredit->status === 2){ Payment::handelUserPayCredits($shopping_order, 'return'); } //Status Zahlung, voher gab es eine Storno, Guthaben abziehen wenn status 4 / return from order if($last_UserPayCredit && $last_UserPayCredit->status === 4 && ($data['txaction'] === 'open' || $data['txaction'] === 'paid')){ Payment::handelUserPayCredits($shopping_order, 'deduction'); } } $payt = PaymentTransaction::create([ 'shopping_payment_id' => $shopping_payment->id, 'request' => 'transaction', 'txid' => 0, 'userid' => 0, 'status' => $shopping_payment->clearingtype, 'transmitted_data' => NULL, 'txaction' => $data['txaction'], 'mode' => $shopping_payment->mode, ]); $shopping_order->txaction = $data['txaction']; $shopping_order->paid = $payt->txaction === 'paid' ? true : false; $shopping_order->save(); $shopping_payment->txaction = $data['txaction']; $shopping_payment->save(); if($payt->status === 'vor' && $payt->txaction === 'paid'){ $send_link = Payment::paymentStatusPaidAction($shopping_order, true); } //handel credit loading by change when by $shopping_order_item->handl if($shopping_order->shopping_user->is_for === 'cr'){ $last_UserPayCredit = UserPayCredit::where('shopping_order_id', $shopping_order->id)->whereIn('status', [7, 8])->orderBy('id', 'DESC')->first(); //Status Keine Zahlung, Guthaben abziehen, wenn status 7 <- wurde aufgeladen if($data['txaction'] === 'non' && $last_UserPayCredit && $last_UserPayCredit->status === 7){ Payment::handelUserPayChargingCredits($shopping_order, 'remove'); } //Status Zahlung, voher gab es eine Storno, Guthaben wieder aufladen, wenn bezahlt wenn status 8 if($last_UserPayCredit && $last_UserPayCredit->status === 8 && $data['txaction'] === 'paid'){ Payment::handelUserPayChargingCredits($shopping_order, 'add'); } } $edata = [ 'mode' => $payt->mode, 'txaction' => $payt->txaction, 'send_link' => false, ]; //TODO can send MAIL Payment::paymentStatusSendMail($shopping_order, $shopping_payment, $edata); } } if(isset($data['back'])){ return redirect($data['back']); } return back(); } public function invoice(){ $data = Request::all(); if(!isset($data['id'])){ abort(404); } if(isset($data['action'])){ if($data['action'] === 'create_invoice'){ $shopping_order = ShoppingOrder::findOrFail($data['id']); $invoice_repo = new InvoiceRepository($shopping_order); if(\App\Services\Invoice::isInvoice($shopping_order)){ $user_invoice = $invoice_repo->update($data); }else{ $user_invoice = $invoice_repo->create($data); } return redirect(route('admin_sales_users_detail', [$shopping_order->id])); } } } }