public function insert_load(Request $request) { //var_dump($request->input('data')); $loadMain = new loadMain(); $loadMain->vehicle_id = $request->input('vid'); $loadMain->route_id = $request->input('route'); $loadMain->load_date = date('Y-m-d'); $loadMain->save(); $vehicle = vehicle::find($request->input('vid')); $vehicle->status = 'LOADED'; $vehicle->save(); $id = $loadMain->id; $data = $request->input('data'); foreach ($data as $d) { $extra = 10; $iteration = 0; while ($extra != 0) { $stocks = stock::where('status', 'ACTIVE')->where('sub_product_id', $d['product_id'])->where('available', '>', '0')->orderBy('expiry_date', 'ASC')->first(); if ($iteration == 0) { $item = new loadItem(); $item->load_main_id = $id; $item->sub_product_id = $d['product_id']; $item->number = $d['quantity']; $item->available_qty = $d['quantity']; $item->stock_id = $stocks->id; $item->save(); $iteration++; } $stockUpdate = stock::find($stocks->id); if ($stocks->available - $d['quantity'] > 0) { $stockUpdate->available = $stocks->available - $d['quantity']; $extra = 0; } else { $d['quantity'] = $d['quantity'] - $stockUpdate->available; $stockUpdate->available = '0'; $stockUpdate->status = 'OVER'; } $stockUpdate->save(); } } }