diff --git a/app/Services/Admin/Manage/PurchaseService.php b/app/Services/Admin/Manage/PurchaseService.php index c5bebe2..63a2c7b 100644 --- a/app/Services/Admin/Manage/PurchaseService.php +++ b/app/Services/Admin/Manage/PurchaseService.php @@ -27,6 +27,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = { $itemCountQuery = '(SELECT COUNT(*) FROM purchase_items WHERE purchase_items.purchase_id = purchases.id AND purchase_items.deleted_at IS NULL)'; $totalQtyQuery = '(SELECT IFNULL(SUM(quantity), 0) FROM purchase_items WHERE purchase_items.purchase_id = purchases.id AND purchase_items.deleted_at IS NULL)'; + $materialsCountQuery = '(SELECT COUNT(DISTINCT raw_materials.id) FROM purchase_items JOIN raw_material_prices ON raw_material_prices.id = purchase_items.raw_material_price_id JOIN raw_materials ON raw_materials.id = raw_material_prices.raw_material_id WHERE purchase_items.purchase_id = purchases.id AND purchase_items.deleted_at IS NULL)'; $materialNameQuery = '(SELECT raw_materials.name FROM purchase_items JOIN raw_material_prices ON raw_material_prices.id = purchase_items.raw_material_price_id JOIN raw_materials ON raw_materials.id = raw_material_prices.raw_material_id WHERE purchase_items.purchase_id = purchases.id AND purchase_items.deleted_at IS NULL LIMIT 1)'; $unitQuery = '(SELECT raw_materials.unit FROM purchase_items JOIN raw_material_prices ON raw_material_prices.id = purchase_items.raw_material_price_id JOIN raw_materials ON raw_materials.id = raw_material_prices.raw_material_id WHERE purchase_items.purchase_id = purchases.id AND purchase_items.deleted_at IS NULL LIMIT 1)'; @@ -39,6 +40,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort = ]) ->selectRaw("{$itemCountQuery} as variants_count") ->selectRaw("{$totalQtyQuery} as total_qty") + ->selectRaw("{$materialsCountQuery} as materials_count") ->selectRaw("{$materialNameQuery} as material_name") ->selectRaw("{$unitQuery} as unit") ->when($highlight, fn ($q) => $q->where('id', $highlight)) diff --git a/resources/js/pages/admin/manage/purchase/columns.tsx b/resources/js/pages/admin/manage/purchase/columns.tsx index b8d3c15..2cac03e 100644 --- a/resources/js/pages/admin/manage/purchase/columns.tsx +++ b/resources/js/pages/admin/manage/purchase/columns.tsx @@ -20,6 +20,7 @@ export type Purchase = { photo_conversion_urls: string[]; created_at: string; variants_count: number; + materials_count: number; total_qty: number; material_name: string | null; unit: string | null; diff --git a/resources/js/pages/admin/manage/purchase/purchase-card.tsx b/resources/js/pages/admin/manage/purchase/purchase-card.tsx index 6193b4b..b33a6bb 100644 --- a/resources/js/pages/admin/manage/purchase/purchase-card.tsx +++ b/resources/js/pages/admin/manage/purchase/purchase-card.tsx @@ -28,6 +28,7 @@ export function PurchaseCardRow({ const { can } = useCan(); const variantCount = purchase.variants_count ?? 0; const totalQty = purchase.total_qty ?? 0; + const materialsCount = purchase.materials_count ?? 0; const rawMaterialName = purchase.material_name ?? '-'; const unit = purchase.unit ?? ''; @@ -58,7 +59,11 @@ export function PurchaseCardRow({