From 4135dcb4c359225d0940572e18b2876e0338534e Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 29 Jun 2026 09:00:42 +0700 Subject: [PATCH] refactor: update raw material loading to include 'unit_abbreviation' for improved material detail consistency across cutting services --- app/Services/Manage/CuttingService.php | 3 +++ resources/js/pages/admin/manage/cuttings/Edit.vue | 13 ++++++------- resources/js/types/cutting.ts | 6 ++++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/Services/Manage/CuttingService.php b/app/Services/Manage/CuttingService.php index 8f0170c..9616575 100644 --- a/app/Services/Manage/CuttingService.php +++ b/app/Services/Manage/CuttingService.php @@ -812,11 +812,14 @@ private function breakMaterialCircularReference(CuttingMaterial $material): void $rawMaterial = $price->rawMaterial; $material->setAttribute('variant', $price->variant); + $material->setAttribute('stock_input', $price->stock_input); + $material->setAttribute('images', $price->getAttribute('images') ?? []); if ($rawMaterial) { $unitAbbreviation = $rawMaterial->unit->abbreviation(); $price->setAttribute('unit_abbreviation', $unitAbbreviation); $material->setAttribute('unit_abbreviation', $unitAbbreviation); + $material->setAttribute('unit', $rawMaterial->unit->value); $material->setAttribute('raw_material_id', $rawMaterial->id); $material->setAttribute('raw_material_name', $rawMaterial->name); $material->setAttribute('raw_material_unit_label', $rawMaterial->unit->label()); diff --git a/resources/js/pages/admin/manage/cuttings/Edit.vue b/resources/js/pages/admin/manage/cuttings/Edit.vue index 3801ee5..d8545c5 100644 --- a/resources/js/pages/admin/manage/cuttings/Edit.vue +++ b/resources/js/pages/admin/manage/cuttings/Edit.vue @@ -23,14 +23,13 @@ const initialData = computed(() => ({ other_cost: String(props.cutting.other_cost ?? 0), materials: props.cutting.materials.map((item) => ({ raw_material_price_id: item.raw_material_price_id, - raw_material_name: item.raw_material_price?.raw_material?.name ?? '', - variant: item.raw_material_price?.variant ?? '', - unit: item.raw_material_price?.raw_material?.unit ?? 'kilogram', - unit_abbreviation: - item.raw_material_price?.raw_material?.unit_abbreviation ?? '', - stock_input: item.raw_material_price?.stock_input ?? '', + raw_material_name: item.raw_material_name ?? '', + variant: item.variant ?? '', + unit: item.unit ?? 'kilogram', + unit_abbreviation: item.unit_abbreviation ?? '', + stock_input: item.stock_input ?? '', material_usage: item.material_usage_input, - images: item.raw_material_price?.images ?? [], + images: item.images ?? [], })), results: props.cutting.results.map((item) => ({ product_variant_id: item.product_variant_id, diff --git a/resources/js/types/cutting.ts b/resources/js/types/cutting.ts index 50b61c1..8557188 100644 --- a/resources/js/types/cutting.ts +++ b/resources/js/types/cutting.ts @@ -134,6 +134,12 @@ export type CuttingEditItem = { materials: Array<{ raw_material_price_id: number; material_usage_input: string; + variant?: string; + stock_input?: string; + images?: MediaItem[]; + unit?: string; + unit_abbreviation?: string; + raw_material_name?: string; raw_material_price?: { variant: string; stock_input?: string;