diff --git a/app/Services/Products/ProductComponentResolver.php b/app/Services/Products/ProductComponentResolver.php index e55b0aa..e3a46f6 100644 --- a/app/Services/Products/ProductComponentResolver.php +++ b/app/Services/Products/ProductComponentResolver.php @@ -58,9 +58,17 @@ protected function resolveNodeInfo(string $refType, int $refId): array $p = Product::query() ->where('tenant_id', $this->tenantId) ->find($refId, ['id','code','name','product_type','category_id']); - if (!$p) return ['id'=>$refId, 'code'=>null, 'name'=>null, 'product_type'=>null, 'category_id'=>null]; + if (!$p) { + return [ + 'id' => $refId, + 'code' => null, + 'name' => null, + 'product_type' => null, + 'category_id' => null, + ]; + } return [ - 'id' => $p->id, + 'id' => (int) $p->id, 'code' => $p->code, 'name' => $p->name, 'product_type' => $p->product_type, @@ -68,16 +76,51 @@ protected function resolveNodeInfo(string $refType, int $refId): array ]; } - // MATERIAL 등 다른 타입은 여기서 분기 추가 - // if ($refType === 'MATERIAL') { - // $m = DB::table('materials') - // ->where('tenant_id', $this->tenantId) - // ->where('id', $refId) - // ->first(['id','code','name','unit']); - // return $m ? ['id'=>$m->id,'code'=>$m->code,'name'=>$m->name,'unit'=>$m->unit] : ['id'=>$refId,'code'=>null,'name'=>null]; - // } + // ✅ MATERIAL 분기: materials 테이블 스키마 반영 + if ($refType === 'MATERIAL') { + $m = DB::table('materials') + ->where('tenant_id', $this->tenantId) + ->where('id', $refId) + ->whereNull('deleted_at') // 소프트 삭제 고려 + ->first([ + 'id', + 'material_code', // 코드 + 'item_name', // 표시명(있으면 우선) + 'name', // fallback 표시명 + 'specification', // 규격 + 'unit', + 'category_id', + ]); - return ['id'=>$refId, 'code'=>null, 'name'=>null]; + if (!$m) { + return [ + 'id' => (int) $refId, + 'code' => null, + 'name' => null, + 'unit' => null, + 'category_id' => null, + ]; + } + + // item_name 우선, 없으면 name 사용 + $displayName = $m->item_name ?: $m->name; + + return [ + 'id' => (int) $m->id, + 'code' => $m->material_code, // 표준 코드 필드 + 'name' => $displayName, // 사용자에게 보일 이름 + 'unit' => $m->unit, + 'spec' => $m->specification, // 있으면 프론트에서 활용 가능 + 'category_id' => $m->category_id, + ]; + } + + // 알 수 없는 타입 폴백 + return [ + 'id' => $refId, + 'code' => null, + 'name' => null, + ]; } /**