middleware('auth'); } /** * Display a listing of the resource. * */ public function index() { $categories = PriceListCategories::get(); $patient_categories = PatientCategory::pluck('name', 'id'); return view('patient_discounts::price_list_category.index', compact('categories', 'patient_categories')); } /** * Show the form for creating a new resource. * */ public function create() { $exiting_price_list = PriceListCategories::all()->pluck('patient_category_id')->toArray(); $patient_categories = PatientCategory::whereNotIn('id',$exiting_price_list)->pluck("name", "id")->toArray(); $patient_categories = ['' => '- select -'] + $patient_categories; return view('patient_discounts::price_list_category.create', compact('patient_categories')); } /** * Store a newly created resource in storage. * */ public function store(Request $request) { request()->validate([ 'patient_category_id' => 'required' ]); //validation passed $category = new PriceListCategories; $category->patient_category_id = $request->patient_category_id; $category->pay_for_invoice = $request->pay_for_invoice; $category->created_by = Auth::user()->id; try { $category->save(); flash(" price list category has been saved")->success(); /** create entry in the items table **/ // drugs $drugs = DB::table('drugs')->select('id')->get(); foreach ($drugs as $record){ $drug = Drug::withTrashed()->find($record->id); // get current values $price_list_category = is_null($drug->price_list_category) ? [] : explode(',', $drug->price_list_category); $price_list_price = is_null($drug->price_list_price) ? [] : explode(',', $drug->price_list_price); // add new values $price_list_category[] = $category->id; $price_list_price[] = $drug->non_insured_price; $drug->price_list_category = implode(',', $price_list_category); $drug->price_list_price = implode(',', $price_list_price); $drug->save(); } // investigations $investigations = DB::table('investigations')->select('id')->get(); foreach ($investigations as $record){ $investigation = Investigation::withTrashed()->find($record->id); // get current values $price_list_category = is_null($investigation->price_list_category) ? [] : explode(',', $investigation->price_list_category); $price_list_price = is_null($investigation->price_list_price) ? [] : explode(',', $investigation->price_list_price); // add new values $price_list_category[] = $category->id; $price_list_price[] = $investigation->non_insured_price; $investigation->price_list_category = implode(',', $price_list_category); $investigation->price_list_price = implode(',', $price_list_price); $investigation->save(); } // procedures $procedures = DB::table('procedures')->select('id')->get(); foreach ($procedures as $record){ $procedure = Procedure::withTrashed()->find($record->id); // get current values $price_list_category = is_null($procedure->price_list_category) ? [] : explode(',', $procedure->price_list_category); $price_list_price = is_null($procedure->price_list_price) ? [] : explode(',', $procedure->price_list_price); // add new values $price_list_category[] = $category->id; $price_list_price[] = $procedure->non_insured_price; $procedure->price_list_category = implode(',', $price_list_category); $procedure->price_list_price = implode(',', $price_list_price); $procedure->save(); } // services $services = DB::table('services')->select('id')->get(); foreach ($services as $record){ $service = Services::withTrashed()->find($record->id); // get current values $price_list_category = is_null($service->price_list_category) ? [] : explode(',', $service->price_list_category); $price_list_price = is_null($service->price_list_price) ? [] : explode(',', $service->price_list_price); // add new values $price_list_category[] = $category->id; $price_list_price[] = $service->non_insured_price; $service->price_list_category = implode(',', $price_list_category); $service->price_list_price = implode(',', $price_list_price); $service->save(); } // sundries $sundries = DB::table('sundries')->select('id')->get(); foreach ($sundries as $record){ $sundry = Sundry::withTrashed()->find($record->id); // get current values $price_list_category = is_null($sundry->price_list_category) ? [] : explode(',', $sundry->price_list_category); $price_list_price = is_null($sundry->price_list_price) ? [] : explode(',', $sundry->price_list_price); // add new values $price_list_category[] = $category->id; $price_list_price[] = $sundry->non_insured_price; $sundry->price_list_category = implode(',', $price_list_category); $sundry->price_list_price = implode(',', $price_list_price); $sundry->save(); } // eye glasses $eye_glasses = EyeGlasses::withTrashed()->select('id')->get(); foreach ($eye_glasses as $record){ $eye_glass = EyeGlasses::withTrashed()->find($record->id); // get current values $price_list_category = is_null($eye_glass->price_list_category) ? [] : explode(',', $eye_glass->price_list_category); $price_list_price = is_null($eye_glass->price_list_price) ? [] : explode(',', $eye_glass->price_list_price); // add new values array_push($price_list_category, $category->id); array_push($price_list_price, $eye_glass->non_insured_price); $eye_glass->price_list_category = implode(',', $price_list_category); $eye_glass->price_list_price = implode(',', $price_list_price); $eye_glass->save(); } return redirect("/price_list_category/"); } catch (QueryException $e) { flash("An error occurred. Please try again")->error(); return back()->withInput(); } } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $category = PriceListCategories::find($id); if ($category->delete()) { flash("Price list category has been deleted.")->success(); return redirect('/price_list_category/'); } } /** * Display a listing of the inactive resource(s). * * @return \Illuminate\Http\Response */ public function inactive() { $categories = PriceListCategories::onlyTrashed()->get(); $patient_categories = PatientCategory::pluck('name', 'id'); if (count($categories) < 1) { flash()->error("There is no inactive price list category"); } return view('patient_discounts::price_list_category.inactive', compact('categories', 'patient_categories')); } /** * Activate the specified resource in storage. * * @param int $id * @return \Illuminate\Http\Response */ public function activate($id) { $category = PriceListCategories::withTrashed()->find($id); if($category->restore()){ flash("Price list category has been activated.")->success(); return redirect('/price_list_category/inactive'); } } public function edit_pricing($id){ return view('patient_discounts::price_list_category.edit_pricing', compact('id')); } public function edit_pricing_sundries(Request $request,$id){ $filtered_items=[]; $item_name = 'sundries'; $title='Sundry Name'; $route="price_list_category.edit_pricing_sundries"; $route_markups='price_list_category.apply_markup_to_sundries'; $route_submit ='price_list_category.save_edit_pricing_sundries'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = Sundry::where('available', 1)->orderby('name', 'asc')->get(); } else{ $filtered_items = Sundry::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = Sundry::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->where('available', 1)->pluck('name','id')->prepend('All Sundries', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); } public function save_edit_pricing_sundries(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $sundry = Sundry::find($id_array[$i]); // get current values $price_list_category = is_null($sundry->price_list_category) ? [] : explode(',', $sundry->price_list_category); $price_list_price = is_null($sundry->price_list_price) ? [] : explode(',', $sundry->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = $price_list_price_array[$i]; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $sundry->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $sundry->price_list_price = implode(',', $price_list_price); $sundry->save(); } flash("Sundry price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/edit_pricing_sundries/' . $price_list_category_id); } public function edit_pricing_procedures(Request $request,$id){ $filtered_items=[]; $item_name = 'procedures'; $title='Procedure Name'; $route="price_list_category.edit_pricing_procedures"; $route_markups='price_list_category.apply_markup_to_procedures'; $route_submit ='price_list_category.save_edit_pricing_procedures'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = Procedure::where('available', 1)->orderby('name', 'asc')->get(); } else{ $filtered_items = Procedure::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = Procedure::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->where('available', 1)->pluck('name','id')->prepend('All procedures', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); } public function save_edit_pricing_procedures(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $procedure = Procedure::find($id_array[$i]); // get current values $price_list_category = is_null($procedure->price_list_category) ? [] : explode(',', $procedure->price_list_category); $price_list_price = is_null($procedure->price_list_price) ? [] : explode(',', $procedure->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = $price_list_price_array[$i]; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $procedure->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $procedure->price_list_price = implode(',', $price_list_price); $procedure->save(); } flash("Procedures price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/edit_pricing_procedures/' . $price_list_category_id); } public function edit_pricing_investigations(Request $request,$id){ $filtered_items=[]; $item_name = 'procedures'; $title='Invesigation Name'; $route="price_list_category.edit_pricing_invesigations"; $route_markups='price_list_category.apply_markup_to_investigations'; $route_submit ='price_list_category.save_edit_pricing_investigations'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = Investigation::where('available', 1)->orderby('name', 'asc')->get(); } else{ $filtered_items = Investigation::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = Investigation::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->where('available', 1)->pluck('name','id')->prepend('All invesigation', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); } public function save_edit_pricing_investigations(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $investigation = Investigation::find($id_array[$i]); // get current values $price_list_category = is_null($investigation->price_list_category) ? [] : explode(',', $investigation->price_list_category); $price_list_price = is_null($investigation->price_list_price) ? [] : explode(',', $investigation->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = $price_list_price_array[$i]; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $investigation->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $investigation->price_list_price = implode(',', $price_list_price); $investigation->save(); } flash("Investigation price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/edit_pricing_investigations/' . $price_list_category_id); } public function edit_pricing_drugs(Request $request, $id){ $filtered_items=[]; $item_name = 'drugs'; $title='Drug Name'; $route="price_list_category.edit_pricing_drugs"; $route_markups='price_list_category.apply_markup_to_drugs'; $route_submit ='price_list_category.save_edit_pricing_drugs'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = Drug::where('available', 1)->orderby('name', 'asc')->get(); } else{ $filtered_items = Drug::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = Drug::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->where('available', 1)->pluck('name','id')->prepend('All drugs', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); } public function save_edit_pricing_drugs(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $drug = Drug::find($id_array[$i]); // get current values $price_list_category = is_null($drug->price_list_category) ? [] : explode(',', $drug->price_list_category); $price_list_price = is_null($drug->price_list_price) ? [] : explode(',', $drug->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = $price_list_price_array[$i]; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $drug->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $drug->price_list_price = implode(',', $price_list_price); $drug->save(); } flash("Drug price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/edit_pricing_drugs/' . $price_list_category_id); } public function edit_pricing_services(Request $request, $id){ $filtered_items=[]; $item_name = 'procedures'; $title='Service Name'; $route="price_list_category.edit_pricing_services"; $route_markups='price_list_category.apply_markup_to_services'; $route_submit ='price_list_category.save_edit_pricing_services'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = Services::where('available', 1)->orderby('name', 'asc')->get(); } else{ $filtered_items = Services::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = Services::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->where('available', 1)->pluck('name','id')->prepend('All services', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); } public function save_edit_pricing_services(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $service = Services::find($id_array[$i]); // get current values $price_list_category = is_null($service->price_list_category) ? [] : explode(',', $service->price_list_category); $price_list_price = is_null($service->price_list_price) ? [] : explode(',', $service->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = $price_list_price_array[$i]; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $service->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $service->price_list_price = implode(',', $price_list_price); $service->save(); } flash("Services price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/edit_pricing_services/' . $price_list_category_id); } public function apply_markup_to_drugs(Request $request,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $drugs = json_decode($request->filtered_items); }else{ $drugs = Drug::where('available', 1)->orderby('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_drugs', compact('markup_tags','tags_select', 'drugs', 'id')); } public function save_apply_markup_to_drugs(Request $request){ $markup_tag_id = $request->markup_tag; $checked_drug_array = $request->checked_drug; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_drug_array as $drug_id){ $drug = Drug::find($drug_id); // get current values $price_list_category = is_null($drug->price_list_category) ? [] : explode(',', $drug->price_list_category); $price_list_price = is_null($drug->price_list_price) ? [] : explode(',', $drug->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $drug->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $drug->price_list_price = implode(',', $price_list_price); $drug->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Drugs"; $update_record->item_ids = implode(",", $checked_drug_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Drugs price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function apply_markup_to_investigations(Request $request,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $investigations = json_decode($request->filtered_items); }else{ $investigations = Investigation::where('available', 1)->orderby('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_investigations', compact('markup_tags','tags_select', 'investigations', 'id')); } public function save_apply_markup_to_investigations(Request $request){ $markup_tag_id = $request->markup_tag; $checked_investigation_array = $request->checked_investigation; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_investigation_array as $investigation_id){ $investigation = Investigation::find($investigation_id); // get current values $price_list_category = is_null($investigation->price_list_category) ? [] : explode(',', $investigation->price_list_category); $price_list_price = is_null($investigation->price_list_price) ? [] : explode(',', $investigation->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $investigation->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $investigation->price_list_price = implode(',', $price_list_price); $investigation->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Investigations"; $update_record->item_ids = implode(",", $checked_investigation_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Investigation price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function apply_markup_to_procedures(Request $request ,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $procedures = json_decode($request->filtered_items); }else{ $procedures = Procedure::where('available', 1)->orderBy('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_procedures', compact('markup_tags','tags_select', 'procedures', 'id')); } public function save_apply_markup_to_procedures(Request $request){ $markup_tag_id = $request->markup_tag; $checked_procedure_array = $request->checked_procedure; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_procedure_array as $procedure_id){ $procedure = Procedure::find($procedure_id); // get current values $price_list_category = is_null($procedure->price_list_category) ? [] : explode(',', $procedure->price_list_category); $price_list_price = is_null($procedure->price_list_price) ? [] : explode(',', $procedure->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $procedure->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $procedure->price_list_price = implode(',', $price_list_price); $procedure->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Procedures"; $update_record->item_ids = implode(",", $checked_procedure_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Procedures price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function apply_markup_to_services(Request $request,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $services = json_decode($request->filtered_items); }else{ $services = Services::where('available', 1)->orderby('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_services', compact('markup_tags','tags_select', 'services', 'id')); } public function save_apply_markup_to_services(Request $request){ $markup_tag_id = $request->markup_tag; $checked_service_array = $request->checked_service; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_service_array as $service_id){ $service = Services::find($service_id); // get current values $price_list_category = is_null($service->price_list_category) ? [] : explode(',', $service->price_list_category); $price_list_price = is_null($service->price_list_price) ? [] : explode(',', $service->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $service->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $service->price_list_price = implode(',', $price_list_price); $service->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Services"; $update_record->item_ids = implode(",", $checked_service_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Services price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function apply_markup_to_sundries(Request $request,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $sundries = json_decode($request->filtered_items); }else{ $sundries = Sundry::where('available', 1)->orderby('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_sundries', compact('markup_tags','tags_select', 'sundries', 'id')); } public function save_apply_markup_to_sundries(Request $request){ $markup_tag_id = $request->markup_tag; $checked_sundry_array = $request->checked_sundry; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_sundry_array as $sundry_id){ $sundry = Sundry::find($sundry_id); // get current values $price_list_category = is_null($sundry->price_list_category) ? [] : explode(',', $sundry->price_list_category); $price_list_price = is_null($sundry->price_list_price) ? [] : explode(',', $sundry->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $sundry->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $sundry->price_list_price = implode(',', $price_list_price); $sundry->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Sundries"; $update_record->item_ids = implode(",", $checked_sundry_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Sundries price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function edit_pricing_eye_glasses(Request $request,$id){ $filtered_items=[]; $item_name = 'opticals'; $title='Name'; $route="price_list_category.edit_pricing_eye_glasses"; $route_markups='price_list_category.apply_markup_to_eye_glasses'; $route_submit ='price_list_category.save_pricing_eye_glasses'; $route_cancel=''; $item_ids_array = $request->search_items_ids; if ($item_ids_array) { $is_all_items = in_array("all_items", $item_ids_array); if ($is_all_items) { $filtered_items = EyeGlasses::orderby('name', 'asc')->get(); } else{ $filtered_items = EyeGlasses::whereIn('id', $item_ids_array)->orderBy('name', 'asc')->get(); } } $items = EyeGlasses::select('id', 'name', 'non_insured_price', 'price_list_category', 'price_list_price')->pluck('name','id')->prepend('All opticals', 'all_items')->toArray(); return view('patient_discounts::price_list_category.edit_pricing_list', compact('items','route_submit','route_markups','route', 'id','item_name','title','filtered_items')); // $eye_glasses = EyeGlasses::select('id', 'name', 'non_insured_price', 'insured_price', 'price_list_category', 'price_list_price')->orderBy('name', 'asc')->get(); // return view('patient_discounts::price_list_category.edit_pricing_eye_glasses', compact('eye_glasses', 'id')); } public function save_pricing_eye_glasses(Request $request){ $price_list_category_id = $request->price_list_category_id; $id_array = $request->id; $price_list_price_array = $request->price_list_price; for ($i = 0; $i < count($id_array); $i++){ $eye_glass = EyeGlasses::find($id_array[$i]); // get current values $price_list_category = is_null($eye_glass->price_list_category) ? [] : explode(',', $eye_glass->price_list_category); $price_list_price = is_null($eye_glass->price_list_price) ? [] : explode(',', $eye_glass->price_list_price); // edit values $key = array_search($price_list_category_id, $price_list_category); if (isset($price_list_price[$key]) && $key !== false){ $price_list_price[$key] = is_numeric($price_list_price_array[$i]) ? $price_list_price_array[$i] : 0; } else { // the item was not found therefore add a new record for it $price_list_category[] = $price_list_category_id; $eye_glass->price_list_category = implode(',', $price_list_category); $price_list_price[] = $price_list_price_array[$i]; } $eye_glass->price_list_price = implode(',', $price_list_price); $eye_glass->save(); } flash("Eye Glasses price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } public function apply_markup_to_eye_glasses(Request $request,$id){ $markup_tags = MarkupTag::orderBy('name', 'asc')->get(); $tags_select = ['' => '- Select Markup -'] + MarkupTag::orderBy('name', 'asc')->pluck('name','id')->toArray(); if(isset($request->filtered_items)){ $eye_glasses = json_decode($request->filtered_items); }else{ $eye_glasses = EyeGlasses::orderby('name', 'asc')->get(); } return view('patient_discounts::price_list_category.apply_markup_to_eye_glasses', compact('markup_tags','tags_select', 'eye_glasses', 'id')); } public function save_apply_markup_to_eye_glasses(Request $request){ $markup_tag_id = $request->markup_tag; $checked_eye_glass_array = $request->checked_eye_glass; $price_list_category_id = $request->price_list_category_id; $item_old_prices = []; $item_new_prices = []; // get markup details $markup_tag = MarkupTag::find($markup_tag_id); $markup_percentage = $markup_tag->percentage; // update the prices for all the selected drugs foreach ($checked_eye_glass_array as $eye_glass_id){ $eye_glass = EyeGlasses::find($eye_glass_id); // get current values $price_list_category = is_null($eye_glass->price_list_category) ? [] : explode(',', $eye_glass->price_list_category); $price_list_price = is_null($eye_glass->price_list_price) ? [] : explode(',', $eye_glass->price_list_price); $key = array_search($price_list_category_id, $price_list_category); $current_price = 0; $new_price = 0; if (isset($price_list_price[$key]) && $key !== false){ // get the current price and update using markup // 9th Jan 2020 Update - use the default price and not the current price of the price list $current_price = $eye_glass->non_insured_price; //$current_price = $price_list_price[$key]; $new_price = (($markup_percentage / 100) * $current_price) + $current_price; $new_price = ($new_price < 0) ? 0 : $new_price; $price_list_price[$key] = $new_price; } $item_old_prices[] = $current_price; $item_new_prices[] = $new_price; $eye_glass->price_list_price = implode(',', $price_list_price); $eye_glass->save(); } // create a record for this updated value $update_record = new PriceListMarkupTagsChanges(); $update_record->price_list_category_id = $price_list_category_id; $update_record->markup_tag_id = $markup_tag_id; $update_record->markup_tag_percentage = $markup_percentage; $update_record->item_type = "Eye Glasses"; $update_record->item_ids = implode(",", $checked_eye_glass_array); $update_record->item_old_prices = implode(",", $item_old_prices); $update_record->item_new_prices = implode(",", $item_new_prices); $update_record->created_by = Auth::user()->id; $update_record->save(); flash("Eye Glass price list for " . get_name(get_name($price_list_category_id, 'id', 'patient_category_id', 'price_list_categories'), 'id', 'name', 'patient_categories') . " has been updated")->success(); return redirect('/price_list_category/'); } }