summaryrefslogtreecommitdiff
path: root/db/schema
diff options
context:
space:
mode:
Diffstat (limited to 'db/schema')
-rw-r--r--db/schema/bidding.ts1
-rw-r--r--db/schema/items.ts24
2 files changed, 15 insertions, 10 deletions
diff --git a/db/schema/bidding.ts b/db/schema/bidding.ts
index 9c623232..40632607 100644
--- a/db/schema/bidding.ts
+++ b/db/schema/bidding.ts
@@ -172,6 +172,7 @@ export const biddings = pgTable('biddings', {
createdAt: timestamp('created_at').defaultNow().notNull(),
updatedAt: timestamp('updated_at').defaultNow().notNull(), // 최종수정일
updatedBy: varchar('updated_by', { length: 100 }), // 최종수정자
+ ANFNR: varchar({length: 50}), // 원본 ANFNR 추적을 위한 Bidding/RFQ Number (ECC)
})
// 9. 사양설명회 정보 테이블
diff --git a/db/schema/items.ts b/db/schema/items.ts
index a7eb2a3f..ef19a276 100644
--- a/db/schema/items.ts
+++ b/db/schema/items.ts
@@ -1,6 +1,6 @@
import { pgTable, varchar, text, timestamp, serial, integer, unique, pgView } from "drizzle-orm/pg-core"
-import { sql } from "drizzle-orm"
-import { MATERIAL_MASTER_PART_MATL } from "./MDG/mdg"
+import { sql, eq } from "drizzle-orm"
+import { MATERIAL_MASTER_PART_MATL, MATERIAL_MASTER_PART_MATL_CHARASGN } from "./MDG/mdg"
// 자재 아이템 정보 테이블 (items) - 기존 CMCTB_MAT_CLAS 테이블 매핑 (SOAP 연결 시 컬럼이 추가/삭제될 수 있음)
export const items = pgTable("items", {
@@ -89,23 +89,27 @@ export type ItemOffshoreHull = typeof itemOffshoreHull.$inferSelect;
//각 테이블별 컬럼 변경(itemid -> itemCode)
-// 자재그룹 검색용 뷰 - MDG 스키마의 MATERIAL_MASTER_PART_MATL 테이블에서 DISTINCT 조회
+// 자재그룹 검색용 뷰 - MATKL(자재그룹코드)별 자재그룹 설명 조회
export const materialSearchView = pgView("material_search_view").as((qb) => {
return qb
.select({
- materialGroupCode: MATERIAL_MASTER_PART_MATL.MATKL,
- materialName: MATERIAL_MASTER_PART_MATL.ZZNAME,
- displayText: sql<string>`COALESCE(${MATERIAL_MASTER_PART_MATL.MATKL}, '') || ' - ' || COALESCE(${MATERIAL_MASTER_PART_MATL.ZZNAME}, '')`.as("display_text")
+ materialGroupCode: sql<string>`${MATERIAL_MASTER_PART_MATL.MATKL}`.as("material_group_code"),
+ materialGroupDesc: sql<string>`${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB}`.as("material_group_desc"),
+ displayText: sql<string>`COALESCE(${MATERIAL_MASTER_PART_MATL.MATKL}, '') || ' - ' || COALESCE(${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB}, '')`.as("display_text")
})
.from(MATERIAL_MASTER_PART_MATL)
+ .innerJoin(
+ MATERIAL_MASTER_PART_MATL_CHARASGN,
+ eq(MATERIAL_MASTER_PART_MATL.MATNR, MATERIAL_MASTER_PART_MATL_CHARASGN.MATNR)
+ )
.where(sql`
${MATERIAL_MASTER_PART_MATL.MATKL} IS NOT NULL
AND ${MATERIAL_MASTER_PART_MATL.MATKL} != ''
- AND ${MATERIAL_MASTER_PART_MATL.ZZNAME} IS NOT NULL
- AND ${MATERIAL_MASTER_PART_MATL.ZZNAME} != ''
+ AND ${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB} IS NOT NULL
+ AND ${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB} != ''
`)
- .groupBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL.ZZNAME)
- .orderBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL.ZZNAME);
+ .groupBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB)
+ .orderBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB);
});
export type MaterialSearchView = typeof materialSearchView.$inferSelect;