| 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/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'));
}
public function options(Request $request) //Category Mian
{
$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];
}
$product = Product::all();
$countProduct = count($product);
$totalDeposit = $countProduct;
$totalWithdraw = 0;
$totalRebate = 0;
$totalMember = 0;
$productCategories = ProductCategory::where('is_main',true)->get();
return view('reports.options', compact('start_date', 'end_date', 'totalDeposit', 'totalWithdraw', 'totalRebate', 'totalMember' , 'productCategories'));
}
public function category(Request $request , $id) //category list
{
$category = ProductCategory::findOrFail($id);
$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];
}
// $products = Product::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"])->whereIn('product_category_id' , $category->IdvsAllSubCategories());
$products = Product::where('is_active' , true)->where('qty' , '>' , 0)->whereIn('product_category_id' , $category->IdvsAllSubCategories());
$search = $request->get('search');
if($search){
$products = $products->where('part_number' , $search)->orderBy('id', 'desc')->paginate($paginate);
}else{
$products = $products->orderBy('id' , 'desc')->paginate($paginate);
}
return view('reports.category_reports', compact('products' , 'category' , 'paginate' , 'end_date' , 'start_date' , 'search'));
}
public function print1(Request $request , $id) // category print
{
$category = ProductCategory::findOrFail($id);
$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];
}
// $products = Product::whereBetween('created_at', [$start_date . " 00:00:00", $end_date . " 23:59:59"])->whereIn('product_category_id' , $category->IdvsAllSubCategories());
$products = Product::where('is_active' , true)->where('qty' , '>' , 0)->whereIn('product_category_id' , $category->IdvsAllSubCategories());
$search = $request->get('search');
if($search){
$products = $products->where('part_number' , $search)->orderBy('id', 'desc')->paginate($paginate);
}else{
$products = $products->orderBy('id' , 'desc')->paginate($paginate);
}
return view('reports.category-print', compact('products' , 'category' , 'paginate' , 'end_date' , 'start_date' , 'search'));
}
public function exportProductCategory(Request $request , $id) // category export
{
return Excel::download(new CategoryProductExport($id , $request->get('start_date') , $request->get('end_date') , $request->get('search') , $request->get('paginate')), 'Product Report.xlsx');
}
/**
* 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'));
}
}