/
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\OmcRequest; use App\OmcRequestItem; use App\PtStock; use App\StockInCircleStore; use App\HistoryPtStock; use Auth; use DB; use Validator; class OmcController 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_omc_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('admin/all-omc-requests')->with('error','Invalid OMC request Id !!'); } } public function all_omc_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); $all_omc = OmcRequest::whereIn('warehouse', $warehouses)->orderBy('id','desc')->get(); $this->data = array_merge($this->data,['all_omc'=>$all_omc]); return view('admin.omc.all-omc',$this->data); } 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.omc.omc-request',$this->data); } public function my_omc_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]; $omc_requests = OmcRequest::where('warehouse',$current_warehouse)->orderBy('id','desc')->get(); $this->data = array_merge($this->data,['omc_requests'=>$omc_requests,'warehouses'=>$warehouses,'current_warehouse'=>$current_warehouse]); return view('circle-store.omc.my-omc-requests',$this->data); } public function get_omc_request_of_warehouse(Request $request){ $warehouse = $request->warehouse; $omc_requests = OmcRequest::where('warehouse',$warehouse)->get(); return json_encode(['success'=>true,'omc_requests'=>$omc_requests]); } public function omc_request(){ $this->get_common(); $loginId = Auth::user()->loginId; $omc_types = \App\OmcType::where('is_active', 1)->get(); $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,'omc_types'=>$omc_types]); return view('circle-store.omc.omc-request',$this->data); } public function get_spare_part_from_pt_stock(Request $request){ $spare_code = $request->code; $warehouse = $request->warehouse; $stock_type = $request->stock_type; if($stock_type == 'pt_stock') { $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.']); } } elseif($stock_type == 'circle_stock') { $is_stock = StockInCircleStore::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){ $circle_stock = StockInCircleStore::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'=>$circle_stock]); }else{ return json_encode(['success'=>false,'msg'=>'Spare Not In Circle Stock.']); } } } public function validate_omc_req_qty(Request $request) { $is_valid = true; $msg = ''; $qty = 0; $pt_stock = PtStock::where('spare_code',$request->code)->where('warehouse',$request->warehouse)->first(); $omc_req = \App\OmcRequest::where('warehouse',$request->warehouse)->where('status', 'request')->count(); if($omc_req > 0) { $omc_req = \App\OmcRequest::where('warehouse',$request->warehouse)->where('status', 'request')->get(); foreach($omc_req as $key=>$value) { $omc_items = \App\OmcRequestItem::where('omc_id', $value->id)->where('spare_code', $request->code)->select($request->type)->get(); foreach($omc_items as $key=>$value) { if($request->type == 'fresh_qty') { $qty = $qty + $value->fresh_qty; } if($request->type == 'repaired_qty') { $qty = $qty + $value->repaired_qty; } } } if($request->type == 'fresh_qty') { $qty = $pt_stock->fresh_qty - $qty; } if($request->type == 'repaired_qty') { $qty = $pt_stock->repaired_qty - $qty; } if ($qty < $request->qty) { $msg = "Entered ".$request->type." is greater than available quantity i.e. ".$qty; $is_valid = false; } } if($is_valid == false) { return json_encode(['success'=>false, 'msg'=>$msg, 'type'=>$request->type]); } else { return json_encode(['success'=>true, 'msg'=>$msg, 'type'=>'']); } } // public function place_omc_request_now(Request $request){ // $loginId = Auth::user()->loginId; // $omc_items = $request->items; // $is_valid = true; // $sp = ""; // //code added to check pt_inventry and pt_stock spare quantity is equal or not // $sp_code = ''; // foreach ($omc_items as $val) { // $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); // //added by me // $pt_inv_fresh_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'fresh')->sum(\DB::raw('round(available_qty,2)')); // $pt_inv_repaired_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'repaired')->sum(\DB::raw('round(available_qty,2)')); // if($ms->fresh_qty != $pt_inv_fresh_qty) { // $sp_code = $sp_code.' '.$val['code'].' Fresh'; // $is_valid = false; // } // if($ms->repaired_qty != $pt_inv_repaired_qty) { // $sp_code = $sp_code.' '.$val['code'].' Repaired'; // $is_valid = false; // } // } // //end of checking spare in both stocks // if($is_valid == true) { // foreach ($omc_items as $val) { // $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); // 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; // } // }else{ // $is_valid = false; // $sp = $val['code'].' Fresh'; // break; // } // } // if($is_valid == true){ // $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\OmcRequest::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 OmcRequest(); // $omc->series = $no ; // $omc->session = $session ; // $omc->mr_no = 'MR/'.substr($request->warehouse,3).'/00'.$no.'/'.$session; // $omc->po_no = $request->customer_po; // $omc->warehouse = $request->warehouse; // $omc->request_by = $loginId; // $omc->omc_type = $request->omc_type; // $omc->cutomer_po_date = $request->cutomer_po_date; // $omc->invoice_no = $request->invoice_no; // $omc->invoice_date = $request->invoice_date; // $omc->stock_type = $request->stock_type; // if($request->customer_code_and_name != ""){ // $cust_code_name = explode('--', $request->customer_code_and_name); // $omc->customer_code = $cust_code_name[0]; // $omc->customer_name = $cust_code_name[1]; // } // $omc->status = 'request'; // if($omc->save()){ // foreach ($omc_items as $key => $value) { // $spare_code = $value['code']; // $warehouse = $request->warehouse; // if($value['qty'] != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = $fvalue->available_qty; // $omc_item->repaired_qty = 0; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $fvalue->rate; // $omc_item->repaired_rate = 0; // $omc_item->lot_no = $fvalue->lot_no; // $omc_item->save(); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = $required; // $omc_item->repaired_qty = 0; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $fvalue->rate; // $omc_item->repaired_rate = $value['repaired_rate']; // $omc_item->lot_no = $fvalue->lot_no; // $omc_item->save(); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // if($value['rqty'] != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $rvalue) { // $total_adjust = $rvalue->available_qty; // if($total_adjust < $required && $required != 0){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = 0; // $omc_item->repaired_qty = $rvalue->available_qty; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $rvalue->rate; // $omc_item->repaired_rate = 0; // $omc_item->lot_no = $rvalue->lot_no; // $omc_item->save(); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = 0; // $omc_item->repaired_qty = $required; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $rvalue->rate; // $omc_item->repaired_rate = $value['repaired_rate']; // $omc_item->lot_no = $rvalue->lot_no; // $omc_item->save(); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // } // return json_encode(['success'=>true,'msg'=>'OMC Request Generated Successfully!!']); // }else{ // return json_encode(['success'=>false,'msg'=>'something went Wrong']); // } // }else{ // return json_encode(['success'=>false,'msg'=> $sp.' Qty not in your PT Stock !!']); // } // } else { // return json_encode(['success'=>false,'msg'=> $sp_code.' Qty mismatch in your PT Stock. Please contact to admin. !!']); // } // } // public function place_omc_request_now(Request $request){ // // dd($request); // $loginId = Auth::user()->loginId; // $omc_items = $request->items; // $is_valid = true; // $sp = ""; // //code added to check pt_inventry and pt_stock spare quantity is equal or not // $sp_code = ''; // foreach ($omc_items as $val) { // $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); // //added by me // $pt_inv_fresh_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'fresh')->sum(\DB::raw('round(available_qty,2)')); // $pt_inv_repaired_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'repaired')->sum(\DB::raw('round(available_qty,2)')); // if($ms->fresh_qty != $pt_inv_fresh_qty) { // $sp_code = $sp_code.' '.$val['code'].' Fresh'; // $is_valid = false; // } // if($ms->repaired_qty != $pt_inv_repaired_qty) { // $sp_code = $sp_code.' '.$val['code'].' Repaired'; // $is_valid = false; // } // } // //end of checking spare in both stocks // if($is_valid == true) { // foreach ($omc_items as $val) { // $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); // //--------------------------Added by me on 09-09-2023--------------------- // $suspense_fresh=$val['qty']; // $suspense_repaired=$val['rqty']; // $current_qty=$ms->suspense_qty+$val['qty']; // $current_rqty=$ms->suspense_rqty+$val['rqty']; // if ($ms) { // if ($ms->suspense_qty == 0 && $ms->suspense_rqty == 0) { // // Update existing record // $ms->suspense_qty = $suspense_fresh; // $ms->suspense_rqty = $suspense_repaired; // $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->suspense_qty = $ms->suspense_qty + $val['qty']; // $ms->suspense_rqty = $ms->suspense_rqty + $val['rqty']; // $ms->save(); // } else { // return json_encode(['success'=>false,'msg'=> $sp.' 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 !!']); // } // //------------------------------------------------------------------------- // 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; // } // }else{ // $is_valid = false; // $sp = $val['code'].' Fresh'; // break; // } // } // if($is_valid == true){ // $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\OmcRequest::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 OmcRequest(); // $omc->series = $no ; // $omc->session = $session ; // $omc->mr_no = 'MR/'.substr($request->warehouse,3).'/00'.$no.'/'.$session; // $omc->po_no = $request->customer_po; // $omc->warehouse = $request->warehouse; // $omc->request_by = $loginId; // $omc->omc_type = $request->omc_type; // $omc->cutomer_po_date = $request->cutomer_po_date; // $omc->invoice_no = $request->invoice_no; // $omc->invoice_date = $request->invoice_date; // // $omc->stock_type = $request->stock_type; // if($request->customer_code_and_name != ""){ // $cust_code_name = explode('--', $request->customer_code_and_name); // $omc->customer_code = $cust_code_name[0]; // $omc->customer_name = $cust_code_name[1]; // } // $omc->status = 'request'; // if($omc->save()){ // foreach ($omc_items as $key => $value) { // $spare_code = $value['code']; // $warehouse = $request->warehouse; // if($value['qty'] != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = $fvalue->available_qty; // $omc_item->repaired_qty = 0; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $fvalue->rate; // $omc_item->repaired_rate = 0; // $omc_item->lot_no = $fvalue->lot_no; // $omc_item->save(); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = $required; // $omc_item->repaired_qty = 0; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $fvalue->rate; // $omc_item->repaired_rate = $value['repaired_rate']; // $omc_item->lot_no = $fvalue->lot_no; // $omc_item->save(); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // if($value['rqty'] != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $rvalue) { // $total_adjust = $rvalue->available_qty; // if($total_adjust < $required && $required != 0){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = 0; // $omc_item->repaired_qty = $rvalue->available_qty; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $rvalue->rate; // $omc_item->repaired_rate = 0; // $omc_item->lot_no = $rvalue->lot_no; // $omc_item->save(); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $omc_item = new OmcRequestItem(); // $omc_item->omc_id = $omc->id; // $omc_item->spare_code = $value['code']; // $omc_item->fresh_qty = 0; // $omc_item->repaired_qty = $required; // $omc_item->status = 0; // $omc_item->gst = $value['gst_slab_rates']; // $omc_item->rate = $rvalue->rate; // $omc_item->repaired_rate = $value['repaired_rate']; // $omc_item->lot_no = $rvalue->lot_no; // $omc_item->save(); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // } // return json_encode(['success'=>true,'msg'=>'OMC Request Generated Successfully!!']); // }else{ // return json_encode(['success'=>false,'msg'=>'something went Wrong']); // } // }else{ // return json_encode(['success'=>false,'msg'=> $sp.' Qty not in your PT Stock !!']); // } // } else { // return json_encode(['success'=>false,'msg'=> $sp_code.' Qty mismatch in your PT Stock. Please contact to admin. !!']); // } // } public function place_omc_request_now(Request $request){ $loginId = Auth::user()->loginId; $omc_items = $request->items; $is_valid = true; $sp = ""; //code added to check pt_inventry and pt_stock spare quantity is equal or not $sp_code = ''; if($request->stock_type == 'pt_stock'){ foreach ($omc_items as $val) { $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); //added by me $pt_inv_fresh_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'fresh')->sum(\DB::raw('round(available_qty,2)')); $pt_inv_repaired_qty = DB::table('pt_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'repaired')->sum(\DB::raw('round(available_qty,2)')); if($ms->fresh_qty != $pt_inv_fresh_qty) { $sp_code = $sp_code.' '.$val['code'].' Fresh'; $is_valid = false; } if($ms->repaired_qty != $pt_inv_repaired_qty) { $sp_code = $sp_code.' '.$val['code'].' Repaired'; $is_valid = false; } } //end of checking spare in both stocks if($is_valid == true) { foreach ($omc_items as $val) { $ms = PtStock::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); //--------------------------Added by me on 09-09-2023--------------------- //------------First time value of qty which we insert in input field,putting that much qty in my suspense account--------------------- $suspense_fresh=$val['qty']; $suspense_repaired=$val['rqty']; //------Setting the value of current quantity equal to value of suspense qty and that much value of suspense qty which we are going to insert in suspense qty------- $current_qty=$ms->suspense_qty+$val['qty']; $current_rqty=$ms->suspense_rqty+$val['rqty']; //----After that we check the condition if the suspense qty is null then we insert the requested value otherwise if alredy exits then we simply add that much requested qty in suspense_qty. if ($ms) { if ($ms->suspense_qty == 0 && $ms->suspense_rqty == 0) { // Update existing record $ms->suspense_qty = $suspense_fresh; $ms->suspense_rqty = $suspense_repaired; $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->suspense_qty = $ms->suspense_qty + $val['qty']; $ms->suspense_rqty = $ms->suspense_rqty + $val['rqty']; $ms->save(); } else { return json_encode(['success'=>false,'msg'=> $sp.' 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 !!']); } //------------------------------------------------------------------------- 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; } }else{ $is_valid = false; $sp = $val['code'].' Fresh'; break; } } if($is_valid == true){ $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\OmcRequest::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 OmcRequest(); $omc->series = $no ; $omc->session = $session ; $omc->mr_no = 'MR/'.substr($request->warehouse,3).'/00'.$no.'/'.$session; $omc->po_no = $request->customer_po; $omc->warehouse = $request->warehouse; $omc->request_by = $loginId; $omc->omc_type = $request->omc_type; $omc->cutomer_po_date = $request->cutomer_po_date; $omc->invoice_no = $request->invoice_no; $omc->invoice_date = $request->invoice_date; $omc->invoice_basic_value = $request->invoice_basic_value; $omc->site_id = $request->site_id; $omc->site_name = $request->site_name; $omc->complaint_closure_date = $request->complaint_closure_date; $omc->cust_open_po_status = $request->cust_open_po_status; $omc->open_po_amount = $request->open_po_amount; $omc->invoice_value = $request->invoice_value; $omc->entry_type = 'assign_to_pt_stock'; $omc->stock_type = $request->stock_type; if($request->customer_code_and_name != ""){ $cust_code_name = explode('--', $request->customer_code_and_name); $omc->customer_code = $cust_code_name[0]; $omc->customer_name = $cust_code_name[1]; } $omc->status = 'request'; if($omc->save()){ foreach ($omc_items as $key => $value) { $spare_code = $value['code']; $warehouse = $request->warehouse; if($value['qty'] != 0){ $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = $fvalue->available_qty; $omc_item->repaired_qty = 0; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $fvalue->rate; $omc_item->repaired_rate = 0; $omc_item->lot_no = $fvalue->lot_no; $omc_item->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = $required; $omc_item->repaired_qty = 0; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $fvalue->rate; $omc_item->repaired_rate = $value['repaired_rate']; $omc_item->lot_no = $fvalue->lot_no; $omc_item->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($value['rqty'] != 0){ $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if($total_adjust < $required && $required != 0){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = 0; $omc_item->repaired_qty = $rvalue->available_qty; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $rvalue->rate; $omc_item->repaired_rate = 0; $omc_item->lot_no = $rvalue->lot_no; $omc_item->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = 0; $omc_item->repaired_qty = $required; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $rvalue->rate; $omc_item->repaired_rate = $value['repaired_rate']; $omc_item->lot_no = $rvalue->lot_no; $omc_item->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } } return json_encode(['success' => true, 'msg' => 'OMC Request Generated Successfully!! OMC 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 PT Stock !!']); } } else { return json_encode(['success'=>false,'msg'=> $sp_code.' Qty mismatch in your PT Stock. Please contact to admin. !!']); } } if($request->stock_type == 'circle_stock'){ foreach ($omc_items as $val) { $st = StockInCircleStore::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); //added by me $warehouse_inv_fresh_qty = DB::table('warehouse_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'fresh')->sum(\DB::raw('round(available_qty,2)')); $warehouse_inv_repaired_qty = DB::table('warehouse_inventory')->where('spare_code',$val['code'])->where('warehouse',$request->warehouse)->where('item_type', 'repaired')->sum(\DB::raw('round(available_qty,2)')); if($st->fresh_qty != $warehouse_inv_fresh_qty) { $sp_code = $sp_code.' '.$val['code'].' Fresh'; $is_valid = false; } if($st->repaired_qty != $warehouse_inv_repaired_qty) { $sp_code = $sp_code.' '.$val['code'].' Repaired'; $is_valid = false; } } //end of checking spare in both stocks if($is_valid == true) { foreach ($omc_items as $val) { $st = StockInCircleStore::where('warehouse',$request->warehouse)->where('spare_code',$val['code'])->first(); //--------------------------Added by me on 09-09-2023--------------------- //------------First time value of qty which we insert in input field,putting that much qty in my suspense account--------------------- $suspense_fresh=$val['qty']; $suspense_repaired=$val['rqty']; //------Setting the value of current quantity equal to value of suspense qty and that much value of suspense qty which we are going to insert in suspense qty------- $current_qty=$st->suspense_qty+$val['qty']; $current_rqty=$st->suspense_rqty+$val['rqty']; //----After that we check the condition if the suspense qty is null then we insert the requested value otherwise if alredy exits then we simply add that much requested qty in suspense_qty. if ($st) { if ($st->suspense_qty == 0 && $st->suspense_rqty == 0) { // Update existing record $st->suspense_qty = $suspense_fresh; $st->suspense_rqty = $suspense_repaired; $st->save(); } else { //---- Check if the values are greater than or equal to zero before subtracting if ($st->fresh_qty >= $current_qty && $st->repaired_qty >= $current_rqty) { $st->suspense_qty = $st->suspense_qty + $val['qty']; $st->suspense_rqty = $st->suspense_rqty + $val['rqty']; $st->save(); } else { return json_encode(['success'=>false,'msg'=> $sp.' 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 !!']); } //------------------------------------------------------------------------- if($st != null){ if($st->fresh_qty < $val['qty'] && $val['qty'] != 0){ $is_valid = false; $sp = $val['code'].' Fresh'; break; } if($st->repaired_qty < $val['rqty'] && $val['rqty'] != 0 ){ $is_valid = false; $sp = $val['code'].' Repaired'; break; } }else{ $is_valid = false; $sp = $val['code'].' Fresh'; break; } } if($is_valid == true){ $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\OmcRequest::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 OmcRequest(); $omc->series = $no ; $omc->session = $session ; $omc->mr_no = 'MR/'.substr($request->warehouse,3).'/00'.$no.'/'.$session; $omc->po_no = $request->customer_po; $omc->warehouse = $request->warehouse; $omc->request_by = $loginId; $omc->omc_type = $request->omc_type; $omc->cutomer_po_date = $request->cutomer_po_date; $omc->invoice_no = $request->invoice_no; $omc->invoice_date = $request->invoice_date; $omc->invoice_basic_value = $request->invoice_basic_value; $omc->site_id = $request->site_id; $omc->site_name = $request->site_name; $omc->complaint_closure_date = $request->complaint_closure_date; $omc->cust_open_po_status = $request->cust_open_po_status; $omc->open_po_amount = $request->open_po_amount; $omc->invoice_value = $request->invoice_value; $omc->entry_type = 'assign_to_circle_stock'; $omc->stock_type = $request->stock_type; if($request->customer_code_and_name != ""){ $cust_code_name = explode('--', $request->customer_code_and_name); $omc->customer_code = $cust_code_name[0]; $omc->customer_name = $cust_code_name[1]; } $omc->status = 'request'; if($omc->save()){ foreach ($omc_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){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = $fvalue->available_qty; $omc_item->repaired_qty = 0; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $fvalue->rate; $omc_item->repaired_rate = 0; $omc_item->lot_no = $fvalue->lot_no; $omc_item->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = $required; $omc_item->repaired_qty = 0; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $fvalue->rate; $omc_item->repaired_rate = $value['repaired_rate']; $omc_item->lot_no = $fvalue->lot_no; $omc_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){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = 0; $omc_item->repaired_qty = $rvalue->available_qty; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $rvalue->rate; $omc_item->repaired_rate = 0; $omc_item->lot_no = $rvalue->lot_no; $omc_item->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $omc_item = new OmcRequestItem(); $omc_item->omc_id = $omc->id; $omc_item->spare_code = $value['code']; $omc_item->fresh_qty = 0; $omc_item->repaired_qty = $required; $omc_item->status = 0; $omc_item->gst = $value['gst_slab_rates']; $omc_item->rate = $rvalue->rate; $omc_item->repaired_rate = $value['repaired_rate']; $omc_item->lot_no = $rvalue->lot_no; $omc_item->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } } return json_encode(['success' => true, 'msg' => 'OMC Request Generated Successfully!! OMC 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 Store Stock !!']); } } else { return json_encode(['success'=>false,'msg'=> $sp_code.' Qty mismatch in your Stock Stock. Please contact to admin. !!']); } } } public function post_omc_request(Request $request){ } public function admin_pt_stock(Request $request){ $this->get_common(); $loginId = Auth::user()->loginId; // $warehouses = DB::table('ware_houses')->select('ware_house')->get(); $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assigned_warehouses->warehouseCode); $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')->whereIn('pt_stocks.warehouse', $warehouses)->where(function ($query){ $query->where('pt_stocks.fresh_qty','>',0)->orWhere('pt_stocks.repaired_qty','>',0); })->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')->whereIn('pt_inventory.warehouse', $warehouses)->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')->whereIn('pt_inventory.warehouse', $warehouses)->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.warehouseCode') // ->where('StoreCoordinatorCircleCodes', $loginId) // ->groupBy('warehouseCode') // ->get(); $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]; 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'=>$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_omc(Request $request){ // $omc_id = $request->omc_id; // $loginId = Auth::user()->loginId; // $omc = OmcRequest::find($omc_id); // if($omc != null){ // if($omc->status == 'Authorized') { // return json_encode(['success'=>false,'msg'=>'MR No Authorized !!']); // }elseif($omc->status == 'reject') { // return json_encode(['success'=>false,'msg'=>'MR No Already Rejected !!']); // } elseif($omc->status == 'request') { // DB::table('omc_requests')->where('id',$omc_id)->update(['status'=> 'reject']); // return json_encode(['success'=>true,'msg'=>'OMC Request Rejected Successfully !!']); // } // } else { // return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); // } // } // public function cancle_omc(Request $request){ // $omc_id = $request->omc_id; // $loginId = Auth::user()->loginId; // $omc = OmcRequest::find($omc_id); // $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); // if($omc != null){ // if($omc->status == 'authorize') { // return json_encode(['success'=>false,'msg'=>'MR No authorized !!']); // }elseif($omc->status == 'rejected') { // return json_encode(['success'=>false,'msg'=>'MR No Already Cancelled !!']); // } elseif($omc->status == 'request') { // DB::table('omc_requests')->where('id',$omc_id)->update(['status'=> 'rejected']); // foreach ($omc_items as $key => $value) { // $pt_stock = \App\PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); // if($pt_stock != null && $pt_stock != null){ // $pt_stock->suspense_qty=$pt_stock->suspense_qty-$value->fresh_qty; // $pt_stock->suspense_rqty=$pt_stock->suspense_rqty-$value->repaired_qty; // $pt_stock->save(); // } // } // return json_encode(['success'=>true,'msg'=>'OMC Request Cancelled Successfully !!']); // } // } else { // return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); // } // } public function cancle_omc(Request $request){ $omc_id = $request->omc_id; $loginId = Auth::user()->loginId; $omc = OmcRequest::find($omc_id); $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); if($omc != null){ if($omc->status == 'authorize') { return json_encode(['success'=>false,'msg'=>'MR No authorized !!']); }elseif($omc->status == 'rejected') { return json_encode(['success'=>false,'msg'=>'MR No Already Cancelled !!']); } elseif($omc->status == 'request') { DB::table('omc_requests')->where('id',$omc_id)->update(['status'=> 'rejected']); foreach ($omc_items as $key => $value) { $pt_stock = \App\PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); $st_stock = \App\StockInCircleStore::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); //---------If request is canclled then that much qty we minus from suspense_qty & suspense_rqty---------- if($pt_stock != null && $pt_stock != null){ $pt_stock->suspense_qty=$pt_stock->suspense_qty-$value->fresh_qty; $pt_stock->suspense_rqty=$pt_stock->suspense_rqty-$value->repaired_qty; $pt_stock->save(); } if($st_stock != null && $st_stock != null){ $st_stock->suspense_qty=$st_stock->suspense_qty-$value->fresh_qty; $st_stock->suspense_rqty=$st_stock->suspense_rqty-$value->repaired_qty; $st_stock->save(); } } return json_encode(['success'=>true,'msg'=>'OMC Request Cancelled Successfully !!']); } } else { return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); } } // public function authorize_omc(Request $request){ // $omc_id = $request->omc_id; // $loginId = Auth::user()->loginId; // $omc = OmcRequest::find($omc_id); // if($omc != null){ // if($omc->status == 'Authorized'){ // return json_encode(['success'=>false,'msg'=>'MR No Already Authorized !!']); // }else{ // $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); // foreach ($omc_items as $key => $value) { // $pt_stock = PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); // if($pt_stock != null){ // $pt_stock->fresh_qty = $pt_stock->fresh_qty - $value->fresh_qty; // $pt_stock->repaired_qty = $pt_stock->repaired_qty - $value->repaired_qty; // $pt_stock->save(); // $spare_code = $value->spare_code; // $warehouse = $omc->warehouse; // if($value->fresh_qty != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $available_qty = $fvalue->available_qty - $required; // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> $available_qty]); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // if($value->repaired_qty != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $available_qty = $fvalue->available_qty - $required; // DB::table('pt_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 = $omc->warehouse; // $historyOfPt->fresh_qty = $value->fresh_qty; // $historyOfPt->repaired_qty = $value->repaired_qty; // $historyOfPt->save(); // } // } // $omc->status = 'Authorized'; // $omc->authorize_by = $loginId; // $omc->save(); // return json_encode(['success'=>true,'msg'=>'Invalid MR No.']); // } // }else{ // return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); // } // } // public function authorize_omc(Request $request){ // $omc_id = $request->omc_id; // $loginId = Auth::user()->loginId; // $omc = OmcRequest::find($omc_id); // if($omc != null){ // if($omc->status == 'authorize'){ // return json_encode(['success'=>false,'msg'=>'MR No Already authorized !!']); // }else{ // $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); // foreach ($omc_items as $key => $value) { // $pt_stock = PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); // if($pt_stock != null){ // $pt_stock->fresh_qty = $pt_stock->fresh_qty - $value->fresh_qty; // $pt_stock->repaired_qty = $pt_stock->repaired_qty - $value->repaired_qty; // $pt_stock->suspense_qty=$pt_stock->suspense_qty-$value->fresh_qty; // $pt_stock->suspense_rqty=$pt_stock->suspense_rqty-$value->repaired_qty; // $pt_stock->save(); // $spare_code = $value->spare_code; // $warehouse = $omc->warehouse; // if($value->fresh_qty != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $available_qty = $fvalue->available_qty - $required; // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> $available_qty]); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // if($value->repaired_qty != 0){ // $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // DB::table('pt_inventory')->where('id',$fvalue->id)->update(['available_qty'=> 0]); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $available_qty = $fvalue->available_qty - $required; // DB::table('pt_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 = $omc->warehouse; // $historyOfPt->fresh_qty = $value->fresh_qty; // $historyOfPt->repaired_qty = $value->repaired_qty; // $historyOfPt->save(); // } // } // $omc->status = 'authorize'; // $omc->authorize_by = $loginId; // $omc->save(); // return json_encode(['success'=>true,'msg'=>'OMC Authorized Successfully.']); // } // }else{ // return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); // } // } //------------------Updated the function on 20/11/2023(To prevent from quantity goes in minus)------------------------------------------ public function authorize_omc(Request $request){ $omc_id = $request->omc_id; $loginId = Auth::user()->loginId; $omc = OmcRequest::find($omc_id); $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); $omc_requests = DB::table('omc_requests')->where('id',$omc->id)->first(); //When stock_type is equal to pt_stock if($omc_requests->stock_type == 'pt_stock'){ if($omc != null){ if($omc->status == 'authorize'){ return json_encode(['success'=>false,'msg'=>'MR No Already authorized !!']); }else{ $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); $omc_requests = DB::table('omc_requests')->where('id',$omc->id)->first(); foreach ($omc_items as $key => $value) { // ---------if request is authorized then we simply minus that authorized qty in table in PtStock for the column fresh_qty,repaired_qty,suspense_qty & suspense_rqty-------- $pt_stock = PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); $st_stock = StockInCircleStore::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); //Added code to check if the stock value is greater or equal than requested value for approval then only can approve and minus from stock & suspense qty otherwise show the error message with available qty in stock(Added on 20/11/2023 if ($pt_stock != null && $omc_requests->stock_type == 'pt_stock' && ($pt_stock->fresh_qty >= $value->fresh_qty && $pt_stock->repaired_qty >= $value->repaired_qty) ) { $pt_stock->fresh_qty = $pt_stock->fresh_qty - $value->fresh_qty; $pt_stock->repaired_qty = $pt_stock->repaired_qty - $value->repaired_qty; $pt_stock->suspense_qty=$pt_stock->suspense_qty-$value->fresh_qty; $pt_stock->suspense_rqty=$pt_stock->suspense_rqty-$value->repaired_qty; $pt_stock->save(); $spare_code = $value->spare_code; $warehouse = $omc->warehouse; if($value->fresh_qty != 0){ $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ DB::table('pt_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_pt_stock'; DB::table('pt_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){ $pt_inventory = DB::table('pt_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 ($pt_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ DB::table('pt_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_pt_stock'; DB::table('pt_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; } } } $historyOfPt = new HistoryPtStock(); $historyOfPt->added_by = $loginId; $historyOfPt->warehouse = $omc->warehouse; $historyOfPt->fresh_qty = $value->fresh_qty; $historyOfPt->repaired_qty = $value->repaired_qty; $historyOfPt->save(); } else { echo("Error"); return json_encode([ 'success' => false, 'msg' => "Sorry, You Cannot Authorize More Quantity Than Available In PT Stock.\n\n" . "Total Available Qty in Stock: " . $pt_stock->fresh_qty . " Fresh Qty, " . $pt_stock->repaired_qty . " Repaired Qty, " . $pt_stock->faulty_qty . " Faulty Qty,\n" ]); } } $omc->status = 'authorize'; $omc->authorize_by = $loginId; $omc->save(); return json_encode(['success'=>true,'msg'=>'OMC Authorized Successfully.']); } }else{ return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); } } //When stock_type is equal to circle_stock if($omc_requests->stock_type == 'circle_stock'){ if($omc != null){ if($omc->status == 'authorize'){ return json_encode(['success'=>false,'msg'=>'MR No Already authorized !!']); }else{ $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); $omc_requests = DB::table('omc_requests')->where('id',$omc->id)->first(); foreach ($omc_items as $key => $value) { // ---------if request is authorized then we simply minus that authorized qty in table in PtStock for the column fresh_qty,repaired_qty,suspense_qty & suspense_rqty-------- $pt_stock = PtStock::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); $st_stock = StockInCircleStore::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); //Added code to check if the stock value is greater or equal than requested value for approval then only can approve and minus from stock & suspense qty otherwise show the error message with available qty in stock(Added on 20/11/20 if ($st_stock != null && $omc_requests->stock_type == 'circle_stock' && ($st_stock->fresh_qty >= $value->fresh_qty && $st_stock->repaired_qty >= $value->repaired_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->suspense_qty=$st_stock->suspense_qty-$value->fresh_qty; $st_stock->suspense_rqty=$st_stock->suspense_rqty-$value->repaired_qty; $st_stock->save(); $spare_code = $value->spare_code; $warehouse = $omc->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; } } } $historyOfPt = new HistoryPtStock(); $historyOfPt->added_by = $loginId; $historyOfPt->warehouse = $omc->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," ]); } } $omc->status = 'authorize'; $omc->authorize_by = $loginId; $omc->save(); return json_encode(['success'=>true,'msg'=>'OMC Authorized Successfully.']); } }else{ return json_encode(['success'=>false,'msg'=>'Invalid MR No.']); } } } // if($omc != null){ // if($omc->status == 'authorize'){ // return json_encode(['success'=>false,'msg'=>'MR No Already authorized !!']); // }else{ // $omc_items = DB::table('omc_request_items')->where('omc_id',$omc->id)->get(); // foreach ($omc_items as $key => $value) { // // ---------if request is authorized then we simply minus that authorized qty in table in PtStock for the column fresh_qty,repaired_qty,suspense_qty & suspense_rqty-------- // $st_stock = StockInCircleStore::where('warehouse',$omc->warehouse)->where('spare_code',$value->spare_code)->first(); // if($st_stock != null){ // $st_stock->fresh_qty = $st_stock->fresh_qty - $value->fresh_qty; // $st_stock->repaired_qty = $st_stock->repaired_qty - $value->repaired_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->save(); // $spare_code = $value->spare_code; // $warehouse = $omc->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; // DB::table('warehouse_inventory')->where('id',$fvalue->id)->update(['available_qty'=> $available_qty]); // } // $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; // 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 = $omc->warehouse; // $historyOfPt->fresh_qty = $value->fresh_qty; // $historyOfPt->repaired_qty = $value->repaired_qty; // $historyOfPt->save(); // } // } // $omc->status = 'authorize'; // $omc->authorize_by = $loginId; // $omc->save(); // return json_encode(['success'=>true,'msg'=>'OMC 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 !!'); } } public function getOmcType() { $this->get_common(); $this->data['omc_types'] = \App\OmcType::where('is_active', 1)->get(); return view('master.omc-types', $this->data); } public function addOmcType(Request $request) { $validate = \Validator::make($request->all(), array( 'omc_type' => 'required', )); if($validate->fails()) { $response['status'] = 1; $response['flag'] = false; $response['errors'] = $validate->getMessageBag(); } else { $omc_type = new \App\OmcType(); $omc_type->omc_names = $request->omc_type; if($omc_type->save()){ $response['flag'] = true; $response['status'] = 2; $response['message'] = "OMC Type Added Added Successfully"; }else{ $response['flag'] = false; $response['status'] = 2; $response['message'] = "Something Went Wrong"; } } return response()->json($response); } public function getEditOmc($omc_id) { $this->data['omc'] = \App\OmcType::where('id',$omc_id)->where('is_active',1)->first(); return view('master.edit-omc',$this->data); } public function updateOmc(Request $request) { $validator = \Validator::make($request->all(), array( 'omc_name' =>'required', ) ); if($validator->fails()) { $response['flag'] = false; $response['status'] = 1; $response['errors'] = $validator->getMessageBag(); }else{ $omc = \App\OmcType::where('id',$request->omc_id)->where('is_active',1)->first(); if(is_null($omc)){ $response['flag'] = false; $response['status'] = 2; $response['error'] = "Omc Name Not found"; }else{ $omc->omc_names = $request->omc_name; if($omc->save()){ $response['flag'] = true; $response['msg'] = "Omc Name Updated Successfully"; }else{ $response['flag'] = false; $response['status'] = 2; $response['error'] = "Something Went Wrong"; } } } return response()->json($response); } public function deleteOmc($omc_id) { $response = array(); $omc = \App\OmcType::where('id', $omc_id)->where('is_active', 1)->first(); if (is_null($omc)) { $response['flag'] = false; $response['message'] = "Omc Name Not Found"; } else { if ($omc->delete()) { $response['flag'] = true; $response['message'] = "Omc Name Deleted"; } else { $response['flag'] = false; $response['message'] = "Failed to delete"; } } return response()->json($response); } public function edit_omc_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]; $omc_requests = OmcRequest::where('warehouse',$current_warehouse)->orderBy('id','desc')->get(); $this->data = array_merge($this->data,['omc_requests'=>$omc_requests,'warehouses'=>$warehouses,'current_warehouse'=>$current_warehouse]); return view('circle-store.omc.edit-my-omc-requests',$this->data); } public function updateOmcPermission(Request $request) { $validator = Validator::make($request->all(), [ 'mr_no' => 'required', 'edit_permission' => 'required', ], [ 'mr_no.required' => 'MR No field cannot be blank.', 'edit_permission.required' => 'Edit permission must be checked.', ]); if ($validator->fails()) { // Validation failed, return to the previous page with errors return redirect()->back()->withErrors($validator)->withInput(); } $mr_no = $request->input('mr_no'); $edit_permission = $request->input('edit_permission', 0); // Default value is 0 if checkbox is not checked // Check if the STN ID exists in the database $record = DB::table('omc_requests')->where('mr_no', $mr_no)->first(); if ($record && $record->status == 'request') { // Update the edit_permission column DB::table('omc_requests')->where('mr_no', $mr_no)->update(['edit_permission' => $edit_permission]); // Set a session variable to indicate success $successMessage = "You have given permission to ID No. $record->id to edit MR for the MR No. $mr_no."; } elseif($record && $record->status == 'rejected') { // Set a session variable to indicate failure $successMessage = "Sorry, the OMR No. $mr_no already has been rejected, So could not be edited !"; }else{ $successMessage = "Sorry, the OMR No. $mr_no already has been authorized, So could not be edited !"; } // Set the success message in the session variable session()->flash('sweet_alert_success', $successMessage); // Redirect back to the previous page or wherever you want return redirect()->back(); } public function get_omc_request_page($id){ $this->get_common(); $loginId = Auth::user()->loginId; $user_type = Auth::user()->type; $omc_types = \App\OmcType::where('is_active', 1)->get(); $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(); } $omc_ids = OmcRequestItem::where('omc_id', $id)->get(); foreach($omc_ids as $omc_id){ } // $allstr = StockTransferReceipt::where('warehouse',$current_warehouse)->get(); $allomc = OmcRequest::find($id); $get_omc = \App\OmcRequest::where('id',$id)->first(); if ($get_omc != null) { $get_omc_items = \App\OmcRequestItem::select( DB::raw('sum(fresh_qty) as fresh_qty'), DB::raw('sum(repaired_qty) as repaired_qty'), 'omc_request_items.spare_code', // Specify the table for spare_code 'omc_request_items.omc_id', // Specify the table for omc_id 'omc_request_items.id', // Specify the table for id 'omc_request_items.lot_no', // Specify the table for lot_no 'spare_parts_masters.description as spare_description', 'spare_parts_masters.uom as spare_uom', 'spare_parts_masters.category as spare_category' ) ->leftJoin('spare_parts_masters', 'omc_request_items.spare_code', '=', 'spare_parts_masters.code') ->where('omc_id', $get_omc->id) ->groupBy('omc_request_items.spare_code') // Specify the table for groupBy ->get(); } $this->data = array_merge($this->data,['assigned_warehouses'=>$warehouses,'customers'=>$customers,'current_warehouse'=>$current_warehouse,'omc_types'=>$omc_types,'all_omc' => $allomc, 'get_omc_items' => $get_omc_items,'get_omc'=>$get_omc,'id'=>$id]); return view('circle-store.omc.edit-omc',$this->data); } public function update_omc_now(Request $request){ // $stn_id = 'STN/PNT/298/2122'; $request = json_decode($request->omcRequest); $warehouse = $request->warehouse; $cutomer_po_date = $request->cutomer_po_date; $cutomer_po = $request->customer_po; $invoice_no = $request->invoice_no; $invoice_date = $request->invoice_date; $invoice_basic_value = $request->invoice_basic_value; $site_id = $request->site_id; $site_name = $request->site_name; $complaint_closure_date = $request->complaint_closure_date; $cust_open_po_status = $request->cust_open_po_status; $open_po_amount = $request->open_po_amount; $invoice_value = $request->invoice_value; $omc_type = $request->omc_type; $stock_type = $request->stock_type; $is_valid = true; $sp = ""; $sp_code = ''; $flag = false; $omc_ids = \App\OmcRequestItem::where('omc_id', $request->id)->get(); foreach($omc_ids as $omc_id){ } $get_omc = \App\OmcRequest::where('id',$request->id)->first(); //-----------------Deleting the item & added to responsible tables----------- if($get_omc != null && $request->stock_type == "pt_stock"){ $get_omc_items = \App\OmcRequestItem::where('omc_id',$get_omc->id)->get(); foreach($get_omc_items as $omc_item){ // dd($stn_item); if($omc_item->fresh_qty != 0){ $PtStock = \App\PtStock::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_qty = $PtStock->suspense_qty - $omc_item->fresh_qty; $PtStock->save(); } if($omc_item->repaired_qty != 0){ $PtStock = \App\PtStock::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_rqty = $PtStock->suspense_rqty - $omc_item->repaired_qty; $PtStock->save(); } $omc_item->delete(); } //----------------------------------------------------------------------- //---------Adding new items from update & minus from responsible table----- // if ($stn_item->delete() && $get_stn->delete()) { foreach ($request->items as $key => $val) { $wi_fresh = DB::table('pt_inventory')->where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); // ->select(DB::raw('round(sum(available_qty), 2) as total')) $wi_repaired = DB::table('pt_inventory')->where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $ms = PtStock::where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp_code = $sp_code.' '.$val->spare_code.' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp_code = $sp_code.' '.$val->spare_code.' Repaired'; } } } if($is_valid == true && $flag = true) { foreach ($request->items as $key => $val) { $ms = PtStock::where('spare_code',$val->spare_code)->where('warehouse',$warehouse)->first(); if($ms->fresh_qty < $val->qty && $val->qty != 0){ $is_valid = false; $sp = $val->spare_code.' Fresh'; break; } if($ms->repaired_qty < $val->rqty && $val->rqty != 0){ $is_valid = false; $sp = $val->spare_code.' repaired'; break; } } if($is_valid == true){ $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\OmcRequest::where('warehouse', $request->warehouse)->where('session', $session)->where('id', $request->id)->first(); if ($last_value != null) { $no = $last_value->series; } else { $no = 1; } //$session = date('y').date('y')+1; $last_value->warehouse=$warehouse; $last_value->po_no=$cutomer_po; $last_value->cutomer_po_date=$cutomer_po_date; $last_value->invoice_no=$invoice_no; $last_value->invoice_date=$invoice_date; $last_value->invoice_basic_value=$invoice_basic_value; $last_value->site_id=$site_id; $last_value->site_name=$site_name; $last_value->complaint_closure_date=$complaint_closure_date; $last_value->cust_open_po_status=$cust_open_po_status; $last_value->open_po_amount=$open_po_amount; $last_value->invoice_value=$invoice_value; $last_value->omc_type=$omc_type; if ($request->customer_code_and_name != "") { $cust_code_name = explode('--', $request->customer_code_and_name); $last_value->customer_code = $cust_code_name[0]; $last_value->customer_name = $cust_code_name[1]; } $last_value->status = 'request'; if($last_value->save()){ foreach ($request->items as $key => $val) { $spare_code = $val->spare_code; if($val->qty != 0){ $pt_inventory = DB::table('pt_inventory')->where('spare_code',$spare_code)->where('warehouse',$warehouse)->where('available_qty','>',0)->where('item_type','fresh')->get(); $total_adjust = 0; $required = $val->qty; foreach ($pt_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; // Fetch fresh spare_parts_masters details $spare_part = DB::table('spare_parts_masters') ->where('code', $fvalue->spare_code) ->select('repaired_rate', 'gst_slab_rates') ->first(); if (!$spare_part) { continue; } if($total_adjust < $required && $required != 0){ $spare_qty = $fvalue->available_qty; $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $fvalue->spare_code; $omcitem->status = 'request'; $omcitem->fresh_qty = $fvalue->available_qty; $omcitem->rate = $fvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $fvalue->lot_no; $omcitem->save(); } if($total_adjust > $required || $total_adjust == $required ){ $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $fvalue->spare_code; $omcitem->status = 'request'; $omcitem->fresh_qty = $required; $omcitem->rate = $fvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $fvalue->lot_no; $omcitem->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($val->rqty != 0){ $pt_inventory = DB::table('pt_inventory')->where('spare_code',$spare_code)->where('warehouse',$warehouse)->where('available_qty','>',0)->where('item_type','repaired')->get(); $total_adjust = 0; $rp_required = $val->rqty; foreach ($pt_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; $spare_part = DB::table('spare_parts_masters') ->where('code', $rvalue->spare_code) ->select('repaired_rate', 'gst_slab_rates') ->first(); if (!$spare_part) { continue; } if($total_adjust < $rp_required && $rp_required != 0){ $spare_qty = $rvalue->available_qty; $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $rvalue->spare_code; $omcitem->status = 'request'; $omcitem->repaired_qty = $rvalue->available_qty; $omcitem->rate = $rvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $rvalue->lot_no; $omcitem->save(); } if($total_adjust > $rp_required || $total_adjust == $rp_required ){ $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $rvalue->spare_code; $omcitem->status = 'request'; $omcitem->repaired_qty = $rp_required; $omcitem->rate = $rvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $rvalue->lot_no; $omcitem->save(); } $rp_required = $rp_required - $total_adjust; if( $rp_required == 0 || $rp_required < 0){ break 1; } } } $PtStock = \App\PtStock::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $ptStock = PtStock::where('spare_code',$val->spare_code)->where('warehouse',$warehouse)->first(); $ptStock->suspense_qty = $ptStock->suspense_qty + $val->qty; $PtStock->suspense_qty = $PtStock->suspense_qty + $omc_item->fresh_qty; $ptStock->suspense_rqty = $ptStock->suspense_rqty + $val->rqty; $PtStock->suspense_rqty = $PtStock->suspense_rqty + $omc_item->repaired_qty; $ptStock->save(); } return json_encode(['success'=>true,'msg'=>'OMC Updated Successfully ! ']); }else{ return json_encode(['success'=>true,'msg'=>'Somthing Went Wrong !!']); } }else{ return json_encode(['success'=>false, 'msg'=> 'Entered '.$sp.' Spare quantity is not available at PT stock. So OMC not created at this moment. !!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code.' Qty mismatch in Circle Stock , please contact to admin.!!']); } $success = true; // You can set this to false if there was an error // Set a session variable to indicate success or failure session()->flash('sweet_alert_success', $success); // Redirect back to the previous page or wherever you want return redirect()->back(); } if($get_omc != null && $request->stock_type == "circle_stock"){ $get_omc_items = \App\OmcRequestItem::where('omc_id',$get_omc->id)->get(); foreach($get_omc_items as $omc_item){ // dd($stn_item); if($omc_item->fresh_qty != 0){ $PtStock = \App\StockInCircleStore::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_qty = $PtStock->suspense_qty - $omc_item->fresh_qty; $PtStock->save(); } if($omc_item->repaired_qty != 0){ $PtStock = \App\StockInCircleStore::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_rqty = $PtStock->suspense_rqty - $omc_item->repaired_qty; $PtStock->save(); } $omc_item->delete(); } //----------------------------------------------------------------------- //---------Adding new items from update & minus from responsible table----- // if ($stn_item->delete() && $get_stn->delete()) { foreach ($request->items as $key => $val) { $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); // ->select(DB::raw('round(sum(available_qty), 2) as total')) $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $ms = StockInCircleStore::where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp_code = $sp_code.' '.$val->spare_code.' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp_code = $sp_code.' '.$val->spare_code.' Repaired'; } } } if($is_valid == true && $flag = true) { foreach ($request->items as $key => $val) { $ms = StockInCircleStore::where('spare_code',$val->spare_code)->where('warehouse',$warehouse)->first(); if($ms->fresh_qty < $val->qty && $val->qty != 0){ $is_valid = false; $sp = $val->spare_code.' Fresh'; break; } if($ms->repaired_qty < $val->rqty && $val->rqty != 0){ $is_valid = false; $sp = $val->spare_code.' repaired'; break; } } if($is_valid == true){ $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\OmcRequest::where('warehouse', $request->warehouse)->where('session', $session)->where('id', $request->id)->first(); if ($last_value != null) { $no = $last_value->series; } else { $no = 1; } //$session = date('y').date('y')+1; $last_value->warehouse=$warehouse; $last_value->po_no=$cutomer_po; $last_value->cutomer_po_date=$cutomer_po_date; $last_value->invoice_no=$invoice_no; $last_value->invoice_date=$invoice_date; $last_value->invoice_basic_value=$invoice_basic_value; $last_value->site_id=$site_id; $last_value->site_name=$site_name; $last_value->site_name=$site_name; $last_value->complaint_closure_date=$complaint_closure_date; $last_value->cust_open_po_status=$cust_open_po_status; $last_value->open_po_amount=$open_po_amount; $last_value->invoice_value=$invoice_value; $last_value->omc_type=$omc_type; if ($request->customer_code_and_name != "") { $cust_code_name = explode('--', $request->customer_code_and_name); $last_value->customer_code = $cust_code_name[0]; $last_value->customer_name = $cust_code_name[1]; } $last_value->status = 'request'; if($last_value->save()){ foreach ($request->items as $key => $val) { $spare_code = $val->spare_code; if($val->qty != 0){ $pt_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 = $val->qty; foreach ($pt_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; // Fetch fresh spare_parts_masters details $spare_part = DB::table('spare_parts_masters') ->where('code', $fvalue->spare_code) ->select('repaired_rate', 'gst_slab_rates') ->first(); if (!$spare_part) { continue; } if($total_adjust < $required && $required != 0){ $spare_qty = $fvalue->available_qty; $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $fvalue->spare_code; $omcitem->status = 'request'; $omcitem->fresh_qty = $fvalue->available_qty; $omcitem->rate = $fvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $fvalue->lot_no; $omcitem->save(); } if($total_adjust > $required || $total_adjust == $required ){ $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $fvalue->spare_code; $omcitem->status = 'request'; $omcitem->fresh_qty = $required; $omcitem->rate = $fvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $fvalue->lot_no; $omcitem->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($val->rqty != 0){ $pt_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; $rp_required = $val->rqty; foreach ($pt_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; // Fetch repaired spare_parts_masters details $spare_part = DB::table('spare_parts_masters') ->where('code', $rvalue->spare_code) ->select('repaired_rate', 'gst_slab_rates') ->first(); if (!$spare_part) { continue; } if($total_adjust < $rp_required && $rp_required != 0){ $spare_qty = $rvalue->available_qty; $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $rvalue->spare_code; $omcitem->status = 'request'; $omcitem->repaired_qty = $rvalue->available_qty; $omcitem->rate = $rvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $rvalue->lot_no; $omcitem->save(); } if($total_adjust > $rp_required || $total_adjust == $rp_required ){ $omcitem = new OmcRequestItem(); $omcitem->omc_id = $last_value->id; $omcitem->spare_code = $rvalue->spare_code; $omcitem->status = 'request'; $omcitem->repaired_qty = $rp_required; $omcitem->rate = $rvalue->rate; $omcitem->repaired_rate = $spare_part->repaired_rate; $omcitem->gst = $spare_part->gst_slab_rates; $omcitem->lot_no = $rvalue->lot_no; $omcitem->save(); } $rp_required = $rp_required - $total_adjust; if( $rp_required == 0 || $rp_required < 0){ break 1; } } } $PtStock = \App\StockInCircleStore::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $ptStock = StockInCircleStore::where('spare_code',$val->spare_code)->where('warehouse',$warehouse)->first(); $ptStock->suspense_qty = $ptStock->suspense_qty + $val->qty; $PtStock->suspense_qty = $PtStock->suspense_qty + $omc_item->fresh_qty; $ptStock->suspense_rqty = $ptStock->suspense_rqty + $val->rqty; $PtStock->suspense_rqty = $PtStock->suspense_rqty + $omc_item->repaired_qty; $ptStock->save(); } return json_encode(['success'=>true,'msg'=>'OMC Updated Successfully ! ']); }else{ return json_encode(['success'=>true,'msg'=>'Somthing Went Wrong !!']); } }else{ return json_encode(['success'=>false, 'msg'=> 'Entered '.$sp.' Spare quantity is not available at circle stock. So OMC not created at this moment. !!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code.' Qty mismatch in Circle Stock , please contact to admin.!!']); } $success = true; // You can set this to false if there was an error // Set a session variable to indicate success or failure session()->flash('sweet_alert_success', $success); // Redirect back to the previous page or wherever you want return redirect()->back(); } } public function revert_omc($id){ // $stn_id = 'STN/PNT/298/2122'; $omc_ids = OmcRequestItem::where('omc_id', $id)->get(); foreach($omc_ids as $omc_id){ } $get_omc = \App\OmcRequest::where('id',$id)->first(); if($get_omc != null && $get_omc->omc_type == "pt"){ $get_omc_items = \App\OmcRequestItem::where('omc_id',$get_omc->id)->get(); // dd($get_stn_items); foreach($get_omc_items as $omc_item){ // dd($stn_item); if($omc_item->fresh_qty != 0){ $PtStock = \App\PtStock::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_qty = $PtStock->suspense_qty - $omc_item->fresh_qty; $PtStock->save(); } if($omc_item->repaired_qty != 0){ $PtStock = \App\PtStock::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_rqty = $PtStock->suspense_rqty - $omc_item->repaired_qty; $PtStock->save(); } $omc_item->delete(); } $get_omc->delete(); } if($get_omc != null && $get_omc->omc_type == "amc"){ $get_omc_items = \App\OmcRequestItem::where('omc_id',$get_omc->id)->get(); // dd($get_stn_items); foreach($get_omc_items as $omc_item){ // dd($stn_item); if($omc_item->fresh_qty != 0){ $PtStock = \App\StockInCircleStore::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_qty = $PtStock->suspense_qty - $omc_item->fresh_qty; $PtStock->save(); } if($omc_item->repaired_qty != 0){ $PtStock = \App\StockInCircleStore::where('spare_code',$omc_item->spare_code)->where('warehouse',$get_omc->warehouse)->first(); $PtStock->suspense_rqty = $PtStock->suspense_rqty - $omc_item->repaired_qty; $PtStock->save(); } $omc_item->delete(); } $get_omc->delete(); } $success = true; // You can set this to false if there was an error // Set a session variable to indicate success or failure session()->flash('sweet_alert_success', $success); // Redirect back to the previous page or wherever you want return redirect()->back(); } }