summaryrefslogtreecommitdiff
path: root/components/common/selectors/procurement-item/procurement-item-service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'components/common/selectors/procurement-item/procurement-item-service.ts')
-rw-r--r--components/common/selectors/procurement-item/procurement-item-service.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/components/common/selectors/procurement-item/procurement-item-service.ts b/components/common/selectors/procurement-item/procurement-item-service.ts
new file mode 100644
index 00000000..8e7b2c12
--- /dev/null
+++ b/components/common/selectors/procurement-item/procurement-item-service.ts
@@ -0,0 +1,55 @@
+import { searchProcurementItems } from "@/lib/procurement-items/service";
+
+/**
+ * 품목 검색을 위한 인터페이스
+ */
+export interface ProcurementSearchItem {
+ itemCode: string; // 품목코드
+ itemName: string; // 품목명
+ material?: string; // 재질
+ specification?: string; // 규격
+ unit?: string; // 단위
+ displayText: string; // 표시용 텍스트 (code + " - " + name)
+}
+
+/**
+ * 품목 검색 함수
+ * procurement-items 서비스를 통해 품목을 검색합니다.
+ */
+export async function searchProcurementItemsForSelector(query: string): Promise<ProcurementSearchItem[]> {
+ try {
+ const results = await searchProcurementItems(query);
+
+ return results.map(item => ({
+ itemCode: item.itemCode,
+ itemName: item.itemName,
+ displayText: `${item.itemCode} - ${item.itemName}`,
+ }));
+ } catch (error) {
+ console.error("품목 검색 오류:", error);
+ return [];
+ }
+}
+
+/**
+ * 품목코드로 품목 상세 정보 조회
+ */
+export async function getProcurementItemByCode(itemCode: string): Promise<ProcurementSearchItem | null> {
+ try {
+ const results = await searchProcurementItems(itemCode);
+
+ const exactMatch = results.find(item => item.itemCode === itemCode);
+ if (exactMatch) {
+ return {
+ itemCode: exactMatch.itemCode,
+ itemName: exactMatch.itemName,
+ displayText: `${exactMatch.itemCode} - ${exactMatch.itemName}`,
+ };
+ }
+
+ return null;
+ } catch (error) {
+ console.error("품목 상세 조회 오류:", error);
+ return null;
+ }
+}