Example #1
0
 /**
  * get dispatchedItems.
  *@param $recipient
  * @param $level
  * @return Response
  */
 public function canceledDisItems1($recipient, $level)
 {
     if ($level == '1') {
         $dispatch = RecipientPackageItem::where('recipient_id', $recipient)->where('status', 'canceled')->get()->load('package');
     } 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 = RecipientPackageItem::where('status', 'canceled')->whereIn('recipient_id', $arr)->get()->load('package');
     } 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 = RecipientPackageItem::where('status', 'canceled')->whereIn('recipient_id', $arr)->get()->load('package');
     } else {
         $dispatch = RecipientPackageItem::where('recipient_id', $recipient)->where('status', 'canceled')->get()->load('package');
     }
     return $dispatch;
 }
Example #2
0
 public function dispatch_adjust(Request $request)
 {
     //canceling the previous dispatch
     $dispatch = RecipientPackage::find($request->input('id'));
     $recipient = Recipient::find(Auth::user()->recipient_id);
     foreach ($dispatch->items as $items) {
         $volume = $items->amount * PackagingInformation::find($items->packaging_id)->cm_per_dose * 0.001;
         $stock = Stock::where('recipient_id', $recipient->id)->where('vaccine_id', $items->vaccine_id)->where('lot_number', $items->batch_number)->first();
         $storeStock = StoreStock::where('store_id', $items->store_id)->where('vaccine_id', $items->vaccine_id)->where('lot_number', $items->batch_number)->first();
         $stock->amount = $stock->amount + $items->amount;
         $storeStock->amount = $storeStock->amount + $items->amount;
         $stock->save();
         $storeStock->save();
         //reduce volume in store
         $store = Store::find($items->store_id);
         $store->used_volume = $store->used_volume + $volume;
         $store->save();
         //deleting all line item status
         $items->delete();
     }
     //creating the new dispatch
     $recipient = Recipient::find(Auth::user()->recipient_id);
     $dispatch->recipient_id = $request->input('recipients');
     $dispatch->date_sent = $request->input('dispatch_date');
     $dispatch->transport_mode_id = $request->input('transport_mode');
     $dispatch->sending_user = Auth::user()->id;
     $dispatch->receiving_status = 'pending';
     $dispatch->save();
     foreach ($request->input('items') as $item) {
         $dispatchItem = new RecipientPackageItem();
         $dispatchItem->vaccine_id = $item['item_id'];
         $dispatchItem->recipient_id = $recipient->id;
         $dispatchItem->receiver_id = $request->input('recipients');
         $dispatchItem->source_id = $item['source_id'];
         $dispatchItem->packaging_id = $item['packaging_id'];
         $dispatchItem->activity = $item['activity_id'];
         $dispatchItem->store_id = $item['store_id'];
         $dispatchItem->package_id = $dispatch->id;
         $dispatchItem->batch_number = $item['lot_number'];
         $dispatchItem->amount = $item['doses'];
         $dispatchItem->date_sent = $request->input('dispatch_date');
         $dispatchItem->unit_price = isset($item['u_price']) ? $item['u_price'] : '';
         $dispatchItem->expiry_date = isset($item['expired_date']) ? $item['expired_date'] : '';
         $dispatchItem->voucher_number = $dispatch->voucher_number;
         $dispatchItem->save();
         $store = Store::find($item['store_id']);
         $store->used_volume = $store->used_volume - $item['total_volume'];
         $store->save();
         //adding the item to stock
         if (count(Stock::where('recipient_id', $recipient->id)->where('vaccine_id', $item['item_id'])->where('lot_number', $item['lot_number'])->get()) != 0) {
             $stock = Stock::where('recipient_id', $recipient->id)->where('vaccine_id', $item['item_id'])->where('lot_number', $item['lot_number'])->first();
             $stock->amount = $stock->amount - $item['doses'];
             $stock->save();
             if ($stock->amount == 0) {
                 $stock->delete();
             }
         } else {
         }
         //adding the item to store
         if (count(StoreStock::where('store_id', $item['store_id'])->where('vaccine_id', $item['item_id'])->where('lot_number', $item['lot_number'])->get()) != 0) {
             $storeStock = StoreStock::where('store_id', $item['store_id'])->where('vaccine_id', $item['item_id'])->where('lot_number', $item['lot_number'])->first();
             $storeStock->amount = $storeStock->amount - $item['doses'];
             $storeStock->save();
             if ($storeStock->amount == 0) {
                 $storeStock->delete();
             }
         } else {
         }
     }
     return $dispatch->voucher_number;
 }