Untitled
unknown
plain_text
5 months ago
6.2 kB
2
Indexable
public function dailyStockList(Request $request, $activeTab) { date_default_timezone_set('Africa/Lusaka'); $organization_id = auth()->user()->organization_id; $RoutePlan = RoutePlan::query() ->with(['vehicle', 'product']) ->where("organization_id", $organization_id) ->orderBy('id', 'desc'); if (!empty($request['cluster'])) { $RoutePlan->whereIn("cluster_id", $request['cluster']); } $product_types = Auth::user()->roles->whereNotNull("product_type")->pluck("product_type")->toArray(); if (!empty($request['product'])) { $RoutePlan->where("product_id", $request['product']); } else if (isset($activeTab)) { $product_types = ProductCategory::where('name', $activeTab)->pluck('id')->flatten()->unique()->toArray(); } if (!empty($product_types)) { $prodCat = ProductCategory::whereIn('parent_id', $product_types)->pluck('id')->flatten()->unique()->toArray(); if (count($prodCat) == 0) { $productIds = Product::whereIn('id', $product_types)->pluck('id')->toArray(); } else { $productIds = Product::whereIn('product_category_id', $prodCat)->pluck('id')->toArray(); } if (!empty($productIds)) { $RoutePlan->whereIn("product_id", $productIds); } } $date = !empty($request['date']) ? $request['date'] : date("Y-m-d"); $RoutePlan->whereDate("plan_date", $date); $todate = !empty($request['date']) ? $request['date'] : date("Y-m-d"); $RoutePlan->whereDate("plan_date", $todate); $route_plans = $RoutePlan->get()->groupBy('vehicle_id'); $records = []; $default = "-"; foreach ($route_plans as $vehicle_id => $plans) { $plan = $plans->first(); // Assuming the first plan for each vehicle_id is the one you want to use $product = $plan->product->name; $product_desc = $plan->product->description; $RoutePlanDetails = RoutePlanDetails::with("subject") ->whereHas('routePlan', function ($query) use ($vehicle_id, $date) { $query->where("vehicle_id", $vehicle_id); $query->where("plan_date", $date); $query->where("plan_date", $todate); })->orderBy('id', 'desc')->get(); // dd($RoutePlanDetails); // Refill Quantity // $refill_detail = $RoutePlanDetails->where('routine_type', 'refill')->map(function ($item) { // return ($item->delivered_quantity === null || $item->delivered_quantity == 0.00) ? $item->quantity : $item->delivered_quantity; // })->sum(); //85-3=> 82 , 82-3 =>79 $refill_detail = $RoutePlanDetails->where('routine_type', 'refill')->map(function ($item) { return ($item->delivered_quantity === null || $item->delivered_quantity == 0.00) ? $item->quantity : $item->delivered_quantity; })->values()->all(); // dd($refill_detail); $refill_sum = !empty($refill_detail) ? array_sum($refill_detail) : 0; // Opening Stock $opening_stock = $plan->inventory_at_start + $refill_sum; // Closing Stock $last_detail = $RoutePlanDetails->where('routine_type', 'delivery')->first(); // $last_detail = $RoutePlanDetails->where('routinxe_type', 'delivery')->all(); $orderQuantity = !empty($last_detail->delivered_quantity) && $last_detail->delivered_quantity > 0 ? $last_detail->delivered_quantity : (!empty($last_detail->quantity) ? $last_detail->quantity : 0); // Sold Quanity $sold = $RoutePlanDetails->where("routine_type", "delivery")->sum("delivered_quantity"); $closing_stock = $opening_stock - $sold; // $subject = $RoutePlanDetails->where("routine_type", "refill")->pluck("subject")->first(); $subject = $RoutePlanDetails->where('routine_type', 'refill')->pluck("subject")->map(function ($item) { return $item->name; })->values()->all(); $subject_name = !empty($subject['name']) ? $subject['name'] : ""; $VehicleReadings = VehicleReadings::with('reference') ->where("vehicle_id", $vehicle_id) ->whereDate("created_at", $date) ->where("reference_type", "route-plan-details") ->get(); $du1_start_total = $VehicleReadings->where("reference.subject_type", "order")->min('totalizer_du1'); $du1_end_total = $VehicleReadings->where("reference.subject_type", "order")->max('totalizer_du1'); $du1_total = $du1_end_total - $du1_start_total; $totalizer_match = $du1_total; $start_odometer = $VehicleReadings->where("reference.subject_type", "start")->sum("odometer"); $end_odometer = $VehicleReadings->where("reference.subject_type", "end")->sum("odometer"); $km_travl = $end_odometer - $start_odometer; $row = [ $plan->vehicle->vehicle_no, $product, $product_desc, !empty($subject) ? implode(', ', $subject) : "-", $opening_stock, $closing_stock, $sold, // $refill_detail, !empty($refill_detail) ? implode(', ', $refill_detail) : 0, $totalizer_match, $du1_start_total, $du1_end_total, $du1_total, $km_travl > 0 ? $km_travl : 0, $start_odometer, $end_odometer, ]; $records[] = array_combine($this->dailyStockTableColumns, array_pad($row, count($this->dailyStockTableColumns), $default)); } return [ "data" => $records, "filter" => $request->all() ]; }
Editor is loading...
Leave a Comment