コード例 #1
0
 public function insert_discard(Request $request)
 {
     $discardMain = new discardMain();
     $discardMain->reverse_grn = $request->input('grncode');
     $discardMain->discard_date = $request->input('ddate');
     $discardMain->remarks = $request->input('remarks');
     $discardMain->save();
     $id = $discardMain->id;
     $items = $request->input('data');
     foreach ($items as $i) {
         $extra = 10;
         $iteration = 0;
         while ($extra != 0) {
             $stocks = stock::where('status', 'ACTIVE')->where('sub_product_id', $i['product_id'])->where('available', '>', '0')->orderBy('expiry_date', 'ASC')->first();
             if ($iteration == 0) {
                 $discardItem = new discardItem();
                 $discardItem->product_id = $i['product_id'];
                 $discardItem->quantity = $i['quantity'];
                 $discardItem->discard_main_id = $id;
                 $discardItem->stock_id = $stocks->id;
                 $discardItem->save();
                 $iteration++;
             }
             $stockUpdate = stock::find($stocks->id);
             if ($stocks->available - $i['quantity'] > 0) {
                 $stockUpdate->available = $stocks->available - $i['quantity'];
                 $extra = 0;
             } else {
                 $i['quantity'] = $i['quantity'] - $stockUpdate->available;
                 $stockUpdate->available = '0';
                 $stockUpdate->status = 'OVER';
             }
             $stockUpdate->save();
         }
     }
 }
コード例 #2
0
 public function insert_reload(Request $request)
 {
     $id = $request->input('load_id');
     $newItems = $request->input('data');
     $updates = $request->input('updates');
     //var_dump($newItems);
     foreach ($newItems 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();
         }
     }
     foreach ($updates as $u) {
         $itemNew = loadItem::find($u['loadItemId']);
         $itemNew->number = $itemNew->number + $u['qty'];
         $itemNew->available_qty = $itemNew->available_qty + $u['qty'];
         $pid = $itemNew->sub_product_id;
         $itemNew->save();
         $extra1 = 1;
         while ($extra1 != 0) {
             $stocksNew = stock::where('status', 'ACTIVE')->where('sub_product_id', $pid)->where('available', '>', '0')->orderBy('expiry_date', 'ASC')->first();
             $stockUpdateNew = stock::find($stocksNew->id);
             if ($stocksNew->available - $u['qty'] > 0) {
                 $stockUpdateNew->available = $stocksNew->available - $u['qty'];
                 $extra1 = 0;
             } else {
                 $u['qty'] = $u['qty'] - $stockUpdateNew->available;
                 $stockUpdateNew->available = '0';
                 $stockUpdateNew->status = 'OVER';
             }
             $stockUpdateNew->save();
         }
     }
 }