middleware('admin'); } public function index() { $this->setFilterVars(); $data = [ 'filter_months' => HTMLHelper::getTransMonths(), 'filter_years' => HTMLHelper::getYearRange(2022), ]; return view('admin.payment.salesvolume', $data); } public function download(){ /* EXCEL EXPORT function */ /* if(Request::get('action') === "exportfull_paid"){ return $this->exportFullList(1); } if(Request::get('action') === "exportfull_unpaid"){ return $this->exportFullList(0); } */ if(Request::get('action') === "exportfull_paid_invoice"){ return $this->exportFullListInvoice(); } if(Request::get('action') === "export"){ return $this->exportKompaktListInvoice(); } } private function setFilterVars(){ if(!session('payment_sales_vol_filter_month')){ session(['payment_sales_vol_filter_month' => intval(date('m'))]); } if(!session('payment_sales_vol_filter_year')){ session(['payment_sales_vol_filter_year' => intval(date('Y'))]); } if(Request::get('payment_sales_vol_filter_month')){ session(['payment_sales_vol_filter_month' => Request::get('payment_sales_vol_filter_month')]); } if(Request::get('payment_sales_vol_filter_year')){ session(['payment_sales_vol_filter_year' => Request::get('payment_sales_vol_filter_year')]); } } private function exportKompaktListInvoice(){ $objects = $this->initKompaktList(); $columns = []; $filename = "mivita-absatzmengen-kompakt".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export"; $headers = array( '#', 'Produkt', 'Artikelnummer', 'Menge', ); if($objects){ foreach ($objects as $key => $obj){ $columns[] = array( 'id' => $key, 'name' => $obj['name'], 'number' => $obj['number'], 'value' => $obj['value'], ); } } return Excel::download(new UserTeamExport($columns, $headers), $filename.'.xls'); } private function exportFullListInvoice(){ $this->setFilterVars(); $UserInvoices = UserInvoice::with('shopping_order')->with('shopping_order.shopping_user')->select('user_invoices.*') ->where('user_invoices.month', '=', session('payment_sales_vol_filter_month')) ->where('user_invoices.year', '=', session('payment_sales_vol_filter_year')) ->get(); $headers = array('Rechnungsnummer','Datum', 'EMail', 'Zahlung', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Summe', 'Kompensation'); $columns = []; $hasSOID = []; $total_value = []; foreach($UserInvoices as $UserInvoice){ if($UserInvoice->shopping_order){ $ShoppingOrder = $UserInvoice->shopping_order; $object = []; $object['Rechnungsnummer'] = $UserInvoice->full_number; $object['Datum'] = $UserInvoice->date; $object['EMail'] = $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->billing_email : 'n/a'; $object['Zahlung'] = $ShoppingOrder->getPaymentForType(); if($ShoppingOrder->payment_for === 5){ //homeparty if($ShoppingOrder->homeparty){ foreach($ShoppingOrder->homeparty->homeparty_order_items as $homeparty_item){ $total_value[$homeparty_item->product_id] = isset($total_value[$homeparty_item->product_id]) ? $total_value[$homeparty_item->product_id] + $homeparty_item->qty : $homeparty_item->qty; $object['ProduktNummer'] = $homeparty_item->product ? $homeparty_item->product->number : "n/a"; $object['ProduktName'] = $homeparty_item->product ? $homeparty_item->product->name : "n/a"; $object['Anzahl'] = $homeparty_item->qty; $object['Summe'] = $total_value[$homeparty_item->product_id]; $object['Kompensation'] = ''; $columns[] = $object; } } }elseif($ShoppingOrder->payment_for === 8){ //collective_invoice if($ShoppingOrder->shopping_collect_order){ foreach($ShoppingOrder->shopping_collect_order->shop_items as $shop_item){ $total_value[$shop_item['pid']] = isset($total_value[$shop_item['pid']]) ? $total_value[$shop_item['pid']] + $shop_item['qty'] : $shop_item['qty']; $object['ProduktNummer'] = $shop_item['number']; $object['ProduktName'] = $shop_item['name']; $object['Anzahl'] = $shop_item['qty']; $object['Summe'] = $total_value[$shop_item['pid']]; $object['Kompensation'] = ''; $columns[] = $object; } } }else{ if($ShoppingOrder->shopping_order_items){ foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){ $total_value[$shopping_order_item->product_id] = isset($total_value[$shopping_order_item->product_id]) ? $total_value[$shopping_order_item->product_id] + $shopping_order_item->qty : $shopping_order_item->qty; $object['ProduktNummer'] = $shopping_order_item->product ? $shopping_order_item->product->number : "n/a"; $object['ProduktName'] = $shopping_order_item->product ? $shopping_order_item->product->name : "n/a"; $object['Anzahl'] = $shopping_order_item->qty; $object['Summe'] = $total_value[$shopping_order_item->product_id]; $object['Kompensation'] = ($shopping_order_item->comp ? $shopping_order_item->comp : ''); $columns[] = $object; } } } $hasSOID[] = $ShoppingOrder->id; } } $filename = "mivita-absatzmengen-voll-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export"; return Excel::download(new xExport($columns, $headers), $filename.'.xls'); } private function initKompaktList() { $this->setFilterVars(); $UserInvoices = UserInvoice::with('shopping_order')->with('shopping_order.shopping_user')->select('user_invoices.*') ->where('user_invoices.month', '=', session('payment_sales_vol_filter_month')) ->where('user_invoices.year', '=', session('payment_sales_vol_filter_year')) ->get(); $objects = []; foreach($UserInvoices as $UserInvoice){ if($UserInvoice->shopping_order){ $ShoppingOrder = $UserInvoice->shopping_order; if($ShoppingOrder->payment_for === 5){ //homeparty if($ShoppingOrder->homeparty){ foreach($ShoppingOrder->homeparty->homeparty_order_items as $homeparty_item){ if(isset($objects[$homeparty_item->product_id])){ $value = intval($objects[$homeparty_item->product_id]['value'] + $homeparty_item->qty); $objects[$homeparty_item->product_id]['value'] = $value; }else{ $objects[$homeparty_item->product_id] = [ 'name' => $homeparty_item->product ? $homeparty_item->product->name : "n/a ".$homeparty_item->product_id, 'number' => $homeparty_item->product ? $homeparty_item->product->number : "n/a ".$homeparty_item->product_id, 'value' => $homeparty_item->qty ]; } } } }elseif($ShoppingOrder->payment_for === 8){ //collective_invoice if($ShoppingOrder->shopping_collect_order){ foreach($ShoppingOrder->shopping_collect_order->shop_items as $shop_item){ if(isset($objects[$shop_item['pid']])){ $value = intval($objects[$shop_item['pid']]['value'] + $shop_item['qty']); $objects[$shop_item['pid']]['value'] = $value; }else{ $objects[$shop_item['pid']] = [ 'name' => $shop_item['name'], 'number' => $shop_item['number'], 'value' => $shop_item['qty'] ]; } } } }else{ if($ShoppingOrder->shopping_order_items){ foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){ if(isset($objects[$shopping_order_item->product_id])){ $value = intval($objects[$shopping_order_item->product_id]['value'] + $shopping_order_item->qty); $objects[$shopping_order_item->product_id]['value'] = $value; }else{ $objects[$shopping_order_item->product_id] = [ 'name' => $shopping_order_item->product ? $shopping_order_item->product->name : "n/a ".$shopping_order_item->product_id, 'number' => $shopping_order_item->product ? $shopping_order_item->product->number : "n/a ".$shopping_order_item->product_id, 'value' => $shopping_order_item->qty ]; } } } } $hasSOID[] = $ShoppingOrder->id; } } return $objects; } public function datatable(){ /*$collect = collect([ ['id' => 1, 'name' => 'John', 'number'=>92012, 'value'=>123], ['id' => 2, 'name' => 'Jane', 'number'=>92012, 'value'=>123], ['id' => 3, 'name' => 'James', 'number'=>92012, 'value'=>123], ]);*/ $objects = $this->initKompaktList(); $collection = collect(); if($objects){ foreach($objects as $key => $obj){ $collection->push([ 'id' => $key, 'name' => $obj['name'], 'number' => $obj['number'], 'value' => $obj['value'], ]); } } return \DataTables::of($collection)->toJson(); } /* //Auswertung nach ShoppingOrder //nach Datum created_at wann die Bestellung erstellt wurde //Ist nicht das Datum der Rechnung, da hier teilweise die Sammelrechnungen oder Zahlungen erst in nächsten Monat erfolgen public function exportFullList($paid = 1){ $date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d H:i:s'); $date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d H:i:s'); $ShoppingOrders = ShoppingOrder::where('paid', $paid)->where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get(); $txActions = ['prev' => 'keine Zahlung', 'appointed' => 'offen', 'failed' => 'abbruch', 'paid' => 'bezahlt']; $headers = array('ID', 'Zahlung', 'Datum', 'EMail', 'ProduktID', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Notiz', 'Gesamt'); $objects = []; $columns = []; $hasSOID = []; foreach($ShoppingOrders as $ShoppingOrder){ foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){ $value = ""; if($shopping_order_item->product){ if(isset($objects[$shopping_order_item->product->id])){ $value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty); $objects[$shopping_order_item->product->id]['value'] = $value; }else{ $objects[$shopping_order_item->product->id] = [ 'name' => $shopping_order_item->product->name, 'number' => $shopping_order_item->product->number, 'value' => $shopping_order_item->qty ]; $value = $shopping_order_item->qty; } } $object = []; if(in_array($ShoppingOrder->id, $hasSOID)){ $object['ID'] = ''; $object['EMail'] = ''; $object['Zahlung'] = ''; $object['Datum'] = ''; }else{ $object['ID'] = $ShoppingOrder->id; $object['EMail'] = $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->billing_email : 'n/a'; $object['Zahlung'] = isset($txActions[$ShoppingOrder->txaction]) ? $txActions[$ShoppingOrder->txaction] : $ShoppingOrder->txaction; $object['Datum'] = $ShoppingOrder->created_at->format('d.m.Y'); } $object['ProduktID'] = $shopping_order_item->product_id; $object['ProduktNummer'] = $shopping_order_item->product ? $shopping_order_item->product->number : "n/a"; $object['ProduktName'] = $shopping_order_item->product ? $shopping_order_item->product->name : "n/a"; $object['Anzahl'] = $shopping_order_item->qty; $object['Notiz'] = ($shopping_order_item->comp ? 'Compensation '.$shopping_order_item->comp : '') . ($shopping_order_item->shopping_collect_order_id ? 'Sammelbestellung '.$shopping_order_item->shopping_collect_order_id : ''); $object['Gesamt'] = $value; $columns[] = $object; $hasSOID[] = $ShoppingOrder->id; } } if($paid){ $filename = "mivita-absatzmengen-full-paid-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export"; }else{ $filename = "mivita-absatzmengen-full-unpaid-".session('payment_sales_vol_filter_month').'_'.session('payment_sales_vol_filter_year')."-export"; } return Excel::download(new xExport($columns, $headers), $filename.'.xls'); //CSV EXPORT function $headers = array( "Content-type" => "text/csv", "Content-Disposition" => "attachment; filename=$fileName", "Pragma" => "no-cache", "Cache-Control" => "must-revalidate, post-check=0, pre-check=0", "Expires" => "0" ); $header = array('ID', 'Zahlung', 'Datum', 'EMail', 'ProduktID', 'ProduktNummer', 'ProduktName', 'Anzahl', 'Notiz', 'Gesamt'); $callback = function() use($columns, $header) { $file = fopen('php://output', 'w'); fputcsv($file, $header); $row = []; foreach ($columns as $row) { fputcsv($file, $row); } fclose($file); }; return response()->stream($callback, 200, $headers); } */ /* //alte Funktion auswerung nach ShoppingOrder private function testCheckFunction(){ //$date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d'); //$date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d'); $date_start = Carbon::parse('01.01.2024')->format('Y-m-d H:i:s'); $date_end = Carbon::parse('01.01.2024')->endOfMonth()->format('Y-m-d H:i:s'); dump($date_start); dump($date_end); $ShoppingOrders = ShoppingOrder::where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get(); $objects = []; $counter = 0; foreach($ShoppingOrders as $ShoppingOrder){ foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){ if($shopping_order_item->product){ if($shopping_order_item->product->id === 122){ //dump($shopping_order_item->qty); //$counter += $shopping_order_item->qty; if(isset($objects[$shopping_order_item->product->id])){ $value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty); $objects[$shopping_order_item->product->id]['value'] = $value; }else{ $objects[$shopping_order_item->product->id] = [ 'name' => $shopping_order_item->product->name, 'number' => $shopping_order_item->product->number, 'value' => $shopping_order_item->qty ]; } } } } } $ShoppingOrderItems = ShoppingOrderItem::whereProductId(122)->whereBetween('created_at', [$date_start, $date_end])->get(); $counter = 0; foreach($ShoppingOrderItems as $ShoppingOrderItem){ $counter += $ShoppingOrderItem->qty; dump($ShoppingOrderItem->id); } // dump($objects); dump($counter); dd("OKAY"); }*/ /* // alte Funktion auswerung nach ShoppingOrder private function initSearch($returnColl = true) { $this->setFilterVars(); $date_start = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->format('Y-m-d H:i:s'); $date_end = Carbon::parse('01.'.session('payment_sales_vol_filter_month').'.'.session('payment_sales_vol_filter_year'))->endOfMonth()->format('Y-m-d H:i:s'); $ShoppingOrders = ShoppingOrder::where('paid', 1)->where('mode', 'live')->whereBetween('created_at', [$date_start, $date_end])->get(); $objects = []; foreach($ShoppingOrders as $ShoppingOrder){ foreach($ShoppingOrder->shopping_order_items as $shopping_order_item){ if($shopping_order_item->product){ if(isset($objects[$shopping_order_item->product->id])){ $value = intval($objects[$shopping_order_item->product->id]['value'] + $shopping_order_item->qty); $objects[$shopping_order_item->product->id]['value'] = $value; }else{ $objects[$shopping_order_item->product->id] = [ 'name' => $shopping_order_item->product->name, 'number' => $shopping_order_item->product->number, 'value' => $shopping_order_item->qty ]; } } } } if($returnColl){ $collection = collect(); foreach($objects as $key => $obj){ $collection->push([ 'id' => $key, 'name' => $obj['name'], 'number' => $obj['number'], 'value' => $obj['value'], ]); } return $collection; } return $objects; } */ }