From 3bb6baffa6c9abc7a2294353560cac3b9df63c6f Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 21 Jun 2026 12:15:18 +0700 Subject: [PATCH] feat: enhance raw material stock display by adding breakdown by unit in DashboardController and updating Dashboard.vue for improved inventory insights --- .../Controllers/Admin/DashboardController.php | 11 ++++++ resources/js/pages/admin/Dashboard.vue | 34 ++++++++++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Admin/DashboardController.php b/app/Http/Controllers/Admin/DashboardController.php index e022e7d..28e5649 100644 --- a/app/Http/Controllers/Admin/DashboardController.php +++ b/app/Http/Controllers/Admin/DashboardController.php @@ -69,9 +69,20 @@ private function getRawMaterialStock(): array ->selectRaw('SUM(stock) as total_stock, SUM(stock * price) as total_value') ->first(); + $byUnit = RawMaterialPrice::query() + ->join('raw_materials', 'raw_material_prices.raw_material_id', '=', 'raw_materials.id') + ->selectRaw('raw_materials.unit, SUM(raw_material_prices.stock) as total_stock') + ->groupBy('raw_materials.unit') + ->get() + ->mapWithKeys(fn ($item) => [ + $item->unit => (float) $item->total_stock, + ]) + ->toArray(); + return [ 'total_stock' => (float) ($data->total_stock ?? 0), 'total_value' => (int) ($data->total_value ?? 0), + 'by_unit' => $byUnit, ]; } diff --git a/resources/js/pages/admin/Dashboard.vue b/resources/js/pages/admin/Dashboard.vue index c32be29..159f790 100644 --- a/resources/js/pages/admin/Dashboard.vue +++ b/resources/js/pages/admin/Dashboard.vue @@ -30,6 +30,7 @@ interface DashboardProps { rawMaterialStock: { total_stock: number; total_value: number; + by_unit: Record; }; productStock: { total_stock: number; @@ -390,12 +391,35 @@ const totalCashBalance = computed(() => { -
- {{ rawMaterialStock.total_stock.toLocaleString('id-ID') }} +
+
+

Total Stok

+

{{ rawMaterialStock.total_stock.toLocaleString('id-ID') }}

+

+ {{ formatRupiah(rawMaterialStock.total_value) }} +

+
+
+
+ + Yard + +

{{ (rawMaterialStock.by_unit?.yard ?? 0).toLocaleString('id-ID') }}

+
+
+ + Meter + +

{{ (rawMaterialStock.by_unit?.meter ?? 0).toLocaleString('id-ID') }}

+
+
+ + Kg + +

{{ (rawMaterialStock.by_unit?.kilogram ?? 0).toLocaleString('id-ID') }}

+
+
-

- Total nilai: {{ formatRupiah(rawMaterialStock.total_value) }} -