/home/techb158/dev.balacoffee.com/app/Http/Controllers
NameSizeModeActions
Auth/-0755rm
hrm/-0755rm
AdjustmentController.php319350644editdlrm
AuthController.php17610644editdlrm
BaseController.php31830644editdlrm
BrandsController.php58040644editdlrm
CategorieController.php36250644editdlrm
CategoryExpenseController.php54490644editdlrm
ClientController.php84670644editdlrm
Controller.php3740644editdlrm
CurrencyController.php40350644editdlrm
ExpensesController.php126700644editdlrm
HomeController.php4950644editdlrm
PasswordResetController.php38950644editdlrm
PaymentPurchaseReturnsController.php146500644editdlrm
PaymentPurchasesController.php141380644editdlrm
PaymentSaleReturnsController.php143030644editdlrm
PaymentSalesController.php217990644editdlrm
PermissionsController.php65310644editdlrm
PosController.php166510644editdlrm
ProductsController.php485200644editdlrm
ProvidersController.php72790644editdlrm
PurchasesController.php472790644editdlrm
PurchasesReturnController.php483660644editdlrm
QuotationsController.php314620644editdlrm
ReportController.php1493230644editdlrm
SalesController.php644200644editdlrm
SalesReturnController.php470940644editdlrm
SettingsController.php123540644editdlrm
SetupController.php87700644editdlrm
ShipmentController.php76330644editdlrm
TestDbController.php31560644editdlrm
TransferController.php545740644editdlrm
UnitsController.php61620644editdlrm
UpdateController.php20640644editdlrm
UserController.php131670644editdlrm
WarehouseController.php64270644editdlrm
Edit: /home/techb158/dev.balacoffee.com/app/Http/Controllers/AdjustmentController.php (31935B)
authorizeForUser($request->user('api'), 'view', Adjustment::class); $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); // How many items do you want to display. $perPage = $request->limit; $pageStart = \Request::get('page', 1); // Start displaying items from this number; $offSet = ($pageStart * $perPage) - $perPage; $order = $request->SortField; $dir = $request->SortType; $helpers = new helpers(); // Filter fields With Params to retrieve $columns = array(0 => 'Ref', 1 => 'warehouse_id', 2 => 'date'); $param = array(0 => 'like', 1 => '=', 2 => '='); $data = array(); // Check If User Has Permission View All Records $Adjustments = Adjustment::with('warehouse') ->where('deleted_at', '=', null) ->where(function ($query) use ($view_records) { if (!$view_records) { return $query->where('user_id', '=', Auth::user()->id); } }); //Multiple Filter $Filtred = $helpers->filter($Adjustments, $columns, $param, $request) // Search With Multiple Param ->where(function ($query) use ($request) { return $query->when($request->filled('search'), function ($query) use ($request) { return $query->where('Ref', 'LIKE', "%{$request->search}%") ->orWhere(function ($query) use ($request) { return $query->whereHas('warehouse', function ($q) use ($request) { $q->where('name', 'LIKE', "%{$request->search}%"); }); }); }); }); $totalRows = $Filtred->count(); if($perPage == "-1"){ $perPage = $totalRows; } $Adjustments = $Filtred->offset($offSet) ->limit($perPage) ->orderBy($order, $dir) ->get(); foreach ($Adjustments as $Adjustment) { $item['id'] = $Adjustment->id; $item['date'] = $Adjustment->date; $item['Ref'] = $Adjustment->Ref; $item['warehouse_name'] = $Adjustment['warehouse']->name; $item['items'] = $Adjustment->items; $data[] = $item; } //get warehouses assigned to user $user_auth = auth()->user(); if($user_auth->is_all_warehouses){ $warehouses = Warehouse::where('deleted_at', '=', null)->get(['id', 'name']); }else{ $warehouses_id = UserWarehouse::where('user_id', $user_auth->id)->pluck('warehouse_id')->toArray(); $warehouses = Warehouse::where('deleted_at', '=', null)->whereIn('id', $warehouses_id)->get(['id', 'name']); } return response()->json([ 'adjustments' => $data, 'totalRows' => $totalRows, 'warehouses' => $warehouses, ]); } //------------ Store New Adjustement -----------\\ public function store(Request $request) { $this->authorizeForUser($request->user('api'), 'create', Adjustment::class); request()->validate([ 'warehouse_id' => 'required', ]); \DB::transaction(function () use ($request) { $order = new Adjustment; $order->date = $request->date; $order->Ref = $this->getNumberOrder(); $order->warehouse_id = $request->warehouse_id; $order->notes = $request->notes; $order->items = sizeof($request['details']); $order->user_id = Auth::user()->id; $order->save(); $data = $request['details']; $i = 0; foreach ($data as $key => $value) { $orderDetails[] = [ 'adjustment_id' => $order->id, 'quantity' => $value['quantity'], 'product_id' => $value['product_id'], 'product_variant_id' => $value['product_variant_id'], 'type' => $value['type'], ]; if ($value['type'] == "add") { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $order->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $order->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } } else { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $order->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $order->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } } } AdjustmentDetail::insert($orderDetails); }, 10); return response()->json(['success' => true]); } //------------ function show -----------\\ public function show($id){ // } //--------------- Update Adjustment ----------------------\\ public function update(Request $request, $id) { $this->authorizeForUser($request->user('api'), 'update', Adjustment::class); $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); $current_adjustment = Adjustment::findOrFail($id); // Check If User Has Permission view All Records if (!$view_records) { // Check If User->id === Adjustment->id $this->authorizeForUser($request->user('api'), 'check_record', $current_adjustment); } request()->validate([ 'warehouse_id' => 'required', ]); \DB::transaction(function () use ($request, $id, $current_adjustment) { $old_adjustment_details = AdjustmentDetail::where('adjustment_id', $id)->get(); $new_adjustment_details = $request['details']; $length = sizeof($new_adjustment_details); // Get Ids for new Details $new_products_id = []; foreach ($new_adjustment_details as $new_detail) { $new_products_id[] = $new_detail['id']; } $old_products_id = []; // Init Data with old Parametre foreach ($old_adjustment_details as $key => $value) { $old_products_id[] = $value->id; if ($value['type'] == "add") { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } } else { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } } // Delete Detail if (!in_array($old_products_id[$key], $new_products_id)) { $AdjustmentDetail = AdjustmentDetail::findOrFail($value->id); $AdjustmentDetail->delete(); } } // Update Data with New request foreach ($new_adjustment_details as $key => $product_detail) { if ($product_detail['type'] == "add") { if ($product_detail['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $request->warehouse_id) ->where('product_id', $product_detail['product_id']) ->where('product_variant_id', $product_detail['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $product_detail['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $request->warehouse_id) ->where('product_id', $product_detail['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $product_detail['quantity']; $product_warehouse->save(); } } } else { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $request->warehouse_id) ->where('product_id', $product_detail['product_id']) ->where('product_variant_id', $product_detail['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $product_detail['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $request->warehouse_id) ->where('product_id', $product_detail['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $product_detail['quantity']; $product_warehouse->save(); } } } $orderDetails['adjustment_id'] = $id; $orderDetails['quantity'] = $product_detail['quantity']; $orderDetails['product_id'] = $product_detail['product_id']; $orderDetails['product_variant_id'] = $product_detail['product_variant_id']; $orderDetails['type'] = $product_detail['type']; if (!in_array($product_detail['id'], $old_products_id)) { AdjustmentDetail::Create($orderDetails); } else { AdjustmentDetail::where('id', $product_detail['id'])->update($orderDetails); } } $current_adjustment->update([ 'warehouse_id' => $request['warehouse_id'], 'notes' => $request['notes'], 'date' => $request['date'], 'items' => $length, ]); }, 10); return response()->json(['success' => true]); } //------------ Delete Adjustement -----------\\ public function destroy(Request $request, $id) { $this->authorizeForUser($request->user('api'), 'delete', Adjustment::class); \DB::transaction(function () use ($id, $request) { $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); $current_adjustment = Adjustment::findOrFail($id); $old_adjustment_details = AdjustmentDetail::where('adjustment_id', $id)->get(); // Check If User Has Permission view All Records if (!$view_records) { // Check If User->id === current_adjustment->id $this->authorizeForUser($request->user('api'), 'check_record', $current_adjustment); } // Init Data with old Parametre foreach ($old_adjustment_details as $key => $value) { if ($value['type'] == "add") { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } } else { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } } } $current_adjustment->details()->delete(); $current_adjustment->update([ 'deleted_at' => Carbon::now(), ]); }, 10); return response()->json(['success' => true], 200); } //-------------- Delete by selection ---------------\\ public function delete_by_selection(Request $request) { $this->authorizeForUser($request->user('api'), 'delete', Adjustment::class); \DB::transaction(function () use ($request) { $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); $selectedIds = $request->selectedIds; foreach ($selectedIds as $adjustment_id) { // $Adjustment = Adjustment::findOrFail($adjustment_id); $current_adjustment = Adjustment::findOrFail($adjustment_id); $old_adjustment_details = AdjustmentDetail::where('adjustment_id', $adjustment_id)->get(); // Check If User Has Permission view All Records if (!$view_records) { // Check If User->id === Adjustment->id $this->authorizeForUser($request->user('api'), 'check_record', $current_adjustment); } // Init Data with old Parametre foreach ($old_adjustment_details as $key => $value) { if ($value['type'] == "add") { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte -= $value['quantity']; $product_warehouse->save(); } } } else { if ($value['product_variant_id'] !== null) { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->where('product_variant_id', $value['product_variant_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } else { $product_warehouse = product_warehouse::where('deleted_at', '=', null) ->where('warehouse_id', $current_adjustment->warehouse_id) ->where('product_id', $value['product_id']) ->first(); if ($product_warehouse) { $product_warehouse->qte += $value['quantity']; $product_warehouse->save(); } } } } $current_adjustment->details()->delete(); $current_adjustment->update([ 'deleted_at' => Carbon::now(), ]); } }, 10); return response()->json(['success' => true], 200); } //------------ Reference Number of Adjustement -----------\\ public function getNumberOrder() { $last = DB::table('adjustments')->latest('id')->first(); if ($last) { $item = $last->Ref; $nwMsg = explode("_", $item); $inMsg = $nwMsg[1] + 1; $code = $nwMsg[0] . '_' . $inMsg; } else { $code = 'AD_1111'; } return $code; } //---------------- Show Form Create Adjustment ---------------\\ public function create(Request $request) { $this->authorizeForUser($request->user('api'), 'create', Adjustment::class); //get warehouses assigned to user $user_auth = auth()->user(); if($user_auth->is_all_warehouses){ $warehouses = Warehouse::where('deleted_at', '=', null)->get(['id', 'name']); }else{ $warehouses_id = UserWarehouse::where('user_id', $user_auth->id)->pluck('warehouse_id')->toArray(); $warehouses = Warehouse::where('deleted_at', '=', null)->whereIn('id', $warehouses_id)->get(['id', 'name']); } return response()->json(['warehouses' => $warehouses]); } //-------------Show Form Edit Adjustment-----------\\ public function edit(Request $request, $id) { $this->authorizeForUser($request->user('api'), 'update', Adjustment::class); $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); $Adjustment_data = Adjustment::with('details.product') ->where('deleted_at', '=', null) ->findOrFail($id); $details = array(); // Check If User Has Permission view All Records if (!$view_records) { // Check If User->id === Adjustment->id $this->authorizeForUser($request->user('api'), 'check_record', $Adjustment_data); } if ($Adjustment_data->warehouse_id) { if (Warehouse::where('id', $Adjustment_data->warehouse_id) ->where('deleted_at', '=', null) ->first()) { $adjustment['warehouse_id'] = $Adjustment_data->warehouse_id; } else { $adjustment['warehouse_id'] = ''; } } else { $adjustment['warehouse_id'] = ''; } $adjustment['notes'] = $Adjustment_data->notes; $adjustment['date'] = $Adjustment_data->date; $detail_id = 0; foreach ($Adjustment_data['details'] as $detail) { if ($detail->product_variant_id) { $item_product = product_warehouse::where('product_id', $detail->product_id) ->where('deleted_at', '=', null) ->where('product_variant_id', $detail->product_variant_id) ->where('warehouse_id', $Adjustment_data->warehouse_id) ->first(); $productsVariants = ProductVariant::where('product_id', $detail->product_id) ->where('id', $detail->product_variant_id)->first(); $data['id'] = $detail->id; $data['detail_id'] = $detail_id += 1; $data['quantity'] = $detail->quantity; $data['product_id'] = $detail->product_id; $data['product_variant_id'] = $detail->product_variant_id; $data['code'] = $productsVariants->name . '-' . $detail['product']['code']; $data['name'] = $detail['product']['name']; $data['current'] = $item_product ? $item_product->qte : 0; $data['type'] = $detail->type; $data['unit'] = $detail['product']['unit']->ShortName; $item_product ?$data['del'] = 0:$data['del'] = 1; } else { $item_product = product_warehouse::where('product_id', $detail->product_id) ->where('deleted_at', '=', null) ->where('warehouse_id', $Adjustment_data->warehouse_id) ->where('product_variant_id', '=', null) ->first(); $data['id'] = $detail->id; $data['detail_id'] = $detail_id += 1; $data['quantity'] = $detail->quantity; $data['product_id'] = $detail->product_id; $data['product_variant_id'] = null; $data['code'] = $detail['product']['code']; $data['name'] = $detail['product']['name']; $data['current'] = $item_product ? $item_product->qte : 0; $data['type'] = $detail->type; $data['unit'] = $detail['product']['unit']->ShortName; $item_product ?$data['del'] = 0:$data['del'] = 1; } $details[] = $data; } //get warehouses assigned to user $user_auth = auth()->user(); if($user_auth->is_all_warehouses){ $warehouses = Warehouse::where('deleted_at', '=', null)->get(['id', 'name']); }else{ $warehouses_id = UserWarehouse::where('user_id', $user_auth->id)->pluck('warehouse_id')->toArray(); $warehouses = Warehouse::where('deleted_at', '=', null)->whereIn('id', $warehouses_id)->get(['id', 'name']); } return response()->json([ 'details' => $details, 'adjustment' => $adjustment, 'warehouses' => $warehouses, ]); } //---------------- Get Details Adjustment-----------------\\ public function Adjustment_detail(Request $request, $id) { $this->authorizeForUser($request->user('api'), 'view', Adjustment::class); $role = Auth::user()->roles()->first(); $view_records = Role::findOrFail($role->id)->inRole('record_view'); $Adjustment_data = Adjustment::with('details.product.unit') ->where('deleted_at', '=', null) ->findOrFail($id); $details = array(); // Check If User Has Permission view All Records if (!$view_records) { // Check If User->id === Adjustment->id $this->authorizeForUser($request->user('api'), 'check_record', $Adjustment_data); } $Adjustment['Ref'] = $Adjustment_data->Ref; $Adjustment['date'] = $Adjustment_data->date; $Adjustment['note'] = $Adjustment_data->notes; $Adjustment['warehouse'] = $Adjustment_data['warehouse']->name; foreach ($Adjustment_data['details'] as $detail) { if ($detail->product_variant_id) { $productsVariants = ProductVariant::where('product_id', $detail->product_id) ->where('id', $detail->product_variant_id) ->first(); $data['quantity'] = $detail->quantity; $data['code'] = $productsVariants->name . '-' . $detail['product']['code']; $data['name'] = $detail['product']['name']; $data['unit'] = $detail['product']['unit']->ShortName; $data['type'] = $detail->type; } else { $data['quantity'] = $detail->quantity; $data['code'] = $detail['product']['code']; $data['name'] = $detail['product']['name']; $data['type'] = $detail->type; $data['unit'] = $detail['product']['unit']->ShortName; } $details[] = $data; } return response()->json([ 'details' => $details, 'adjustment' => $Adjustment, ]); } //-------------- Export All Adjustments to EXCEL ---------------\\ public function exportExcel(Request $request) { $this->authorizeForUser($request->user('api'), 'view', Adjustment::class); return Excel::download(new AdjustmentsExport, 'List_Adjustments.xlsx'); } }