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/SaleReportController.php


<?php

namespace App\Http\Controllers;

use App\Exports\SaleReport2Export;
use App\Exports\SaleReportExport;
use App\Models\Product;
use App\Models\ProductCategory;
use App\Models\Sale;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;

class SaleReportController extends Controller
{
    public function __construct()
    {
        $this->middleware('permission:reports-sale-list' , ['only' => ['index' , 'print' , 'export' , 'show']]);
    }
    public function index(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];
        }

        $search = $request->get('search');
        if(!$start_date || !$search){
            if($start_date){
                $sales = Sale::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
            }

            if($search){
                $sales = Sale::where('part_number' , 'like' , '%' . $search . '%');

            }
        }else{
            $sales = Sale::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"])->where('part_number' , 'like' , '%' . $search . '%');
        }
//        else{
//            $sales= Sale::query();
//        }

        $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);

        // if($product_category_id && $productCategory->fixed_price == false){
        //     $total_sale_profit= $total_sale_price-($total_sale_cost);
        // }else{
        //     $total_sale_profit= $total_sale_price-($total_sale_cost);
        // }
        $total_sale_profit= $total_sale_price-$total_sale_cost;

        return view('sale-reports.index' , 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 print(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::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }

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

        }
//        else{
//            $sales= Sale::query();
//        }

        $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;
        $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('original_wages_in_weight');

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

        $sales = $sales->orderBy('id' , 'desc')->paginate($paginate);

        // if($product_category_id && $productCategory->fixed_price == false){
        //     $total_sale_profit= $total_sale_price-$total_sale_cost;
        // }else{
        //     $total_sale_profit= $total_sale_price-$total_sale_cost-$total_sale_original_wages_in_weight;
        // }
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('sale-reports.print' , 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_sale_original_wages_in_weight' , 'productCategory' , 'check_fixed_price'));
    }




    public function export(Request $request)
    {
        return Excel::download(new SaleReportExport($request->get('search'),$request->get('start_date'),$request->get('end_date'),$request->get('product_category_id')),'SaleReport.xlsx');
    }

    public function show(Request $request , $id)
    {
        $search = $request->get('search');
        $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];
        }
        $sale = Sale::find($id);
        if(!$sale->purity_upgrade_to){
            $productCategory = ProductCategory::query();
            $productCategory->name = $sale->productCategory->name;
        }else{
            $productCategory = ProductCategory::where('purity_level' , $sale->purity_upgrade_to)->first();
        }
        if($sale->selling_purity){
            $productCategory->name = $sale->productCategoryNameSelling();
        }
        if(!$sale->user || !$sale){
            abort(404);
        }
        return view('sale-reports.show' , compact('sale'   , 'search' , 'start_date' , 'end_date' , 'productCategory'));
    }

    public function print_total_category(Request $request)
    {
        $ids = explode(',',$request->get('past_sale_ids'));
        $ids = $ids[0];
        $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(!$start_date || !$search){
            if($search){
                $sales = Sale::where('part_number' , 'like' , '%' . $search . '%');

            }

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


        }else{
            $sales = Sale::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"])->where('part_number' , 'like' , '%' . $search . '%');
        }
//        else{
//            $sales= Sale::query();
//        }
//        if($product_category_id){
//            $sales = $sales->where('product_category_id' , $product_category_id);
//            dd($sales->get() , $product_category_id);
//        }
        $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($ids){
            $sales = $sales->where('id' , $ids);
        }

        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();
        // if($product_category_id && $productCategory->fixed_price == false){
        //     $total_sale_profit= $total_sale_price-($total_sale_cost+$total_sale_original_wage);
        // }else{
        //     $total_sale_profit= $total_sale_price-$total_sale_cost;
        // }
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('sale-reports.print-total-category' , 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' , 'ids'));
    }


    // Sale Report 2

    public function index2(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::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }

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

        }
//        else{
//            $sales= Sale::query();
//        }

        $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);

        // if($product_category_id && $productCategory->fixed_price == false){
        //     $total_sale_profit= $total_sale_price-($total_sale_cost+$total_sale_original_wage);
        // }else{
        //     $total_sale_profit= $total_sale_price-$total_sale_cost;
        // }
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('sale-reports2.index2' , 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 print2(Request $request)
    {
        $paginate = $request->get('paginate')??25;
        $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::where('part_number' , 'like' , '%' . $search . '%');
        }else{
            $sales= Sale::query();
        }
        if($start_date){
            $sales =$sales->whereBetween('created_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());
        }
        $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');

        $sales4 = Clone $sales;
        $total_sale_original_wage = $sales4->sum('original_wages');

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

        // $sales = $sales->orderBy('id' , 'desc')->paginate($paginate);
        $sales = $sales->orderBy('id' , 'desc')->get();

        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('sale-reports2.print2' , compact('sales' , 'start_date' , 'end_date' , 'search' , 'paginate','total_sale_price','total_sale_cost','total_sale_wage','total_sale_original_wage','total_sale_discount','total_sale_profit'));
    }
    public function export2(Request $request)
    {
        return Excel::download(new SaleReport2Export($request->get('search'),$request->get('start_date'),$request->get('end_date'),$request->get('product_category_id')),'SaleReport.xlsx');
    }

    public function show2(Request $request , $id)
    {
        $search = $request->get('search');
        $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];
        }
        $sale = Sale::find($id);
        if(!$sale->purity_upgrade_to){
            $productCategory = ProductCategory::query();
            $productCategory->name = $sale->productCategory->name;
        }else{
            $productCategory = ProductCategory::where('purity_level' , $sale->purity_upgrade_to)->first();
        }
        if($sale->selling_purity){
            $productCategory->name = $sale->productCategoryNameSelling();
        }
        if(!$sale->user || !$sale){
            abort(404);
        }
        return view('sale-reports2.show' , compact('sale'   , 'search' , 'start_date' , 'end_date' , 'productCategory'));
    }

    public function print_total_category2(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::where('part_number' , 'like' , '%' . $search . '%');
        }else{
            $sales = Sale::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"]);
        }
//        else{
//            $sales= Sale::query();
//        }
//        if($product_category_id){
//            $sales = $sales->where('product_category_id' , $product_category_id);
//            dd($sales->get() , $product_category_id);
//        }
        $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();
        // if($product_category_id && $productCategory->fixed_price == false){
        //     $total_sale_profit= $total_sale_price-($total_sale_cost+$total_sale_original_wage);
        // }else{
        //     $total_sale_profit= $total_sale_price-$total_sale_cost;
        // }
        $total_sale_profit= $total_sale_price-$total_sale_cost;
        return view('sale-reports2.print-total-category-2' , 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'));
    }

}

© KUJUNTI.ID