示例#1
0
 /**
  * get movedItems.
  *@param $recipient
  * @param $level
  * @return Response
  */
 public function movedItems1($recipient, $level)
 {
     if ($level == '1') {
         return ItemMovement::where('recipient_id', $recipient)->get();
     } elseif ($level == '2') {
         $orgunit = Recipient::find($recipient);
         $arr = [0, $recipient];
         array_push($arr, $recipient);
         foreach ($orgunit->childrens as $val) {
             array_push($arr, $val->id);
         }
         $dispatch = ItemMovement::whereIn('recipient_id', $arr)->get();
     } elseif ($level == '3') {
         $orgunit = Recipient::find($recipient);
         $arr = [0];
         array_push($arr, $recipient);
         foreach ($orgunit->childrens as $val) {
             array_push($arr, $val->id);
             $orgunit1 = Recipient::find($val->id);
             foreach ($orgunit1->childrens as $val) {
                 array_push($arr, $val->id);
             }
         }
         $dispatch = ItemMovement::whereIn('recipient_id', $arr)->get();
     } else {
         return ItemMovement::where('recipient_id', $recipient)->get();
     }
     return $dispatch;
 }
示例#2
0
 public function move_item(Request $request)
 {
     $storeStock = StoreStock::find($request->input('item_id'));
     $volume = $request->input('doses') * PackagingInformation::find($storeStock->packaging_id)->cm_per_dose * 0.001;
     $recipient = Recipient::find(Auth::user()->recipient_id);
     $storeStock->amount = $request->has('doses') ? $storeStock->amount - $request->input('doses') : $storeStock->amount;
     $storeStock->save();
     if ($storeStock->amount == 0) {
         $storeStock->delete();
     }
     if (count(StoreStock::where('store_id', $request->input('to_store'))->where('vaccine_id', $storeStock->vaccine_id)->where('lot_number', $storeStock->lot_number)->get()) != 0) {
         $storeStock1 = StoreStock::where('store_id', $request->input('to_store'))->where('vaccine_id', $storeStock->vaccine_id)->where('lot_number', $storeStock->lot_number)->first();
         $storeStock1->amount = $request->has('doses') ? $storeStock1->amount + $request->input('doses') : $storeStock1->amount;
         $storeStock1->save();
     } else {
         $storeStock1 = new StoreStock();
         $storeStock1->vaccine_id = $storeStock->vaccine_id;
         $storeStock1->store_id = $request->input('to_store');
         $storeStock1->amount = $request->input('doses');
         $storeStock1->lot_number = $storeStock->lot_number;
         $storeStock1->packaging_id = $storeStock->packaging_id;
         $storeStock1->expiry_date = $storeStock->expiry_date;
         $storeStock1->unit_price = $storeStock->unit_price;
         $storeStock1->source_id = $storeStock->source_id;
         $storeStock1->activity_id = $storeStock->activity_id;
         $storeStock1->save();
     }
     $movement = new ItemMovement();
     $nextNumber = $this->getNextMovementNumber();
     $str = "";
     for ($sj = 6; $sj > strlen($nextNumber); $sj--) {
         $str .= "0";
     }
     $movement->reference = date('Y') . "4" . $str + "" . $nextNumber;
     $movement->from_store = $storeStock->store_id;
     $movement->to_store = $storeStock1->store_id;
     $movement->store_item_id = $storeStock->id;
     $movement->user_id = Auth::user()->id;
     $movement->amount = $request->input('doses');
     $movement->recipient_id = Auth::user()->recipient_id;
     $movement->vaccine_id = $storeStock->vaccine_id;
     $movement->lot_number = $storeStock->lot_number;
     $movement->expiry_date = $storeStock->expiry_date;
     $movement->moved_volume = $volume;
     $movement->year = date('Y');
     $movement->order_no = $nextNumber;
     $movement->save();
     $store = Store::find($storeStock->store_id);
     $store1 = Store::find($storeStock1->store_id);
     $store->used_volume = $store->used_volume - $volume;
     $store->save();
     $store1->used_volume = $store1->used_volume + $volume;
     $store1->save();
     Log::create(array("user_id" => Auth::user()->id, "action" => "Move " . $request->input('doses') . " Doses of " . Vaccine::find($storeStock->vaccine_id)->name . " from " . $store->name . " To " . $store1->name));
     return $movement->reference;
 }