/
home
/
henzagold
/
server
/
app
/
Http
/
Controllers
/
Adm
/
File Upload :
llllll
Current File: /home/henzagold/server/app/Http/Controllers/Adm/ReportController.php
<?php namespace App\Http\Controllers\Adm; use App\DB\Te\TableEngine; use App\Http\Controllers\Controller; use App\Models\Major\Cash; use App\Models\Customer; use App\Models\Order; use App\Models\OrderItem; use App\Models\Utility; use Illuminate\Http\Request; use Illuminate\Support\Arr; use Illuminate\Support\Carbon; use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithStrictNullComparison; use Maatwebsite\Excel\Events\AfterSheet; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Log; use Morilog\Jalali\Jalalian; use Psy\Util\Json; class Export implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents,WithStrictNullComparison { public function __construct($export,$cols=[]) { $this->export = $export; //$this->show = array_keys($cols); $this->head = $cols; } /** * @return \Illuminate\Support\Collection */ public function collection() { /* return $collection = collect([ (object) [ 'website' => 'twitter', 'url' => 'twitter.com' ], (object) [ 'website' => 'google', 'url' => 'google.com' ] ]);*/ //return OrderItem::all(); return $this->export; } public function registerEvents(): array { return [ AfterSheet::class => function (AfterSheet $event) { $event->sheet->getDelegate()->setRightToLeft(true); }, ]; } /** * @inheritDoc */ public function headings(): array { return $this->head; } } class ReportController extends Controller { public function getOrderItemWithDetails(Request $request){ // Log::info('test'); /* $page=1; $records = OrderItem::with(['order'=>function($query){ return $query->with(['customer','parent','cashe'])->select(['*',Order::$SELECT_CAJ]); }])->orderBy('id','desc'); TableEngine::create($records,$request->all()) ->initSearch(['name','mobile']) ->select([ '*', ])->export($records); return response()->json($records);*/ $cols=['کد آیتم','نام محصول','کد محصول','عنوان تنوع','وزن خام تحویل مشتری','وزن نهایی با درصد', 'تعداد','درصد','اجرت ریالی','توضیحات','شماره سفارش','تاریخ ثبت ','تاریخ','سال','ماه','روز', 'ساعت','شماره سند','نوع سند','میزان پول','میزان گرم','وضعیت سند','نام مشتری','نام خانوادگی مشتری','نام و نام خانوادگی مشتری', 'کارشناس فروش','شماره موبایل مشتری','آدرس','تلفن مغازه','بدهکار','بستانکار','بدهی ریالی']; $records = OrderItem::with(['order'=>function($query){ return $query->with(['customer','parent'])->select(['*',Order::$SELECT_CAJ]); }])->orderBy('id','desc'); if(isset($request->start_date)) { $records=$records->where('created_at','>=',$request->start_date); } if(isset($request->end_date)) { $records=$records->where('created_at','<=',$request->end_date); } $records=$records->get()->toArray(); $export =[]; //order Item foreach($records as $item) { $order=$item['order']; $customer=$order['customer']; $parent=$order['parent']; $order_date =Jalalian::forge($order['created_at']); if($item['qty']==0){ $w=$item['w']; }else { $w=Utility::round($item['w']/$item['qty']); } for($i=0;$i<$item['qty'];$i++) { $export[]=(object) [ 'کد آیتم'=>$item['id'], 'نام محصول'=>$item['product_title'], 'کد محصول'=>$item['product_id'], 'عنوان تنوع'=>$item['variant_title'], 'وزن خام تحویل مشتری'=>$item['rash_weight'], 'وزن نهایی با درصد'=>$w, 'تعداد'=>1, 'درصد'=>$item['percent'], 'اجرت ریالی'=>$item['rial_pay'], 'توضیحات'=>$item['note'], 'شماره سفارش'=>$item['order_id'], 'تاریخ ثبت'=>$order['caj'], 'تاریخ'=>$order_date->format('Y/m/d'), 'سال'=>$order_date->format('Y'), 'ماه'=>$order_date->format('m'), 'روز'=>$order_date->format('d'), 'ساعت'=>$order['time'], 'شماره سند'=>null, 'نوع سند'=>null, 'میزان پول'=>null, 'میزان گرم'=>null, 'وضعیت سند'=>null, 'نام مشتری'=>$customer['fname'], 'نام خانوادگی مشتری'=>$customer['lname'], 'نام و نام خانوادگی مشتری'=>$customer['name'], 'کارشناس فروش'=>$parent['name'] ?? null, 'شماره موبایل مشتری'=>$customer['mobile'], 'آدرس'=>$customer['address'], 'تلفن مغازه'=>$customer['phone'], 'بدهکار'=>$w, 'بستانکار'=>0, 'بدهی ریالی'=>$item['rial_pay'], ]; } } //cash $records = Cash::with(['customer'])->select(['*',Cash::$SELECT_CAJ,Cash::$SELECT_TYPE_STR]);//->get()->toArray(); if(isset($request->start_date)) { $records=$records->where('created_at','>=',$request->start_date); } if(isset($request->end_date)) { $records=$records->where('created_at','<=',$request->end_date); } $records=$records->get()->toArray(); foreach ($records as $item) { $cash_date =Jalalian::forge($item['created_at']); $customer=$item['customer']; $export[]= (object)[ 'کد آیتم'=>null, 'نام محصول'=>null, 'کد محصول'=>null, 'عنوان تنوع'=>null, 'وزن خام تحویل مشتری'=>null, 'وزن نهایی با درصد'=>null, 'تعداد'=>null, 'درصد'=>null, 'اجرت ریالی'=>null, 'توضیحات'=>null, 'شماره سفارش'=>$item['order_id'], 'تاریخ ثبت'=>$item['caj'], 'تاریخ'=>$cash_date->format('Y/m/d'), 'سال'=>$cash_date->format('Y'), 'ماه'=>$cash_date->format('m'), 'روز'=>$cash_date->format('d'), 'ساعت'=>$item['time'], 'شماره سند'=>$item['id'], 'نوع سند'=>$item['type_str'], 'میزان پول'=>$item['type']==3 || $item['type']==4 ? $item['price'] : 0, 'میزان گرم'=>$item['type']!=3 || $item['type']!=4 ? $item['value'] : 0, 'وضعیت سند'=>$item['confirmed']==true ? 'تایید شده' : 'تایید نشده', 'نام مشتری'=>$customer['fname'], 'نام خانوادگی مشتری'=>$customer['lname'], 'نام و نام خانوادگی مشتری'=>$customer['name'], 'کارشناس فروش'=>null, 'شماره موبایل مشتری'=>$customer['mobile'], 'آدرس'=>$customer['address'], 'تلفن مغازه'=>$customer['phone'], 'بدهکار'=>0, 'بستانکار'=>$item['type']!=9 ? $item['value'] : 0, 'بدهی ریالی'=>0, ]; } $collection = collect($export); $file_name='report/'.md5(time()).'.xlsx'; //return Excel::download(new Export($collection,$cols), 'users.xlsx'); Excel::store(new Export($collection,$cols),$file_name); $url= 'https://henzagold.com/oapi/storage/'.$file_name; return response()->json(['url'=>$url]); /*$collection = collect([ (object) [ 'website' => 'twitter', 'url' => 'twitter.com' ], (object) [ 'website' => 'google', 'url' => 'google.com' ] ]);*/ } }
Copyright ©2k19 -
Hexid
|
Tex7ure