diff options
Diffstat (limited to 'db/schema/vendors.ts')
| -rw-r--r-- | db/schema/vendors.ts | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/db/schema/vendors.ts b/db/schema/vendors.ts index d53fb674..e2b00632 100644 --- a/db/schema/vendors.ts +++ b/db/schema/vendors.ts @@ -1,8 +1,7 @@ // db/schema/vendors.ts -import { pgTable, serial, varchar, text, timestamp, boolean, integer ,pgView} from "drizzle-orm/pg-core"; +import { pgTable, serial, varchar, text, timestamp, boolean, integer ,pgView } from "drizzle-orm/pg-core"; import { items, materials } from "./items"; import { sql, eq, relations } from "drizzle-orm"; -import { users } from "./users"; // vendorTypes 테이블 생성 @@ -58,7 +57,7 @@ export const vendors = pgTable("vendors", { corporateRegistrationNumber: varchar("corporate_registration_number", { length: 100, }), - items: text("items"), + items: text("items"), // 이전 입력값들이 필요 없을 때 제거할 것. 벤더의 공급품목은 vendorPossibleMaterials 테이블에서 관리함. creditAgency: varchar("credit_agency", { length: 50 }), creditRating: varchar("credit_rating", { length: 50 }), @@ -119,15 +118,39 @@ export const vendorPossibleItems = pgTable("vendor_possible_items", { }); +// MDG 자재마스터에 대해 벤더의 공급품목 정보를 저장하는 테이블 +// 업체 회원 가입시 입력 정보는 업체입력정보(notConfirmed), 구매담당자가 PQ, 실사, 정규업체등록요청 했을 때, PO I/F 통해 받은 자재그룹코드는 확정정보(Confirmed)임 +// MDG 자재마스터와의 정규화 레벨은 의도적으로 낮춤. (스캔 비용) export const vendorPossibleMateirals = pgTable("vendor_possible_materials", { + // 인공키 id: serial("id").primaryKey(), + // 벤더 아이디 vendorId: integer("vendor_id").notNull().references(() => vendors.id), - // itemId: integer("item_id"), // 별도 item 테이블 연동시 - itemCode: varchar("item_code", { length: 100 }) - .notNull() - .references(() => materials.itemCode, { onDelete: "cascade" }), - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), + + // 자재그룹코드 (MATKL) + itemCode: varchar("item_code", { length: 100 }), + // 자재그룹명 (= 자재명) + itemName: varchar("item_name", { length: 255 }), + // 업체유형 (vendorType에서 가져오거나 강미경프로가 제공하겠다는 자재그룹코드별 업체유형 정보를 저장. confirm 건들은 강미경프로 제공 데이터를, notConfirmed 건들은 vendorType 정보 사용) + vendorType: varchar("vendor_type", { length: 255 }), + + registerUserId: integer("register_user_id"), // 등록자ID (추후 필요시 FK 세팅) + registerUserName: varchar("register_user_name", { length: 255 }), // 등록자명 + + // 확정정보 여부 (업체입력시 확정정보 아님, 구매담당자가 PQ, 실사, 정규업체등록요청 했을 때, PO I/F 통해 받은 자재그룹코드는 확정정보임) + isConfirmed: boolean("is_confirmed").default(false), + + // 확정정보에 한해 필요한 부가정보 (시작) + recentPoNo: varchar("recent_po_no", { length: 100 }), // 최근 Po. No + recentPoDate: timestamp("recent_po_date"), // 최근 Po일 + recentDeliveryDate: timestamp("recent_delivery_date"), // 최근 납품일 + recentOrderDate: timestamp("recent_order_date"), // 최근 발주일 + recentOrderUserName: varchar("recent_order_user_name", { length: 255 }), // 최근 발주자명 + purchaseGroupCode: varchar("purchase_group_code", { length: 10 }), // 구매그룹코드 + // 확정정보에 한해 필요한 부가정보 (끝) + + createdAt: timestamp("created_at").defaultNow().notNull(), // 등록일 + updatedAt: timestamp("updated_at").defaultNow().notNull(), // 수정일 }); export const vendorItemsView = pgView("vendor_items_view").as((qb) => { @@ -439,7 +462,6 @@ export const vendorsWithTypesView = pgView("vendors_with_types").as((qb) => { representativeEmail: sql<string>`${vendors.representativeEmail}`.as("representative_email"), representativePhone: sql<string>`${vendors.representativePhone}`.as("representative_phone"), corporateRegistrationNumber: sql<string>`${vendors.corporateRegistrationNumber}`.as("corporate_registration_number"), - items: sql<string>`${vendors.items}`.as("items"), creditAgency: sql<string>`${vendors.creditAgency}`.as("credit_agency"), creditRating: sql<string>`${vendors.creditRating}`.as("credit_rating"), cashFlowRating: sql<string>`${vendors.cashFlowRating}`.as("cash_flow_rating"), |
