You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					112 lines
				
				4.9 KiB
			
		
		
			
		
	
	
					112 lines
				
				4.9 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace App\Http\Controllers\Vendor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use App\Models\Expense;
							 | 
						||
| 
								 | 
							
								use Illuminate\Http\Request;
							 | 
						||
| 
								 | 
							
								use App\CentralLogics\Helpers;
							 | 
						||
| 
								 | 
							
								use App\Http\Controllers\Controller;
							 | 
						||
| 
								 | 
							
								use Rap2hpoutre\FastExcel\FastExcel;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ReportController extends Controller
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function set_date(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        session()->put('from_date', date('Y-m-d', strtotime($request['from'])));
							 | 
						||
| 
								 | 
							
								        session()->put('to_date', date('Y-m-d', strtotime($request['to'])));
							 | 
						||
| 
								 | 
							
								        return back();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function expense_report(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $from =  null;
							 | 
						||
| 
								 | 
							
								        $to = null;
							 | 
						||
| 
								 | 
							
								        $filter = $request->query('filter', 'all_time');
							 | 
						||
| 
								 | 
							
								        if($filter == 'custom'){
							 | 
						||
| 
								 | 
							
								            $from = $request->from ?? null;
							 | 
						||
| 
								 | 
							
								            $to = $request->to ?? null;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $key = explode(' ', $request['search']);
							 | 
						||
| 
								 | 
							
								        $expense = Expense::with('order')->where('created_by','vendor')->where('restaurant_id',Helpers::get_restaurant_id())
							 | 
						||
| 
								 | 
							
								        ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) {
							 | 
						||
| 
								 | 
							
								            return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_year', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_month', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_month', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'previous_year', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereYear('created_at', date('Y') - 1);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_week', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when( isset($key), function($query) use($key){
							 | 
						||
| 
								 | 
							
								            $query->where(function ($q) use ($key) {
							 | 
						||
| 
								 | 
							
								                foreach ($key as $value) {
							 | 
						||
| 
								 | 
							
								                    $q->orWhere('type', 'like', "%{$value}%")->orWhere('order_id', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->orderBy('created_at', 'desc')
							 | 
						||
| 
								 | 
							
								        ->paginate(config('default_pagination'))->withQueryString();
							 | 
						||
| 
								 | 
							
								        return view('vendor-views.report.expense-report', compact('expense','from','to','filter'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function expense_export(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $from =  null;
							 | 
						||
| 
								 | 
							
								        $to = null;
							 | 
						||
| 
								 | 
							
								        $filter = $request->query('filter', 'all_time');
							 | 
						||
| 
								 | 
							
								        if($filter == 'custom'){
							 | 
						||
| 
								 | 
							
								            $from = $request->from ?? null;
							 | 
						||
| 
								 | 
							
								            $to = $request->to ?? null;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $key = explode(' ', $request['search']);
							 | 
						||
| 
								 | 
							
								        $expense = Expense::with('order')->where('created_by','vendor')->where('restaurant_id',Helpers::get_restaurant_id())
							 | 
						||
| 
								 | 
							
								        ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) {
							 | 
						||
| 
								 | 
							
								            return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_year', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_month', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_month', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y'));
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'previous_year', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereYear('created_at', date('Y') - 1);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when(isset($filter) && $filter == 'this_week', function ($query) {
							 | 
						||
| 
								 | 
							
								            return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]);
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->when( isset($key), function($query) use($key){
							 | 
						||
| 
								 | 
							
								            $query->where(function ($q) use ($key) {
							 | 
						||
| 
								 | 
							
								                foreach ($key as $value) {
							 | 
						||
| 
								 | 
							
								                    $q->orWhere('type', 'like', "%{$value}%")->orWhere('order_id', 'like', "%{$value}%");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        ->orderBy('created_at', 'desc')
							 | 
						||
| 
								 | 
							
								        ->get();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if ($request->type == 'excel') {
							 | 
						||
| 
								 | 
							
								            return (new FastExcel(Helpers::export_expense_wise_report($expense)))->download('ExpenseReport.xlsx');
							 | 
						||
| 
								 | 
							
								        } elseif ($request->type == 'csv') {
							 | 
						||
| 
								 | 
							
								            return (new FastExcel(Helpers::export_expense_wise_report($expense)))->download('ExpenseReport.csv');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |