Path : /var/www/html/jewelry-pos/app/Http/Controllers/ |
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/SaleController.php |
<?php namespace App\Http\Controllers; use App\Models\ProductCategory; use App\Models\Sale; use App\Models\Member; use App\Models\Product; use App\Models\Setting; use App\Models\Currency; use App\Exports\SaleExport; use Illuminate\Http\Request; use App\Models\ProductAttribute; use App\Models\QtyHistory; use App\Models\SellProductAttribute; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Facades\Excel; use Intervention\Image\Facades\Image; class SaleController extends Controller { /** * Display a listing of the resource. */ public function __construct() { // CHANGE DATE $this->middleware('permission:sale-list' , ['only' => ['index' , 'list','changeDate']]); $this->middleware('permission:sale-edit' , ['only' => ['edit' , 'update','changeDate']]); $this->middleware('permission:sale-delete' , ['only' => ['destroy']]); } public function index(Request $request) { $paginate = $request->paginate??25; $productCategories = ProductCategory::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::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()); } $productCategories1 = clone $productCategories; $main_categories = $productCategories1->where('parent_id' , null); $productCategories2 = clone $productCategories; $child_categories = $productCategories2->where('parent_id' , '<>' , ''); $sales = $sales->orderBy('id' , 'desc')->paginate($paginate); return view('sales.index' , compact('sales', 'product_category_id' , 'productCategories' , 'main_categories' , 'child_categories' , 'start_date' , 'end_date' , 'search' , 'paginate')); } public function print(Request $request) { $paginate = $request->paginate??25; $productCategories = ProductCategory::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::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()); } $productCategories1 = clone $productCategories; $main_categories = $productCategories1->where('parent_id' , null); $productCategories2 = clone $productCategories; $child_categories = $productCategories2->where('parent_id' , '<>' , ''); $sales = $sales->orderBy('id' , 'desc')->get(); $cashie = Auth::user()->name; return view('sales.list' , compact('sales' , 'cashie' , 'start_date' , 'end_date' , 'search')); } /** * Show the form for creating a new resource. */ public function create() { $sales = Sale::all(); return view('sales.create' , compact('sales')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $this->validate($request, [ 'cost' => 'required', 'name' => 'required', 'weight' => 'required' ]); $save_url = ''; if ($request->hasFile('image')) { $image = $request->file('image'); $name_gen = hexdec(uniqid()) . '.' . $image->getClientOriginalExtension(); //hexdec generate image Image::make($image)->resize(800, 800, function ($constraint) { $constraint->aspectRatio(); })->save('images/' . $name_gen); $save_url = 'images/' . $name_gen; } $part_number = random_int(000000000 , 99999999); $invoice_no = random_int(000000000,999999990); Sale::create([ 'product_id' => $request->product_id, 'image' => $save_url, 'part_number' => $part_number, 'name' => $request->name, 'cost' => $request->cost, 'weight' => $request->weight, 'user_id' => Auth::user()->id, 'product_category_id' => $request->product_category_id, 'invoice_no' => $invoice_no, 'wages' => $request->wages, 'qty' => $request->qty, 'diamond_size' => $request->diamond_size??'', ]); return redirect()->route('sales.index')->with('success', __('message.sales') . " " . __('message.create successfully')); } /** * Display the specified resource. */ public function show(string $id , Request $request) { $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->wages_in_weight || !$sale->original_wages_in_weight){ if($sale->original_wages){ $sale->original_wages_in_weight = $sale->original_wages / ($sale->productCategory->price()); } if($sale->wages){ $sale->wages_in_weight = $sale->wages / ($sale->productCategory->sellingPrice()); } $sale->save(); } if(!$sale->wages || !$sale->original_wages){ if($sale->original_wages_in_weight){ $sale->original_wages = $sale->original_wages_in_weight * ($sale->productCategory->price()); } if($sale->wages_in_weight){ $sale->wages = $sale->wages_in_weight * ($sale->productCategory->sellingPrice()); } $sale->save(); } $cashie = $sale->user??''; if(!$cashie || !$sale){ abort(404); } return view('sales.show' , compact('sale' , 'cashie' , 'search' , 'start_date' , 'end_date' , 'productCategory')); } /** * 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) { $sale = Sale::find($id); $product = $sale->product; if($product->for_sale!=1){ if($sale->weight < $product->weight){ $accessory = Product::where('for_sale' , 0)->where('product_category_id' , $product->product_category_id)->first(); // $weight = $product->weight - $sale->weight; // $accessory->weight = $accessory->weight - $weight; $accessory->weight = $accessory->weight + $sale->weight; // $accessory->description = $accessory->description . ' | ' . $product->part_number . ' : ' . $sale->weight; $accessory->save(); } }else{ $product->qty = $product->qty+$sale->qty; $product->save(); } if($sale){ if($sale->sellProductAttributes){ $sale->sellProductAttributes()->delete(); } $checkQtyHistory = QtyHistory::where('note','like','%#sale_id='.$sale->id)->orderBy('id','desc')->first(); if($checkQtyHistory){ $checkQtyHistory->delete(); } $name_for_accessory = $product->productCategory->name . ' គីឡូ'; $weight_to_cut = $product->weight - $sale->weight; if($weight_to_cut>0){ $accessory_product = Product::where('name' , $name_for_accessory)->where('is_active',true)->first(); if($accessory_product){ $accessory_product->weight = $accessory_product->weight - $weight_to_cut; $accessory_product->save(); } } $sale->delete(); } return redirect()->route('sales.index')->with('success' , __('message.sales') . " " . __('message.deleted successfully')); } public function inactive($id) { Sale::findOrFail($id)->update(['is_active' => 0]); return redirect()->route('sales.index') ->with('success', __('message.sales') . " " . __('message.is deactivated')); } public function active($id) { Sale::findOrFail($id)->update(['is_active' => 1]); return redirect()->route('sales.index') ->with('success', __('message.sales') . " " . __('message.is activated')); } public function export(Request $request) { return Excel::download(new SaleExport($request->get('search'),$request->get('start_date'),$request->get('end_date'),$request->get('paginate')),'Sale.xlsx'); } // public function invoice(Request $request) // { // if(!$request->scan){ // abort(404); // } // $sales = Sale::where('part_number' ,$request->scan)->firstOrfail(); // if($sales){ // return view('pointToSale.scan' , compact('sales')); // } // } public function invoice(Request $request) { $discount = $request->get('discount'); $sale = Sale::findOrFail($request->sale_id); return view('pointToSale.print-invoice' , compact('sale' , 'discount')); } public function buy_back(Request $request , $id) { $sale = Sale::find($id); if($sale){ $request->validate([ 'buy_back_price' => 'required', ]); $sale->update([ 'buy_back_price' => $request->buy_back_price, 'buy_back_note' => $request->note, 'already_buy_back' => true, 'buy_by_user' => Auth::user()->id, 'date_buy_back' => now()->toDateTimeString(), ]); }else{ abort(404); } return redirect()->route('sales.index')->with('success' , __('updated successfully')); } // CHANGE DATE public function changeDate(Request $request){ // dd($request->all()); $sale = Sale::findOrFail($request->sale_id); $datas = explode('-',$request->date); $sale_dates = explode(' ',$sale->created_at); $sale->created_at = $datas[2].'-'.$datas[1].'-'.$datas[0].' '.$sale_dates[1]; $sale->save(); return redirect()->back()->with('success' , __('updated successfully')); } public function updateSaleOriginalInvoice(){ $products = Product::get(); foreach($products as $i => $product){ if($product->original_invoice){ $sale = Sale::where('product_id' , $product->id)->first(); if($sale){ $sale->original_invoice = $product->original_invoice; $sale->save(); } } } return redirect()->route('sales.index')->with('success' , 'sale original invoice updated successfully'); } }