/
home
/
sjslayjy
/
public_html
/
assets
/
app
/
Http
/
Controllers
/
Upload File
HOME
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\LocalUserMapping; use App\AmcRequest; use App\AmcRequestItem; use App\PtStock; use App\HistoryPtStock; use Auth; use DB; class AmcController extends Controller { public $data; public function get_common() { if (Auth::check()) { $user = Auth::user(); $this->data['userInfo'] = LocalUserMapping::where('LoginID', $user->loginId)->first(); } } public function view_amc_page($id) { $this->get_common(); $amc = AmcRequest::where('id', $id)->first(); if ($amc != null) { $amc_items = DB::table('amc_request_items')->join('spare_parts_masters', 'spare_parts_masters.code', 'amc_request_items.spare_code')->where('amc_request_items.amc_id', $amc->id)->select('amc_request_items.*', 'spare_parts_masters.description')->get(); //dd($amc_items); $this->data = array_merge($this->data, ['amc' => $amc, 'amc_items' => $amc_items]); return view('admin.amc.amc', $this->data); } else { return redirect('admin/all-amc-requests')->with('error', 'Invalid AMC request Id !!'); } } public function all_amc_requests() { $this->get_common(); $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assigned_warehouses->warehouseCode); // dd($warehouses); // DB::enableQueryLog(); $all_amc = AmcRequest::whereIn('warehouse', $warehouses)->orderBy('id', 'desc')->get(); // echo "warehouse "; // dd(DB::getQueryLog($all_amc)); $this->data = array_merge($this->data, ['all_amc' => $all_amc]); return view('admin.amc.all-amc', $this->data); } public function view_amcr_page($id) { $this->get_common(); $amc = AmcRequest::where('id', $id)->first(); if ($amc != null) { $amc_items = DB::table('amc_request_items')->join('spare_parts_masters', 'spare_parts_masters.code', 'amc_request_items.spare_code')->where('amc_request_items.amc_id', $amc->id)->select('amc_request_items.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['amc' => $amc, 'amc_items' => $amc_items]); return view('circle-store.amc.view-amc', $this->data); } else { return redirect('circle-store/my-amc-requests')->with('error', 'Invalid AMC request Id !!'); } } public function get_omc_request() { $this->get_common(); $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.fieldUserCodes') ->where('StoreCoordinatorCircleCodes', $loginId) ->groupBy('fieldUserCodes') ->get(); $this->data = array_merge($this->data, ['assigned_warehouses' => $assigned_warehouses]); return view('circle-store.amc.amc-request', $this->data); } public function my_amc_requests() { $this->get_common(); $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assigned_warehouses->warehouseCode); $current_warehouse = $warehouses[0]; $amc_requests = AmcRequest::where('warehouse', $current_warehouse)->orderBy('id', 'desc')->get(); $this->data = array_merge($this->data, ['amc_requests' => $amc_requests, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.amc.my-amc-requests', $this->data); } public function get_amc_request_of_warehouse(Request $request) { $warehouse = $request->warehouse; $amc_requests = AmcRequest::where('warehouse', $warehouse)->get(); return json_encode(['success' => true, 'amc_requests' => $amc_requests]); } public function amc_request() { $this->get_common(); $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assigned_warehouses->warehouseCode); $circleCodes = $this->data['userInfo']->circleCodes; $current_warehouse = $warehouses[0]; if ($current_warehouse == 'SERPNT') { $customers = DB::table('customer_circle_list')->get(); } else { $customers = DB::table('customer_circle_list')->where('Circle', $circleCodes)->get(); } $this->data = array_merge($this->data, ['assigned_warehouses' => $warehouses, 'customers' => $customers, 'current_warehouse' => $current_warehouse]); return view('circle-store.amc.amc-request', $this->data); } public function get_spare_part_from_pt_stock(Request $request) { $spare_code = $request->code; $warehouse = $request->warehouse; $is_stock = PtStock::where('spare_code', $spare_code)->where('warehouse', $warehouse)->where(function ($q) { $q->where('fresh_qty', '>', 0)->orWhere('repaired_qty', '>', 0); })->count(); if ($is_stock > 0) { $pt_sock = PtStock::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $spare_code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'pt_sock' => $pt_sock]); } else { return json_encode(['success' => false, 'msg' => 'Spare Not In PT Stock.']); } } public function place_amc_request_now(Request $request) { $loginId = Auth::user()->loginId; $items = $request->items; $warehouse = $request->warehouse; $is_valid = true; $sp = ""; $sp_code = ''; foreach ($items as $val) { $ms = $pt_stock = \App\StockInCircleStore::where('warehouse', $request->warehouse)->where('spare_code', $val['code'])->first(); // Rounding inventory quantities to two decimal places $pt_inv_fresh_qty = round(DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $request->warehouse)->where('item_type', 'fresh')->sum('available_qty'), 2); $pt_inv_repaired_qty = round(DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $request->warehouse)->where('item_type', 'repaired')->sum('available_qty'), 2); $pt_inv_faulty_qty = round(DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $request->warehouse)->where('item_type', 'faulty')->sum('available_qty'), 2); if (abs($ms->fresh_qty - $pt_inv_fresh_qty) > 0.01) { // Comparing with a small tolerance $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; $is_valid = false; } if (abs($ms->repaired_qty - $pt_inv_repaired_qty) > 0.01) { $sp_code = $sp_code . ' ' . $val['code'] . ' Repaired'; $is_valid = false; } if (abs($ms->faulty_qty - $pt_inv_faulty_qty) > 0.01) { $sp_code = $sp_code . ' ' . $val['code'] . ' Faulty'; $is_valid = false; } } //end of checking spare in both stocks if ($is_valid == true) { foreach ($items as $val) { $ms = $pt_stock = \App\StockInCircleStore::where('warehouse', $request->warehouse)->where('spare_code', $val['code'])->first(); $suspense_fresh = $val['qty']; $suspense_repaired = $val['rqty']; $suspense_faulty = $val['fqty']; $current_qty = $ms->suspense_qty + $val['qty']; $current_rqty = $ms->suspense_rqty + $val['rqty']; $current_fqty = $ms->suspense_fqty + $val['fqty']; if ($ms) { if ($ms->suspense_qty == 0 && $ms->suspense_rqty == 0 && $ms->suspense_fqty == 0) { // Update existing record $ms->suspense_qty = $suspense_fresh; $ms->suspense_rqty = $suspense_repaired; $ms->suspense_fqty = $suspense_faulty; $ms->save(); } else { // Check if the values are greater than or equal to zero before subtracting if ( $ms->fresh_qty >= $current_qty && $ms->repaired_qty >= $current_rqty && $ms->faulty_qty >= $current_fqty ) { $ms->suspense_qty = $ms->suspense_qty + $val['qty']; $ms->suspense_rqty = $ms->suspense_rqty + $val['rqty']; $ms->suspense_fqty = $ms->suspense_fqty + $val['fqty']; $ms->save(); } else { $msg = 'Number of entered Qty not in your stock!, Available Qty: ' . ($ms->fresh_qty - $ms->suspense_qty) . ' Fresh, ' . ($ms->repaired_qty - $ms->suspense_rqty) . ' Repaired, ' . ($ms->faulty_qty - $ms->suspense_fqty) . ' Faulty, ' . "\n" . 'Hold Qty: ' . $ms->suspense_qty . ' Fresh, ' . $ms->suspense_rqty . ' Repaired, ' . $ms->suspense_fqty . ' Faulty, ' . "\n" . 'Spare Code: ' . $val['code'] . ', Table: (stock_in_circle_store to warehouse_inventory). Waiting for approval !!'; return json_encode(['success' => false, 'msg' => $msg]); } } } else { return json_encode(['success' => false, 'msg' => 'Spare is not in your stock !!']); } if ($ms != null) { if ($ms->fresh_qty < $val['qty'] && $val['qty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Fresh'; break; } if ($ms->repaired_qty < $val['rqty'] && $val['rqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Repaired'; break; } if ($ms->faulty_qty < $val['fqty'] && $val['fqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Fresh'; break; } } if ($is_valid == true) { //Updated on 15/03/24 // $last_value = \App\AmcRequest::where('warehouse', $request->warehouse)->where('session', 2122)->orderBy('id', 'desc')->first(); // if ($last_value != null) { // $no = $last_value->series + 1; // $session = $last_value->session; // } else { // $no = 1; // $session = date('y') . (date('y') + 1); // } $f_date = date('Y').'-03-31'; $curr_date = date('Y-m-d'); if (strtotime($curr_date) <= strtotime($f_date)) { $session = (date('y')-1).date('y'); } else { $session = date('y').(date('y')+1); } $last_value = \App\AmcRequest::where('warehouse',$request->warehouse)->where('session',$session)->orderBy('id','desc')->first(); if($last_value != null){ $no = $last_value->series + 1; //$session = $last_value->session; }else{ $no = 1; //$session = date('y').date('y')+1; } $omc = new \App\AmcRequest(); $omc->series = $no; $omc->mr_no = 'AMC/' . substr($request->warehouse, 3) . '/00' . $no . '/' . $session; $omc->warehouse = $request->warehouse; $omc->request_by = $loginId; $omc->status = 'request'; if ($omc->save()) { foreach ($items as $key => $value) { $spare_code = $value['code']; $warehouse = $request->warehouse; if ($value['qty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'fresh')->get(); $total_adjust = 0; $required = $value['qty']; foreach ($warehouse_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $required && $required != 0) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = $fvalue->available_qty; $amc_item->repaired_qty = 0; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $fvalue->rate; $amc_item->repaired_rate = 0; $amc_item->lot_no = $fvalue->lot_no; $amc_item->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = $required; $amc_item->repaired_qty = 0; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $fvalue->rate; $amc_item->repaired_rate = $value['repaired_rate']; $amc_item->lot_no = $fvalue->lot_no; $amc_item->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } if ($value['rqty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'repaired')->get(); $total_adjust = 0; $required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $required && $required != 0) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = 0; $amc_item->repaired_qty = $rvalue->available_qty; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->repaired_rate = 0; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = 0; $amc_item->repaired_qty = $required; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->repaired_rate = $value['repaired_rate']; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } if ($value['fqty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); // dd($warehouse_inventory); $total_adjust = 0; $required = $value['fqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; // dd($total_adjust); if ($total_adjust < $required && $required != 0) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = 0; $amc_item->repaired_qty = 0; $amc_item->faulty_qty = $rvalue->available_qty; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->repaired_rate = 0; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->fresh_qty = 0; $amc_item->repaired_qty = 0; $amc_item->faulty_qty = $required; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->repaired_rate = $value['repaired_rate']; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } } return json_encode(['success' => true, 'msg' => 'AMC Request Generated Successfully!! AMC Number is: ' . $omc->mr_no]); } else { return json_encode(['success' => false, 'msg' => 'something went Wrong']); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty not in your Stock !!']); } } else { $msg = ' Qty mismatch in Stock!, Spare Code: ' . $sp_code . ', Table: (stock_in_circle_store to warehouse_inventory). Please contact Admin !!'; echo json_encode(['success' => false, 'msg' => $msg,]); } } //------------------------ Amc For Scrap Zone------------------------------- public function place_scrap_request_now(Request $request) { // dd($request); $loginId = Auth::user()->loginId; $items = $request->items; $warehouse = $request->warehouse; $is_valid = true; $sp = ""; //code added to check pt_inventry and pt_stock spare quantity is equal or not $sp_code = ''; foreach ($items as $val) { $ms = $pt_stock = \App\StockInCircleStore::where('warehouse', $request->warehouse)->where('spare_code', $val['code'])->first(); //added by me $pt_inv_faulty_qty = round(DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $request->warehouse)->where('item_type', 'scrap')->sum('available_qty'), 2); if ($ms->faulty_qty != $pt_inv_faulty_qty) { $sp_code = $sp_code . ' ' . $val['code'] . ' Scrap'; $is_valid = false; } } //end of checking spare in both stocks if ($is_valid == true) { // dd($items); foreach ($items as $val) { // echo "code is :".$val['code']; // echo "warehouse : ".$warehouse; // dd('stpp'); $ms = \App\StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $amc_request = \App\AmcRequest::where('warehouse', $request->warehouse)->where('session', 2122)->orderBy('id', 'desc')->first(); if ($ms != null) { if ($ms->faulty_qty < $val['fqty'] && $val['fqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Scrap'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Scrap'; break; } } if ($is_valid == true) { $ms = $pt_stock = \App\StockInCircleStore::where('warehouse', $request->warehouse)->where('spare_code', $val['code'])->first(); $suspense_faulty = $val['fqty']; $current_fqty = $ms->suspense_fqty + $val['fqty']; if ($ms) { if ($ms->suspense_fqty == 0) { // Update existing record $ms->suspense_fqty = $suspense_faulty; $ms->save(); } else { // Check if the values are greater than or equal to zero before subtracting if ($ms->faulty_qty >= $current_fqty) { $ms->suspense_fqty = $ms->suspense_fqty + $val['fqty']; $ms->save(); } else { $msg = 'Number of entered Qty not in your stock!, Amc Id: ' . $amc_request->id . ', Available Qty: ' . ($ms->faulty_qty - $ms->suspense_fqty) . ' Faulty, ' . 'Hold Qty: ' . $ms->suspense_fqty . ' Faulty, ' . "\n" . 'Spare Code: ' . $val['code'] . ', Table: (stock_in_circle_store to warehouse_inventory). Waiting for approval !!'; return json_encode(['success' => false, 'msg' => $msg]); // return json_encode(['success'=>false,'msg'=> $sp.' Number of entered Qty not in your Stock, Contact to Admin to check your hold quantity !!']); } } } else { return json_encode(['success' => false, 'msg' => 'Spare is not in your stock !!']); } //Updated on 16-03-24 // $last_value = \App\AmcRequest::where('warehouse', $request->warehouse)->where('session', 2122)->orderBy('id', 'desc')->first(); // if ($last_value != null) { // $no = $last_value->series + 1; // $session = $last_value->session; // } else { // $no = 1; // $session = date('y') . (date('y') + 1); // } $f_date = date('Y').'-03-31'; $curr_date = date('Y-m-d'); if (strtotime($curr_date) <= strtotime($f_date)) { $session = (date('y')-1).date('y'); } else { $session = date('y').(date('y')+1); } $last_value = \App\AmcRequest::where('warehouse',$request->warehouse)->where('session',$session)->orderBy('id','desc')->first(); if($last_value != null){ $no = $last_value->series + 1; //$session = $last_value->session; }else{ $no = 1; //$session = date('y').date('y')+1; } $omc = new \App\AmcRequest(); $omc->series = $no; $omc->mr_no = 'SCRAP/' . substr($request->warehouse, 1) . '/00' . $no . '/' . $session; $omc->warehouse = $request->warehouse; $omc->request_by = $loginId; $omc->status = 'request'; if ($omc->save()) { foreach ($items as $key => $value) { $spare_code = $value['code']; $warehouse = $request->warehouse; if ($value['fqty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'scrap')->get(); $total_adjust = 0; $required = $value['fqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; // dd($total_adjust); if ($total_adjust < $required && $required != 0) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->faulty_qty = $rvalue->available_qty; // dd($amc_item); $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $amc_item = new AmcRequestItem(); $amc_item->amc_id = $omc->id; $amc_item->spare_code = $value['code']; $amc_item->faulty_qty = $required; $amc_item->status = 0; $amc_item->gst = $value['gst_slab_rates']; $amc_item->rate = $rvalue->rate; $amc_item->lot_no = $rvalue->lot_no; $amc_item->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } } return json_encode(['success' => true, 'msg' => 'Scrap Request Generated Successfully!! Scrap Number is: ' . $omc->mr_no]); } else { return json_encode(['success' => false, 'msg' => 'something went Wrong']); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty not in your Stock !!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code . ' Spare Quantity mismatch in your Circle Stock. Please contact to admin. !!']); } } //------------------------------------------------------------------------- public function post_omc_request(Request $request) { } public function admin_pt_stock(Request $request) { $this->get_common(); $warehouses = DB::table('ware_houses')->select('ware_house')->get(); $pt_stocks = DB::table('pt_stocks')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_stocks.spare_code')->select('pt_stocks.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); $fresh_stocks = DB::table('pt_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_inventory.spare_code')->where('pt_inventory.item_type', 'fresh')->where('pt_inventory.available_qty', '>', 0)->select('pt_inventory.*', 'spare_parts_masters.description')->get(); $repaired_stocks = DB::table('pt_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_inventory.spare_code')->where('pt_inventory.item_type', 'repaired')->where('pt_inventory.available_qty', '>', 0)->select('pt_inventory.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'pt_stocks' => $pt_stocks, 'fresh_stocks' => $fresh_stocks, 'repaired_stocks' => $repaired_stocks]); return view('admin.omc.pt-stock', $this->data); } public function pt_stock(Request $request) { $this->get_common(); $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.fieldUserCodes') ->where('StoreCoordinatorCircleCodes', $loginId) ->groupBy('fieldUserCodes') ->get(); $fieldUserCodes = $this->data['userInfo']->fieldUserCodes; $current_warehouse = 'SER' . $fieldUserCodes; if ($request->circle != '') { $current_warehouse = $request->circle; } $pt_stocks = DB::table('pt_stocks')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_stocks.spare_code')->where('pt_stocks.warehouse', $current_warehouse)->select('pt_stocks.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); $fresh_stocks = DB::table('pt_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_inventory.spare_code')->where('pt_inventory.warehouse', $current_warehouse)->where('pt_inventory.item_type', 'fresh')->where('pt_inventory.available_qty', '>', 0)->select('pt_inventory.*', 'spare_parts_masters.description')->get(); $repaired_stocks = DB::table('pt_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_inventory.spare_code')->where('pt_inventory.warehouse', $current_warehouse)->where('pt_inventory.item_type', 'repaired')->where('pt_inventory.available_qty', '>', 0)->select('pt_inventory.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['warehouses' => $assigned_warehouses, 'pt_stocks' => $pt_stocks, 'current_warehouse' => $current_warehouse, 'fresh_stocks' => $fresh_stocks, 'repaired_stocks' => $repaired_stocks]); return view('circle-store.omc.pt-stock', $this->data); } public function get_pt_stock_of_warehouse(Request $request) { $warehouse = $request->warehouse; $pt_stocks = DB::table('pt_stocks')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_stocks.spare_code')->where('pt_stocks.warehouse', $warehouse)->select('pt_stocks.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); return json_encode(['success' => true, 'stocks' => $pt_stocks]); } public function cancle_amc(Request $request) { $amc_id = $request->amc_id; $loginId = Auth::user()->loginId; $amc = AmcRequest::find($amc_id); $amc_items = DB::table('amc_request_items')->where('amc_id', $amc->id)->get(); if ($amc != null) { if ($amc->status == 'authorized') { return json_encode(['success' => false, 'msg' => 'MR No authorized !!']); } elseif ($amc->status == 'reject') { return json_encode(['success' => false, 'msg' => 'MR No Already Cancelled !!']); } elseif ($amc->status == 'request') { DB::table('amc_requests')->where('id', $amc_id)->update(['status' => 'reject', 'authorize_by' => $loginId]); foreach ($amc_items as $key => $value) { $circle_stock = \App\StockInCircleStore::where('warehouse', $amc->warehouse)->where('spare_code', $value->spare_code)->first(); if ($circle_stock != null && $circle_stock != null) { $circle_stock->suspense_qty = $circle_stock->suspense_qty - $value->fresh_qty; $circle_stock->suspense_rqty = $circle_stock->suspense_rqty - $value->repaired_qty; $circle_stock->suspense_fqty = $circle_stock->suspense_fqty - $value->faulty_qty; $circle_stock->save(); } } return json_encode(['success' => true, 'msg' => 'AMC Request Cancelled Successfully !!']); } } else { return json_encode(['success' => false, 'msg' => 'Invalid AMC No.']); } } //Updated code on 17-02-24------------------------------------------------ public function authorize_amc(Request $request){ $amc_id = $request->amc_id; $loginId = Auth::user()->loginId; $amc = AmcRequest::find($amc_id); if($amc != null){ if($amc->status == 'authorize'){ return json_encode(['success'=>false,'msg'=>'MR No Already authorized !!']); }else{ $amc_items = DB::table('amc_request_items')->where('amc_id',$amc->id)->get(); $amc_requests = DB::table('amc_requests')->where('id',$amc->id)->first(); foreach ($amc_items as $key => $value) { $st_stock = \App\StockInCircleStore::where('warehouse',$amc->warehouse)->where('spare_code',$value->spare_code)->first(); if ($st_stock != null && ($st_stock->fresh_qty >= $value->fresh_qty && $st_stock->repaired_qty >= $value->repaired_qty && $st_stock->faulty_qty >= $value->faulty_qty) ) { $st_stock->fresh_qty = $st_stock->fresh_qty - $value->fresh_qty; $st_stock->repaired_qty = $st_stock->repaired_qty - $value->repaired_qty; $st_stock->faulty_qty = $st_stock->faulty_qty - $value->faulty_qty; $st_stock->suspense_qty=$st_stock->suspense_qty-$value->fresh_qty; $st_stock->suspense_rqty=$st_stock->suspense_rqty-$value->repaired_qty; $st_stock->suspense_fqty=$st_stock->suspense_fqty-$value->faulty_qty; $st_stock->save(); $spare_code = $value->spare_code; $warehouse = $amc->warehouse; if($value->fresh_qty != 0){ $st_inventory = DB::table('warehouse_inventory')->where('spare_code',$spare_code)->where('warehouse',$warehouse)->where('available_qty','>',0)->where('item_type','fresh')->get(); $total_adjust = 0; $required = $value->fresh_qty; foreach ($st_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ DB::table('warehouse_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); }elseif($total_adjust > $required || $total_adjust == $required ){ $available_qty = $fvalue->available_qty - $required; $entry_type = 'received_from_circle_stock'; DB::table('warehouse_inventory')->where('id', $fvalue->id)->update(['available_qty' => $available_qty,'entry_type' => $entry_type]); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($value->repaired_qty != 0){ $st_inventory = DB::table('warehouse_inventory')->where('spare_code',$spare_code)->where('warehouse',$warehouse)->where('available_qty','>',0)->where('item_type','repaired')->get(); $total_adjust = 0; $required = $value->repaired_qty; foreach ($st_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ DB::table('warehouse_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); }elseif($total_adjust > $required || $total_adjust == $required ){ $available_qty = $fvalue->available_qty - $required; $entry_type = 'received_from_circle_stock'; DB::table('warehouse_inventory')->where('id', $fvalue->id)->update(['available_qty' => $available_qty,'entry_type' => $entry_type]); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($value->faulty_qty != 0){ $st_inventory = DB::table('warehouse_inventory')->where('spare_code',$spare_code)->where('warehouse',$warehouse)->where('available_qty','>',0)->where('item_type','faulty')->get(); $total_adjust = 0; $required = $value->faulty_qty; foreach ($st_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ DB::table('warehouse_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); }elseif($total_adjust > $required || $total_adjust == $required ){ $available_qty = $fvalue->available_qty - $required; $entry_type = 'received_from_circle_stock'; DB::table('warehouse_inventory')->where('id', $fvalue->id)->update(['available_qty' => $available_qty,'entry_type' => $entry_type]); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } //------------------------For Scrap------------------------------------ if ($value->faulty_qty != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'scrap')->get(); $total_adjust = 0; $required = $value->faulty_qty; foreach ($warehouse_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $required && $required != 0) { DB::table('warehouse_inventory')->where('id', $fvalue->id)->update(['available_qty' => 0]); } elseif ($total_adjust > $required || $total_adjust == $required) { $available_qty = $fvalue->available_qty - $required; DB::table('warehouse_inventory')->where('id', $fvalue->id)->update(['available_qty' => $available_qty]); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } $historyOfPt = new HistoryPtStock(); $historyOfPt->added_by = $loginId; $historyOfPt->warehouse = $amc->warehouse; $historyOfPt->fresh_qty = $value->fresh_qty; $historyOfPt->repaired_qty = $value->repaired_qty; $historyOfPt->save(); } else { return json_encode([ 'success' => false, 'msg' => "Sorry, You Cannot Authorize More Quantity Than Available In Circle Stock.\n\n" . "Total Available Qty in Stock:\n " . $st_stock->fresh_qty . " Fresh Qty,\n " . $st_stock->repaired_qty . " Repaired Qty,\n " . $st_stock->faulty_qty . " Faulty Qty,". $st_stock->spare_code . " Spare Code," ]); } } $amc->status = 'authorize'; $amc->authorize_by = $loginId; $amc->save(); return json_encode(['success'=>true,'msg'=>'AMC Authorized Successfully.']); } }else{ return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); } } public function view_omcr_page($id) { $this->get_common(); $omc = OmcRequest::where('id', $id)->first(); if ($omc != null) { $omc_items = DB::table('omc_request_items')->join('spare_parts_masters', 'spare_parts_masters.code', 'omc_request_items.spare_code')->where('omc_request_items.omc_id', $omc->id)->select('omc_request_items.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['omc' => $omc, 'omc_items' => $omc_items]); return view('admin.omc.omc', $this->data); } else { return redirect('circle-store/my-omc-requests')->with('error', 'Invalid OMC request Id !!'); } } }