/** * 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; }
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; }