Untitled
unknown
plain_text
a year ago
6.2 kB
6
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