summaryrefslogtreecommitdiff
path: root/lib/material/material-group-service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/material/material-group-service.ts')
-rw-r--r--lib/material/material-group-service.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/material/material-group-service.ts b/lib/material/material-group-service.ts
index 41f06fac..902d9b9b 100644
--- a/lib/material/material-group-service.ts
+++ b/lib/material/material-group-service.ts
@@ -25,6 +25,44 @@ export interface MaterialSearchResult {
}
/**
+ * 자재 그룹 코드로 단일 조회
+ */
+export async function getMaterialGroupByCode(
+ materialGroupCode: string
+): Promise<MaterialSearchItem | null> {
+ if (!materialGroupCode.trim()) {
+ return null;
+ }
+
+ try {
+ const result = await db
+ .select({
+ materialGroupCode: MATERIAL_GROUP_MASTER.materialGroupCode,
+ materialGroupDescription: MATERIAL_GROUP_MASTER.materialGroupDescription,
+ materialGroupUom: MATERIAL_GROUP_MASTER.materialGroupUom,
+ })
+ .from(MATERIAL_GROUP_MASTER)
+ .where(sql`${MATERIAL_GROUP_MASTER.materialGroupCode} = ${materialGroupCode.trim()}`)
+ .limit(1);
+
+ if (result.length === 0) {
+ return null;
+ }
+
+ const item = result[0];
+ return {
+ materialGroupCode: item.materialGroupCode,
+ materialGroupDescription: item.materialGroupDescription,
+ materialGroupUom: item.materialGroupUom || undefined,
+ displayText: `${item.materialGroupCode} - ${item.materialGroupDescription}`,
+ };
+ } catch (error) {
+ console.error("자재 그룹 코드 조회 오류:", error);
+ return null;
+ }
+}
+
+/**
* 자재 검색 함수 - material_search_view에서 검색
*/
export async function searchMaterialsForSelector(