/
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\StockInCircleStore; use App\EngineerSparePart; use App\SpareRequestByEngineer; use App\SparePartsMaster; use App\SparePartsInStock; use App\HistoryOfStockInCircleStore; use App\TrcStock; use App\HistoryTrcStock; use App\StockTransferNote; use App\StnItem; use App\GoodsReceiptNote; use App\GoodsReceiptItem; use App\StockTransferReceipt; use App\DeliveryTransaction; use App\DeliveryTransactionItem; use App\WareHouse; use App\PtStock; use DB; use Auth; use Illuminate\Support\Facades\Log; use Carbon\Carbon; use App\Exports\ResignedTechStockExport; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Support\Facades\Validator; class CircleStoreController 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 get_dashboard_page() { $this->get_common(); return view('circle-store.dashboard', $this->data); } public function get_spare_part_to_circle_store_for_trc(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $is_spare_part = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->where('faulty_qty', '>', 0)->count(); if ($is_spare_part > 0) { $circle_spare_info = DB::table('stock_in_circle_stores')->where('warehouse', $warehouse)->where('spare_code', $code)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'circle_spare_info' => $circle_spare_info]); } else { return json_encode(['success' => false, 'msg' => 'Circle Store has not the faulty item for the given Spare Code. Try another spare Code.']); } } public function get_spare_part_from_trc(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $loginId = Auth::user()->loginId; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $warehouse = $request->warehouse; $is_spare_part = DB::table('trc_stocks')->where('spare_code', $code)->where('warehouse', $warehouse)->where('qty', '>', 0)->count(); if ($is_spare_part > 0) { $trc_stock = DB::table('trc_stocks')->where('warehouse', $warehouse)->where('spare_code', $code)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'trc_stock' => $trc_stock]); } else { return json_encode(['success' => false, 'msg' => 'TRC has not the faulty item for the given Spare Code. Try another spare Code.']); } } public function spares_in_stock(Request $request) { $this->get_common(); $loginId = Auth::user()->loginId; $user_warehouse = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $user_warehouse->warehouseCode); if ($request->circle != '') { $current_warehouse = $request->circle; } else { $current_warehouse = $warehouses[0]; } $stocks = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->whereNotNull('spare_parts_masters.name')->where('stock_in_circle_stores.warehouse', $current_warehouse)->select('stock_in_circle_stores.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->orderBy('stock_in_circle_stores.spare_code', 'asc')->get(); $fresh_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->whereNotNull('spare_parts_masters.name')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'fresh')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $repaired_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'repaired')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $faulty_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'faulty')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['stocks' => $stocks, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse, 'fresh_stocks' => $fresh_stocks, 'repaired_stocks' => $repaired_stocks, 'faulty_stocks' => $faulty_stocks]); return view('circle-store.spare-in-stock', $this->data); } public function spares_in_suppnt_stock(Request $request) { $this->get_common(); $current_warehouse = 'SUPPNT'; $stocks = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.warehouse', $current_warehouse)->select('stock_in_circle_stores.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->orderBy('stock_in_circle_stores.spare_code', 'asc')->get(); $fresh_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'fresh')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $repaired_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'repaired')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['stocks' => $stocks, 'current_warehouse' => $current_warehouse, 'fresh_stocks' => $fresh_stocks, 'repaired_stocks' => $repaired_stocks]); return view('circle-store.suppnt-in-stock', $this->data); } public function get_spare_of_warehouse(Request $request) { $current_warehouse = $request->warehouse; $stocks = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.warehouse', $current_warehouse)->select('stock_in_circle_stores.*', 'spare_parts_masters.description', 'spare_parts_masters.repaired_rate')->get(); return json_encode(['success' => true, 'stocks' => $stocks]); } public function spare_at_engineers() { $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]; $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('warehouseCode', $current_warehouse)->get(); $this->data = array_merge($this->data, ['engineers' => $engineers, 'warehouses' => $warehouses]); return view('circle-store.spare-at-engineers', $this->data); } public function spare_at_sites() { $this->get_common(); // dd(Auth::user()); $role = Auth::user()->role; $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]; $sites = DB::table('site_master')->where('WH_code', $current_warehouse)->get(); $this->data = array_merge($this->data, ['sites' => $sites, 'current_warehouse' => $current_warehouse, 'warehouses' => $warehouses]); return view('circle-store.spare-at-sites', $this->data); } public function resigned_tech_stock_details(Request $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); //$current_warehouse = $warehouses[0]->fieldUserCodes; // $engineers = DB::table('engineer_spare_parts')->join('local_user_mapping', 'local_user_mapping.LoginID', 'engineer_spare_parts.engineer_id')->select('local_user_mapping.LoginID', 'local_user_mapping.StaffName', 'local_user_mapping.StaffCode')->distinct()->where('local_user_mapping.StoreCoordinatorCircleCodes', $loginId)->where('local_user_mapping.role', 'field_user')->where('local_user_mapping.fieldUserCodes', $current_warehouse)->where('local_user_mapping.StaffStatus', 'IA')->where(function($query){ // $query->where('engineer_spare_parts.fresh_qty', '>', 0)->orWhere('engineer_spare_parts.faulty_qty', '>', 0)->orWhere('engineer_spare_parts.repaired_qty', '>', 0); // })->get(); if ($request->action_type == "export") { $warehouses = $request->warehouse; $warehouses = preg_split("/\,/", $warehouses); $resigned_eng_stocks = array(); $n = 0; foreach ($warehouses as $warehouse) { $eng_stocks = DB::table('engineer_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'engineer_inventory.spare_code')->join('local_user_mapping', 'local_user_mapping.LoginID', 'engineer_inventory.engineer_id') ->select('engineer_inventory.warehouse', 'engineer_inventory.engineer_id', 'engineer_inventory.item_type', 'engineer_inventory.available_qty as qty', 'engineer_inventory.spare_code', 'spare_parts_masters.uom', 'spare_parts_masters.type', 'spare_parts_masters.description', 'local_user_mapping.StaffName', 'engineer_inventory.lot_no', 'engineer_inventory.rate') ->where('engineer_inventory.warehouse', $warehouse) ->where('local_user_mapping.StaffStatus', 'IA') ->where('engineer_inventory.available_qty', '>', 0) ->get(); foreach ($eng_stocks as $value) { $resigned_eng_stocks[$n] = $value; $n++; } } return Excel::download(new ResignedTechStockExport($resigned_eng_stocks), 'resignedTechStock.xlsx'); } // $this->data = array_merge($this->data,['engineers'=>$engineers,'warehouses'=>$warehouses]); $this->data = array_merge($this->data, ['warehouses' => $warehouses]); return view('circle-store.resigned-tech-stock-details', $this->data); } public function spare_request_by_engineers(Request $request) { $this->get_common(); $user_id = Auth::user()->id; $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); if ($request->warehouse != '') { $current_warehouse = $request->warehouse; } else { $current_warehouse = $warehouses[0]; } $spares_request = DB::table('spare_request_by_engineers')->join('local_user_mapping', 'local_user_mapping.LoginID', 'spare_request_by_engineers.enginer_id')->select('spare_request_by_engineers.*', 'local_user_mapping.StaffName')->where('spare_request_by_engineers.warehouse', $current_warehouse)->get(); $this->data = array_merge($this->data, ['spares_request' => $spares_request, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.spare-request-by-engineers', $this->data); } public function approved_requested_spare(Request $request) { $spare = SpareRequestByEngineer::find($request->id); $spare->status = 'approved'; $spare->save(); return json_encode(['success' => true]); } public function view_spare_request_by_engineer($id) { $this->get_common(); $user_id = Auth::user()->id; $spares_request = SpareRequestByEngineer::where('id', $id)->where('status', 'request')->first(); if ($spares_request != null) { $spares_request->spare_code; $spareparts = explode(',', $spares_request->spare_code); $spare_parts = []; foreach ($spareparts as $key => $value) { $spare_parts[$key] = SparePartsMaster::where('code', $value)->first(); } $this->data = array_merge($this->data, ['spares_request' => $spares_request, 'spare_parts' => $spare_parts]); return view('circle-store.view-spare-request-by-engineer', $this->data); } else { return redirect('circle-store/spare-request-by-engineers'); } } public function get_requested_spare_parts(Request $request) { $id = $request->id; $spares_request = SpareRequestByEngineer::find($id); if ($spares_request != null) { $spares_request->spare_code; $spareparts = explode(',', $spares_request->spare_code); $spare_parts = []; foreach ($spareparts as $key => $value) { $spare_parts[$key] = SparePartsMaster::where('code', $value)->first(); } return json_encode(['success' => true, 'spares_request' => $spares_request, 'spare_parts' => $spare_parts]); } } public function spare_assigned_to_engineer() { $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]; $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('warehouseCode', $current_warehouse)->get(); $this->data = array_merge($this->data, ['engineers' => $engineers, 'warehouses' => $warehouses]); return view('circle-store.spare-assigned-to-engineer', $this->data); } public function spare_assigned_to_site() { $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]; // $engineers = LocalUserMapping::where('role','field_user')->where('StoreCoordinatorCircleCodes',$loginId)->where('fieldUserCodes',$current_warehouse)->get(); $sites = DB::table('site_master')->select('Site_id', 'product', 'Site_Name')->where('WH_code', $current_warehouse)->get(); $site_product = DB::table('site_master')->select('product')->where('WH_code', $current_warehouse)->groupBy('product')->get(); $this->data = array_merge($this->data, ['sites' => $sites, 'warehouses' => $warehouses, 'site_product' => $site_product]); return view('circle-store.spare-assigned-to-site', $this->data); } public function get_engineer_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('warehouseCode', $warehouse)->get(); return json_encode(['success' => true, 'engineers' => $engineers]); } public function get_site_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $sites = DB::table('site_master')->select('Site_id', 'product', 'Site_Name')->where('WH_code', $warehouse)->get(); return json_encode(['success' => true, 'sites' => $sites]); } public function get_resigned_engineer_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; // $fieldUserCodes = substr_replace($warehouse, "", 0, 3); //$engineers = LocalUserMapping::where('role','field_user')->where('StoreCoordinatorCircleCodes',$loginId)->where('fieldUserCodes',$fieldUserCodes)->get(); $engineers = DB::table('engineer_spare_parts')->join('local_user_mapping', 'local_user_mapping.LoginID', 'engineer_spare_parts.engineer_id')->select('local_user_mapping.LoginID', 'local_user_mapping.StaffName', 'local_user_mapping.StaffCode')->distinct()->where('local_user_mapping.StoreCoordinatorCircleCodes', $loginId)->where('local_user_mapping.role', 'field_user')->where('local_user_mapping.warehouseCode', $warehouse)->where('local_user_mapping.StaffStatus', 'IA')->where(function ($query) { $query->where('engineer_spare_parts.fresh_qty', '>', 0)->orWhere('engineer_spare_parts.faulty_qty', '>', 0)->orWhere('engineer_spare_parts.repaired_qty', '>', 0); })->get(); return json_encode(['success' => true, 'engineers' => $engineers]); } public function get_admin_engineer_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $fieldUserCodes = substr_replace($warehouse, "", 0, 3); $engineers = LocalUserMapping::where('role', 'field_user')->where('fieldUserCodes', $fieldUserCodes)->get(); return json_encode(['success' => true, 'engineers' => $engineers]); } public function get_admin_resigned_engineer_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $fieldUserCodes = substr_replace($warehouse, "", 0, 3); $engineers = LocalUserMapping::where('role', 'field_user')->where('fieldUserCodes', $fieldUserCodes)->where('StaffStatus', 'IA')->get(); $engineers = DB::table('engineer_spare_parts')->join('local_user_mapping', 'local_user_mapping.LoginID', 'engineer_spare_parts.engineer_id')->select('local_user_mapping.LoginID', 'local_user_mapping.StaffName', 'local_user_mapping.StaffCode')->distinct()->where('local_user_mapping.role', 'field_user')->where('local_user_mapping.fieldUserCodes', $fieldUserCodes)->where('local_user_mapping.StaffStatus', 'IA')->where(function ($query) { $query->where('engineer_spare_parts.fresh_qty', '>', 0)->orWhere('engineer_spare_parts.faulty_qty', '>', 0)->orWhere('engineer_spare_parts.repaired_qty', '>', 0); })->get(); return json_encode(['success' => true, 'engineers' => $engineers]); } public function get_trc_engineer_of_warehouse(Request $request) { $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $fieldUserCodes = substr_replace($warehouse, "", 0, 3); $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('fieldUserCodes', $fieldUserCodes)->whereIn('StaffRole', ['TRC Technician', 'Trc Supervisor', 'TRC Engg'])->get(); return json_encode(['success' => true, 'engineers' => $engineers]); } public function assign_spare_now_old(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $engineer_id = $request->engineer_id; $userInfo = LocalUserMapping::where('LoginID', $engineer_id)->first(); $warehouse = $request->warehouse; $purpose = $request->purpose; $items = $request->items; $is_valid = true; $sp = ""; $sp_code = ''; foreach ($items as $val) { $warehouse_fresh_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $warehouse_repaired_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->fresh_qty != $warehouse_fresh_qty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; } if ($ms->repaired_qty != $warehouse_repaired_qty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Repaired'; } } else { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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\DeliveryTransaction::where('warehouse', $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; } $dt = new DeliveryTransaction(); $dt->series = $no; $dt->session = $session; $dt->delivery_challan_no = 'DC/' . substr($warehouse, 3) . '/' . $no . '/' . $session; $dt->engineer_id = $engineer_id; $dt->status = 'assign'; $dt->added_by = $user_id; $dt->warehouse = $warehouse; $dt->purpose = $purpose; if ($dt->save()) { $n = 0; foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->count(); if ($is_espare > 0) { $espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty + $value['qty']; $espare->warehouse = $warehouse; $espare->repaired_qty = $espare->repaired_qty + $value['rqty']; $espare->save(); } else { $spare = new EngineerSparePart(); $spare->engineer_id = $engineer_id; $spare->warehouse = $warehouse; $spare->spare_id = $value['id']; $spare->spare_code = $value['code']; $spare->fresh_qty = $value['qty']; $spare->repaired_qty = $value['rqty']; $spare->save(); } $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->save(); } $dti = new DeliveryTransactionItem(); $dti->engineer_id = $engineer_id; $dti->dt_id = $dt->id; $dti->spare_code = $value['code']; $dti->fresh_qty = $value['qty']; $dti->repaired_qty = $value['rqty']; $dti->rate = $value['rate']; $dti->gst = $value['gst_slab_rates']; $dti->save(); 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) { $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $required; $ei->rate = $fvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $required; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $rp_required; $ei->rate = $rvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rp_required; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } } return json_encode(['success' => true, 'msg' => 'Spare Assigned to Engineer Successfully!! DC Number is: ' . $dt->delivery_challan_no]); } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at circle Store. So, Not able to assign this spare.!!']); } } else { return json_encode(['succes' => false, 'msg' => $sp_code . 'Spare Quantity mismatch in Circle Stock , please contact admin.']); } } public function assign_spare_now(Request $request){ $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $user_type = Auth::user()->type; $engineer_id = ($request->type == 2)?$request->site_id:$request->engineer_id; //$userInfo = LocalUserMapping::where('LoginID',$engineer_id)->first(); $warehouse = $request->warehouse; $purpose = $request->purpose; $items = $request->items; $is_valid = true; $sp = ""; $errorMsg = ""; $sp_code = ''; foreach ($items as $val) { $warehouse_fresh_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $warehouse_repaired_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $inventory_fresh_qty = DB::table('engineer_inventory')->where('spare_code', $val['code'])->where('engineer_id',$engineer_id)->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $inventory_repaired_qty = DB::table('engineer_inventory')->where('spare_code', $val['code'])->where('engineer_id',$engineer_id)->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $spare_code = $val['code']; $st = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->fresh_qty != $warehouse_fresh_qty) { $is_valid = false; $errorMsg = "Mismatch in Circle Stock!\n\n" . "Spare Type : Fresh\n" . "Engineer Id: " . $engineer_id . ",\n" . "Spare Code: " . $spare_code . ",\n" . "Table: (stock_in_circle_store to warehouse_inventory).\n\n"; } if ($ms->repaired_qty != $warehouse_repaired_qty) { $is_valid = false; $errorMsg = "Mismatch in Circle Stock!\n\n" . "Spare Type : Repaired\n" . "Engineer Id: " . $engineer_id . ",\n" . "Spare Code: " . $spare_code . ",\n" . "Table: (stock_in_circle_store to warehouse_inventory).\n\n"; } if ($st) { if ($st->fresh_qty != $inventory_fresh_qty) { $is_valid = false; $errorMsg = "Mismatch in Engineer Stock!\n\n" . "Spare Type : Fresh\n" . "Engineer Id: " . $engineer_id . ",\n" . "Spare Code: " . $spare_code . ",\n" . "Table: (engineer_spare_parts to engineer_inventory).\n\n"; } if ($st->repaired_qty != $inventory_repaired_qty) { $is_valid = false; $errorMsg = "Mismatch in Engineer Stock!\n\n" . "Spare Type : Repaired\n" . "Engineer Id: " . $engineer_id . ",\n" . "Spare Code: " . $spare_code . ",\n" . "Table: (engineer_spare_parts to engineer_inventory).\n\n"; } } } } if($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code',$val['code'])->where('warehouse',$warehouse)->first(); $st = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->where('warehouse',$warehouse)->first(); if($ms != null){ if($ms->fresh_qty < $val['qty'] && $val['qty'] != 0){ $is_valid = false; $sp = 'Entered Fresh Qty of ' . $val['code'] . ' Spare not at Circle Store.'; break; } if($ms->repaired_qty < $val['rqty'] && $val['rqty'] != 0 ){ $is_valid = false; $sp = 'Entered Repaired Qty of ' . $val['code'] . ' Spare not at Circle Store.'; break; } // if($st->fresh_qty < $val['qty'] && $val['qty'] != 0){ // $is_valid = false; // $sp = $val['code'].' Fresh Qty Spare not at Engineers Stock.'; // break; // } // if($st->repaired_qty < $val['rqty'] && $val['rqty'] != 0 ){ // $is_valid = false; // $sp = $val['code'].'Repaired Qty Spare not at Engineers Stock.'; // break; // } }else{ $is_valid = false; $sp = $val['code'].' Fresh'; break; } } if($is_valid == true){ DB::beginTransaction(); try{ $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\DeliveryTransaction::where('warehouse',$warehouse)->where('session',$session)->orderBy('id','desc')->first(); if($last_value != null){ $no = $last_value->series + 1; }else{ $no = 1; } $dt = new DeliveryTransaction(); $dt->series = $no; $dt->session = $session; $ware_hus = ($user_type == 1)?substr($warehouse,3):substr($warehouse,4); $dt->delivery_challan_no = 'DC/'.$ware_hus.'/'.$no.'/'.$session; $dt->engineer_id = $engineer_id; $dt->status = 'assign'; $dt->added_by = $user_id; $dt->warehouse = $warehouse; $dt->purpose = $purpose; $dt->type = ($user_type == 2)?2:1; if($dt->save()){ $n=0; foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->count(); if($is_espare > 0){ $espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty + $value['qty']; $espare->repaired_qty = $espare->repaired_qty + $value['rqty']; $espare->save(); }else{ $spare = new EngineerSparePart(); $spare->engineer_id = $engineer_id; $spare->spare_id = $value['id']; $spare->spare_code = $value['code']; $spare->fresh_qty = $value['qty']; $spare->repaired_qty = $value['rqty']; $spare->warehouse = $warehouse; $spare->type = ($user_type == 2)?2:1; $spare->save(); } $stock_in_store = StockInCircleStore::where('spare_code',$spare_code)->where('warehouse',$warehouse)->first(); if($stock_in_store != null){ $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->save(); } $dti = new DeliveryTransactionItem(); $dti->engineer_id = $engineer_id; $dti->dt_id = $dt->id; $dti->spare_code = $value['code']; $dti->fresh_qty = $value['qty']; $dti->repaired_qty = $value['rqty']; $dti->rate = $value['rate']; $dti->gst = $value['gst_slab_rates']; $dti->save(); 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){ $ei = \App\EngineerInventory::where('spare_code',$fvalue->spare_code)->where('engineer_id',$engineer_id)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); if($ei != null){ $ei->available_qty = $ei->available_qty + $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->save(); }else{ $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->type = ($user_type == 2)?2:1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id',$fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; $warehouse_inventory_main->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $ei = \App\EngineerInventory::where('spare_code',$fvalue->spare_code)->where('engineer_id',$engineer_id)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); if($ei != null){ $ei->available_qty = $ei->available_qty + $required; $ei->rate = $fvalue->rate; $ei->save(); }else{ $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $required; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->type = ($user_type == 2)?2:1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id',$fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if($total_adjust < $rp_required && $rp_required != 0){ $ei = \App\EngineerInventory::where('spare_code',$rvalue->spare_code)->where('engineer_id',$engineer_id)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); if($ei != null){ $ei->available_qty = $ei->available_qty + $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->save(); }else{ $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->type = ($user_type == 2)?2:1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id',$rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); }elseif($total_adjust > $rp_required || $total_adjust == $rp_required ){ $ei = \App\EngineerInventory::where('spare_code',$rvalue->spare_code)->where('engineer_id',$engineer_id)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); if($ei != null){ $ei->available_qty = $ei->available_qty + $rp_required; $ei->rate = $rvalue->rate; $ei->save(); }else{ $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $engineer_id; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rp_required; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->type = ($user_type == 2)?2:1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id',$rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if( $rp_required == 0 || $rp_required < 0){ break 1; } } } } } DB::commit(); return json_encode(['success' => true, 'msg' => 'Spare Assigned to Engineer/Employee Successfully!! DC Number is: ' . $dt->delivery_challan_no]); } catch(\Exception $exceptoin){ DB::rollback(); return json_encode(['success'=>false, 'msg'=> $exceptoin->getMessage()]); } catch(\Error $error) { DB::rollback(); return json_encode(['success'=>false, 'msg'=> $error->getMessage()]); } }else{ return json_encode(['success'=>false, 'msg'=> $sp.' So, Not able to assign more than available qty !!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code . ' Qty ' . $errorMsg . 'Please Contact Admin !!']); } } // public function assign_spare_now(Request $request) // { // // dd($request); // $user_id = Auth::user()->id; // $loginId = Auth::user()->loginId; // $user_type = Auth::user()->type; // $engineer_id = ($request->type == 2) ? $request->site_id : $request->engineer_id; // //$userInfo = LocalUserMapping::where('LoginID',$engineer_id)->first(); // $warehouse = $request->warehouse; // $purpose = $request->purpose; // $items = $request->items; // $is_valid = true; // $sp = ""; // $sp_code = ''; // foreach ($items as $val) { // $warehouse_fresh_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); // $warehouse_repaired_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); // $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); // if ($ms != null) { // if ((int)$ms->fresh_qty != (int)$warehouse_fresh_qty) { // $is_valid = false; // $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; // } // if ((int)$ms->repaired_qty != (int)$warehouse_repaired_qty) { // $is_valid = false; // $sp_code = $sp_code . ' ' . $val['code'] . ' Repaired'; // } // } // } // if ($is_valid == true) { // foreach ($items as $val) { // $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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) { // DB::beginTransaction(); // try { // $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\DeliveryTransaction::where('warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); // if ($last_value != null) { // $no = $last_value->series + 1; // } else { // $no = 1; // } // $dt = new DeliveryTransaction(); // $dt->series = $no; // $dt->session = $session; // $ware_hus = ($user_type == 1) ? substr($warehouse, 3) : substr($warehouse, 4); // $dt->delivery_challan_no = 'DC/' . $ware_hus . '/' . $no . '/' . $session; // $dt->engineer_id = $engineer_id; // $dt->status = 'assign'; // $dt->added_by = $user_id; // $dt->warehouse = $warehouse; // $dt->purpose = $purpose; // $dt->type = ($user_type == 2) ? 2 : 1; // if ($dt->save()) { // $n = 0; // foreach ($items as $value) { // $spare_code = $value['code']; // $is_espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->count(); // if ($is_espare > 0) { // $espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); // $espare->fresh_qty = $espare->fresh_qty + $value['qty']; // $espare->repaired_qty = $espare->repaired_qty + $value['rqty']; // $espare->save(); // } else { // $spare = new EngineerSparePart(); // $spare->engineer_id = $engineer_id; // $spare->spare_id = $value['id']; // $spare->spare_code = $value['code']; // $spare->fresh_qty = $value['qty']; // $spare->repaired_qty = $value['rqty']; // $spare->warehouse = $warehouse; // $spare->type = ($user_type == 2) ? 2 : 1; // $spare->save(); // } // $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); // if ($stock_in_store != null) { // $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; // $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; // $stock_in_store->save(); // } // $dti = new DeliveryTransactionItem(); // $dti->engineer_id = $engineer_id; // $dti->dt_id = $dt->id; // $dti->spare_code = $value['code']; // $dti->fresh_qty = $value['qty']; // $dti->repaired_qty = $value['rqty']; // $dti->rate = $value['rate']; // $dti->gst = $value['gst_slab_rates']; // $dti->save(); // 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) { // $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); // if ($ei != null) { // $ei->available_qty = $ei->available_qty + $fvalue->available_qty; // $ei->rate = $fvalue->rate; // $ei->save(); // } else { // $ei = new \App\EngineerInventory(); // $ei->warehouse = $warehouse; // $ei->engineer_id = $engineer_id; // $ei->item_type = 'fresh'; // $ei->entry_type = 'assign'; // $ei->spare_code = $fvalue->spare_code; // $ei->available_qty = $fvalue->available_qty; // $ei->rate = $fvalue->rate; // $ei->lot_no = $fvalue->lot_no; // $ei->type = ($user_type == 2) ? 2 : 1; // $ei->save(); // } // $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); // $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; // $warehouse_inventory_main->save(); // } elseif ($total_adjust > $required || $total_adjust == $required) { // $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); // if ($ei != null) { // $ei->available_qty = $ei->available_qty + $required; // $ei->rate = $fvalue->rate; // $ei->save(); // } else { // $ei = new \App\EngineerInventory(); // $ei->warehouse = $warehouse; // $ei->engineer_id = $engineer_id; // $ei->item_type = 'fresh'; // $ei->entry_type = 'assign'; // $ei->spare_code = $fvalue->spare_code; // $ei->available_qty = $required; // $ei->rate = $fvalue->rate; // $ei->lot_no = $fvalue->lot_no; // $ei->type = ($user_type == 2) ? 2 : 1; // $ei->save(); // } // $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); // $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; // $warehouse_inventory_main->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; // $rp_required = $value['rqty']; // foreach ($warehouse_inventory as $key => $rvalue) { // $total_adjust = $rvalue->available_qty; // if ($total_adjust < $rp_required && $rp_required != 0) { // $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); // if ($ei != null) { // $ei->available_qty = $ei->available_qty + $rvalue->available_qty; // $ei->rate = $rvalue->rate; // $ei->save(); // } else { // $ei = new \App\EngineerInventory(); // $ei->warehouse = $warehouse; // $ei->engineer_id = $engineer_id; // $ei->item_type = 'repaired'; // $ei->entry_type = 'assign'; // $ei->spare_code = $rvalue->spare_code; // $ei->available_qty = $rvalue->available_qty; // $ei->rate = $rvalue->rate; // $ei->lot_no = $rvalue->lot_no; // $ei->type = ($user_type == 2) ? 2 : 1; // $ei->save(); // } // $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); // $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; // $warehouse_inventory_main->save(); // } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { // $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $engineer_id)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); // if ($ei != null) { // $ei->available_qty = $ei->available_qty + $rp_required; // $ei->rate = $rvalue->rate; // $ei->save(); // } else { // $ei = new \App\EngineerInventory(); // $ei->warehouse = $warehouse; // $ei->engineer_id = $engineer_id; // $ei->item_type = 'repaired'; // $ei->entry_type = 'assign'; // $ei->spare_code = $rvalue->spare_code; // $ei->available_qty = $rp_required; // $ei->rate = $rvalue->rate; // $ei->lot_no = $rvalue->lot_no; // $ei->type = ($user_type == 2) ? 2 : 1; // $ei->save(); // } // $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); // $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; // $warehouse_inventory_main->save(); // } // $rp_required = $rp_required - $total_adjust; // if ($rp_required == 0 || $rp_required < 0) { // break 1; // } // } // } // //----------------------------------------------------------------------- // $spare_code = $value['code']; // $engineer_spare_part = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); // $engineer_inventory_fresh = \App\EngineerInventory::where('spare_code', $fvalue->spare_code) // ->where('engineer_id', $engineer_id) // ->where('item_type', 'fresh') // ->where('lot_no', $fvalue->lot_no) // ->sum('available_qty'); // $engineer_inventory_repaired = \App\EngineerInventory::where('spare_code', $rvalue->spare_code) // ->where('engineer_id', $engineer_id) // ->where('item_type', 'repaired') // ->where('lot_no', $rvalue->lot_no) // ->sum('available_qty'); // if ( // $engineer_spare_part->fresh_qty == $engineer_inventory_fresh && // $engineer_spare_part->repaired_qty == $engineer_inventory_repaired // ) { // echo json_encode(['success' => true, 'msg' => 'Spare Assigned to Engineer/Employee Successfully !!']); // } else { // $msg = ' Qty mismatch in Engineer Account!, // Engineer Id: ' . $engineer_id . ', // Spare Code: ' . $spare_code . ', // Table: (engineer_spare_parts to engineer_inventory). // Please contact Admin !!'; // echo json_encode(['success' => false, 'msg' => $msg,]); // // Rollback the transaction // DB::rollback(); // } // //--------------------------------------------------------------------- // } // } // DB::commit(); // } catch (\Exception $exceptoin) { // DB::rollback(); // return json_encode(['success' => false, 'msg' => $exceptoin->getMessage()]); // } catch (\Error $error) { // DB::rollback(); // return json_encode(['success' => false, 'msg' => $error->getMessage()]); // } // } else { // return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at circle Store. So, Not able to assign this spare.!!']); // } // } else { // $msg = ' Qty mismatch in Stock!, // Site Id: ' . $engineer_id . ', // Spare Code: ' . $sp_code . ', // Table: (stock_in_circle_store to warehouse_inventory). // Please contact Admin !!'; // echo json_encode(['success' => false, 'msg' => $msg, 'bold' => true]); // // return json_encode(['success' => false, 'msg' => $sp_code . ' Qty mismatch in Circle Stock , please contact to admin.!!']); // } // } public function assign_spare_to_site_now(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $user_type = Auth::user()->type; // $engineer_id = ($request->type == 2)?$request->site_id:$request->engineer_id; $site_arr = explode('::', $request->site_id); $site_id = $site_arr[0]; $site_product = $site_arr[1]; //$userInfo = LocalUserMapping::where('LoginID',$engineer_id)->first(); $warehouse = $request->warehouse; $purpose = $request->purpose; $items = $request->items; $is_valid = true; $sp = ""; $sp_code = ''; foreach ($items as $val) { $warehouse_fresh_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $warehouse_repaired_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); if ($ms != null) { if ((int)$ms->fresh_qty != (int)$warehouse_fresh_qty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; } if ((int)$ms->repaired_qty != (int)$warehouse_repaired_qty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Repaired'; } } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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) { DB::beginTransaction(); try { $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\DeliveryTransaction::where('warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 1; } $dt = new DeliveryTransaction(); $dt->series = $no; $dt->session = $session; $ware_hus = ($user_type == 1) ? substr($warehouse, 3) : substr($warehouse, 4); $dt->delivery_challan_no = 'DC/' . $ware_hus . '/' . $no . '/' . $session; $dt->engineer_id = $site_id; $dt->site_product = $site_product; $dt->status = 'assign'; $dt->added_by = $user_id; $dt->warehouse = $warehouse; $dt->purpose = $purpose; $dt->type = ($user_type == 2) ? 2 : 1; if ($dt->save()) { $n = 0; foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id', $site_id)->where('site_product', $site_product)->where('spare_code', $spare_code)->count(); if ($is_espare > 0) { $espare = EngineerSparePart::where('engineer_id', $site_id)->where('site_product', $site_product)->where('spare_code', $spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty + $value['qty']; $espare->repaired_qty = $espare->repaired_qty + $value['rqty']; $espare->save(); } else { $spare = new EngineerSparePart(); $spare->engineer_id = $site_id; $spare->site_product = $site_product; $spare->spare_id = $value['id']; $spare->spare_code = $value['code']; $spare->fresh_qty = $value['qty']; $spare->repaired_qty = $value['rqty']; $spare->warehouse = $warehouse; $spare->type = ($user_type == 2) ? 2 : 1; $spare->save(); } $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->save(); } $dti = new DeliveryTransactionItem(); $dti->engineer_id = $site_id; $dti->site_product = $site_product; $dti->dt_id = $dt->id; $dti->spare_code = $value['code']; $dti->fresh_qty = $value['qty']; $dti->repaired_qty = $value['rqty']; $dti->rate = $value['rate']; $dti->gst = $value['gst_slab_rates']; $dti->save(); 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) { $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $site_id; $ei->site_product = $site_product; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $fvalue->available_qty; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->type = ($user_type == 2) ? 2 : 1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $ei = \App\EngineerInventory::where('spare_code', $fvalue->spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $required; $ei->rate = $fvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $site_id; $ei->site_product = $site_product; $ei->item_type = 'fresh'; $ei->entry_type = 'assign'; $ei->spare_code = $fvalue->spare_code; $ei->available_qty = $required; $ei->rate = $fvalue->rate; $ei->lot_no = $fvalue->lot_no; $ei->type = ($user_type == 2) ? 2 : 1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $site_id; $ei->site_product = $site_product; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rvalue->available_qty; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->type = ($user_type == 2) ? 2 : 1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { $ei = \App\EngineerInventory::where('spare_code', $rvalue->spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($ei != null) { $ei->available_qty = $ei->available_qty + $rp_required; $ei->rate = $rvalue->rate; $ei->save(); } else { $ei = new \App\EngineerInventory(); $ei->warehouse = $warehouse; $ei->engineer_id = $site_id; $ei->site_product = $site_product; $ei->item_type = 'repaired'; $ei->entry_type = 'assign'; $ei->spare_code = $rvalue->spare_code; $ei->available_qty = $rp_required; $ei->rate = $rvalue->rate; $ei->lot_no = $rvalue->lot_no; $ei->type = ($user_type == 2) ? 2 : 1; $ei->save(); } $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } } DB::commit(); return json_encode(['success' => true, 'msg' => 'Spare Assigned to Engineer/Employee Successfully !!']); } catch (\Exception $exceptoin) { DB::rollback(); return json_encode(['success' => false, 'msg' => $exceptoin->getMessage()]); } catch (\Error $error) { DB::rollback(); return json_encode(['success' => false, 'msg' => $error->getMessage()]); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at circle Store. So, Not able to assign this spare.!!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code . ' Qty mismatch in Circle Stock , please contact to admin.!!']); } } public function get_spare_part_from_circle_stock(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $id_spare_part = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($id_spare_part > 0) { $spare_part = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.spare_code', $code)->where('stock_in_circle_stores.warehouse', $warehouse)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part]); } else { return json_encode(['success' => false, 'msg' => 'Spare Not available at circle store.!!']); } } // Old code which was running was commented on 15/03/24 & created at new function with same function name with some improvement // public function get_spare_part_at_engineer(Request $request) // { // $engineer_id = $request->engineer_id; // $spares = DB::table('engineer_spare_parts')->join('spare_parts_masters', 'spare_parts_masters.code', 'engineer_spare_parts.spare_code')->where('engineer_spare_parts.engineer_id', $engineer_id)->select('engineer_spare_parts.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); // $fresh_at_engineer = DB::table('engineer_inventory')->where('item_type', 'fresh')->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->get(); // $repaired_at_engineer = DB::table('engineer_inventory')->where('item_type', 'repaired')->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->get(); // $faulty_at_engineer = DB::table('engineer_inventory')->where('item_type', 'faulty')->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->get(); // return json_encode(['success' => true, 'spares' => $spares, 'fresh_items' => $fresh_at_engineer, 'repaired_items' => $repaired_at_engineer, 'faulty_items' => $faulty_at_engineer]); // } // Added on 15/03/24 public function get_spare_part_at_engineer(Request $request) { $engineer_id = $request->engineer_id; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $engineer_id) ->first(); $warehouses = explode(',', $assigned_warehouses->warehouseCode); $current_warehouse = $warehouses[0]; $spares = DB::table('engineer_spare_parts')->join('spare_parts_masters', 'spare_parts_masters.code', 'engineer_spare_parts.spare_code')->where('engineer_spare_parts.engineer_id', $engineer_id)->where('engineer_spare_parts.warehouse', $current_warehouse)->select('engineer_spare_parts.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); $fresh_at_engineer = DB::table('engineer_inventory')->where('item_type', 'fresh')->where('engineer_id', $engineer_id)->where('warehouse', $current_warehouse)->where('available_qty', '>', 0)->get(); $repaired_at_engineer = DB::table('engineer_inventory')->where('item_type', 'repaired')->where('warehouse', $current_warehouse)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->get(); $faulty_at_engineer = DB::table('engineer_inventory')->where('item_type', 'faulty')->where('warehouse', $current_warehouse)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->get(); return json_encode(['success' => true, 'spares' => $spares, 'fresh_items' => $fresh_at_engineer, 'repaired_items' => $repaired_at_engineer, 'faulty_items' => $faulty_at_engineer]); } public function get_spare_part_at_site(Request $request) { $site_id = $request->site_id; $spares = DB::table('engineer_spare_parts')->join('spare_parts_masters', 'spare_parts_masters.code', 'engineer_spare_parts.spare_code')->where('engineer_spare_parts.engineer_id', $site_id)->select('engineer_spare_parts.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->get(); $fresh_at_engineer = DB::table('engineer_inventory')->where('item_type', 'fresh')->where('engineer_id', $site_id)->where('available_qty', '>', 0)->get(); $repaired_at_engineer = DB::table('engineer_inventory')->where('item_type', 'repaired')->where('engineer_id', $site_id)->where('available_qty', '>', 0)->get(); $faulty_at_engineer = DB::table('engineer_inventory')->where('item_type', 'faulty')->where('engineer_id', $site_id)->where('available_qty', '>', 0)->get(); return json_encode(['success' => true, 'spares' => $spares, 'fresh_items' => $fresh_at_engineer, 'repaired_items' => $repaired_at_engineer, 'faulty_items' => $faulty_at_engineer]); } public function authorize_spare_request(Request $request) { $engineer_id = $request->engineer_id; $items = $request->items; $user_id = Auth::user()->id; foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->count(); if ($is_espare > 0) { $espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty + $value['qty']; $espare->repaired_qty = $espare->repaired_qty + $value['rqty']; $espare->save(); } else { $spare = new EngineerSparePart(); $spare->engineer_id = $engineer_id; $spare->spare_id = $value['id']; $spare->spare_code = $value['code']; $spare->fresh_qty = $value['qty']; $spare->repaired_qty = $value['rqty']; $spare->save(); } $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('user_id', $user_id)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->save(); } } $id = $request->request_id; $spares_request = SpareRequestByEngineer::find($id); $spares_request->status = 'authorize'; $spares_request->save(); return json_encode(['success' => true, 'msg' => 'Spare Assigned to Engineer Successfully !!']); } public function get_material_receiving(Request $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); $current_warehouse = $warehouses[0]; $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('warehouseCode', $current_warehouse)->get(); $this->data = array_merge($this->data, ['engineers' => $engineers, 'warehouses' => $warehouses]); return view('circle-store.material-receiving', $this->data); } public function received_spare_now(Request $request){ $engineer_id = $request->engineer_id; $warehouse = $request->warehouse; $items = $request->items; $user_id = Auth::user()->id; $is_valid = true; $type = $request->type; $engineer_id = ($type == 2)?$request->site_id:$request->engineer_id; $eng_text = ($type == 2)?'Site':'Engineer'; $eng_text1 = ($type == 2)?'site':'eng'; foreach ($items as $val) { $ms = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$val['code'])->first(); if($ms != null){ if($ms->fresh_qty < $val['fqty'] && $val['fqty'] != 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['flqty'] && $val['flqty'] != 0 ){ $is_valid = false; $sp = $val['code'].' Faulty'; break; } }else{ $is_valid = false; $sp = $val['code'].' Fresh'; break; } } if($is_valid == true){ $skip_spare_code = []; $added_spare_code = []; $added_count = 0; $n = 0; DB::beginTransaction(); try{ foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->count(); if($is_espare > 0){ $espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty - $value['fqty']; $espare->faulty_qty = $espare->faulty_qty - $value['flqty']; $espare->repaired_qty = $espare->repaired_qty - $value['rqty']; $espare->save(); $is_stock_in_store = StockInCircleStore::where('spare_code',$spare_code)->where('warehouse',$warehouse)->count(); if($is_stock_in_store > 0){ $stock_in_store = StockInCircleStore::where('spare_code',$spare_code)->where('warehouse',$warehouse)->first(); $stock_in_store->fresh_qty = $stock_in_store->fresh_qty + $value['fqty']; $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['flqty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty + $value['rqty']; $stock_in_store->save(); }else{ $stock_in_store = new StockInCircleStore(); $stock_in_store->user_id = $user_id; $stock_in_store->warehouse = $warehouse; $stock_in_store->spare_id = $value['id']; $stock_in_store->spare_code = $value['code']; $stock_in_store->fresh_qty = $value['fqty']; $stock_in_store->faulty_qty = $value['flqty']; $stock_in_store->repaired_qty = $value['rqty']; $stock_in_store->save(); } if($value['fqty'] != 0){ $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','fresh')->get(); $total_adjust = 0; $required = $value['fqty']; foreach ($engineer_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if($total_adjust < $required && $required != 0){ $wi = \App\WarehouseInventory::where('spare_code',$fvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fvalue->available_qty; $engineer_inventory_main->save(); }elseif($total_adjust > $required || $total_adjust == $required ){ $wi = \App\WarehouseInventory::where('spare_code',$fvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $required; $wi->rate = $fvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $required; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $required; $engineer_inventory_main->save(); } $required = $required - $total_adjust; if( $required == 0 || $required < 0){ break 1; } } } if($value['rqty'] != 0){ $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','repaired')->get(); $total_adjust = 0; $rp_required = $value['rqty']; foreach ($engineer_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if($total_adjust < $rp_required && $rp_required != 0){ $wi = \App\WarehouseInventory::where('spare_code',$rvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$rvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rvalue->available_qty; $engineer_inventory_main->save(); }elseif($total_adjust > $rp_required || $total_adjust == $rp_required ){ $wi = \App\WarehouseInventory::where('spare_code',$rvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $rp_required; $wi->rate = $rvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rp_required; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$rvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rp_required; $engineer_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if( $rp_required == 0 || $rp_required < 0){ break 1; } } } if($value['flqty'] != 0){ $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','faulty')->get(); $total_adjust = 0; $fl_required = $value['flqty']; foreach ($engineer_inventory as $key => $flvalue) { $total_adjust = $flvalue->available_qty; if($total_adjust < $fl_required && $fl_required != 0){ $wi = \App\WarehouseInventory::where('spare_code',$flvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','faulty')->where('lot_no',$flvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $flvalue->available_qty; $wi->rate = $flvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $flvalue->spare_code; $wi->available_qty = $flvalue->available_qty; $wi->rate = $flvalue->rate; $wi->lot_no = $flvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$flvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $flvalue->available_qty; $engineer_inventory_main->save(); }elseif($total_adjust > $fl_required || $total_adjust == $fl_required ){ $wi = \App\WarehouseInventory::where('spare_code',$flvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','faulty')->where('lot_no',$flvalue->lot_no)->first(); if($wi != null){ $wi->available_qty = $wi->available_qty + $fl_required; $wi->rate = $flvalue->rate; $wi->save(); }else{ $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'received_from_'.$eng_text1; $wi->spare_code = $flvalue->spare_code; $wi->available_qty = $fl_required; $wi->rate = $flvalue->rate; $wi->lot_no = $flvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id',$flvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fl_required; $engineer_inventory_main->save(); } $fl_required = $fl_required - $total_adjust; if( $fl_required == 0 || $fl_required < 0){ break 1; } } } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->fresh_qty = $value['fqty']; $history->faulty_qty = $value['flqty']; $history->repaired_qty = $value['rqty']; $history->receiving_type = strtolower($eng_text).'_material_received'; $history->receiving_date = date('Y-m-d H:i:s'); $history->type = ($type ==2)?2:1; $history->engineer_id = $engineer_id; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); $added_count = $added_count + 1; $added_spare_code[$n] = $value['id']; }else{ $skip_spare_code[$n] = $value['id']; } $n++; } DB::commit(); return json_encode(['success'=>true, "skip_spare_code"=>$skip_spare_code, 'msg'=>'Spare Recevied from '.$eng_text.' Successfully !!','added_count'=>$added_count,'added_spare_code'=>$added_spare_code]); } catch(\Exception $exception){ DB::rollback(); return json_encode(['success'=>false, 'msg'=> $exception->getMessage()]); } catch(\Error $error) { DB::rollback(); return json_encode(['success'=>false, 'msg'=> $error->getMessage()]); } }else{ return json_encode(['success'=>false, 'msg'=> $sp.' Qty Spare not at '.$eng_text.'. So, Not able to receive more than available spare.!!']); } } //--------------------Commented on 06/11/2023-------------------------------------------------------------------------------------------- // public function received_spare_now(Request $request){ // $engineer_id = $request->engineer_id; // $warehouse = $request->warehouse; // $items = $request->items; // $user_id = Auth::user()->id; // $is_valid = true; // $sp = ""; // $sp_code = ''; // $errorMsg = ""; // $type = $request->type; // $engineer_id = ($type == 2)?$request->site_id:$request->engineer_id; // $eng_text = ($type == 2)?'Site':'Engineer'; // $eng_text1 = ($type == 2)?'site':'eng'; // foreach ($items as $val) { // $warehouse_fresh_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); // $warehouse_repaired_qty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); // $inventory_fresh_qty = DB::table('engineer_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); // $inventory_repaired_qty = DB::table('engineer_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); // $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); // $spare_code = $val['code']; // $st = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->first(); // if ($ms != null) { // if ((int)$ms->fresh_qty != (int)$warehouse_fresh_qty) { // $is_valid = false; // $errorMsg = "Mismatch in Circle Stock!\n\n" . // "Spare Type : Fresh\n" . // "Engineer Id: " . $engineer_id . ",\n" . // "Spare Code: " . $spare_code . ",\n" . // "Table: (stock_in_circle_store to warehouse_inventory).\n\n"; // } // if ((int)$ms->repaired_qty != (int)$warehouse_repaired_qty) { // $is_valid = false; // $errorMsg = "Mismatch in Circle Stock!\n\n" . // "Spare Type : Repaired\n" . // "Engineer Id: " . $engineer_id . ",\n" . // "Spare Code: " . $spare_code . ",\n" . // "Table: (stock_in_circle_store to warehouse_inventory).\n\n"; // } // if ((int)$st->fresh_qty != (int)$inventory_fresh_qty) { // $is_valid = false; // $errorMsg = "Mismatch in Engineer Stock!\n\n" . // "Spare Type : Fresh\n" . // "Engineer Id: " . $engineer_id . ",\n" . // "Spare Code: " . $spare_code . ",\n" . // "Table: (engineer_spare_parts to engineer_inventory).\n\n"; // } // if ((int)$st->repaired_qty != (int)$inventory_repaired_qty) { // $is_valid = false; // $errorMsg = "Mismatch in Engineer Stock!\n\n" . // "Spare Type : Repaired\n" . // "Engineer Id: " . $engineer_id . ",\n" . // "Spare Code: " . $spare_code . ",\n" . // "Table: (engineer_spare_parts to engineer_inventory).\n\n"; // } // } // } // if($is_valid == true) { // foreach ($items as $val) { // $ms = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$val['code'])->first(); // if($ms != null){ // if($ms->fresh_qty < $val['fqty'] && $val['fqty'] != 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['flqty'] && $val['flqty'] != 0 ){ // $is_valid = false; // $sp = $val['code'].' Faulty'; // break; // } // }else{ // $is_valid = false; // $sp = $val['code'].' Fresh'; // break; // } // } // if($is_valid == true){ // $skip_spare_code = []; // $added_spare_code = []; // $added_count = 0; // $n = 0; // DB::beginTransaction(); // try{ // foreach ($items as $value) { // $spare_code = $value['code']; // $is_espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->count(); // if($is_espare > 0){ // $espare = EngineerSparePart::where('engineer_id',$engineer_id)->where('spare_code',$spare_code)->first(); // $espare->fresh_qty = $espare->fresh_qty - $value['fqty']; // $espare->faulty_qty = $espare->faulty_qty - $value['flqty']; // $espare->repaired_qty = $espare->repaired_qty - $value['rqty']; // $espare->save(); // $is_stock_in_store = StockInCircleStore::where('spare_code',$spare_code)->where('warehouse',$warehouse)->count(); // if($is_stock_in_store > 0){ // $stock_in_store = StockInCircleStore::where('spare_code',$spare_code)->where('warehouse',$warehouse)->first(); // $stock_in_store->fresh_qty = $stock_in_store->fresh_qty + $value['fqty']; // $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['flqty']; // $stock_in_store->repaired_qty = $stock_in_store->repaired_qty + $value['rqty']; // $stock_in_store->save(); // }else{ // $stock_in_store = new StockInCircleStore(); // $stock_in_store->user_id = $user_id; // $stock_in_store->warehouse = $warehouse; // $stock_in_store->spare_id = $value['id']; // $stock_in_store->spare_code = $value['code']; // $stock_in_store->fresh_qty = $value['fqty']; // $stock_in_store->faulty_qty = $value['flqty']; // $stock_in_store->repaired_qty = $value['rqty']; // $stock_in_store->save(); // } // if($value['fqty'] != 0){ // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','fresh')->get(); // $total_adjust = 0; // $required = $value['fqty']; // foreach ($engineer_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if($total_adjust < $required && $required != 0){ // $wi = \App\WarehouseInventory::where('spare_code',$fvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $fvalue->available_qty; // $wi->rate = $fvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'fresh'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $fvalue->spare_code; // $wi->available_qty = $fvalue->available_qty; // $wi->rate = $fvalue->rate; // $wi->lot_no = $fvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$fvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fvalue->available_qty; // $engineer_inventory_main->save(); // }elseif($total_adjust > $required || $total_adjust == $required ){ // $wi = \App\WarehouseInventory::where('spare_code',$fvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','fresh')->where('lot_no',$fvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $required; // $wi->rate = $fvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'fresh'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $fvalue->spare_code; // $wi->available_qty = $required; // $wi->rate = $fvalue->rate; // $wi->lot_no = $fvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$fvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $required; // $engineer_inventory_main->save(); // } // $required = $required - $total_adjust; // if( $required == 0 || $required < 0){ // break 1; // } // } // } // if($value['rqty'] != 0){ // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','repaired')->get(); // $total_adjust = 0; // $rp_required = $value['rqty']; // foreach ($engineer_inventory as $key => $rvalue) { // $total_adjust = $rvalue->available_qty; // if($total_adjust < $rp_required && $rp_required != 0){ // $wi = \App\WarehouseInventory::where('spare_code',$rvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $rvalue->available_qty; // $wi->rate = $rvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'repaired'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $rvalue->spare_code; // $wi->available_qty = $rvalue->available_qty; // $wi->rate = $rvalue->rate; // $wi->lot_no = $rvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$rvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rvalue->available_qty; // $engineer_inventory_main->save(); // }elseif($total_adjust > $rp_required || $total_adjust == $rp_required ){ // $wi = \App\WarehouseInventory::where('spare_code',$rvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','repaired')->where('lot_no',$rvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $rp_required; // $wi->rate = $rvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'repaired'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $rvalue->spare_code; // $wi->available_qty = $rp_required; // $wi->rate = $rvalue->rate; // $wi->lot_no = $rvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$rvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rp_required; // $engineer_inventory_main->save(); // } // $rp_required = $rp_required - $total_adjust; // if( $rp_required == 0 || $rp_required < 0){ // break 1; // } // } // } // if($value['flqty'] != 0){ // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code',$spare_code)->where('engineer_id',$engineer_id)->where('available_qty','>',0)->where('item_type','faulty')->get(); // $total_adjust = 0; // $fl_required = $value['flqty']; // foreach ($engineer_inventory as $key => $flvalue) { // $total_adjust = $flvalue->available_qty; // if($total_adjust < $fl_required && $fl_required != 0){ // $wi = \App\WarehouseInventory::where('spare_code',$flvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','faulty')->where('lot_no',$flvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $flvalue->available_qty; // $wi->rate = $flvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'faulty'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $flvalue->spare_code; // $wi->available_qty = $flvalue->available_qty; // $wi->rate = $flvalue->rate; // $wi->lot_no = $flvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$flvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $flvalue->available_qty; // $engineer_inventory_main->save(); // }elseif($total_adjust > $fl_required || $total_adjust == $fl_required ){ // $wi = \App\WarehouseInventory::where('spare_code',$flvalue->spare_code)->where('warehouse',$warehouse)->where('item_type','faulty')->where('lot_no',$flvalue->lot_no)->first(); // if($wi != null){ // $wi->available_qty = $wi->available_qty + $fl_required; // $wi->rate = $flvalue->rate; // $wi->save(); // }else{ // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'faulty'; // $wi->entry_type = 'received_from_'.$eng_text1; // $wi->spare_code = $flvalue->spare_code; // $wi->available_qty = $fl_required; // $wi->rate = $flvalue->rate; // $wi->lot_no = $flvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id',$flvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fl_required; // $engineer_inventory_main->save(); // } // $fl_required = $fl_required - $total_adjust; // if( $fl_required == 0 || $fl_required < 0){ // break 1; // } // } // } // $history = new HistoryOfStockInCircleStore(); // $history->spare_code = $value['code']; // $history->fresh_qty = $value['fqty']; // $history->faulty_qty = $value['flqty']; // $history->repaired_qty = $value['rqty']; // $history->receiving_type = strtolower($eng_text).'_material_received'; // $history->receiving_date = date('Y-m-d H:i:s'); // $history->type = ($type ==2)?2:1; // $history->engineer_id = $engineer_id; // $history->from_warehouse = $warehouse; // $history->added_by = $user_id; // $history->save(); // $added_count = $added_count + 1; // $added_spare_code[$n] = $value['id']; // }else{ // $skip_spare_code[$n] = $value['id']; // } // $n++; // } // DB::commit(); // return json_encode(['success'=>true, "skip_spare_code"=>$skip_spare_code, 'msg'=>'Spare Recevied from '.$eng_text.' Successfully !!','added_count'=>$added_count,'added_spare_code'=>$added_spare_code]); // } catch(\Exception $exception){ // DB::rollback(); // return json_encode(['success'=>false, 'msg'=> $exception->getMessage()]); // } catch(\Error $error) { // DB::rollback(); // return json_encode(['success'=>false, 'msg'=> $error->getMessage()]); // } // }else{ // return json_encode(['success'=>false, 'msg'=> $sp.' Qty Spare not at '.$eng_text.'. So, Not able to receive more than available spare.!!']); // } // } else { // return json_encode(['success' => false, 'msg' => $sp_code . ' Qty ' . $errorMsg . 'Please Contact Admin !!']); // } // } //---------------------------------------------------------------------------------------------------------------------------------------- // public function received_spare_now(Request $request) // { // // dd($request->all()); // $engineer_id = $request->engineer_id; // $warehouse = $request->warehouse; // $items = $request->items; // $user_id = Auth::user()->id; // $is_valid = true; // $sp = ''; // $type = $request->type; // $engineer_id = ($type == 2) ? $request->site_id : $request->engineer_id; // $eng_text = ($type == 2) ? 'Site' : 'Engineer'; // $eng_text1 = ($type == 2) ? 'site' : 'eng'; // //-Added on 27-09-2023 to check the entered qty & qty mismatch in both responsible table-- // foreach ($items as $val) { // $ms = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $val['code'])->first(); // $wi_fresh = DB::table('engineer_inventory')->where('engineer_id', $engineer_id)->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum('available_qty'); // $wi_repaired = DB::table('engineer_inventory')->where('engineer_id', $engineer_id)->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum('available_qty'); // // Initialize $wi_faulty // $wi_faulty = DB::table('engineer_inventory')->where('engineer_id', $engineer_id)->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'faulty')->sum('available_qty'); // if ($ms != null) { // if (($ms->fresh_qty < $val['fqty'] && $val['fqty'] != 0) || $ms->fresh_qty != $wi_fresh) { // $is_valid = false; // $sp = $val['code'] . ' Fresh'; // break; // } // if (($ms->repaired_qty < $val['rqty'] && $val['rqty'] != 0) || $ms->repaired_qty != $wi_repaired) { // $is_valid = false; // $sp = $val['code'] . ' Repaired'; // break; // } // if (($ms->faulty_qty < $val['flqty'] && $val['flqty'] != 0) || $ms->faulty_qty != $wi_faulty) { // $is_valid = false; // $sp = $val['code'] . ' Faulty'; // break; // } // } else { // $is_valid = false; // $sp = $val['code'] . ' Fresh'; // break; // } // } // //-------------------------------------------------------------------------- // if ($is_valid == true) { // $skip_spare_code = []; // $added_spare_code = []; // $added_count = 0; // $n = 0; // DB::beginTransaction(); // try { // foreach ($items as $value) { // $spare_code = $value['code']; // $is_espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->count(); // if ($is_espare > 0) { // $espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); // $espare->fresh_qty = $espare->fresh_qty - $value['fqty']; // $espare->faulty_qty = $espare->faulty_qty - $value['flqty']; // $espare->repaired_qty = $espare->repaired_qty - $value['rqty']; // $espare->save(); // $is_stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->count(); // if ($is_stock_in_store > 0) { // $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); // $stock_in_store->fresh_qty = $stock_in_store->fresh_qty + $value['fqty']; // $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['flqty']; // $stock_in_store->repaired_qty = $stock_in_store->repaired_qty + $value['rqty']; // $stock_in_store->save(); // } else { // $stock_in_store = new StockInCircleStore(); // $stock_in_store->user_id = $user_id; // $stock_in_store->warehouse = $warehouse; // $stock_in_store->spare_id = $value['id']; // $stock_in_store->spare_code = $value['code']; // $stock_in_store->fresh_qty = $value['fqty']; // $stock_in_store->faulty_qty = $value['flqty']; // $stock_in_store->repaired_qty = $value['rqty']; // $stock_in_store->save(); // } // if ($value['fqty'] != 0) { // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->where('item_type', 'fresh')->get(); // $total_adjust = 0; // $required = $value['fqty']; // foreach ($engineer_inventory as $key => $fvalue) { // $total_adjust = $fvalue->available_qty; // if ($total_adjust < $required && $required != 0) { // $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $fvalue->available_qty; // $wi->rate = $fvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'fresh'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $fvalue->spare_code; // $wi->available_qty = $fvalue->available_qty; // $wi->rate = $fvalue->rate; // $wi->lot_no = $fvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fvalue->available_qty; // $engineer_inventory_main->save(); // } elseif ($total_adjust > $required || $total_adjust == $required) { // $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $required; // $wi->rate = $fvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'fresh'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $fvalue->spare_code; // $wi->available_qty = $required; // $wi->rate = $fvalue->rate; // $wi->lot_no = $fvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $required; // $engineer_inventory_main->save(); // } // $required = $required - $total_adjust; // if ($required == 0 || $required < 0) { // break 1; // } // } // } // if ($value['rqty'] != 0) { // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->where('item_type', 'repaired')->get(); // $total_adjust = 0; // $rp_required = $value['rqty']; // foreach ($engineer_inventory as $key => $rvalue) { // $total_adjust = $rvalue->available_qty; // if ($total_adjust < $rp_required && $rp_required != 0) { // $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $rvalue->available_qty; // $wi->rate = $rvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'repaired'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $rvalue->spare_code; // $wi->available_qty = $rvalue->available_qty; // $wi->rate = $rvalue->rate; // $wi->lot_no = $rvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $rvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rvalue->available_qty; // $engineer_inventory_main->save(); // } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { // $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $rp_required; // $wi->rate = $rvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'repaired'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $rvalue->spare_code; // $wi->available_qty = $rp_required; // $wi->rate = $rvalue->rate; // $wi->lot_no = $rvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $rvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rp_required; // $engineer_inventory_main->save(); // } // $rp_required = $rp_required - $total_adjust; // if ($rp_required == 0 || $rp_required < 0) { // break 1; // } // } // } // if ($value['flqty'] != 0) { // $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); // $total_adjust = 0; // $fl_required = $value['flqty']; // foreach ($engineer_inventory as $key => $flvalue) { // $total_adjust = $flvalue->available_qty; // if ($total_adjust < $fl_required && $fl_required != 0) { // $wi = \App\WarehouseInventory::where('spare_code', $flvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $flvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $flvalue->available_qty; // $wi->rate = $flvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'faulty'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $flvalue->spare_code; // $wi->available_qty = $flvalue->available_qty; // $wi->rate = $flvalue->rate; // $wi->lot_no = $flvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $flvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $flvalue->available_qty; // $engineer_inventory_main->save(); // } elseif ($total_adjust > $fl_required || $total_adjust == $fl_required) { // $wi = \App\WarehouseInventory::where('spare_code', $flvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $flvalue->lot_no)->first(); // if ($wi != null) { // $wi->available_qty = $wi->available_qty + $fl_required; // $wi->rate = $flvalue->rate; // $wi->save(); // } else { // $wi = new \App\WarehouseInventory(); // $wi->warehouse = $warehouse; // $wi->item_type = 'faulty'; // $wi->entry_type = 'received_from_' . $eng_text1; // $wi->spare_code = $flvalue->spare_code; // $wi->available_qty = $fl_required; // $wi->rate = $flvalue->rate; // $wi->lot_no = $flvalue->lot_no; // $wi->save(); // } // $engineer_inventory_main = \App\EngineerInventory::where('id', $flvalue->id)->first(); // $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fl_required; // $engineer_inventory_main->save(); // } // $fl_required = $fl_required - $total_adjust; // if ($fl_required == 0 || $fl_required < 0) { // break 1; // } // } // } // $history = new HistoryOfStockInCircleStore(); // $history->spare_code = $value['code']; // $history->fresh_qty = $value['fqty']; // $history->faulty_qty = $value['flqty']; // $history->repaired_qty = $value['rqty']; // $history->receiving_type = strtolower($eng_text) . '_material_received'; // $history->receiving_date = date('Y-m-d H:i:s'); // $history->type = ($type == 2) ? 2 : 1; // $history->engineer_id = $engineer_id; // $history->from_warehouse = $warehouse; // $history->added_by = $user_id; // $history->save(); // $added_count = $added_count + 1; // $added_spare_code[$n] = $value['id']; // //------------------------------Added on 22-08-2022----------------------- // $stock_in_store = StockInCircleStore::where('spare_code', $spare_code) // ->where('warehouse', $warehouse) // ->first(); // $warehouse_inventory_fresh = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code) // ->where('warehouse', $warehouse) // ->where('item_type', 'fresh') // // ->where('lot_no', $fvalue->lot_no) // ->sum('available_qty'); // $warehouse_inventory_repaired = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code) // ->where('warehouse', $warehouse) // ->where('item_type', 'repaired') // // ->where('lot_no', $rvalue->lot_no) // ->sum('available_qty'); // if ( // $stock_in_store->fresh_qty == $warehouse_inventory_fresh && // $stock_in_store->repaired_qty == $warehouse_inventory_repaired // ) { // echo json_encode(['success' => true, "skip_spare_code" => $skip_spare_code, 'msg' => 'Spare Received from ' . $eng_text . ' Successfully !!', 'added_count' => $added_count, 'added_spare_code' => $added_spare_code]); // } else { // $msg = ' Qty mismatch in Stock!, // Engineer Id: ' . $engineer_id . ', // Spare Code: ' . $spare_code . ', // Table: (stock_in_circle_store to warehouse_inventory). // Please contact Admin !!'; // echo json_encode(['success' => false, 'msg' => $msg,]); // // Rollback the transaction // DB::rollback(); // } // //----------------------------------------------------------------------------- // } else { // $skip_spare_code[$n] = $value['id']; // } // $n++; // } // DB::commit(); // // $circlefreshQty = $stock_in_store->fresh_qty; // // $circlerepairedQty = $stock_in_store->repaired_qty; // // $circlefaultyQty = $stock_in_store->faulty_qty; // // $warehousefreshQty = $required; // // $warehouserepairedQty = $rp_required; // // if($circlefreshQty == $warehousefreshQty && // // $circlerepairedQty == $warehouserepairedQty // // ){ // // return json_encode(['success'=>true, "skip_spare_code"=>$skip_spare_code, 'msg'=>'Spare Recevied from '.$eng_text.' Successfully !!','added_count'=>$added_count,'added_spare_code'=>$added_spare_code]); // // }else { // // return json_encode(['success' => false, 'msg' => $sp . ' Qty mismatch in Circle Stock , please contact to admin.!!']); // // } // } catch (\Exception $exception) { // DB::rollback(); // return json_encode(['success' => false, 'msg' => $exception->getMessage()]); // } catch (\Error $error) { // DB::rollback(); // return json_encode(['success' => false, 'msg' => $error->getMessage()]); // } // } else { // $msg = ' Qty mismatch in Engineer Account!, // Site Id: ' . $engineer_id . ', // Spare Code: ' . $sp . ', // Table: (engineer_spare_parts to warehouse_inventory). // Please contact Admin !!'; // echo json_encode(['success' => false, 'msg' => $msg]); // // return json_encode(['success'=>false, 'msg'=> $sp.' Qty Spare not at '.$eng_text.'. So, Not able to receive more than available spare or Qty Mismatch.!!']); // } // } public function get_material_receiving_from_site(Request $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); $current_warehouse = $warehouses[0]; $sites = DB::table('site_master')->select('Site_id', 'product', 'Site_Name')->where('WH_code', $current_warehouse)->get(); $this->data = array_merge($this->data, ['engineers' => $sites, 'warehouses' => $warehouses]); return view('circle-store.material-receiving-from-site', $this->data); } public function received_spare_now_site(Request $request) { $engineer_id = $request->engineer_id; $warehouse = $request->warehouse; $items = $request->items; $user_id = Auth::user()->id; $is_valid = true; $type = $request->type; $site_arr = explode('::', $request->site_id); $site_id = $site_arr[0]; $site_product = $site_arr[1]; $eng_text = ($type == 2) ? 'Site' : 'Engineer'; $eng_text1 = ($type == 2) ? 'site' : 'eng'; foreach ($items as $val) { $ms = EngineerSparePart::where('engineer_id', $site_id)->where('site_product', $site_product)->where('spare_code', $val['code'])->first(); if ($ms != null) { if ($ms->fresh_qty < $val['fqty'] && $val['fqty'] != 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['flqty'] && $val['flqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Fresh'; break; } } if ($is_valid == true) { $skip_spare_code = []; $added_spare_code = []; $added_count = 0; $n = 0; DB::beginTransaction(); try { foreach ($items as $value) { $spare_code = $value['code']; $is_espare = EngineerSparePart::where('engineer_id', $site_id)->where('site_product', $site_product)->where('spare_code', $spare_code)->count(); if ($is_espare > 0) { $espare = EngineerSparePart::where('engineer_id', $site_id)->where('site_product', $site_product)->where('spare_code', $spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty - $value['fqty']; $espare->faulty_qty = $espare->faulty_qty - $value['flqty']; $espare->repaired_qty = $espare->repaired_qty - $value['rqty']; $espare->save(); $is_stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->count(); if ($is_stock_in_store > 0) { $stock_in_store = StockInCircleStore::where('spare_code', $spare_code)->where('warehouse', $warehouse)->first(); $stock_in_store->fresh_qty = $stock_in_store->fresh_qty + $value['fqty']; $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['flqty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty + $value['rqty']; $stock_in_store->save(); } else { $stock_in_store = new StockInCircleStore(); $stock_in_store->user_id = $user_id; $stock_in_store->warehouse = $warehouse; $stock_in_store->spare_id = $value['id']; $stock_in_store->spare_code = $value['code']; $stock_in_store->fresh_qty = $value['fqty']; $stock_in_store->faulty_qty = $value['flqty']; $stock_in_store->repaired_qty = $value['rqty']; $stock_in_store->save(); } if ($value['fqty'] != 0) { $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('site_product', $site_product)->where('engineer_id', $site_id)->where('available_qty', '>', 0)->where('item_type', 'fresh')->get(); $total_adjust = 0; $required = $value['fqty']; foreach ($engineer_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $required && $required != 0) { $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fvalue->available_qty; $engineer_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $required; $wi->rate = $fvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $required; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $required; $engineer_inventory_main->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } if ($value['rqty'] != 0) { $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('available_qty', '>', 0)->where('item_type', 'repaired')->get(); $total_adjust = 0; $rp_required = $value['rqty']; foreach ($engineer_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $rvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rvalue->available_qty; $engineer_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $rp_required; $wi->rate = $rvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rp_required; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $rvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $rp_required; $engineer_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } if ($value['flqty'] != 0) { $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $site_id)->where('site_product', $site_product)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); $total_adjust = 0; $fl_required = $value['flqty']; foreach ($engineer_inventory as $key => $flvalue) { $total_adjust = $flvalue->available_qty; if ($total_adjust < $fl_required && $fl_required != 0) { $wi = \App\WarehouseInventory::where('spare_code', $flvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $flvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $flvalue->available_qty; $wi->rate = $flvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $flvalue->spare_code; $wi->available_qty = $flvalue->available_qty; $wi->rate = $flvalue->rate; $wi->lot_no = $flvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $flvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $flvalue->available_qty; $engineer_inventory_main->save(); } elseif ($total_adjust > $fl_required || $total_adjust == $fl_required) { $wi = \App\WarehouseInventory::where('spare_code', $flvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $flvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $fl_required; $wi->rate = $flvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'received_from_site'; $wi->spare_code = $flvalue->spare_code; $wi->available_qty = $fl_required; $wi->rate = $flvalue->rate; $wi->lot_no = $flvalue->lot_no; $wi->save(); } $engineer_inventory_main = \App\EngineerInventory::where('id', $flvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fl_required; $engineer_inventory_main->save(); } $fl_required = $fl_required - $total_adjust; if ($fl_required == 0 || $fl_required < 0) { break 1; } } } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->fresh_qty = $value['fqty']; $history->faulty_qty = $value['flqty']; $history->repaired_qty = $value['rqty']; $history->receiving_type = 'site_material_received'; $history->receiving_date = date('Y-m-d H:i:s'); $history->type = 2; $history->engineer_id = $engineer_id; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); $added_count = $added_count + 1; $added_spare_code[$n] = $value['id']; } else { $skip_spare_code[$n] = $value['id']; } $n++; } DB::commit(); return json_encode(['success' => true, "skip_spare_code" => $skip_spare_code, 'msg' => 'Spare Recevied from Site Successfully !!', 'added_count' => $added_count, 'added_spare_code' => $added_spare_code]); } catch (\Exception $exception) { DB::rollback(); return json_encode(['success' => false, 'msg' => $exception->getMessage()]); } catch (\Error $error) { DB::rollback(); return json_encode(['success' => false, 'msg' => $error->getMessage()]); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at Site So, Not able to receive more than available spare.!!']); } } public function get_stn_verify() { $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); $this->data = array_merge($this->data, ['warehouses' => $warehouses]); return view('circle-store.stn-verify', $this->data); } public function get_stn_details(Request $request) { $stn_no = $request->stn_number; $loginId = Auth::user()->loginId; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $warehouse = $request->warehouse; $is_stn_received = StockTransferNote::where('stn_no', $stn_no)->where('status', 'received')->count(); $is_my_stn = $stn = StockTransferNote::where('stn_no', $stn_no)->where('to_warehouse', $warehouse)->count(); if ($is_stn_received == 1) { return json_encode(['success' => false, 'msg' => 'STN already Recevied. try Another STN !!']); } elseif ($is_my_stn == 0) { return json_encode(['success' => false, 'msg' => 'This STN not for your warehouse . try Another STN !!']); } else { $stn = StockTransferNote::where('stn_no', $stn_no)->where('to_warehouse', $warehouse)->first(); if ($stn != null) { $stn_items = DB::table('stn_items')->join('spare_parts_masters', 'spare_parts_masters.code', 'stn_items.spare_code')->whereNotNull('spare_parts_masters.name')->where('stn_id', $stn->id)->select('stn_items.*', 'spare_parts_masters.id as spare_id', 'spare_parts_masters.name', 'spare_parts_masters.description', 'spare_parts_masters.uom', 'spare_parts_masters.type')->get(); return json_encode(['success' => true, 'items' => $stn_items]); } else { return json_encode(['success' => false, 'msg' => 'Invalid STN !!']); } } } public function get_spare_part_for_stn_generation(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $is_spare_part = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($is_spare_part > 0) { $circle_spare_info = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'circle_spare_info' => $circle_spare_info]); } else { return json_encode(['success' => false, 'msg' => 'Circle Store has not Spare Code. Try another spare Code.']); } } public function spare_assigned_to_trc() { $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); $this->data = array_merge($this->data, ['warehouses' => $warehouses]); return view('circle-store.spare-assigned-to-trc', $this->data); } public function spare_at_trc() { $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); $warehouse = $warehouses[0]; $spares = DB::table('trc_stocks')->join('spare_parts_masters', 'spare_parts_masters.code', 'trc_stocks.spare_code')->join('users', 'users.id', 'trc_stocks.added_by')->select('trc_stocks.*', 'spare_parts_masters.description')->where('trc_stocks.warehouse', $warehouse)->get(); $this->data = array_merge($this->data, ['spares' => $spares, 'warehouses' => $warehouses, 'current_warehouse' => $warehouse]); return view('circle-store.spare-at-trc', $this->data); } public function spare_history_at_trc($spare_code) { $this->get_common(); $user_id = Auth::user()->id; $all_history = DB::table('history_trc_stocks')->join('users', 'users.id', 'history_trc_stocks.added_by')->where('history_trc_stocks.spare_code', $spare_code)->where('history_trc_stocks.added_by', $user_id)->select('history_trc_stocks.*', 'users.name')->get(); $this->data = array_merge($this->data, ['all_history' => $all_history, 'spare_code' => $spare_code]); return view('circle-store.trc-history', $this->data); } public function assign_spare_to_trc(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $warehouse = $request->warehouse; $is_valid = true; $sp = ''; foreach ($request->items as $val) { $spcode = $val['code']; $ms = StockInCircleStore::where('spare_code', $spcode)->where('warehouse', $warehouse)->first(); $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $spcode)->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $spcode)->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $spcode)->where('warehouse', $warehouse)->where('item_type', 'faulty')->sum(DB::raw('round(available_qty, 2)')); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $spcode . ' fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $spcode . ' repaired'; } if ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp = $sp . ' ' . $spcode . ' faulty'; } } else { $is_valid = false; $sp = $sp . ' ' . $spcode . " Fautly"; } } if ($is_valid == true) { foreach ($request->items as $val) { $spcode = $val['code']; $stock_in_store = StockInCircleStore::where('spare_code', $spcode)->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { if ($stock_in_store->faulty_qty < $val['qty']) { $is_valid = false; $sp = $val['qty'] . ' Quantity ' . $spcode . " Faulty"; } } else { $is_valid = false; $sp = $spcode . " Faulty"; } } if ($is_valid == true) { foreach ($request->items as $value) { $code = $value['code']; $is_added = TrcStock::where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($is_added > 0) { $trc = TrcStock::where('spare_code', $code)->where('warehouse', $warehouse)->first(); $trc->qty = $trc->qty + $value['qty']; } else { $trc = new TrcStock(); $trc->spare_code = $value['code']; $trc->qty = $value['qty']; $trc->warehouse = $warehouse; } $trc->added_by = $user_id; $trc->save(); $stock_in_store = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($stock_in_store > 0) { $stock_in_store = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->first(); $stock_in_store->faulty_qty = $stock_in_store->faulty_qty - $value['qty']; $stock_in_store->save(); if ($value['qty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); $total_adjust = 0; $required = $value['qty']; foreach ($warehouse_inventory as $key => $instock) { $total_adjust = $instock->available_qty; if ($total_adjust < $required && $required != 0) { $spare_qty = $instock->available_qty; \DB::table('trc_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'faulty', 'entry_type' => 'warehouse_to_trc', 'spare_code' => $instock->spare_code, 'in_qty' => $instock->available_qty, 'available_qty' => $instock->available_qty, 'rate' => $instock->rate, 'lot_no' => $instock->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $instock->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $required || $total_adjust == $required) { $spare_qty = $required; \DB::table('trc_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'faulty', 'entry_type' => 'warehouse_to_trc', 'spare_code' => $instock->spare_code, 'in_qty' => $required, 'available_qty' => $required, 'rate' => $instock->rate, 'lot_no' => $instock->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $instock->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break; } } } } $history = new HistoryTrcStock(); $history->spare_code = $value['code']; $history->qty = $value['qty']; $history->trc_date = date('Y-m-d H:i:s'); $history->added_by = $user_id; $history->save(); } return json_encode(['success' => true, 'msg' => 'Spare Send to TRC Successfully !!']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Spare Not in TRC Stock of warehouse ' . $warehouse]); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Spare Quantity mismatch in Circle Store, please contact to admin.']); } } public function received_stn_now(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $request = json_decode($request->stnDetails, true); $warehouse = $request['warehouse']; $stn_no = $request['stn_number']; try { // Start a database transaction DB::beginTransaction(); $is_stn_received = StockTransferNote::where('stn_no', $stn_no)->where('status', 'received')->count(); if ($is_stn_received == 0) { $is_valid = true; $sp = ''; foreach ($request['items'] as $value) { $stock_qty = StockInCircleStore::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->first(); $wi_fresh = \App\WarehouseInventory::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(\DB::raw('round(available_qty, 2)')); $wi_repaired = \App\WarehouseInventory::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(\DB::raw('round(available_qty, 2)')); if ($stock_qty != null) { if ((int)$stock_qty->fresh_qty != (int)$wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $value['spare_code'] . '-fresh'; } if ((int)$stock_qty->repaired_qty != (int)$wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $value['spare_code'] . '-repaired'; } } } 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\StockTransferReceipt::where('warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 1; } $str = new StockTransferReceipt(); $str->str_no = 'STR/' . substr($warehouse, 3) . '/' . $no . '/' . $session; $str->series = $no; $str->session = $session; $str->stn_no = $stn_no; $str->warehouse = $warehouse; $str->save(); foreach ($request['items'] as $value) { $is_stock = StockInCircleStore::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->count(); if ($is_stock > 0) { $stock = StockInCircleStore::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->first(); $stock->user_id = $user_id; $stock->fresh_qty = $stock->fresh_qty + $value['rqty']; $stock->repaired_qty = $stock->repaired_qty + $value['repaired_qty']; $stock->faulty_qty = $stock->faulty_qty + $value['faulty_qty']; $stock->rate = $value['rate']; $stock->save(); } else { $stock = new StockInCircleStore(); $stock->user_id = $user_id; $stock->warehouse = $warehouse; $stock->spare_id = $value['spare_id']; $stock->spare_code = $value['spare_code']; $stock->fresh_qty = $value['rqty']; $stock->repaired_qty = $value['repaired_qty']; $stock->faulty_qty = $value['faulty_qty']; $stock->save(); } if ($value['rqty'] != 0) { $wi = \App\WarehouseInventory::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $value['lot_no'])->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $value['rqty']; $wi->rate = $value['rate']; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'stn'; $wi->spare_code = $value['spare_code']; $wi->available_qty = $value['rqty']; $wi->rate = $value['rate']; $wi->lot_no = $value['lot_no']; $wi->save(); } } if ($value['repaired_qty'] != 0) { $wi = \App\WarehouseInventory::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $value['lot_no'])->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $value['repaired_qty']; $wi->rate = $value['rate']; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'stn'; $wi->spare_code = $value['spare_code']; $wi->available_qty = $value['repaired_qty']; $wi->rate = $value['rate']; $wi->lot_no = $value['lot_no']; $wi->save(); } } if ($value['faulty_qty'] != 0) { $wi = \App\WarehouseInventory::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $value['lot_no'])->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $value['faulty_qty']; $wi->rate = $value['rate']; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'stn'; $wi->spare_code = $value['spare_code']; $wi->available_qty = $value['faulty_qty']; $wi->rate = $value['rate']; $wi->lot_no = $value['lot_no']; $wi->save(); } } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['spare_code']; $history->fresh_qty = $value['rqty']; $history->repaired_qty = $value['repaired_qty']; $history->receiving_type = 'stn_receiving'; $history->receiving_date = date('Y-m-d H:i:s'); $history->stn_no = $stn_no; $history->added_by = $user_id; $history->save(); } $stn = StockTransferNote::where('stn_no', $stn_no)->first(); $stn->status = 'received'; $stn->save(); DB::commit(); return json_encode(['success' => true, 'msg' => 'STN has Recevied Successfully !! STR Numver is : '.$str->str_no]); } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty mismatch in Circle Stock , please contact to admin.!!']); } } else { return json_encode(['success' => false, 'msg' => 'STN already Recevied. try Another STN !!']); } } catch (Exception $e) { // If an exception occurs, roll back the database transaction DB::rollBack(); // Handle the exception Log::error("An error occurred: " . $e->getMessage()); Log::error($e->getTraceAsString()); // throw $e; return json_encode(['success' => false, 'msg' => 'Something Went Wrong or Your Internet Speed Is Slow. Please Try Again Later.']); } } public function spare_move_to_stock() { $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); $fieldUserCodes = $this->data['userInfo']->fieldUserCodes; $current_warehouse = $warehouses[0]; $engineers = LocalUserMapping::where('role', 'field_user')->where('StoreCoordinatorCircleCodes', $loginId)->where('fieldUserCodes', $fieldUserCodes)->whereIn('StaffRole', ['TRC Technician', 'Trc Supervisor', 'TRC Engg'])->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'engineers' => $engineers, 'current_warehouse' => $current_warehouse]); return view('circle-store.spare-move-to-stock', $this->data); } public function repaired_stock_move_to_stock(Request $request) { $user_id = Auth::user()->id; $warehouse = $request->warehouse; $engineer_id = $request->engineer_id; $is_myvalid = true; $is_valid = true; $sp = ''; $spare_repaired_id = null; foreach ($request->items as $val) { $sp_code = $val['code']; $trc_stock = TrcStock::where('spare_code', $sp_code)->where('warehouse', $warehouse)->first(); $trc_inventory = DB::table('trc_inventory')->where('spare_code', $sp_code)->where('item_type', 'faulty')->where('warehouse', $warehouse)->sum('available_qty'); if ($trc_stock != null) { if ($trc_stock->qty != $trc_inventory) { $is_valid = false; $sp = $sp . ' ' . $sp_code . ' '; } } else { $is_valid = false; $sp = $sp . ' ' . $sp_code . ' '; } } if ($is_valid == true) { if ($request->components != "") { $components = $request->components; foreach ($components as $myval) { $ms = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $myval['code'])->first(); if ($ms != null) { if ($ms->fresh_qty < $myval['qty'] && $myval['qty'] != 0) { $is_myvalid = false; $sp = $myval['code'] . ' Fresh'; break; } } else { $is_myvalid = false; $sp = $myval['code'] . ' Fresh'; break; } } if ($is_myvalid == true) { } } if ($is_myvalid == true) { foreach ($request->items as $value) { $code = $value['code']; $is_added = TrcStock::where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($is_added > 0) { $trc = TrcStock::where('spare_code', $code)->where('warehouse', $warehouse)->first(); $trc->qty = $trc->qty - ($value['qty'] + $value['flqty']); $trc->save(); $stock = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->first(); if ($stock != null) { if ($stock->warehouse != 'SERPNT') { $stock->repaired_qty = $stock->repaired_qty + $value['qty']; $stock->faulty_qty = $stock->faulty_qty + $value['flqty']; $stock->save(); } else { $stock->repaired_qty = $stock->repaired_qty + $value['qty']; $stock->save(); \DB::table('damaged_spares')->insert([ 'spare_code' => $code, 'qty' => $value['flqty'], 'added_by' => $user_id ]); } } else { $stock_in_store = new StockInCircleStore(); $stock_in_store->user_id = $user_id; $stock_in_store->warehouse = $warehouse; $stock_in_store->spare_id = $value['id']; $stock_in_store->spare_code = $value['code']; $stock_in_store->fresh_qty = 0; $stock_in_store->faulty_qty = $value['flqty']; $stock_in_store->repaired_qty = $value['qty']; $stock_in_store->save(); } if ($value['qty'] != 0) { $warehouse_inventory = DB::table('trc_inventory')->where('spare_code', $code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); $total_adjust = 0; $required = $value['qty']; foreach ($warehouse_inventory as $key => $instock) { $total_adjust = $instock->available_qty; $spare = DB::table('spare_parts_masters')->where('code', $instock->spare_code)->first(); //Rate was changed which was coming from TRC table, setted from Spare Parts Master on 15/05/2024 // $rate = ((($instock->rate / 10) * 100) / 100 / 10) * $spare->repaired_rate; $rate = ((($spare->rate / 10) * 100) / 100 / 10) * $spare->repaired_rate; if (($total_adjust < $required && $required != 0)) { $spare_qty = $instock->available_qty; $wi = \App\WarehouseInventory::where('spare_code', $instock->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $instock->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $instock->available_qty; $wi->rate = $rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'trc_to_stock'; $wi->spare_code = $instock->spare_code; $wi->available_qty = $instock->available_qty; $wi->rate = $rate; $wi->lot_no = $instock->lot_no; $wi->save(); } $TrcInventory = \App\TrcInventory::where('id', $instock->id)->first(); $TrcInventory->available_qty = $TrcInventory->available_qty - $spare_qty; $TrcInventory->save(); $inserted = $inserted ?? false; if (($request->iscomponents == 'yes') && !$inserted) { $spare_repaired_id = \DB::table('repaired_stocks')->insertGetId([ 'warehouse' => $warehouse, 'spare_code' => $code, 'engineer_id' => $engineer_id, 'qty' => $value['qty'], 'rate' => $rate, 'is_component' => 1 ]); $inserted = true; } else if (!$inserted){ $spare_repaired_id = \DB::table('repaired_stocks')->insertGetId([ 'warehouse' => $warehouse, 'spare_code' => $code, 'engineer_id' => $engineer_id, 'qty' => $value['qty'], 'rate' => $rate ]); $inserted = true; } } if (($total_adjust > $required || $total_adjust == $required)) { $spare_qty = $required; $wi = \App\WarehouseInventory::where('spare_code', $instock->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $instock->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $required; $wi->rate = $rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'repaired'; $wi->entry_type = 'trc_to_stock'; $wi->spare_code = $instock->spare_code; $wi->available_qty = $required; $wi->rate = $rate; $wi->lot_no = $instock->lot_no; $wi->save(); } $TrcInventory = \App\TrcInventory::where('id', $instock->id)->first(); $TrcInventory->available_qty = $TrcInventory->available_qty - $spare_qty; $TrcInventory->save(); $inserted = $inserted ?? false; if (($request->iscomponents == 'yes') && !$inserted) { $spare_repaired_id = \DB::table('repaired_stocks')->insertGetId([ 'warehouse' => $warehouse, 'spare_code' => $code, 'engineer_id' => $engineer_id, 'qty' => $value['qty'], 'rate' => $rate, 'is_component' => 1 ]); $inserted = true; } else if (!$inserted) { $spare_repaired_id = \DB::table('repaired_stocks')->insertGetId([ 'warehouse' => $warehouse, 'spare_code' => $code, 'engineer_id' => $engineer_id, 'qty' => $value['qty'], 'rate' => $rate ]); $inserted = true; } } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break; } } } if ($value['flqty'] != 0) { $warehouse_inventory = DB::table('trc_inventory')->where('spare_code', $code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('item_type', 'faulty')->get(); $total_adjust = 0; $required = $value['flqty']; foreach ($warehouse_inventory as $key => $instock) { $total_adjust = $instock->available_qty; $spare = DB::table('spare_parts_masters')->where('code', $instock->spare_code)->first(); // $rate = ((($instock->rate / 10) * 100) / 100 / 10) * $spare->faulty_rate; $rate = ((($spare->rate / 10) * 100) / 100 /10) * $spare->faulty_rate; if ($total_adjust < $required && $required != 0) { $spare_qty = $instock->available_qty; $wi = \App\WarehouseInventory::where('spare_code', $instock->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $instock->lot_no)->first(); if ($warehouse != 'SERPNT') { if ($wi != null) { $wi->available_qty = $wi->available_qty + $instock->available_qty; $wi->rate = $rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'trc_to_stock'; $wi->spare_code = $instock->spare_code; $wi->available_qty = $instock->available_qty; $wi->rate = $rate; $wi->lot_no = $instock->lot_no; $wi->save(); } } $TrcInventory = \App\TrcInventory::where('id', $instock->id)->first(); $TrcInventory->available_qty = $TrcInventory->available_qty - $spare_qty; $TrcInventory->save(); } if ($total_adjust > $required || $total_adjust == $required) { $spare_qty = $required; $wi = \App\WarehouseInventory::where('spare_code', $instock->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->where('lot_no', $instock->lot_no)->first(); if ($warehouse != 'SERPNT') { if ($wi != null) { $wi->available_qty = $wi->available_qty + $required; $wi->rate = $rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'faulty'; $wi->entry_type = 'trc_to_stock'; $wi->spare_code = $instock->spare_code; $wi->available_qty = $required; $wi->rate = $rate; $wi->lot_no = $instock->lot_no; $wi->save(); } } $TrcInventory = \App\TrcInventory::where('id', $instock->id)->first(); $TrcInventory->available_qty = $TrcInventory->available_qty - $spare_qty; $TrcInventory->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break; } } } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->repaired_qty = $value['qty']; $history->faulty_qty = $value['flqty']; $history->receiving_type = 'move_from_trc_to_stock'; $history->receiving_date = date('Y-m-d H:i:s'); $history->added_by = $user_id; $history->save(); } } if ($request->components != "" && $request->iscomponents == 'yes') { foreach ($request->components as $k => $val) { $spare_code = $val['code']; \DB::table('used_components')->insert([ 'repaired_spare_id' => $spare_repaired_id, 'engineer_id' => $request->engineer_id, 'spare_code' => $val['code'], 'qty' => $val['qty'], 'component_rate' => $val['rate'] // 'component_rate' => $val['spare_rate'] ]); $is_espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->count(); if ($is_espare > 0) { $espare = EngineerSparePart::where('engineer_id', $engineer_id)->where('spare_code', $spare_code)->first(); $espare->fresh_qty = $espare->fresh_qty - $val['qty']; $espare->save(); } if ($val['qty'] != 0) { $engineer_id = $request->engineer_id; $engineer_inventory = DB::table('engineer_inventory')->where('spare_code', $spare_code)->where('engineer_id', $engineer_id)->where('available_qty', '>', 0)->where('item_type', 'fresh')->get(); $total_adjust = 0; $required = $val['qty']; foreach ($engineer_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $required && $required != 0) { $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $fvalue->available_qty; $engineer_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $engineer_inventory_main = \App\EngineerInventory::where('id', $fvalue->id)->first(); $engineer_inventory_main->available_qty = $engineer_inventory_main->available_qty - $required; $engineer_inventory_main->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } } } return json_encode(['success' => true, 'msg' => 'repaired stock move from trc to stock Successfully']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at Engineer. So, Not able to use more than available spare.!!']); } } else { return json_encode(['success' => false, 'msg' => $sp . 'Spare Quantity mismatch in Trc Stock , plase contact to admin.']); } } public function material_receiving_from_supplier() { $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); $gst_slabs = DB::table('gst_slabs')->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'gst_slabs' => $gst_slabs]); return view('circle-store.material-receiving-from-supplier', $this->data); } public function material_receiving_from_scm() { $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); $gst_slabs = DB::table('gst_slabs')->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'gst_slabs' => $gst_slabs]); return view('circle-store.material-receiving-from-scm', $this->data); } public function get_all_grn() { $this->get_common(); $loginId = Auth::user()->loginId; $assinged_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assinged_warehouses->warehouseCode); $current_warehouse = $warehouses[0]; $grns = GoodsReceiptNote::where('warehouse', $current_warehouse)->where('type', 1)->orderBy('id', 'desc')->get(); $this->data = array_merge($this->data, ['all_grn' => $grns, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.grn', $this->data); } public function get_all_mrn() { $this->get_common(); $loginId = Auth::user()->loginId; $assinged_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assinged_warehouses->warehouseCode); $current_warehouse = $warehouses[0]; $grns = GoodsReceiptNote::where('warehouse', $current_warehouse) ->where('type', '2') ->orderBy('id', 'desc')->get(); $this->data = array_merge($this->data, ['all_grn' => $grns, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.mrn', $this->data); } public function get_grn_of_warehouse(Request $request) { $current_warehouse = $request->warehouse; if ($current_warehouse != "" && $current_warehouse != "all") { $grns = GoodsReceiptNote::where('warehouse', $current_warehouse)->where('type', 1)->orderBy('id', 'desc')->get(); } if ($current_warehouse != "" && $current_warehouse == "all") { $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehousesin = explode(',', $assigned_warehouses->warehouseCode); $grns = GoodsReceiptNote::whereIn('warehouse', $warehousesin)->where('type', 1)->orderBy('id', 'desc')->get(); } return json_encode(['success' => true, 'grns' => $grns]); } public function get_mrn_of_warehouse(Request $request) { $current_warehouse = $request->warehouse; // $grns = GoodsReceiptNote::where('warehouse',$current_warehouse)->where('type', 2)->orderBy('id','desc')->get(); if ($current_warehouse != "" && $current_warehouse != "all") { $grns = GoodsReceiptNote::where('warehouse', $current_warehouse)->where('type', 2)->orderBy('id', 'desc')->get(); } if ($current_warehouse != "" && $current_warehouse == "all") { $loginId = Auth::user()->loginId; $assigned_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehousesin = explode(',', $assigned_warehouses->warehouseCode); $grns = GoodsReceiptNote::whereIn('warehouse', $warehousesin)->where('type', 2)->orderBy('id', 'desc')->get(); } return json_encode(['success' => true, 'grns' => $grns]); } public function getPoFromScm(Request $req) { $client = new \GuzzleHttp\Client(); $res = $client->request('GET', 'https://scm.sjslalganj.com/api/get-po', [ 'query' => ['po_number' => $req->po_number] ]); $response_body = json_decode($res->getBody()); echo json_encode($response_body); } public function mrn_to_scm($data) { $client = new \GuzzleHttp\Client(); $response = $client->request('POST', 'https://scm.sjslalganj.com/api/save-mrn', [ 'form_params' => [ 'data' => $data ] ]); // echo $response->getBody(); } public function material_receiving_grn(Request $request) { $loginId = Auth::user()->loginId; $user_id = Auth::user()->id; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $warehouse = $request->warehouse; $reference_number = $request->reference_number; $invoice_number = $request->invoice_number; $invoice_date = $request->invoice_date; $item_count = count($request->items); if ($reference_number == "" || $invoice_number == "" || $invoice_date == "" || $item_count == 0) { return json_encode(['success' => false, 'msg' => 'Please check reference number, invoice number, invoice date and material.']); } else { $sub_total = 0; $gst_total = 0; $grand_total = 0; foreach ($request->items as $key => $value) { $gst = $value['gst_slab_rates']; $rate = $value['new_rate']; $qty = $value['qty']; $subtotal = $rate * $qty; $gst_cal = ($subtotal * $gst) / 100; $sub_total = $sub_total + $subtotal; $gst_total = $gst_total + $gst_cal; $grand_total = $grand_total + ($subtotal + $gst_cal); } $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'); // $session_year = date('Y'); } else { $session = date('y') . (date('y') + 1); //$session_year = date('Y')+1; } $last_value = \App\GoodsReceiptNote::where('warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 1; } //$session = date('y').date('y')+1; $grn = new GoodsReceiptNote(); $grn->grn_no = 'GRN/' . substr($warehouse, 3) . '/' . $no . '/' . $session; $grn->series = $no; $grn->session = $session; $grn->reference_number = $request->reference_number; $grn->business_type = $request->business_type; $grn->supplier_name = $request->supplierName; $grn->rejection_note = $request->rejection_note; $grn->invoice_number = $request->invoice_number; $grn->eway_bill_no = $request->eway_bill_no; $grn->invoice_date = $request->invoice_date; $grn->indentNumber = $request->indentNumber; $grn->gateEntryReceiptNumber = $request->gateEntryReceiptNumber; $grn->gateEntryDate = $request->gateEntryDate; $grn->entryName = $request->entryName; $grn->phoneNumber = $request->phoneNumber; $grn->freightCharges = $request->freightCharges; $grn->freight_gst = $request->freight_gst; $grn->sub_total = $sub_total; $grn->gst_total = $gst_total; $grn->grand_total = $grand_total; $grn->warehouse = $warehouse; $grn->received_by = $loginId; if ($grn->save()) { // dd($grn); foreach ($request->items as $key => $value) { $item = new GoodsReceiptItem(); $item->grn_id = $grn->id; $item->item_name = $value['name']; $code = $value['code']; $item->item_code = $code; $item->item_discription = $value['description']; $item->delivered_qty = $value['dqty']; $item->received_qty = $value['rqty']; $item->accepted_qty = $value['aqty']; $item->rejected_qty = $value['rjqty']; $item->quantity = $value['qty']; $item->uom = $value['uom']; $item->rate = $value['new_rate']; $item->gst = $value['gst_slab_rates']; $item->amount = $item->rate * $item->quantity; $tax_amount = ($item->amount * $item->gst) / 100; $item->tax_amount = $tax_amount; if ($item->save()) { $is_stock_added = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($is_stock_added > 0) { $stock = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->first(); } else { $stock = new StockInCircleStore(); } $stock->warehouse = $warehouse; $stock->user_id = $user_id; $stock->spare_id = $value['id']; $stock->spare_code = $value['code']; $stock->fresh_qty = $stock->fresh_qty + $item->quantity; $stock->rate = $value['new_rate']; $stock->save(); $history = new HistoryOfStockInCircleStore(); $history->warehouse = $warehouse; $history->spare_code = $value['code']; $history->fresh_qty = $item->quantity; $history->faulty_qty = 0; $history->repaired_qty = 0; $history->rate = $value['new_rate']; $history->receiving_type = 'grn'; $history->receiving_date = date('Y-m-d H:i:s'); $history->in_out = 1; $history->added_by = $user_id; $history->save(); \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'fresh', 'entry_type' => 'grn', 'spare_code' => $value['code'], 'in_qty' => $item->quantity, 'available_qty' => $item->quantity, 'rate' => $value['new_rate'], 'lot_no' => $grn->grn_no ]); } } return json_encode(['success' => true, 'msg' => 'Goods has been Recevied Successfully!! GRN Number is: ' . $grn->grn_no]); } else { return json_encode(['success' => true, 'msg' => 'Somthing Went Wrong !!']); } } } public function material_receiving_notes(Request $request) { $this->get_common(); $fieldUserCodes = $this->data['userInfo']->fieldUserCodes; $warehouse = $request->warehouse; $loginId = Auth::user()->loginId; $user_id = Auth::user()->id; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $invoice_number = $request->invoice_number; $invoice_date = $request->invoice_date; $items = json_decode($request->items, true); $item_count = count($items); if ($invoice_number == "" || $invoice_date == "" || $item_count == 0) { return json_encode(['success' => false, 'msg' => 'Please check reference number, invoice number, invoice date and material.']); } else { $item_msg = ''; foreach ($items as $key => $item) { $result = DB::table('spare_parts_masters')->where('code', $item['item_code'])->first(); if (is_null($result)) { $item_msg .= $item['item_code'] . ', '; } } if ($item_msg == '') { $sub_total = 0; $gst_total = 0; $grand_total = 0; foreach ($items as $key => $value) { $gst = $value['gst']; $rate = $value['rate']; $qty = $value['dispach_qty']; $subtotal = $rate * $qty; $gst_cal = ($subtotal * $gst) / 100; $sub_total = $sub_total + $subtotal; $gst_total = $gst_total + $gst_cal; $grand_total = $grand_total + ($subtotal + $gst_cal); } $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\GoodsReceiptNote::where('warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 1; } //$session = date('y').date('y')+1; $grn = new GoodsReceiptNote(); $grn->grn_no = 'MRN/' . substr($warehouse, 3) . '/' . $no . '/' . $session; $grn->series = $no; $grn->type = 2; $grn->session = $session; // $grn->reference_number = $request->reference_number; $grn->business_type = $request->business_type; // $grn->supplier_name = $request->supplierName; if ($request->hasFile('document')) { $filenameWithExt = $request->file('document')->getClientOriginalName(); $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extension = $request->file('document')->getClientOriginalExtension(); $fileNameToStore = $filename . '_' . date('ymd') . time() . '.' . $extension; $destinationPath = public_path() . '/tax_invoice_mrn'; $path = $request->file('document')->move($destinationPath, $fileNameToStore); $grn->tax_invoice = str_replace(public_path(), '', $path); $request->merge(['file_path' => str_replace(public_path(), '', $path)]); } //$grn->rejection_note = $supplierReceiving->rejection_note; $grn->reference_number = $request->reference_number; //add by adarsh $grn->invoice_number = $request->invoice_number; $grn->eway_bill_no = $request->e_way_bill_number; $grn->invoice_date = $request->invoice_date; $grn->receive_date = $request->receive_date; // add by adarsh //$grn->indentNumber = $supplierReceiving->indentNumber; $grn->gateEntryReceiptNumber = $request->gate_entry_number; $grn->gateEntryDate = $request->gate_entry_date; $grn->payment_date = $request->payment_date; $grn->builty_number = $request->builty_number; $grn->transporter_details = $request->transporter_details; $grn->entryName = $request->receiver_name; $grn->phoneNumber = $request->receiver_phone; $grn->freightCharges = $request->freight_charges; $grn->freight_gst = $request->freight_gst; $grn->quality_status = $request->status; //add by adarsh document // $grn->document = $request->document; $grn->sub_total = $sub_total; $grn->gst_total = $gst_total; $grn->grand_total = $grand_total; $grn->warehouse = $request->warehouse; $grn->received_by = $loginId; if ($grn->save()) { foreach ($items as $key => $value) { $item = new GoodsReceiptItem(); $item->grn_id = $grn->id; $item->item_name = $value['description']; $code = $value['item_code']; $item->item_code = $code; $item->item_discription = $value['description']; $item->po_qty = $value['qty']; $item->available_in_grn = $value['balance_qty']; $item->quantity = $value['dispach_qty']; $item->uom = $value['uom']; $item->rate = $value['rate']; $item->gst = $value['gst']; $item->amount = $item->rate * $item->quantity; $tax_amount = ($item->amount * $item->gst) / 100; $item->tax_amount = $tax_amount; if ($item->save()) { $is_stock_added = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($is_stock_added > 0) { $stock = StockInCircleStore::where('spare_code', $code)->where('warehouse', $warehouse)->first(); } else { $stock = new StockInCircleStore(); } $stock->warehouse = $warehouse; $stock->user_id = $user_id; //$stock->spare_id = $value->id; $stock->spare_code = $code; $stock->fresh_qty = $stock->fresh_qty + $item->quantity; $stock->rate = $value['rate']; $stock->save(); $history = new HistoryOfStockInCircleStore(); $history->warehouse = $warehouse; $history->spare_code = $code; $history->fresh_qty = $item->quantity; $history->faulty_qty = 0; $history->repaired_qty = 0; $history->rate = $value['rate']; $history->receiving_type = 'PO'; $history->stn_no = $request->reference_number; $history->receiving_date = date('Y-m-d H:i:s'); $history->in_out = 1; $history->added_by = $user_id; $history->save(); \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'fresh', 'entry_type' => 'PO', 'spare_code' => $code, 'in_qty' => $item->quantity, 'available_qty' => $item->quantity, 'rate' => $value['rate'], 'lot_no' => $value['po_number'] ]); } } //$json_data = json_encode($request->all()); $this->mrn_to_scm($request->all()); return json_encode(['success' => true, 'msg' => 'Goods has been Recevied Successfully!! MRN Number is: ' . $grn->grn_no]); } else { return json_encode(['success' => true, 'msg' => 'Somthing Went Wrong !!']); } } else { return json_encode(['success' => false, 'msg' => "Item Code " . $item_msg . " not added in Asset Master, Please contact Admin."]); } } } public function stn_generate() { $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); $to_warehouses = WareHouse::get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'to_warehouses' => $to_warehouses]); return view('circle-store.stn-generate', $this->data); } public function get_stn_warehouse_wise(Request $request) { $warehouse = $request->warehouse; $allstn = StockTransferNote::where('from_warehouse', $warehouse)->get(); return json_encode(['success' => true, 'allstn' => $allstn]); } public function get_str_warehouse_wise(Request $request) { $warehouse = $request->warehouse; $allstr = StockTransferReceipt::where('warehouse', $warehouse)->get(); return json_encode(['success' => true, 'allstr' => $allstr]); } public function all_stn() { $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]; $allstn = StockTransferNote::where('from_warehouse', $current_warehouse)->get(); $this->data = array_merge($this->data, ['all_stn' => $allstn, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.all-stn', $this->data); } public function all_str(Request $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); if ($request->warehouse != "") { $current_warehouse = $request->warehouse; } else { $current_warehouse = $warehouses[0]; } $allstr = StockTransferReceipt::where('warehouse', $current_warehouse)->get(); $this->data = array_merge($this->data, ['all_str' => $allstr, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.all-str', $this->data); } //Added on 02-10-2023 for the functionality of edit-authorization public function stn_delete() { $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]; $allstn = \App\StockTransferNote::where('from_warehouse', $current_warehouse)->get(); // $allstn = \App\StockTransferNote::whereIn('from_warehouse', $warehouses)->get(); $this->data = array_merge($this->data, ['all_stn' => $allstn, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.delete-stn', $this->data); } public function edit_stn($id) { $this->get_common(); $loginId = Auth::user()->loginId; $warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('StoreCoordinatorCircleCodes', $loginId) ->groupBy('warehouseCode') ->get(); $to_warehouses = WareHouse::get(); $current_warehouse = $this->data['userInfo']->warehouseCode; $stn_ids = StnItem::where('stn_id', $id)->get(); foreach ($stn_ids as $stn_id) { } $allstr = StockTransferReceipt::where('warehouse', $current_warehouse)->get(); $allstn = StockTransferNote::find($id); $get_stn = \App\StockTransferNote::where('id', $id)->first(); if ($get_stn != null) { $get_stn_items = \App\StnItem::select(DB::raw('sum(fresh_qty) as fresh_qty'), DB::raw('sum(repaired_qty) as repaired_qty'), DB::raw('sum(faulty_qty) as faulty_qty'), 'spare_code', 'stn_id', 'id', 'lot_no')->where('stn_id', $get_stn->id)->groupBy('spare_code')->get(); } $this->data = array_merge($this->data, ['all_str' => $allstr, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse, 'to_warehouses' => $to_warehouses, 'all_stn' => $allstn, 'get_stn_items' => $get_stn_items, 'get_stn' => $get_stn, 'id' => $id]); return view('circle-store.edit-str', $this->data); } public function update_stn_now(Request $request) { // $stn_id = 'STN/PNT/298/2122'; $request = json_decode($request->generateStn); $warehouse = $request->warehouse; $to_warehouse = $request->to_warehouse; $consignee_address = $request->consignee_address; $invoice_no = $request->invoice_no; $is_valid = true; $sp = ""; $sp_code = ''; $flag = false; $stn_ids = StnItem::where('stn_id', $request->id)->get(); foreach ($stn_ids as $stn_id) { } $get_stn = \App\StockTransferNote::where('id', $request->id)->first(); //-----------------Deleting the item & added to responsible tables----------- if ($get_stn != null) { $get_stn_items = \App\StnItem::where('stn_id', $get_stn->id)->get(); foreach ($get_stn_items as $stn_item) { // dd($stn_item); if ($stn_item->fresh_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->fresh_qty = $StockInCircleStore->fresh_qty + $stn_item->fresh_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'fresh')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->fresh_qty; $warehouseInventory->save(); } if ($stn_item->repaired_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->repaired_qty = $StockInCircleStore->repaired_qty + $stn_item->repaired_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'repaired')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->repaired_qty; $warehouseInventory->save(); } if ($stn_item->faulty_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->faulty_qty = $StockInCircleStore->faulty_qty + $stn_item->faulty_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'faulty')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->faulty_qty; $warehouseInventory->save(); } $stn_item->delete(); } // $get_stn->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)')); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->where('item_type', 'faulty')->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 ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val->spare_code . ' Faulty'; } } } 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 ($ms->faulty_qty < $val->fqty && $val->fqty != 0) { $is_valid = false; $sp = $val->spare_code . ' Faulty'; break; } } if ($is_valid == true) { $last_value = \App\StockTransferNote::where('from_warehouse', $warehouse)->where('session', 2022)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 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); } //$session = date('y').date('y')+1; $last_value->from_warehouse = $warehouse; $last_value->to_warehouse = $to_warehouse; $last_value->consignee_address = $consignee_address; $last_value->invoice_no = $invoice_no; // $stn = new StockTransferNote(); // $stn->stn_date = date('Y-m-d H:i:s'); // $stn->series = $no; // $stn->stn_no = 'STN/'.substr($warehouse,3).'/'.$no.'/'.$session; // $stn->from_warehouse = $warehouse; // $stn->to_warehouse = $to_warehouse; // $stn->consignee_address = $consignee_address; // $stn->invoice_no = $invoice_no; // $stn->status = 'stn_release'; if ($last_value->save()) { foreach ($request->items as $key => $val) { $spare_code = $val->spare_code; if ($val->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 = $val->qty; foreach ($warehouse_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $required && $required != 0) { $spare_qty = $fvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $fvalue->spare_code; $stnitem->status = 'request'; $stnitem->fresh_qty = $fvalue->available_qty; $stnitem->rate = $fvalue->rate; $stnitem->lot_no = $fvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $required || $total_adjust == $required) { $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $fvalue->spare_code; $stnitem->status = 'request'; $stnitem->fresh_qty = $required; $stnitem->rate = $fvalue->rate; $stnitem->lot_no = $fvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->save(); } $required = $required - $total_adjust; if ($required == 0 || $required < 0) { break 1; } } } if ($val->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; $rp_required = $val->rqty; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $spare_qty = $rvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $rvalue->spare_code; $stnitem->status = 'request'; $stnitem->repaired_qty = $rvalue->available_qty; $stnitem->rate = $rvalue->rate; $stnitem->lot_no = $rvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $rp_required || $total_adjust == $rp_required) { $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $rvalue->spare_code; $stnitem->status = 'request'; $stnitem->repaired_qty = $rp_required; $stnitem->rate = $rvalue->rate; $stnitem->lot_no = $rvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } if ($val->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(); $total_adjust = 0; $fl_required = $val->fqty; foreach ($warehouse_inventory as $key => $flvalue) { $total_adjust = $flvalue->available_qty; if ($total_adjust < $fl_required && $fl_required != 0) { $spare_qty = $flvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $flvalue->spare_code; $stnitem->status = 'request'; $stnitem->faulty_qty = $flvalue->available_qty; $stnitem->rate = $flvalue->rate; $stnitem->lot_no = $flvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $fl_required || $total_adjust == $fl_required) { $stnitem = new StnItem(); $stnitem->stn_id = $last_value->id; $stnitem->spare_code = $flvalue->spare_code; $stnitem->status = 'request'; $stnitem->faulty_qty = $fl_required; $stnitem->rate = $flvalue->rate; $stnitem->lot_no = $flvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fl_required; $warehouse_inventory_main->save(); } $fl_required = $fl_required - $total_adjust; if ($fl_required == 0 || $fl_required < 0) { break 1; } } } $circleStock = StockInCircleStore::where('spare_code', $val->spare_code)->where('warehouse', $warehouse)->first(); $circleStock->fresh_qty = $circleStock->fresh_qty - $val->qty; $StockInCircleStore->fresh_qty = $StockInCircleStore->fresh_qty - $stn_item->fresh_qty; $circleStock->repaired_qty = $circleStock->repaired_qty - $val->rqty; $StockInCircleStore->repaired_qty = $StockInCircleStore->repaired_qty - $stn_item->repaired_qty; $circleStock->faulty_qty = $circleStock->faulty_qty - $val->fqty; $StockInCircleStore->faulty_qty = $StockInCircleStore->faulty_qty - $stn_item->faulty_qty; $circleStock->save(); } return json_encode(['success' => true, 'msg' => 'STN 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 STN not created at this moment. !!']); } } else { return json_encode(['success' => false, 'msg' => $sp_code . ' Qty mismatch in Circle Stock , please contact to admin.!!']); } // }else{ // return back()->with('error', 'Failed to delete items'); // } $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_stn($id) { // $stn_id = 'STN/PNT/298/2122'; $stn_ids = StnItem::where('stn_id', $id)->get(); foreach ($stn_ids as $stn_id) { } $get_stn = \App\StockTransferNote::where('id', $id)->first(); if ($get_stn != null) { $get_stn_items = \App\StnItem::where('stn_id', $get_stn->id)->get(); // dd($get_stn_items); foreach ($get_stn_items as $stn_item) { // dd($stn_item); if ($stn_item->fresh_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->fresh_qty = $StockInCircleStore->fresh_qty + $stn_item->fresh_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'fresh')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->fresh_qty; $warehouseInventory->save(); } if ($stn_item->repaired_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->repaired_qty = $StockInCircleStore->repaired_qty + $stn_item->repaired_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'repaired')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->repaired_qty; $warehouseInventory->save(); } if ($stn_item->faulty_qty != 0) { $StockInCircleStore = \App\StockInCircleStore::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->first(); $StockInCircleStore->faulty_qty = $StockInCircleStore->faulty_qty + $stn_item->faulty_qty; $StockInCircleStore->save(); $warehouseInventory = \App\WarehouseInventory::where('spare_code', $stn_item->spare_code)->where('warehouse', $get_stn->from_warehouse)->where('item_type', 'faulty')->where('lot_no', $stn_item->lot_no)->first(); $warehouseInventory->available_qty = $warehouseInventory->available_qty + $stn_item->faulty_qty; $warehouseInventory->save(); } $stn_item->delete(); } $get_stn->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(); } public function updateStnPermission(Request $request) { $validator = Validator::make($request->all(), [ 'stn_no' => 'required', 'edit_permission' => 'required', ], [ 'stn_no.required' => 'STN 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(); } $stn_no = $request->input('stn_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('stock_transfer_notes')->where('stn_no', $stn_no)->first(); if ($record && $record->status == 'stn_release') { // Update the edit_permission column DB::table('stock_transfer_notes')->where('stn_no', $stn_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 STR for the STR No. $stn_no."; } else { // Set a session variable to indicate failure $successMessage = "Sorry, the STR No. $stn_no already has been received, So permission could not be updated."; } // 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 generate_stn_now(Request $request) { $loginId = Auth::user()->loginId; $userInfo = LocalUserMapping::where('LoginID', $loginId)->first(); $request = json_decode($request->generateStn, true); $warehouse = $request['warehouse']; $to_warehouse = $request['to_warehouse']; $consignee_address = $request['consignee_address']; $invoice_no = $request['invoice_no']; $is_valid = true; $sp = ""; $sp_code = ''; foreach ($request['items'] as $val) { $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'faulty')->sum(DB::raw('round(available_qty, 2)')); $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); if ($ms != null) { if (round($ms->fresh_qty, 2) != round($wi_fresh, 2)) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Repaired'; } if ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp_code = $sp_code . ' ' . $val['code'] . ' Faulty'; } } } if ($is_valid == true) { try { // Start a database transaction DB::beginTransaction(); foreach ($request['items'] as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); 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['flqty'] && $val['flqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; 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'); //$session_year = date('Y'); } else { $session = date('y') . (date('y') + 1); //$session_year = date('Y')+1; } $last_value = \App\StockTransferNote::where('from_warehouse', $warehouse)->where('session', $session)->orderBy('id', 'desc')->first(); if ($last_value != null) { $no = $last_value->series + 1; } else { $no = 1; } //$session = date('y').date('y')+1; $stn = new StockTransferNote(); $stn->stn_date = date('Y-m-d H:i:s'); $stn->series = $no; $stn->session = $session; $stn->stn_no = 'STN/' . substr($warehouse, 3) . '/' . $no . '/' . $session; $stn->from_warehouse = $warehouse; $stn->to_warehouse = $to_warehouse; $stn->consignee_address = $consignee_address; $stn->invoice_no = $invoice_no; $stn->status = 'stn_release'; if ($stn->save()) { foreach ($request['items'] as $value) { $spare_code = $value['code']; 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) { $spare_qty = $fvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $fvalue->spare_code; $stnitem->status = 'request'; $stnitem->fresh_qty = $fvalue->available_qty; $stnitem->rate = $fvalue->rate; $stnitem->lot_no = $fvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $required || $total_adjust == $required) { $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $fvalue->spare_code; $stnitem->status = 'request'; $stnitem->fresh_qty = $required; $stnitem->rate = $fvalue->rate; $stnitem->lot_no = $fvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $spare_qty = $rvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $rvalue->spare_code; $stnitem->status = 'request'; $stnitem->repaired_qty = $rvalue->available_qty; $stnitem->rate = $rvalue->rate; $stnitem->lot_no = $rvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $rp_required || $total_adjust == $rp_required) { $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $rvalue->spare_code; $stnitem->status = 'request'; $stnitem->repaired_qty = $rp_required; $stnitem->rate = $rvalue->rate; $stnitem->lot_no = $rvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } if ($value['flqty'] != 0) { $warehouse_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; $fl_required = $value['flqty']; foreach ($warehouse_inventory as $key => $flvalue) { $total_adjust = $flvalue->available_qty; if ($total_adjust < $fl_required && $fl_required != 0) { $spare_qty = $flvalue->available_qty; $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $flvalue->spare_code; $stnitem->status = 'request'; $stnitem->faulty_qty = $flvalue->available_qty; $stnitem->rate = $flvalue->rate; $stnitem->lot_no = $flvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $spare_qty; $warehouse_inventory_main->save(); } if ($total_adjust > $fl_required || $total_adjust == $fl_required) { $stnitem = new StnItem(); $stnitem->stn_id = $stn->id; $stnitem->spare_code = $flvalue->spare_code; $stnitem->status = 'request'; $stnitem->faulty_qty = $fl_required; $stnitem->rate = $flvalue->rate; $stnitem->lot_no = $flvalue->lot_no; $stnitem->save(); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fl_required; $warehouse_inventory_main->save(); } $fl_required = $fl_required - $total_adjust; if ($fl_required == 0 || $fl_required < 0) { break 1; } } } $circleStock = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); $circleStock->fresh_qty = $circleStock->fresh_qty - $value['qty']; $circleStock->repaired_qty = $circleStock->repaired_qty - $value['rqty']; $circleStock->faulty_qty = $circleStock->faulty_qty - $value['flqty']; $circleStock->save(); } DB::commit(); return json_encode(['success' => true, 'msg' => 'STN Generated Successfully! STN Number is: ' . $stn->stn_no]); } 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 STN not created at this moment. !!']); } } catch (Exception $e) { // If an exception occurs, roll back the database transaction DB::rollBack(); // Handle the exception Log::error("An error occurred: " . $e->getMessage()); Log::error($e->getTraceAsString()); // throw $e; return json_encode(['success' => false, 'msg' => 'Something Went Wrong or Your Internet Speed Is Slow. Please Try Again Later.']); } } else { return json_encode(['success' => false, 'msg' => $sp_code . ' Qty mismatch in Circle Stock , please contact to admin.!!']); } } public function all_delivery_challan(Request $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); $current_warehouse = $warehouses[0]; $all_challan = DeliveryTransaction::where('warehouse', $current_warehouse)->orderBy('id', 'desc')->get(); $challans = DeliveryTransaction::where('warehouse', $current_warehouse)->groupBy('type')->get(); if (count($challans) > 1) { $column = 'Site/Engineer Id'; } else { $column = isset($challans[0]->type) && $challans[0]->type == 1 ? 'Engineer Id' : 'Site Id'; } $this->data = array_merge($this->data, ['column' => $column, 'all_challan' => $all_challan, 'warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.all-delivery-challan', $this->data); } public function get_delivery_challan_of_warehouse(Request $request) { $all_challan = DeliveryTransaction::where('warehouse', $request->warehouse)->get()->toArray(); return json_encode(['success' => true, 'all_challan' => $all_challan]); } public function get_delivery_challan_warehouse(Request $request) { $warehouse = $request->warehouse; $all_challan = DeliveryTransaction::where('warehouse', $warehouse)->get(); return json_encode(['success' => true, 'all_challan' => $all_challan]); } public function print_delivery_challan($dt_id, $type = '') { $this->get_common(); $delivery_transaction = DeliveryTransaction::where('id', $dt_id)->first(); $warehouse = DB::table('ware_houses')->where('ware_house', $delivery_transaction->warehouse)->first(); $delivery_transaction_items = DB::table('delivery_transaction_items')->join('spare_parts_masters', 'spare_parts_masters.code', 'delivery_transaction_items.spare_code')->where('delivery_transaction_items.dt_id', $dt_id)->select('delivery_transaction_items.*', 'spare_parts_masters.description', 'spare_parts_masters.repaired_rate')->get(); $subtotal = 0; foreach ($delivery_transaction_items as $value) { $ftotal = $value->fresh_qty * $value->rate; $rtotal = ($value->repaired_qty * $value->rate * $value->repaired_rate) / 100; $subtotal = $subtotal + ($ftotal + $rtotal); } $number_in_word = $this->convert_number_to_words($subtotal); //$engineer = LocalUserMapping::where('LoginID',$delivery_transaction->engineer_id)->first(); if ($type == 1) { $engineer = LocalUserMapping::where('LoginID', $delivery_transaction->engineer_id)->first(); $engineer_details['name'] = $engineer->StaffName; $engineer_details['id'] = $engineer->LoginID; $engineer_details['MobileNo'] = $engineer->MobileNo; } else { $engineer = DB::table('site_master')->where('Site_id', $delivery_transaction->engineer_id)->first(); $engineer_details['name'] = $engineer->Site_Name; $engineer_details['id'] = $engineer->Site_id; } $this->data = array_merge($this->data, ['delivery_transaction' => $delivery_transaction, 'delivery_transaction_items' => $delivery_transaction_items, 'engineer' => $engineer_details, 'subtotal' => $subtotal, 'number_in_word' => $number_in_word, 'warehouse' => $warehouse]); return view('circle-store.print-challan', $this->data); } public function get_spare_part_from_engineer_stock(Request $request) { $code = $request->code; $engineer_id = $request->engineer_id; $warehouse_id = $request->warehouse; $is_spare_part = DB::table('engineer_spare_parts')->where('warehouse', $warehouse_id)->where('spare_code', $code)->where('engineer_id', $engineer_id)->count(); if ($is_spare_part > 0) { $engineer_spare_info = DB::table('engineer_spare_parts')->where('warehouse', $warehouse_id)->where('spare_code', $code)->where('engineer_id', $engineer_id)->first(); $spare_rate = DB::table('engineer_inventory')->select('rate')->where('warehouse', $warehouse_id)->where('spare_code', $code)->where('engineer_id', $engineer_id)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'engineer_spare_info' => $engineer_spare_info, 'spare_rate' => $spare_rate->rate]); } else { return json_encode(['success' => false, 'msg' => 'Spare not at Engineer Stock. Try another spare Code.']); } } public function get_spare_part_from_site_stock(Request $request) { $code = $request->code; $site_arr = explode('::', $request->site_id); $site_id = $site_arr[0]; $site_product = $site_arr[1]; $is_spare_part = DB::table('engineer_spare_parts')->where('spare_code', $code)->where('engineer_id', $site_id)->where('site_product', $site_product)->count(); if ($is_spare_part > 0) { $engineer_spare_info = DB::table('engineer_spare_parts')->where('spare_code', $code)->where('engineer_id', $site_id)->where('site_product', $site_product)->first(); $spare_part = DB::table('spare_parts_masters')->where('code', $code)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part, 'engineer_spare_info' => $engineer_spare_info]); } else { return json_encode(['success' => false, 'msg' => 'Spare not at Engineer Stock. Try another spare Code.']); } } public function convert_number_to_words(float $number) { $decimal = round($number - ($no = floor($number)), 2) * 100; $hundred = null; $digits_length = strlen($no); $i = 0; $str = array(); $words = array( 0 => '', 1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine', 10 => 'ten', 11 => 'eleven', 12 => 'twelve', 13 => 'thirteen', 14 => 'fourteen', 15 => 'fifteen', 16 => 'sixteen', 17 => 'seventeen', 18 => 'eighteen', 19 => 'nineteen', 20 => 'twenty', 30 => 'thirty', 40 => 'forty', 50 => 'fifty', 60 => 'sixty', 70 => 'seventy', 80 => 'eighty', 90 => 'ninety' ); $digits = array('', 'hundred', 'thousand', 'lakh', 'crore'); while ($i < $digits_length) { $divider = ($i == 2) ? 10 : 100; $number = floor($no % $divider); $no = floor($no / $divider); $i += $divider == 10 ? 1 : 2; if ($number) { $plural = (($counter = count($str)) && $number > 9) ? 's' : null; $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; $str[] = ($number < 21) ? $words[$number] . ' ' . $digits[$counter] . $plural . ' ' . $hundred : $words[floor($number / 10) * 10] . ' ' . $words[$number % 10] . ' ' . $digits[$counter] . $plural . ' ' . $hundred; } else $str[] = null; } $Rupees = implode('', array_reverse($str)); $paise = ($decimal) ? "." . ($words[$decimal / 10] . " " . $words[$decimal % 10]) . ' Paise' : ''; return ($Rupees ? $Rupees . 'Rupees ' : '') . $paise; } public function spare_move_to_pt_stock() { $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]; $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.spare-move-to-pt-stock', $this->data); } public function assign_spare_to_pt_stock(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $items = $request->items; $is_valid = true; $sp = ""; foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum(DB::raw('round(available_qty, 2)')); $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum(DB::raw('round(available_qty, 2)')); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Repaired'; } } else { $is_valid = false; $sp = $val['code'] . ' Fresh'; } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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) { foreach ($items as $value) { $ptStock = PtStock::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($ptStock != null) { $ptStock->fresh_qty = $ptStock->fresh_qty + $value['qty']; $ptStock->repaired_qty = $ptStock->repaired_qty + $value['rqty']; } else { $ptStock = new PtStock(); $ptStock->spare_code = $value['code']; $ptStock->warehouse = $warehouse; $ptStock->fresh_qty = $value['qty']; $ptStock->repaired_qty = $value['rqty']; } $ptStock->save(); $stock_in_store = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->save(); $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->fresh_qty = $value['qty']; $history->faulty_qty = 0; $history->repaired_qty = $value['rqty']; $history->receiving_type = 'stock_move_to_pt'; $history->receiving_date = date('Y-m-d H:i:s'); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); } $spare_code = $value['code']; 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) { \DB::table('pt_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'fresh', 'entry_type' => 'assign_to_pt', 'spare_code' => $fvalue->spare_code, 'in_qty' => $fvalue->available_qty, 'available_qty' => $fvalue->available_qty, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { \DB::table('pt_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'fresh', 'entry_type' => 'assign_to_pt', 'spare_code' => $fvalue->spare_code, 'in_qty' => $required, 'available_qty' => $required, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $required; $warehouse_inventory_main->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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { \DB::table('pt_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'repaired', 'entry_type' => 'assign_to_pt', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rvalue->available_qty, 'available_qty' => $rvalue->available_qty, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { \DB::table('pt_inventory')->insertGetId([ 'warehouse' => $warehouse, 'item_type' => 'repaired', 'entry_type' => 'assign_to_pt', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } return json_encode(['success' => true, 'msg' => 'Spare Move to PT Stock Successfully !!']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at circle Store. So, Not able to assign this spare.!!']); } } else { return json_encode(['success' => false, 'msg' => $sp . 'Qty mismatch in Circle store , please contact to admin.']); } } public function get_customers_of_warehouse(Request $request) { $fieldUserCodes = substr($request->warehouse, 3); $customers = DB::table('customer_circle_list')->where('Circle', $fieldUserCodes)->get(); return json_encode(['success' => true, 'customers' => $customers]); } public function pt_stock_moved_to_main_stock() { $this->get_common(); $loginId = Auth::user()->loginId; $assinged_warehouses = DB::table('local_user_mapping') ->select('local_user_mapping.warehouseCode') ->where('LoginID', $loginId) ->first(); $warehouses = explode(',', $assinged_warehouses->warehouseCode); $current_warehouse = $warehouses[0]; $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.pt-stock-moved-to-main-stock', $this->data); } public function pt_stock_move_to_stock(Request $request) { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $request = json_decode($request->ptStockMovetoStock, true); $warehouse = $request['warehouse']; $is_valid = true; $sp = ""; foreach ($request['items'] as $val) { $ms = StockInCircleStore::where('spare_code', $val['spare_code'])->where('warehouse', $warehouse)->first(); $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)')); $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)')); if ($ms != null) { if ((int)$ms->fresh_qty != (int)$wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $val['spare_code'] . ' Fresh'; } if ((int)$ms->repaired_qty != (int)$wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $val['spare_code'] . ' Repaired'; } } } if ($is_valid == true) { foreach ($request['items'] as $val) { $spare_code = $val['spare_code']; $is_stock = DB::table('pt_stocks')->where('warehouse', $warehouse)->where('spare_code', $spare_code)->count(); if ($is_stock > 0) { $ms = DB::table('pt_stocks')->where('warehouse', $warehouse)->where('spare_code', $spare_code)->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; } } else { $is_valid = false; $sp = $val['spare_code'] . ' Fresh'; break; } } if ($is_valid == true) { foreach ($request['items'] as $value) { $ptStock = PtStock::where('warehouse', $warehouse)->where('spare_code', $value['spare_code'])->first(); if ($ptStock != null) { $ptStock->fresh_qty = $ptStock->fresh_qty - $value['qty']; $ptStock->repaired_qty = $ptStock->repaired_qty - $value['rqty']; $ptStock->save(); $stock_in_store = StockInCircleStore::where('spare_code', $value['spare_code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty + $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty + $value['rqty']; $stock_in_store->save(); } else { $stock_in_store = new StockInCircleStore(); $stock_in_store->spare_code = $value['spare_code']; $stock_in_store->warehouse = $warehouse; $stock_in_store->fresh_qty = $value['qty']; $stock_in_store->repaired_qty = $value['rqty']; $stock_in_store->user_id = $user_id; $stock_in_store->save(); } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['spare_code']; $history->fresh_qty = $value['qty']; $history->faulty_qty = 0; $history->repaired_qty = $value['rqty']; $history->receiving_type = 'pt_stock_move_to_stock'; $history->receiving_date = date('Y-m-d H:i:s'); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); $spare_code = $value['spare_code']; 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) { $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_pt'; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $fvalue->available_qty; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $pt_inventory_main = \App\PtInventory::where('id', $fvalue->id)->first(); $pt_inventory_main->available_qty = $pt_inventory_main->available_qty - $fvalue->available_qty; $pt_inventory_main->save(); } elseif ($total_adjust > $required || $total_adjust == $required) { $wi = \App\WarehouseInventory::where('spare_code', $fvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'fresh')->where('lot_no', $fvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $required; $wi->rate = $fvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_pt'; $wi->spare_code = $fvalue->spare_code; $wi->available_qty = $required; $wi->rate = $fvalue->rate; $wi->lot_no = $fvalue->lot_no; $wi->save(); } $pt_inventory_main = \App\PtInventory::where('id', $fvalue->id)->first(); $pt_inventory_main->available_qty = $pt_inventory_main->available_qty - $required; $pt_inventory_main->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; $rp_required = $value['rqty']; foreach ($pt_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_pt'; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rvalue->available_qty; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $pt_inventory_main = \App\PtInventory::where('id', $rvalue->id)->first(); $pt_inventory_main->available_qty = $pt_inventory_main->available_qty - $rvalue->available_qty; $pt_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { $wi = \App\WarehouseInventory::where('spare_code', $rvalue->spare_code)->where('warehouse', $warehouse)->where('item_type', 'repaired')->where('lot_no', $rvalue->lot_no)->first(); if ($wi != null) { $wi->available_qty = $wi->available_qty + $rp_required; $wi->rate = $rvalue->rate; $wi->save(); } else { $wi = new \App\WarehouseInventory(); $wi->warehouse = $warehouse; $wi->item_type = 'fresh'; $wi->entry_type = 'received_from_pt'; $wi->spare_code = $rvalue->spare_code; $wi->available_qty = $rp_required; $wi->rate = $rvalue->rate; $wi->lot_no = $rvalue->lot_no; $wi->save(); } $pt_inventory_main = \App\PtInventory::where('id', $rvalue->id)->first(); $pt_inventory_main->available_qty = $pt_inventory_main->available_qty - $rp_required; $pt_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } } return json_encode(['success' => true, 'msg' => 'PT Stock Move to Stock Successfully !!']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Qty Spare not at pt stock. So, Not able to assign this spare.!!']); } } else { return json_encode(['success' => false, 'msg' => $sp . ' Quantity mismatch is Circle Stock , please contact admin.']); } } public function check_spare_part_from_pt_stock(Request $request) { $warehouse = $request->warehouse; $spare_code = $request->code; $is_stock = DB::table('pt_stocks')->where('warehouse', $warehouse)->where('spare_code', $spare_code)->count(); if ($is_stock > 0) { $pt_tocks = DB::table('pt_stocks')->join('spare_parts_masters', 'spare_parts_masters.code', 'pt_stocks.spare_code')->where('pt_stocks.warehouse', $warehouse)->where('pt_stocks.spare_code', $spare_code)->select('pt_stocks.*', 'spare_parts_masters.description', 'spare_parts_masters.uom', 'spare_parts_masters.category', 'spare_parts_masters.repaired_rate')->first(); return json_encode(['success' => true, 'pt_tocks' => $pt_tocks]); } else { return json_encode(['success' => false, 'msg' => 'Stock Not In PT Stock !!']); } } public function all_sr(Request $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); if ($request->warehouse != "") { $current_warehouse = $request->warehouse; } else { $current_warehouse = $warehouses[0]; } $allsr = \DB::table('history_of_stock_in_circle_stores')->join('local_user_mapping', 'local_user_mapping.LoginID', 'history_of_stock_in_circle_stores.engineer_id')->where('history_of_stock_in_circle_stores.receiving_type', 'engineer_material_received')->where('history_of_stock_in_circle_stores.from_warehouse', $current_warehouse)->select('history_of_stock_in_circle_stores.*', 'local_user_mapping.StaffName')->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse, 'allsr' => $allsr]); return view('circle-store.allsr', $this->data); } public function all_sr_from_site(Request $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); if ($request->warehouse != "") { $current_warehouse = $request->warehouse; } else { $current_warehouse = $warehouses[0]; } $allsr = \DB::table('history_of_stock_in_circle_stores')->join('site_master', 'site_master.Site_id', 'history_of_stock_in_circle_stores.engineer_id')->where('history_of_stock_in_circle_stores.receiving_type', 'site_material_received')->where('history_of_stock_in_circle_stores.from_warehouse', $current_warehouse)->select('history_of_stock_in_circle_stores.*', 'site_master.Site_Name', 'site_master.Site_id')->get(); $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse, 'allsr' => $allsr]); return view('circle-store.all-sr-from-site', $this->data); } public function getCircle($loginId) { $user = \DB::table('users')->where('loginId', $loginId)->first(); $warehouses = ''; if ($user->role == 5) { // Regional Manager $warehouses = DB::table('local_user_mapping') ->join('ware_houses', 'ware_house', \DB::raw("CONCAT('SER',local_user_mapping.fieldUserCodes)")) ->select('local_user_mapping.fieldUserCodes', 'ware_houses.*') ->where('regionalCircleCodes', $loginId) ->groupBy('local_user_mapping.fieldUserCodes') ->get(); } elseif ($user->role == 4) { // Business Head $warehouses = ''; } elseif ($user->role == 6) { // Service Manager $warehouses = DB::table('local_user_mapping') ->join('ware_houses', 'ware_house', \DB::raw("CONCAT('SER',local_user_mapping.fieldUserCodes)")) ->select('local_user_mapping.fieldUserCodes', 'ware_houses.*') ->where('serviceManagerCircleCodes', $loginId) ->groupBy('fieldUserCodes') ->get(); } return $warehouses; } public function test() { $loginId = Auth::user()->loginId; $circles = $this->getCircle($loginId); dd($circles); } // Scrap Zone public function spares_in_scrap_zone(Request $request) { $this->get_common(); $current_warehouse = 'Scrap Zone'; $stocks = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.warehouse', $current_warehouse)->select('stock_in_circle_stores.*', 'spare_parts_masters.description', 'spare_parts_masters.rate', 'spare_parts_masters.repaired_rate')->orderBy('stock_in_circle_stores.spare_code', 'asc')->get(); $faulty_stocks = DB::table('warehouse_inventory')->join('spare_parts_masters', 'spare_parts_masters.code', 'warehouse_inventory.spare_code')->where('warehouse_inventory.warehouse', $current_warehouse)->where('warehouse_inventory.item_type', 'scrap')->where('warehouse_inventory.available_qty', '>', 0)->select('warehouse_inventory.*', 'spare_parts_masters.description')->get(); $this->data = array_merge($this->data, ['stocks' => $stocks, 'current_warehouse' => $current_warehouse, 'faulty_stocks' => $faulty_stocks]); return view('circle-store.faulty-in-stock', $this->data); } public function spare_move_to_faulty_stock() { $this->get_common(); $loginId = Auth::user()->loginId; $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; $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); // dd($this->data); return view('circle-store.spare-move-to-faulty-stock', $this->data); } public function get_faulty_spare_from_circle_stock(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $id_spare_part = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($id_spare_part > 0) { $spare_part = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.spare_code', $code)->where('stock_in_circle_stores.warehouse', $warehouse)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part]); } else { return json_encode(['success' => false, 'msg' => 'Spare Not available at circle store.!!']); } } public function assign_spare_to_scrap_zone(Request $request) { // dd($request->all()); $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $items = $request->items; $is_valid = true; $sp = ""; foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'faulty')->sum('available_qty'); if ($ms != null) { if ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Faulty'; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->faulty_qty < $val['qty'] && $val['qty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } if ($is_valid == true) { foreach ($items as $value) { // $ptStock = PtStock::where('spare_code',$value['code'])->where('warehouse',$warehouse)->first(); // if( $ptStock != null){ // $ptStock->fresh_qty = $ptStock->fresh_qty + $value['qty']; // $ptStock->repaired_qty = $ptStock->repaired_qty + $value['rqty']; // }else{ // $ptStock = new PtStock(); // $ptStock->spare_code = $value['code']; // $ptStock->warehouse = $warehouse; // $ptStock->fresh_qty = $value['qty']; // $ptStock->repaired_qty = $value['rqty']; // } // $ptStock->save(); $stock_in_store = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->faulty_qty = $stock_in_store->faulty_qty - $value['qty']; $stock_in_store->save(); $scrapZone = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', '=', 'Scrap Zone')->first(); if (!is_null($scrapZone)) { $scrapZone->faulty_qty = $scrapZone->faulty_qty + $value['qty']; $scrapZone->save(); } else { $stock_in_store = new StockInCircleStore(); $stock_in_store->warehouse = 'Scrap Zone'; $stock_in_store->user_id = $value['user_id']; $stock_in_store->spare_code = $value['code']; // $storestock->spare_id = $value['code']; $stock_in_store->faulty_qty = $value['qty']; $stock_in_store->save(); } // if($stock_in_store->faulty_qty != null && $stock_in_store->warehouse = 'Scrap Zone'){ // $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['qty']; // }else{ // $stock_in_store = new StockInCircleStore(); // $stock_in_store->warehouse = 'Scrap Zone'; // $stock_in_store->user_id = $value['user_id']; // $stock_in_store->spare_code = $value['code']; // // $storestock->spare_id = $value['code']; // $stock_in_store->faulty_qty = $value['qty']; // $stock_in_store->save(); // } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->faulty_qty = $value['qty']; $history->receiving_type = 'faultystock_scrapzone'; $history->receiving_date = date('Y-m-d H:i:s'); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); } $spare_code = $value['code']; 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', 'faulty')->get(); $total_adjust = 0; $rp_required = $value['qty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'Faulty', 'entry_type' => 'assign_to_scrap', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rvalue->available_qty, 'available_qty' => $rvalue->available_qty, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'Faulty', 'entry_type' => 'assign_to_scrap', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } return json_encode(['success' => true, 'msg' => 'Spare Moved To Scrap Zone Successfully !!']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Entered Quantity not available at circle Store.']); } } else { return json_encode(['success' => false, 'msg' => $sp . 'Qty mismatch in Circle store , please contact admin.']); } } public function faulty_stock_moved_to_main_stock() { $this->get_common(); $loginId = Auth::user()->loginId; $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; $this->data = array_merge($this->data, ['warehouses' => $warehouses, 'current_warehouse' => $current_warehouse]); return view('circle-store.faulty-stock-moved-to-main-stock', $this->data); } public function check_spare_part_from_faulty_stock(Request $request) { $code = $request->code; $warehouse = $request->warehouse; $id_spare_part = DB::table('stock_in_circle_stores')->where('spare_code', $code)->where('warehouse', $warehouse)->count(); if ($id_spare_part > 0) { $spare_part = DB::table('stock_in_circle_stores')->join('spare_parts_masters', 'spare_parts_masters.code', 'stock_in_circle_stores.spare_code')->where('stock_in_circle_stores.spare_code', $code)->where('stock_in_circle_stores.warehouse', $warehouse)->first(); return json_encode(['success' => true, 'spare_part' => $spare_part]); } else { return json_encode(['success' => false, 'msg' => 'Spare Not available at circle store.!!']); } } public function scrap_zone_move_to_main_stock(Request $request) { // dd($request->all()); $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $items = $request->items; $is_valid = true; $sp = ""; foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $wi_scrap = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'scrap')->sum('available_qty'); if ($ms != null) { if ($ms->faulty_qty != $wi_scrap) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Scrap'; } } else { $is_valid = false; $sp = $val['code'] . ' Scrap'; } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); if ($ms != null) { if ($ms->faulty_qty < $val['qty'] && $val['qty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Scrap'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Scrap'; break; } } if ($is_valid == true) { foreach ($items as $value) { // $ptStock = PtStock::where('spare_code',$value['code'])->where('warehouse',$warehouse)->first(); // if( $ptStock != null){ // $ptStock->fresh_qty = $ptStock->fresh_qty + $value['qty']; // $ptStock->repaired_qty = $ptStock->repaired_qty + $value['rqty']; // }else{ // $ptStock = new PtStock(); // $ptStock->spare_code = $value['code']; // $ptStock->warehouse = $warehouse; // $ptStock->fresh_qty = $value['qty']; // $ptStock->repaired_qty = $value['rqty']; // } // $ptStock->save(); $stock_in_store = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->faulty_qty = $stock_in_store->faulty_qty - $value['qty']; $stock_in_store->save(); $mainZone = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', '=', 'SERPNT')->first(); if (!is_null($mainZone)) { $mainZone->faulty_qty = $mainZone->faulty_qty + $value['qty']; $mainZone->save(); } else { $storestock = new StockInCircleStore(); $storestock->warehouse = 'SERPNT'; $storestock->user_id = $value['user_id']; $storestock->spare_code = $value['code']; // $storestock->spare_id = $value['code']; $storestock->faulty_qty = $value['qty']; $storestock->save(); } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->faulty_qty = $value['qty']; $history->receiving_type = 'scrapzone_to_mainstock'; $history->receiving_date = date('Y-m-d H:i:s'); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); // // if($stock_in_store != null){ // // $stock_in_store->faulty_qty = $stock_in_store->faulty_qty + $value['qty']; // // }else{ // // $storestock = new StockInCircleStore(); // // $storestock->warehouse = 'Scrap Zone'; // // $storestock->user_id = $value['user_id']; // // $storestock->spare_code = $value['code']; // // // $storestock->spare_id = $value['code']; // // $storestock->faulty_qty = $value['qty']; // // $storestock->save(); // // } } $spare_code = $value['code']; 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', 'scrap')->get(); $total_adjust = 0; $rp_required = $value['qty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'SERPNT', 'item_type' => 'faulty', 'scrap_bin' => 'Faulty', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rvalue->available_qty, 'available_qty' => $rvalue->available_qty, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { \DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'SERPNT', 'item_type' => 'faulty', 'scrap_bin' => 'Faulty', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } return json_encode(['success' => true, 'msg' => 'Scrap Spare Moved To Main Stock Successfully !!']); } else { return json_encode(['success' => false, 'msg' => $sp . ' Entered Quantity not available at circle Store.']); } } else { return json_encode(['success' => false, 'msg' => $sp . 'Qty mismatch in Scrap Zone , please contact admin.']); } } //Added on 18/07/2024 to move all item_types in srcap zone(not only faulty items): public function all_spare_move_to_scrap_stock(){ $this->get_common(); $loginId = Auth::user()->loginId; $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; $this->data = array_merge($this->data,['warehouses'=>$warehouses,'current_warehouse'=>$current_warehouse]); // dd($this->data); return view('circle-store.all-spare-move-to-scrap-stock',$this->data); } public function all_assign_spare_to_scrap_stock(Request $request) { DB::beginTransaction(); try { $user_id = Auth::user()->id; $loginId = Auth::user()->loginId; $warehouse = $request->warehouse; $items = $request->items; $is_valid = true; $sp = ""; foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'fresh')->sum('available_qty'); $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'repaired')->sum('available_qty'); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('item_type', 'faulty')->sum('available_qty'); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' repaired'; } if ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Faulty'; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; } } if ($is_valid == true) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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; } if ($ms->faulty_qty < $val['fqty'] && $val['fqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } if ($is_valid == true) { foreach ($items as $value) { $stock_in_store = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty = $stock_in_store->fresh_qty - $value['qty']; $stock_in_store->repaired_qty = $stock_in_store->repaired_qty - $value['rqty']; $stock_in_store->faulty_qty = $stock_in_store->faulty_qty - $value['fqty']; $stock_in_store->save(); $scrapZone = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', 'Scrap Zone')->first(); if (!is_null($scrapZone)) { $scrapZone->fresh_qty = $scrapZone->fresh_qty + $value['qty']; $scrapZone->repaired_qty = $scrapZone->repaired_qty + $value['rqty']; $scrapZone->faulty_qty = $scrapZone->faulty_qty + $value['fqty']; $scrapZone->save(); } else { $stock_in_store = new StockInCircleStore(); $stock_in_store->warehouse = 'Scrap Zone'; $stock_in_store->user_id = $value['user_id']; $stock_in_store->spare_code = $value['code']; $stock_in_store->fresh_qty = $value['qty']; $stock_in_store->repaired_qty = $value['rqty']; $stock_in_store->faulty_qty = $value['fqty']; $stock_in_store->save(); } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->fresh_qty = $value['qty']; $history->repaired_qty = $value['rqty']; $history->faulty_qty = $value['fqty']; $history->receiving_type = 'mainstock_to_scrapzone'; $history->receiving_date = date('Y-m-d H:i:s'); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); } $spare_code = $value['code']; 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; $rp_required = $value['qty']; foreach ($warehouse_inventory as $key => $fvalue) { $total_adjust = $fvalue->available_qty; $updatedDate = Carbon::parse($fvalue->created_at); $currentDate = Carbon::today(); $ageDifference = $updatedDate->diffInDays($currentDate); if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'fresh', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $fvalue->spare_code, 'in_qty' => $fvalue->available_qty, 'available_qty' => $fvalue->available_qty, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $fvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'fresh', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $fvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $fvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_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; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $key => $rvalue) { $total_adjust = $rvalue->available_qty; $updatedDate = Carbon::parse($rvalue->created_at); $currentDate = Carbon::today(); $ageDifference = $updatedDate->diffInDays($currentDate); if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'repaired', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rvalue->available_qty, 'available_qty' => $rvalue->available_qty, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'repaired', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $rvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_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(); $total_adjust = 0; $rp_required = $value['fqty']; foreach ($warehouse_inventory as $key => $flvalue) { $total_adjust = $flvalue->available_qty; $updatedDate = Carbon::parse($flvalue->created_at); $currentDate = Carbon::today(); $ageDifference = $updatedDate->diffInDays($currentDate); if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'faulty', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $flvalue->spare_code, 'in_qty' => $flvalue->available_qty, 'available_qty' => $flvalue->available_qty, 'rate' => $flvalue->rate, 'lot_no' => $flvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $flvalue->available_qty; $warehouse_inventory_main->save(); } elseif ($total_adjust > $rp_required || $total_adjust == $rp_required) { DB::table('warehouse_inventory')->insertGetId([ 'warehouse' => 'Scrap Zone', 'item_type' => 'scrap', 'scrap_bin' => 'faulty', 'entry_type' => 'mainstock_to_scrapzone', 'spare_code' => $flvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $flvalue->rate, 'lot_no' => $flvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::where('id', $flvalue->id)->first(); $warehouse_inventory_main->available_qty = $warehouse_inventory_main->available_qty - $rp_required; $warehouse_inventory_main->save(); } $rp_required = $rp_required - $total_adjust; if ($rp_required == 0 || $rp_required < 0) { break 1; } } } } DB::commit(); return json_encode(['success'=>true, 'msg'=>'Spare Successfully moved from '.$warehouse.' to '.'Scrap Zone Successfully !!'],200); } else { return response()->json(['success' => 'false', 'message' => 'Stock Not Available in store!', 'error_spare' => $sp], 200); } } else { return response()->json(['success' => 'false', 'message' => 'Stock Not Available in store!', 'error_spare' => $sp], 200); } } catch (\Exception $e) { DB::rollBack(); return response()->json(['success' => 'false', 'message' => 'Something went wrong! Please try again later.'], 500); } } public function move_from_scrap_to_circle_stock(){ $this->get_common(); $loginId = Auth::user()->loginId; $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; $this->data = array_merge($this->data,['warehouses'=>$warehouses,'current_warehouse'=>$current_warehouse]); return view('circle-store.move-from-scrap-to-circle-stock',$this->data); } public function scrap_move_to_circle_stock_now(Request $request) { DB::beginTransaction(); // Start the transaction try { $user_id = Auth::user()->id; $warehouse = $request->warehouse; $items = $request->items; $is_valid = true; $sp = ""; // Validation checks foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->first(); $wi_fresh = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('scrap_bin', 'fresh')->sum('available_qty'); $wi_repaired = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('scrap_bin', 'repaired')->sum('available_qty'); $wi_faulty = DB::table('warehouse_inventory')->where('spare_code', $val['code'])->where('warehouse', $warehouse)->where('scrap_bin', 'faulty')->sum('available_qty'); if ($ms != null) { if ($ms->fresh_qty != $wi_fresh) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Fresh'; } if ($ms->repaired_qty != $wi_repaired) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Repaired'; } if ($ms->faulty_qty != $wi_faulty) { $is_valid = false; $sp = $sp . ' ' . $val['code'] . ' Faulty'; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; } } if ($is_valid) { foreach ($items as $val) { $ms = StockInCircleStore::where('spare_code', $val['code'])->where('warehouse', $warehouse)->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; } if ($ms->faulty_qty < $val['fqty'] && $val['fqty'] != 0) { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } else { $is_valid = false; $sp = $val['code'] . ' Faulty'; break; } } if ($is_valid) { foreach ($items as $value) { $stock_in_store = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', $warehouse)->first(); if ($stock_in_store != null) { $stock_in_store->fresh_qty -= $value['qty']; $stock_in_store->repaired_qty -= $value['rqty']; $stock_in_store->faulty_qty -= $value['fqty']; $stock_in_store->save(); $mainZone = StockInCircleStore::where('spare_code', $value['code'])->where('warehouse', 'SERPNT')->first(); if (!is_null($mainZone)) { $mainZone->fresh_qty += $value['qty']; $mainZone->repaired_qty += $value['rqty']; $mainZone->faulty_qty += $value['fqty']; $mainZone->save(); } else { $storestock = new StockInCircleStore(); $storestock->warehouse = 'SERPNT'; $storestock->user_id = $value['user_id']; $storestock->spare_code = $value['code']; $storestock->fresh_qty = $value['qty']; $storestock->repaired_qty = $value['rqty']; $storestock->faulty_qty = $value['fqty']; $storestock->save(); } $history = new HistoryOfStockInCircleStore(); $history->spare_code = $value['code']; $history->fresh_qty = $value['qty']; $history->repaired_qty = $value['rqty']; $history->faulty_qty = $value['fqty']; $history->receiving_type = 'scrapzone_to_mainstock'; $history->receiving_date = now(); $history->engineer_id = ''; $history->from_warehouse = $warehouse; $history->added_by = $user_id; $history->save(); } $spare_code = $value['code']; if ($value['qty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('scrap_bin', 'fresh')->get(); $total_adjust = 0; $rp_required = $value['qty']; foreach ($warehouse_inventory as $fvalue) { $total_adjust = $fvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'fresh', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $fvalue->spare_code, 'in_qty' => $fvalue->available_qty, 'available_qty' => $fvalue->available_qty, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($fvalue->id); $warehouse_inventory_main->available_qty -= $fvalue->available_qty; $warehouse_inventory_main->save(); } else { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'fresh', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $fvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $fvalue->rate, 'lot_no' => $fvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($fvalue->id); $warehouse_inventory_main->available_qty -= $rp_required; $warehouse_inventory_main->save(); break; } $rp_required -= $total_adjust; if ($rp_required <= 0) { break; } } } if ($value['rqty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('scrap_bin', 'repaired')->get(); $total_adjust = 0; $rp_required = $value['rqty']; foreach ($warehouse_inventory as $rvalue) { $total_adjust = $rvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'repaired', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rvalue->available_qty, 'available_qty' => $rvalue->available_qty, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($rvalue->id); $warehouse_inventory_main->available_qty -= $rvalue->available_qty; $warehouse_inventory_main->save(); } else { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'repaired', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $rvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $rvalue->rate, 'lot_no' => $rvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($rvalue->id); $warehouse_inventory_main->available_qty -= $rp_required; $warehouse_inventory_main->save(); break; } $rp_required -= $total_adjust; if ($rp_required <= 0) { break; } } } if ($value['fqty'] != 0) { $warehouse_inventory = DB::table('warehouse_inventory')->where('spare_code', $spare_code)->where('warehouse', $warehouse)->where('available_qty', '>', 0)->where('scrap_bin', 'faulty')->get(); $total_adjust = 0; $rp_required = $value['fqty']; foreach ($warehouse_inventory as $flvalue) { $total_adjust = $flvalue->available_qty; if ($total_adjust < $rp_required && $rp_required != 0) { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'faulty', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $flvalue->spare_code, 'in_qty' => $flvalue->available_qty, 'available_qty' => $flvalue->available_qty, 'rate' => $flvalue->rate, 'lot_no' => $flvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($flvalue->id); $warehouse_inventory_main->available_qty -= $flvalue->available_qty; $warehouse_inventory_main->save(); } else { DB::table('warehouse_inventory')->insert([ 'warehouse' => 'SERPNT', 'item_type' => 'faulty', 'entry_type' => 'scrapzone_to_mainstock', 'spare_code' => $flvalue->spare_code, 'in_qty' => $rp_required, 'available_qty' => $rp_required, 'rate' => $flvalue->rate, 'lot_no' => $flvalue->lot_no ]); $warehouse_inventory_main = \App\WarehouseInventory::find($flvalue->id); $warehouse_inventory_main->available_qty -= $rp_required; $warehouse_inventory_main->save(); break; } $rp_required -= $total_adjust; if ($rp_required <= 0) { break; } } } } DB::commit(); // Commit the transaction return json_encode(['success' => true, 'msg' => 'Scrap Spare Moved To Circle Stock Successfully !!']); } else { DB::rollBack(); // Rollback the transaction return json_encode(['success' => false, 'msg' => $sp . ' Entered Quantity not available at Circle Store.']); } } else { DB::rollBack(); // Rollback the transaction return json_encode(['success' => false, 'msg' => $sp . ' Qty mismatch in Scrap Zone, please contact admin.']); } } catch (\Exception $e) { DB::rollBack(); // Rollback the transaction in case of exception return json_encode(['success' => false, 'msg' => 'An error occurred: ' . $e->getMessage()]); } } }