diff options
Diffstat (limited to 'db/schema')
| -rw-r--r-- | db/schema/MDG/mdg.ts | 1323 | ||||
| -rw-r--r-- | db/schema/evaluation.ts | 314 | ||||
| -rw-r--r-- | db/schema/evaluationTarget.ts | 385 | ||||
| -rw-r--r-- | db/schema/index.ts | 2 | ||||
| -rw-r--r-- | db/schema/procurementRFQ.ts | 11 | ||||
| -rw-r--r-- | db/schema/users.ts | 16 |
6 files changed, 2045 insertions, 6 deletions
diff --git a/db/schema/MDG/mdg.ts b/db/schema/MDG/mdg.ts new file mode 100644 index 00000000..217f94bb --- /dev/null +++ b/db/schema/MDG/mdg.ts @@ -0,0 +1,1323 @@ +import { relations } from 'drizzle-orm'; +import { timestamp, integer, varchar, pgSchema, unique } from 'drizzle-orm/pg-core'; + +// MDG 전용 PostgreSQL 스키마 생성 +export const mdgSchema = pgSchema("mdg"); + +export const BP_HEADER = mdgSchema.table('BP_HEADER', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BP_HEADER: varchar({ length: 255 }), // Business Partner Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VNDRCD: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.BP_HEADER), +]); + +// TODO: 물어봐야 함 +// BP_HEADER_ADDRESS 를 upsert 할 때 저장해줘야 하는건지? ADR_NO가 어떤 BP_HEADER에 속하는지 알 방법이 없는 상태임 +// 인터페이스 정의서에서도 안 주는데, XML 객체 구조상에서 파악해야 하는거면, 파싱 단계에서 처리해줘야 해서 할 일이 늘어남 + +export const BP_HEADER_ADDRESS = mdgSchema.table('BP_HEADER_ADDRESS', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + bp_header_id: integer('bp_header_id').references(() => BP_HEADER.id), // BP_HEADER FK + ADR_NO: varchar({ length: 255 }), // 주소번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.ADR_NO), +]); + +export const BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('BP_HEADER_ADDRESS_AD_EMAIL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + address_id: integer('address_id').references(() => BP_HEADER_ADDRESS.id), // BP_HEADER_ADDRESS FK + CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + EMAIL_ADR: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + SMTP_ADDR: varchar({ length: 255 }), // E-Mail Address // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.CONSNUMBER, table.VLD_ST_DT), +]); + +export const BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('BP_HEADER_ADDRESS_AD_FAX', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + FAXNO: varchar({ length: 255 }), // 팩스번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FAX_ETS_NO: varchar({ length: 255 }), // 팩스내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FAX_EXTENS: varchar({ length: 255 }), // Fax no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAX_NUMBER: varchar({ length: 255 }), // Fax number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('BP_HEADER_ADDRESS_AD_POSTAL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_TMZ: varchar({ length: 255 }), // 주소시간대 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CITY1: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + CITY2: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + CITY_ZIP_NO: varchar({ length: 255 }), // 도시우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ETC_ADR_1: varchar({ length: 255 }), // 기타주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ETC_ADR_2: varchar({ length: 255 }), // 기타주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + HOUSE_NUM1: varchar({ length: 255 }), // House Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + INTL_ADR_VER_ID: varchar({ length: 255 }), // 국제주소버전ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LANG_KEY: varchar({ length: 255 }), // 언어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NATION: varchar({ length: 255 }), // International address version ID // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + POBX: varchar({ length: 255 }), // 사서함 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + POBX_ZIP_NO: varchar({ length: 255 }), // 사서함우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + POST_CODE1: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + POST_CODE2: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PO_BOX: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + REGION: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + REGN_CD: varchar({ length: 255 }), // 지역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SORT1: varchar({ length: 255 }), // Search Term 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SORT2: varchar({ length: 255 }), // Search Term 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STREET: varchar({ length: 255 }), // Street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TAXJURCODE: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TAX_JRDT_ZONE_CD: varchar({ length: 255 }), // 조세관할구역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TIME_ZONE: varchar({ length: 255 }), // Time zone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TITLE: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TRANSPZONE: varchar({ length: 255 }), // Transportation zone to or from which the goods are // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TRANS_ZONE: varchar({ length: 255 }), // 운송구역 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_2: varchar({ length: 255 }), // VENDOR명2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_3: varchar({ length: 255 }), // VENDOR명3 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_4: varchar({ length: 255 }), // VENDOR명4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_ABRV_1: varchar({ length: 255 }), // VENDOR명약어1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_ABRV_2: varchar({ length: 255 }), // VENDOR명약어2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('BP_HEADER_ADDRESS_AD_TEL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + ETX_NO: varchar({ length: 255 }), // 내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + HP_ORDR: varchar({ length: 255 }), // 핸드폰지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + R3_USER: varchar({ length: 255 }), // ndicator: Telephone is a Mobile Telephone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + TELNO: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TEL_EXTENS: varchar({ length: 255 }), // Telephone no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TEL_NUMBER: varchar({ length: 255 }), // Telephone no.: dialling code+number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('BP_HEADER_ADDRESS_AD_URL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + URI_ADDR: varchar({ length: 255 }), // Universal Resource Identifier (URI) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + URL: varchar({ length: 255 }), // URL // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN = mdgSchema.table('BP_HEADER_BP_CUSGEN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + AUFSD: varchar({ length: 255 }), // Central order block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAKSD: varchar({ length: 255 }), // Central billing block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + GFORM: varchar({ length: 255 }), // Legal status // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + JMJAH: varchar({ length: 255 }), // Year for which the number of employees is given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + JMZAH: varchar({ length: 255 }), // Yearly number of employees // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFREPRE: varchar({ length: 255 }), // Name of Representative // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFTBUS: varchar({ length: 255 }), // Type of Business // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFTIND: varchar({ length: 255 }), // Type of Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KATR1: varchar({ length: 255 }), // Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KDKG1: varchar({ length: 255 }), // Condition grp1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KTOKD: varchar({ length: 255 }), // Account Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KUNNR: varchar({ length: 255 }), // Customer Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + LIFNR: varchar({ length: 255 }), // Vendor Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LIFSD: varchar({ length: 255 }), // Central delivery block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NIELS: varchar({ length: 255 }), // Customer Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NODEL: varchar({ length: 255 }), // Central deletion block for master record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PUGRP: varchar({ length: 255 }), // Customer Group Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPERR: varchar({ length: 255 }), // Central Posting Block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD1: varchar({ length: 255 }), // Tax Number 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD2: varchar({ length: 255 }), // Tax Number 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD3: varchar({ length: 255 }), // Tax Number 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD4: varchar({ length: 255 }), // Tax Number 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + UMJAH: varchar({ length: 255 }), // Year For Which Sales are Given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + UMSAT: varchar({ length: 255 }), // Annual Sales // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + UWAER: varchar({ length: 255 }), // Currency of Sales figure // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VBUND: varchar({ length: 255 }), // Company ID of Trading Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPDT_C: varchar({ length: 255 }), // Apporval Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPTM_C: varchar({ length: 255 }), // Apporval Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPUS_C: varchar({ length: 255 }), // Apporval User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZBA: varchar({ length: 255 }), // Business Area(GBM) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZBRSCH_C: varchar({ length: 255 }), // Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZCRMCD: varchar({ length: 255 }), // CRM Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKAR_C: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKNR_C: varchar({ length: 255 }), // Document // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKTL_C: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKVR_C: varchar({ length: 255 }), // Document version // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDUNS: varchar({ length: 255 }), // DUNS Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTBU: varchar({ length: 255 }), // F-Tree BU Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTBUNM: varchar({ length: 255 }), // F-Tree BU Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTDT: varchar({ length: 255 }), // F-Tree DT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTDTNM: varchar({ length: 255 }), // F-Tree DT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTGT: varchar({ length: 255 }), // F-Tree GT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTGTNM: varchar({ length: 255 }), // F-Tree GT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZINBFLGC: varchar({ length: 255 }), // Inbound Flag // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMDT_C: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMTM_C: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMUS_C: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZORT01_C: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZORT02_C: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREASON: varchar({ length: 255 }), // Reason for Duplication // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGDT_C: varchar({ length: 255 }), // Registerd Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGTM_C: varchar({ length: 255 }), // Registerd Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGUS_C: varchar({ length: 255 }), // Registerd User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSTCDT_C: varchar({ length: 255 }), // Tax number type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSTRAS_C: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSUBSEQ_C: varchar({ length: 255 }), // 종사업장 일련번호 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN_ZCOMPANY = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZCOMPANY', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + AKONT: varchar({ length: 255 }), // Reconcil.acct // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + FDGRV: varchar({ length: 255 }), // Planning Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPERR: varchar({ length: 255 }), // Posting block for company code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZAHLS: varchar({ length: 255 }), // Block Key for Payment // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZUAWA: varchar({ length: 255 }), // Sort key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZWELS: varchar({ length: 255 }), // List of the Payment Methods to be Considered // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN_ZSALES = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ANTLF: varchar({ length: 255 }), // Maximum Number of Partial Deliveries Allowed Per I // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + AUFSD: varchar({ length: 255 }), // Customer order block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + AWAHR: varchar({ length: 255 }), // Order probability of the item // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + BZIRK: varchar({ length: 255 }), // Sales district // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAKSD: varchar({ length: 255 }), // Billing block for customer (sales and distribution // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + INCO1: varchar({ length: 255 }), // Incoterms (Part 1) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + INCO2: varchar({ length: 255 }), // Incoterms (Part 2) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KALKS: varchar({ length: 255 }), // Pricing procedure assigned to this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KDGRP: varchar({ length: 255 }), // Customer group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KONDA: varchar({ length: 255 }), // Price group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KTGRD: varchar({ length: 255 }), // Account assignment group for this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KURST: varchar({ length: 255 }), // Exchange Rate Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KZAZU: varchar({ length: 255 }), // Order Combination // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LIFSD: varchar({ length: 255 }), // Customer delivery block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LPRIO: varchar({ length: 255 }), // Delivery Priority // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PLTYP: varchar({ length: 255 }), // Price List // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VERSG: varchar({ length: 255 }), // Customer Statistics Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKORG: varchar({ length: 255 }), // Sales Org. // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VSBED: varchar({ length: 255 }), // Shipping Conditions // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VTWEG: varchar({ length: 255 }), // Distr. Channel // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VWERK: varchar({ length: 255 }), // From plant // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEFPA: varchar({ length: 255 }), // Default Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KUNN2: varchar({ length: 255 }), // Customer number of business partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PARVW: varchar({ length: 255 }), // Partner Function // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + PARZA: varchar({ length: 255 }), // Partner counter // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN_ZTAXIND = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZTAXIND', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ALAND: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + TATYP: varchar({ length: 255 }), // Tax category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + TAXKD: varchar({ length: 255 }), // Tax classification for customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_CUSGEN_ZVATREG = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZVATREG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_TAXNUM = mdgSchema.table('BP_HEADER_BP_TAXNUM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BIZ_PTNR_TX_NO: varchar({ length: 255 }), // 사업파트너세금번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TAXNUM: varchar({ length: 255 }), // Business Partner Tax Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TAXTYPE: varchar({ length: 255 }), // Tax Number Category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + TX_NO_CTG: varchar({ length: 255 }), // 세금번호범주 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_VENGEN = mdgSchema.table('BP_HEADER_BP_VENGEN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ACNT_GRP: varchar({ length: 255 }), // 계정그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ACNT_GRP_TP: varchar({ length: 255 }), // 계정그룹유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_DT: varchar({ length: 255 }), // 승인일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_R_ID: varchar({ length: 255 }), // 승인자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_TM: varchar({ length: 255 }), // 승인시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZCON: varchar({ length: 255 }), // 산업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZR_NO: varchar({ length: 255 }), // 사업자번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZTP: varchar({ length: 255 }), // 사업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZ_UOM_CD: varchar({ length: 255 }), // 사업단위코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZ_UOM_NM: varchar({ length: 255 }), // 사업단위명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHGR_ID: varchar({ length: 255 }), // 변경자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHG_DT: varchar({ length: 255 }), // 변경일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHG_TM: varchar({ length: 255 }), // 변경시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_ID: varchar({ length: 255 }), // 법인ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_REG_NO: varchar({ length: 255 }), // 법인등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_VLM: varchar({ length: 255 }), // 기업규모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CSTM_CD: varchar({ length: 255 }), // 고객코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_HOLD_ORDR: varchar({ length: 255 }), // 삭제보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DMST_TOP_CD: varchar({ length: 255 }), // 국내TOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DMST_TOP_NM: varchar({ length: 255 }), // 국내TOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DNS_NO: varchar({ length: 255 }), // DUNS번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_NO: varchar({ length: 255 }), // 문서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_TP: varchar({ length: 255 }), // 문서유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_VER: varchar({ length: 255 }), // 문서버전 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIR_NM: varchar({ length: 255 }), // FIRST이름 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GBL_TOP_CD: varchar({ length: 255 }), // GLOBALTOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GBL_TOP_NM: varchar({ length: 255 }), // GLOBALTOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GIRO_VNDR_ORDR: varchar({ length: 255 }), // 지로VENDOR지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + HOLD_CAUS: varchar({ length: 255 }), // 보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + INB_FLAG: varchar({ length: 255 }), // 인바운드플래그 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + INTL_LCTN_CHK_NUM: varchar({ length: 255 }), // 국제LOCATION점검숫자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + OVLAP_CAUS_CD: varchar({ length: 255 }), // 중복사유코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PTNT_VNDRCD: varchar({ length: 255 }), // 잠재VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PTN_DOC: varchar({ length: 255 }), // 부분문서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_EMAIL: varchar({ length: 255 }), // 품질담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_NM: varchar({ length: 255 }), // 품질담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_TELNO: varchar({ length: 255 }), // 품질담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REGR_ID: varchar({ length: 255 }), // 등록자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REG_DT: varchar({ length: 255 }), // 등록일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REG_TM: varchar({ length: 255 }), // 등록시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_NM: varchar({ length: 255 }), // 대표자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_RESNO: varchar({ length: 255 }), // 대표자주민번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REP_TEL_NO: varchar({ length: 255 }), // 대표전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SB_WKA_SEQ: varchar({ length: 255 }), // SUB작업장순서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCETX_RP_SEX_KEY: varchar({ length: 255 }), // 원천세의무자성별키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TX_CD_4: varchar({ length: 255 }), // 세금번호4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VAT_REG_NO: varchar({ length: 255 }), // 부가세등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNO: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_VENGEN_BP_COMPNY = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ACOT_CHRGR_FAXNO: varchar({ length: 255 }), // 회계담당자FAX번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ACOT_CHRGR_TELNO: varchar({ length: 255 }), // 회계담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AUTH_GRP: varchar({ length: 255 }), // 권한그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BF_VNDRCD: varchar({ length: 255 }), // 이전VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + CSTM_VNDR_CLR_ORDR: varchar({ length: 255 }), // CUSTOMER,VENDOR반제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CTL_ACNT: varchar({ length: 255 }), // 조정계정 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIN_IR_ACT_DT: varchar({ length: 255 }), // 최종이자실행일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIN_IR_CALC_DT: varchar({ length: 255 }), // 최종이자계산일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + IATA_BIC_GB: varchar({ length: 255 }), // IATA,BIC구분 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + LOGST_VNDR_TP: varchar({ length: 255 }), // 물류VENDOR유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MEMO: varchar({ length: 255 }), // 메모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MIN_ORDR: varchar({ length: 255 }), // 소수지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MK_CHRGR_EMAIL: varchar({ length: 255 }), // MAKER담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MOFFC_ACNT_NO: varchar({ length: 255 }), // 본사계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + OVLAP_INVC_ORDR: varchar({ length: 255 }), // 중복송장지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PLN_GRP: varchar({ length: 255 }), // 계획그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REP_TP: varchar({ length: 255 }), // 대표유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_HOLD_ORDR: varchar({ length: 255 }), // 지급보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_MTHD: varchar({ length: 255 }), // 지급방법 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPRT_SPLY_ORDR: varchar({ length: 255 }), // 분리지급지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_CD: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_NTN_CD: varchar({ length: 255 }), // 원천세국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRT_KEY: varchar({ length: 255 }), // 정렬키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TRD_BANK_SHRT_KEY: varchar({ length: 255 }), // 거래은행단축키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_ACNT_NO: varchar({ length: 255 }), // VENDOR계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_CHRGR_NM: varchar({ length: 255 }), // VENDOR담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DCHAG_CAUS: varchar({ length: 255 }), // 면제사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_CERT_NO: varchar({ length: 255 }), // 면제증명서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_ED_DT: varchar({ length: 255 }), // 면제종료일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_RAT: varchar({ length: 255 }), // 면제율 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_ST_DT: varchar({ length: 255 }), // 면제시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + RECIP_TP: varchar({ length: 255 }), // 수취인유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_IDENT_NO: varchar({ length: 255 }), // 원천세식별번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_NO: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_REL_ORDR: varchar({ length: 255 }), // 원천세관련지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_TP: varchar({ length: 255 }), // 원천세유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_VENGEN_BP_PORG = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + AT_PUR_ORD_ORDR: varchar({ length: 255 }), // 자동구매오더지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CALC_SHM_GRP: varchar({ length: 255 }), // 계산스키마그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CNFM_CTL_KEY: varchar({ length: 255 }), // 확정제어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DL_COND_1: varchar({ length: 255 }), // 인도조건1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DL_COND_2: varchar({ length: 255 }), // 인도조건2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GR_BSE_INVC_VR: varchar({ length: 255 }), // GR기준송장검증 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ORD_CNFM_REQ_ORDR: varchar({ length: 255 }), // 오더확인요청지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_CAUS: varchar({ length: 255 }), // 구매보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_ORD_CUR: varchar({ length: 255 }), // 구매오더통화 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_ORG_CD: varchar({ length: 255 }), // 구매조직 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + SALE_CHRGR_NM: varchar({ length: 255 }), // 영업담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_TELNO: varchar({ length: 255 }), // VENDOR전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BSE_PTNR_ORDR: varchar({ length: 255 }), // 기본파트너지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ETC_REF_VNDRCD: varchar({ length: 255 }), // 기타참조VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PLNT_NO: varchar({ length: 255 }), // 플랜트번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + PTNR_CNT: varchar({ length: 255 }), // 파트너카운터 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + PTNR_SKL: varchar({ length: 255 }), // 파트너기능 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + VNDR_SUB_NO: varchar({ length: 255 }), // VENDOR서브번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_DEPT_MDG = mdgSchema.table('CMCTB_DEPT_MDG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + BIZAREA: varchar({ length: 255 }), // 사업부문 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + CCCD: varchar({ length: 255 }), // 코스트센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + COMPCD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + DEPTLVL: varchar({ length: 255 }), // 부서레벨 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + DEPTPOSNO: varchar({ length: 255 }), // 부서위치 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + DHEMPID: varchar({ length: 255 }), // 부서장사번 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + GNCD: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + PCCD: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + VALIDFROMDT: varchar({ length: 255 }), // 유효일자(시작) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + VALIDTODT: varchar({ length: 255 }), // 유효일자(끝) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + WERKS: varchar({ length: 255 }), // 플랜트코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_DEPT_MDG_COMPNM = mdgSchema.table('CMCTB_DEPT_MDG_COMPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + COMPNM: varchar({ length: 255 }), // 회사명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_DEPT_MDG_CORPNM = mdgSchema.table('CMCTB_DEPT_MDG_CORPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CORPNM: varchar({ length: 255 }), // 법인명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_DEPT_MDG_DEPTNM = mdgSchema.table('CMCTB_DEPT_MDG_DEPTNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEPTNM: varchar({ length: 255 }), // 부서명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG = mdgSchema.table('CMCTB_EMP_MDG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ADDRCNTRY: varchar({ length: 255 }), // 우편번호의 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AEDAT: varchar({ length: 255 }), // 수정날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AENAM: varchar({ length: 255 }), // 수정자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AEZET: varchar({ length: 255 }), // 최근수정시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BIZAREA: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BSCADDR: varchar({ length: 255 }), // Basic Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COMPCD: varchar({ length: 255 }), // 회사 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CORPCD: varchar({ length: 255 }), // 법인 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COUNTRYCD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CSFROMDT: varchar({ length: 255 }), // [에스원]CS Start Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CSTODT: varchar({ length: 255 }), // [에스원]CS End Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CTIROLE: varchar({ length: 255 }), // [에스원]CTI Authority // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEL: varchar({ length: 255 }), // 삭제Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEPENDDT: varchar({ length: 255 }), // 파견종료예정일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHJOBGRDCD: varchar({ length: 255 }), // 부서장 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHNAME: varchar({ length: 255 }), // 부서장 이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHSINGLID: varchar({ length: 255 }), // 부서장 SingleID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DISPATCH: varchar({ length: 255 }), // 파견여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DPSTARTDT: varchar({ length: 255 }), // 파견발령일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DTLADDR: varchar({ length: 255 }), // Detail Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DTLADDR2: varchar({ length: 255 }), // Detail Address2 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMAIL: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMPADR: varchar({ length: 255 }), // 주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMPID: varchar({ length: 255 }), // 사원번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + EMPTYPE: varchar({ length: 255 }), // 인력유형 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ENGNAME: varchar({ length: 255 }), // 사원영문이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EPID: varchar({ length: 255 }), // EPID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERDAT: varchar({ length: 255 }), // 생성날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERNAM: varchar({ length: 255 }), // 생성자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERZET: varchar({ length: 255 }), // 생성시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + FORIGNFLG: varchar({ length: 255 }), // [기획]Foreign Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBCD: varchar({ length: 255 }), // Global 직무 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBDUTYCD: varchar({ length: 255 }), // Global 직책 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBGRDCD: varchar({ length: 255 }), // Global 직급 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GNCD: varchar({ length: 255 }), // 총괄코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + HRMANAGE: varchar({ length: 255 }), // HR시스템에서 관리 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + IDNO: varchar({ length: 255 }), // [모직]개인ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBCD: varchar({ length: 255 }), // 직무코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBCLASS: varchar({ length: 255 }), // [에스원]Job Class Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBDUTYCD: varchar({ length: 255 }), // 직책코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDCD: varchar({ length: 255 }), // 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + KTL_EMP: varchar({ length: 255 }), // 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + LVABSENCE: varchar({ length: 255 }), // 휴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + MBPHONE: varchar({ length: 255 }), // 개인 휴대폰 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + NAME: varchar({ length: 255 }), // 사원이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + OKTL_EMPL: varchar({ length: 255 }), // 원소속부서 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGBICD: varchar({ length: 255 }), // 원소속사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGCOMPCD: varchar({ length: 255 }), // 원소속회사코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGCORPCD: varchar({ length: 255 }), // 원소속법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGDEPTCD: varchar({ length: 255 }), // 원소속부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGPDEPCD: varchar({ length: 255 }), // 원소속부서의 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PAYPLC: varchar({ length: 255 }), // Payplace for Employee // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PSTLCODE: varchar({ length: 255 }), // 우편번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + RETIRE: varchar({ length: 255 }), // 퇴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SEX: varchar({ length: 255 }), // 성별 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SINGLEID: varchar({ length: 255 }), // 싱글 ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SINGLRQ: varchar({ length: 255 }), // 싱글ID 요청 상태 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOCIALID: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOCIALID_DECR: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOJRNEMP: varchar({ length: 255 }), // 주재원 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + TELNUM: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + TMPJDIV: varchar({ length: 255 }), // [에스원]Non-Regular Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + USEDSYS: varchar({ length: 255 }), // [기획]Used System // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + VALFROMDT: varchar({ length: 255 }), // 근무시작일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + VALTODT: varchar({ length: 255 }), // 종료예정일(퇴직일자-정규직일경우) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WFREQUIRE: varchar({ length: 255 }), // 전결필요여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WORKPLC: varchar({ length: 255 }), // 근무처 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ZPRFLG: varchar({ length: 255 }), // 업데이트 여부 Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ZZBUKRS: varchar({ length: 255 }), // ECC Company 코드 (재무법인코드) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_BANM = mdgSchema.table('CMCTB_EMP_MDG_BANM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + GTEXT: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (BIZAREA) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_BINM = mdgSchema.table('CMCTB_EMP_MDG_BINM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BINM: varchar({ length: 255 }), // Business Place Name (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_COMPNM = mdgSchema.table('CMCTB_EMP_MDG_COMPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + COMPNM: varchar({ length: 255 }), // Company Name (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_CORPNM = mdgSchema.table('CMCTB_EMP_MDG_CORPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CORPNM: varchar({ length: 255 }), // Corporate Name (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_COUNTRYNM = mdgSchema.table('CMCTB_EMP_MDG_COUNTRYNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + COUNTRYNM: varchar({ length: 255 }), // Country Name (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_DEPTCODE = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + PCCD: varchar({ length: 255 }), // Profit Center Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WERKS: varchar({ length: 255 }), // Plant Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_DEPTCODE_PCCDNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE_PCCDNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + LTEXT: varchar({ length: 255 }), // Long Text // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_DEPTNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEPTNM: varchar({ length: 255 }), // Department Name (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_DHJOBGDNM = mdgSchema.table('CMCTB_EMP_MDG_DHJOBGDNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_GJOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBDUTYNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + GJOBDUTYNM: varchar({ length: 255 }), // Global Job Duty Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (GJOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_GJOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + GJOBGRDNM: varchar({ length: 255 }), // Global Job Grade Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (GJOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_GJOBGRDTYPE = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDTYPE', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_GJOBNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + SPRAS: varchar({ length: 255 }), // Language Key (GJOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_GNNM = mdgSchema.table('CMCTB_EMP_MDG_GNNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + GNNM: varchar({ length: 255 }), // General Name (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_JOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_JOBDUTYNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + JOBDUTYNM: varchar({ length: 255 }), // Job Duty Name (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_JOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_JOBGRDNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_JOBNM = mdgSchema.table('CMCTB_EMP_MDG_JOBNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + JOBNM: varchar({ length: 255 }), // Job Name (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_KTLNM = mdgSchema.table('CMCTB_EMP_MDG_KTLNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LTEXT: varchar({ length: 255 }), // Cost Center (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_OKTLNM = mdgSchema.table('CMCTB_EMP_MDG_OKTLNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LTEXT: varchar({ length: 255 }), // Cost Center (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_ORGBICDNM = mdgSchema.table('CMCTB_EMP_MDG_ORGBICDNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BINM: varchar({ length: 255 }), // Business Place Name (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_ORGCOMPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCOMPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + COMPNM: varchar({ length: 255 }), // Company Name (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_ORGCORPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCORPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CORPNM: varchar({ length: 255 }), // Corporate Name (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_ORGDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_ORGDEPTNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEPTNM: varchar({ length: 255 }), // Department Name (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_ORGPDEPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGPDEPNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEPTNM: varchar({ length: 255 }), // Department Name (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_MDG_PDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_PDEPTNM', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DEPTNM: varchar({ length: 255 }), // Department Name (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_REF_MDG_IF = mdgSchema.table('CMCTB_EMP_REF_MDG_IF', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ADTL_01: varchar({ length: 255 }), // 추가필드1 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + ADTL_02: varchar({ length: 255 }), // 추가필드2 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + GRPCD: varchar({ length: 255 }), // 그룹코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + MAINCD: varchar({ length: 255 }), // 메인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + VALIDFROMDT: varchar({ length: 255 }), // 시작유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + VALIDTODT: varchar({ length: 255 }), // 종료유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_EMP_REF_MDG_IF_NAME = mdgSchema.table('CMCTB_EMP_REF_MDG_IF_NAME', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + NAME: varchar({ length: 255 }), // 코드명 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_MAT_BSE = mdgSchema.table('CMCTB_MAT_BSE', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + IF_MSG: varchar({ length: 255 }), // IF 메시지 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + IF_STAT: varchar({ length: 255 }), // IF 상태 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + MAT_CD: varchar({ length: 255 }), // 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl // WSDL에서 필수 필드 + MAT_ID: varchar({ length: 255 }), // PLM 채번 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const CMCTB_PROJ_MAST = mdgSchema.table('CMCTB_PROJ_MAST', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + AS_GRNT_PRD: varchar({ length: 255 }), // A/S 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZCLS: varchar({ length: 255 }), // 사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZLOC_CD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZ_DMN: varchar({ length: 255 }), // 사업영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BP_DL_DT: varchar({ length: 255 }), // 선표인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CHN_PROJ_TP: varchar({ length: 255 }), // (중국)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CLS_1: varchar({ length: 255 }), // 선급1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CLS_2: varchar({ length: 255 }), // 선급2 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_CNTN_YN: varchar({ length: 255 }), // 계약존속여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_DL_DT: varchar({ length: 255 }), // 계약인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_DT: varchar({ length: 255 }), // 계약일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_RESV_YN: varchar({ length: 255 }), // 계약유보여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CSTM_PO_NO: varchar({ length: 255 }), // 고객발주번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DEL_YN: varchar({ length: 255 }), // 삭제 여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DIGT_PDT_GRP: varchar({ length: 255 }), // 전기전자 제품군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DIST_PATH: varchar({ length: 255 }), // 유통경로 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DL_BF_PROJ_NM: varchar({ length: 255 }), // 인도전선명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DL_CSTM_CD: varchar({ length: 255 }), // 인도고객 ID // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DOCK_CD: varchar({ length: 255 }), // 도크 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DSN_CHRGR: varchar({ length: 255 }), // 설계담당자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + EXMPT_AREA: varchar({ length: 255 }), // 면세면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + EXMPT_RAT: varchar({ length: 255 }), // 면세율 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + FIN_GRNT_FN_DT: varchar({ length: 255 }), // 최종수요자 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GENT_CNT: varchar({ length: 255 }), // 세대수/시리즈 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GOV: varchar({ length: 255 }), // 관청명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GRNT_STDT: varchar({ length: 255 }), // Project Warranty Start Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GT: varchar({ length: 255 }), // G/T // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IF_STAT: varchar({ length: 255 }), // 인터페이스 진행단계 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IMO_NO: varchar({ length: 255 }), // IMO 번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + INQY_NO: varchar({ length: 255 }), // 안건번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + INQY_SEQ: varchar({ length: 255 }), // 안건순번 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IO_GB: varchar({ length: 255 }), // 사내외 구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + LOA: varchar({ length: 255 }), // L.O.A // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MNG_ACOT_DMN: varchar({ length: 255 }), // 관리회계영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MN_ENGN_TP_CD: varchar({ length: 255 }), // Main engine type code // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MSHIP_NO: varchar({ length: 255 }), // 기준호선 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + NEW_MC_YN: varchar({ length: 255 }), // MC YN // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + NTTP: varchar({ length: 255 }), // 국적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + ORDR_GRNT_FN_DT: varchar({ length: 255 }), // 주문주 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + ORDR_GRNT_PRD: varchar({ length: 255 }), // 주문주 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_1: varchar({ length: 255 }), // 선주1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_AB: varchar({ length: 255 }), // 선주약어 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_NM: varchar({ length: 255 }), // 선주명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PDT_LVL_4: varchar({ length: 255 }), // 제품 Level 4 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PLNT_CD: varchar({ length: 255 }), // 플랜트 코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRCTR: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRGS_STAT: varchar({ length: 255 }), // 진행상태 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_CRTE_REQ_DT: varchar({ length: 255 }), // 프로젝트 생성요청일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_CRTE_REQ_EMPNO: varchar({ length: 255 }), // 프로젝트 생성요청자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DL_PLN_DT: varchar({ length: 255 }), // 모프로젝트 인도계획일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DL_RT_DT: varchar({ length: 255 }), // 모프로젝트 인도실적일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DSC: varchar({ length: 255 }), // 프로젝트 설명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DTL_TP: varchar({ length: 255 }), // 프로젝트 세부타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_ETC_TP: varchar({ length: 255 }), // 프로젝트 기타타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_GB: varchar({ length: 255 }), // 프로젝트구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_NO: varchar({ length: 255 }), // 프로젝트번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl // WSDL에서 필수 필드 + PROJ_PRGS_YN: varchar({ length: 255 }), // 공사진행여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_PROF: varchar({ length: 255 }), // 프로젝트 프로파일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_SCP: varchar({ length: 255 }), // 프로젝트범위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_WBS_TP: varchar({ length: 255 }), // 프로젝트 WBS타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRO_PROJ_NO: varchar({ length: 255 }), // 프로포절 프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + QM_CLS: varchar({ length: 255 }), // 품질사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + REF_NO: varchar({ length: 255 }), // 시리즈번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + RLTD_PROJ: varchar({ length: 255 }), // 연관프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + RL_DL_DT: varchar({ length: 255 }), // 실인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SALE_GRP: varchar({ length: 255 }), // 영업그룹 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SALE_ORG_CD: varchar({ length: 255 }), // 영업조직 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SA_DT: varchar({ length: 255 }), // Sail Away Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SERS_NO: varchar({ length: 255 }), // 시리즈첫공사번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SERS_YN: varchar({ length: 255 }), // 시리즈여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE: varchar({ length: 255 }), // 선형 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_CD: varchar({ length: 255 }), // 선형코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_GRP: varchar({ length: 255 }), // 선형군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_UOM: varchar({ length: 255 }), // 선형단위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SKND: varchar({ length: 255 }), // 선종 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SPD: varchar({ length: 255 }), // Speed // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SRC_SYS_ID: varchar({ length: 255 }), // Source System // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + STDT: varchar({ length: 255 }), // 시작일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SYS_ACOT_CLSD_DT: varchar({ length: 255 }), // 시스템회계마감일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + TOT_AREA: varchar({ length: 255 }), // 전체면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + TOT_CNRT_CNT: varchar({ length: 255 }), // 전체 계약 대수 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + TYPE: varchar({ length: 255 }), // 프로젝트 Top/Hull // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + WP_PROJ_TP: varchar({ length: 255 }), // (풍력)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_CCTR = mdgSchema.table('HRHMTB_CCTR', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZER: varchar({ length: 255 }), // Actual Revenue // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZKP: varchar({ length: 255 }), // Actual Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZKS: varchar({ length: 255 }), // Actual Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZOB: varchar({ length: 255 }), // Commitment Update // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CCTR: varchar({ length: 255 }), // Cost Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + DATLT: varchar({ length: 255 }), // Data communication line no. // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DRNAM: varchar({ length: 255 }), // Printer destination for CCtr report // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + FUNC_AREA: varchar({ length: 255 }), // Functional Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + GSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KHINR: varchar({ length: 255 }), // Standard Hierarchy Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + KOSAR: varchar({ length: 255 }), // Cost Center Category // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + MGEFL: varchar({ length: 255 }), // Record Quantity // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ORT01: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ORT02: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PFACH: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZER: varchar({ length: 255 }), // Plan Revenues // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZKP: varchar({ length: 255 }), // Plan Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZKS: varchar({ length: 255 }), // Plan Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PRCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PSTL2: varchar({ length: 255 }), // P.O. Box Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PSTLZ: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + REGIO: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + STRAS: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELBX: varchar({ length: 255 }), // Telebox number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELF1: varchar({ length: 255 }), // First telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELF2: varchar({ length: 255 }), // Second telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELTX: varchar({ length: 255 }), // Teletex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELX1: varchar({ length: 255 }), // Telex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VMETH: varchar({ length: 255 }), // Allowed Allocation methods // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZBRANCH: varchar({ length: 255 }), // Business Place // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFCTRI: varchar({ length: 255 }), // Create Fund Center Indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSECCODE: varchar({ length: 255 }), // Section Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSEGMENT: varchar({ length: 255 }), // Segment for Segmental Reporting // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_CCTR_TEXT = mdgSchema.table('HRHMTB_CCTR_TEXT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LTEXT: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_PCTR = mdgSchema.table('HRHMTB_PCTR', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + KHINR: varchar({ length: 255 }), // Profit center area(Profit center group) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + LOCK_IND: varchar({ length: 255 }), // Lock indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + SEGMENT: varchar({ length: 255 }), // Segment // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZBUKRS = mdgSchema.table('HRHMTB_ZBUKRS', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CURR_BUKR: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZBUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZBUTXT: varchar({ length: 255 }), // Company Code Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZCITY: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZCOUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZEKGRP = mdgSchema.table('HRHMTB_ZEKGRP', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZEKGRP: varchar({ length: 255 }), // Purchasing Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKNAM: varchar({ length: 255 }), // Purchasing Group Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKTEL: varchar({ length: 255 }), // Telephone Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEMPNUM: varchar({ length: 255 }), // Employee Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSINGLE: varchar({ length: 255 }), // Single ID // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZTELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZTEL_NUM: varchar({ length: 255 }), // Telephone Number (Office) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZEKORG = mdgSchema.table('HRHMTB_ZEKORG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZEKORG: varchar({ length: 255 }), // Purchasing Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKOTX: varchar({ length: 255 }), // Purchasing Organization Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZGSBER = mdgSchema.table('HRHMTB_ZGSBER', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZGSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZGSBER_TEXT = mdgSchema.table('HRHMTB_ZGSBER_TEXT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + TXTMI: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZLGORT = mdgSchema.table('HRHMTB_ZLGORT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZLGORT: varchar({ length: 255 }), // Storage Location // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLGOBE: varchar({ length: 255 }), // Storage Location Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZSPART = mdgSchema.table('HRHMTB_ZSPART', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZSPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZVKBUR = mdgSchema.table('HRHMTB_ZVKBUR', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CTRY_SOFF: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_SOFF: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZVKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZVKGRP = mdgSchema.table('HRHMTB_ZVKGRP', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZVKORG = mdgSchema.table('HRHMTB_ZVKORG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVKORG: varchar({ length: 255 }), // Sales Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZBOAVO: varchar({ length: 255 }), // Rebate processing active in the sales organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZKUNNR: varchar({ length: 255 }), // Customer number for intercompany billing // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZVKOKL: varchar({ length: 255 }), // Sales organization calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZWAERS: varchar({ length: 255 }), // Statistics currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZVSTEL = mdgSchema.table('HRHMTB_ZVSTEL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ALAN_VSTE: varchar({ length: 255 }), // Departure zone // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + AZON_VSTE: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CTRY_SHPT: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_SHPT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZVSTEL: varchar({ length: 255 }), // Shipping Point // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFABKL: varchar({ length: 255 }), // Factory calendar key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLAZBS: varchar({ length: 255 }), // Determine loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLAZZT: varchar({ length: 255 }), // Default loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZRIZBS: varchar({ length: 255 }), // Determine pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZRIZZT: varchar({ length: 255 }), // Default pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZVTWEG = mdgSchema.table('HRHMTB_ZVTWEG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVTWEG: varchar({ length: 255 }), // Distribution Channel // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const HRHMTB_ZWERKS = mdgSchema.table('HRHMTB_ZWERKS', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CTRY_PLNT: varchar({ length: 255 }), // Country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_PLNT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFABKL: varchar({ length: 255 }), // Factory Calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZNAME1: varchar({ length: 255 }), // Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZNAME2: varchar({ length: 255 }), // Name2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const MATL = mdgSchema.table('MATL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BISMT: varchar({ length: 255 }), // Old material number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GROES: varchar({ length: 255 }), // Size/dimensions // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + LVORM: varchar({ length: 255 }), // Deletion flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MAGRV: varchar({ length: 255 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATKL: varchar({ length: 255 }), // Material Group // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + // MATNR: MATL 의 키. 이 키를 기준으로 다른 테이블과 연결됨. + MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MBRSH: varchar({ length: 255 }), // Industry sector // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEINS: varchar({ length: 255 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MSTAE: varchar({ length: 255 }), // Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MSTDE: varchar({ length: 255 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MTART: varchar({ length: 255 }), // Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + NTGEW: varchar({ length: 255 }), // Net Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + PRDHA: varchar({ length: 255 }), // Product hierarchy // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VHART: varchar({ length: 255 }), // Packaging Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZACT: varchar({ length: 255 }), // Activity Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPDT: varchar({ length: 255 }), // Approval Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPTM: varchar({ length: 255 }), // Approval Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPUS: varchar({ length: 255 }), // Approval User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZCERT: varchar({ length: 255 }), // Certification Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZDOKAR: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKNR: varchar({ length: 255 }), // Document number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKTL: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKVR: varchar({ length: 255 }), // Document Version // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZINSP: varchar({ length: 255 }), // Inspection // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMMTYP: varchar({ length: 255 }), // Material Master Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMRC: varchar({ length: 255 }), // MRC // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZNAME: varchar({ length: 255 }), // Material Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPJT: varchar({ length: 255 }), // Project Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPLMID: varchar({ length: 255 }), // PLM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRCD_SCV_CTLP: varchar({ length: 255 }), // 선행후행조정관 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREPMAT: varchar({ length: 255 }), // REP Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_DIA: varchar({ length: 255 }), // 대표지름 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_DIA_UOM: varchar({ length: 255 }), // 대표지름단위 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_ITM_MATL: varchar({ length: 255 }), // 대표품명재질 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSMID: varchar({ length: 255 }), // SM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSTL: varchar({ length: 255 }), // Steel Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR), +]); + +export const MATL_CHARASGN = mdgSchema.table('MATL_CHARASGN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ATAW1: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATAWE: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATBEZ: varchar({ length: 255 }), // 특성내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATFLB: varchar({ length: 255 }), // Internal floating point value to // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATFLV: varchar({ length: 255 }), // Internal floating point from // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATNAM: varchar({ length: 255 }), // Characteristic Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + ATWRT: varchar({ length: 255 }), // Characteristic Value // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATWTB: varchar({ length: 255 }), // 특성값내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR, table.CLASS, table.KLART, table.ATNAM), +]); + +export const MATL_CLASSASGN = mdgSchema.table('MATL_CLASSASGN', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR, table.CLASS, table.KLART), +]); + +export const MATL_DESC = mdgSchema.table('MATL_DESC', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + MAKTX: varchar({ length: 255 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + SPRAS: varchar({ length: 255 }), // Language // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR, table.SPRAS), +]); + +export const MATL_PLNT = mdgSchema.table('MATL_PLNT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LVORM: varchar({ length: 255 }), // Deletion Flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MMSTA: varchar({ length: 255 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MMSTD: varchar({ length: 255 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + WERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMTARP: varchar({ length: 255 }), // Plant Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR, table.WERKS), +]); + +export const MATL_UNIT = mdgSchema.table('MATL_UNIT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEINH: varchar({ length: 255 }), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + UMREN: varchar({ length: 255 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + UMREZ: varchar({ length: 255 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}, (table) => [ + unique().on(table.MATNR, table.MEINH), +]); diff --git a/db/schema/evaluation.ts b/db/schema/evaluation.ts new file mode 100644 index 00000000..4db3a25a --- /dev/null +++ b/db/schema/evaluation.ts @@ -0,0 +1,314 @@ +import { pgView , pgTable, serial, varchar, text, timestamp, integer, decimal, boolean, uuid } from 'drizzle-orm/pg-core'; +import { relations , sql} from 'drizzle-orm'; +import { Vendor, vendors } from './vendors'; + +// 1. 일반 평가표 테이블 +export const generalEvaluations = pgTable('general_evaluations', { + id: serial('id').primaryKey(), + serialNumber: varchar('serial_number', { length: 50 }).notNull().unique(), + category: varchar('category', { length: 100 }).notNull(), + inspectionItem: text('inspection_item').notNull(), + remarks: text('remarks'), + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// 2. ESG 자가진단표 메인 테이블 +export const esgEvaluations = pgTable('esg_evaluations', { + id: serial('id').primaryKey(), + serialNumber: varchar('serial_number', { length: 50 }).notNull().unique(), + category: varchar('category', { length: 100 }).notNull(), + inspectionItem: text('inspection_item').notNull(), + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// 3. ESG 평가항목 테이블 (각 ESG 진단표의 세부 평가항목들) +export const esgEvaluationItems = pgTable('esg_evaluation_items', { + id: serial('id').primaryKey(), + esgEvaluationId: integer('esg_evaluation_id').references(() => esgEvaluations.id, { onDelete: 'cascade' }).notNull(), + evaluationItem: text('evaluation_item').notNull(), // 평가항목 + evaluationItemDescription: text('evaluation_item_description'), // 평가항목 + orderIndex: integer('order_index').default(0).notNull(), // 정렬 순서 + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// 4. ESG 답변 옵션 테이블 (각 평가항목에 대한 선택 가능한 답변들) +export const esgAnswerOptions = pgTable('esg_answer_options', { + id: serial('id').primaryKey(), + esgEvaluationItemId: integer('esg_evaluation_item_id').references(() => esgEvaluationItems.id, { onDelete: 'cascade' }).notNull(), + answerText: text('answer_text').notNull(), // 답변 내용 + score: decimal('score', { precision: 5, scale: 2 }).notNull(), // 점수 (소수점 2자리까지) + orderIndex: integer('order_index').default(0).notNull(), // 정렬 순서 + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + + + +// === Relations 정의 === + +// ESG 평가표와 평가항목 관계 +export const esgEvaluationsRelations = relations(esgEvaluations, ({ many }) => ({ + evaluationItems: many(esgEvaluationItems), +})); + +export const esgEvaluationItemsRelations = relations(esgEvaluationItems, ({ one, many }) => ({ + esgEvaluation: one(esgEvaluations, { + fields: [esgEvaluationItems.esgEvaluationId], + references: [esgEvaluations.id], + }), + answerOptions: many(esgAnswerOptions), +})); + +export const esgAnswerOptionsRelations = relations(esgAnswerOptions, ({ one }) => ({ + evaluationItem: one(esgEvaluationItems, { + fields: [esgAnswerOptions.esgEvaluationItemId], + references: [esgEvaluationItems.id], + }), +})); + +// === 타입 정의 === +export type GeneralEvaluation = typeof generalEvaluations.$inferSelect; +export type NewGeneralEvaluation = typeof generalEvaluations.$inferInsert; + +export type EsgEvaluation = typeof esgEvaluations.$inferSelect; +export type NewEsgEvaluation = typeof esgEvaluations.$inferInsert; + +export type EsgEvaluationItem = typeof esgEvaluationItems.$inferSelect; +export type NewEsgEvaluationItem = typeof esgEvaluationItems.$inferInsert; + +export type EsgAnswerOption = typeof esgAnswerOptions.$inferSelect; +export type NewEsgAnswerOption = typeof esgAnswerOptions.$inferInsert; + +// === 조인된 타입 정의 === +export type EsgEvaluationWithItems = EsgEvaluation & { + evaluationItems: (EsgEvaluationItem & { + answerOptions: EsgAnswerOption[]; + })[]; +}; + +export type EsgEvaluationItemWithOptions = EsgEvaluationItem & { + answerOptions: EsgAnswerOption[]; +}; + + +// ESG 평가표 목록을 위한 뷰 (평가항목 수와 총 점수 등 요약 정보 포함) +export const esgEvaluationsView = pgView('esg_evaluations_view').as((qb) => + qb + .select({ + id: esgEvaluations.id, + serialNumber: esgEvaluations.serialNumber, + category: esgEvaluations.category, + inspectionItem: esgEvaluations.inspectionItem, + isActive: esgEvaluations.isActive, + createdAt: esgEvaluations.createdAt, + updatedAt: esgEvaluations.updatedAt, + // 집계 필드들 + totalEvaluationItems: sql<number>`count(distinct ${esgEvaluationItems.id})`.as('total_evaluation_items'), + totalAnswerOptions: sql<number>`count(${esgAnswerOptions.id})`.as('total_answer_options'), + maxPossibleScore: sql<number>`coalesce(sum(${esgAnswerOptions.score}), 0)`.as('max_possible_score'), + // ✅ 서브쿼리로 평가항목 리스트 조회 + evaluationItemsList: sql<string[]>` + ( + SELECT array_agg(evaluation_item order by order_index) + FROM esg_evaluation_items + WHERE esg_evaluation_id = ${esgEvaluations.id} + AND is_active = true + AND evaluation_item is not null + ) + `.as('evaluation_items_list'), + }) + .from(esgEvaluations) + .leftJoin(esgEvaluationItems, sql`${esgEvaluations.id} = ${esgEvaluationItems.esgEvaluationId} AND ${esgEvaluationItems.isActive} = true`) + .leftJoin(esgAnswerOptions, sql`${esgEvaluationItems.id} = ${esgAnswerOptions.esgEvaluationItemId} AND ${esgAnswerOptions.isActive} = true`) + .groupBy( + esgEvaluations.id, + esgEvaluations.serialNumber, + esgEvaluations.category, + esgEvaluations.inspectionItem, + esgEvaluations.isActive, + esgEvaluations.createdAt, + esgEvaluations.updatedAt + ) +); +// 타입도 업데이트 +export type EsgEvaluationsView = typeof esgEvaluationsView.$inferSelect; + + + +export const evaluationSubmissions = pgTable('evaluation_submissions', { + id: serial('id').primaryKey(), + submissionId: uuid('submission_id').defaultRandom().notNull().unique(), + companyId: integer('company_id').references(() => vendors.id, { onDelete: 'cascade' }).notNull(), + evaluationYear: integer('evaluation_year').notNull(), + evaluationRound: varchar('evaluation_round', { length: 50 }), + submissionStatus: varchar('submission_status', { length: 50 }).default('draft').notNull(), + submittedAt: timestamp('submitted_at'), + reviewedAt: timestamp('reviewed_at'), + reviewedBy: varchar('reviewed_by', { length: 100 }), + reviewComments: text('review_comments'), + + // 🔄 ESG 평균 점수만 저장 (일반평가는 점수 없음) + averageEsgScore: decimal('average_esg_score', { precision: 5, scale: 2 }), // ESG 평균 점수만 + + // 📊 진행률 통계 + totalGeneralItems: integer('total_general_items').default(0), // 일반평가 총 항목 수 + completedGeneralItems: integer('completed_general_items').default(0), // 완료된 일반평가 항목 수 + totalEsgItems: integer('total_esg_items').default(0), // ESG 총 항목 수 + completedEsgItems: integer('completed_esg_items').default(0), // 완료된 ESG 항목 수 + + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + + +// 일반평가 응답 - 점수 필드 제거 +export const generalEvaluationResponses = pgTable('general_evaluation_responses', { + id: serial('id').primaryKey(), + submissionId: integer('submission_id').references(() => evaluationSubmissions.id, { onDelete: 'cascade' }).notNull(), + generalEvaluationId: integer('general_evaluation_id').references(() => generalEvaluations.id, { onDelete: 'cascade' }).notNull(), + responseText: text('response_text').notNull(), // 텍스트 응답 + hasAttachments: boolean('has_attachments').default(false).notNull(), + // ❌ score 필드 제거 (점수 없음) + reviewComments: text('review_comments'), // 검토자 의견 (선택적) + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// ESG는 기존 그대로 (점수 있음) +export const esgEvaluationResponses = pgTable('esg_evaluation_responses', { + id: serial('id').primaryKey(), + submissionId: integer('submission_id').references(() => evaluationSubmissions.id, { onDelete: 'cascade' }).notNull(), + esgEvaluationItemId: integer('esg_evaluation_item_id').references(() => esgEvaluationItems.id, { onDelete: 'cascade' }).notNull(), + esgAnswerOptionId: integer('esg_answer_option_id').references(() => esgAnswerOptions.id, { onDelete: 'cascade' }).notNull(), + selectedScore: decimal('selected_score', { precision: 5, scale: 2 }).notNull(), // ESG는 점수 있음 + additionalComments: text('additional_comments'), + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// 5. 첨부파일 테이블 +export const vendorEvaluationAttachments = pgTable('vendor_evaluation_attachments', { + id: serial('id').primaryKey(), + fileId: uuid('file_id').defaultRandom().notNull().unique(), // 외부 노출용 파일 ID + submissionId: integer('submission_id').references(() => evaluationSubmissions.id, { onDelete: 'cascade' }).notNull(), + generalEvaluationResponseId: integer('general_evaluation_response_id').references(() => generalEvaluationResponses.id, { onDelete: 'cascade' }), + originalFileName: varchar('original_file_name', { length: 500 }).notNull(), + storedFileName: varchar('stored_file_name', { length: 500 }).notNull(), + filePath: text('file_path').notNull(), + fileSize: integer('file_size').notNull(), // bytes + mimeType: varchar('mime_type', { length: 200 }), + uploadedBy: varchar('uploaded_by', { length: 100 }).notNull(), + isActive: boolean('is_active').default(true).notNull(), + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// === Relations 정의 === + +// 협력업체와 평가 제출 관계 +export const companiesRelations = relations(vendors, ({ many }) => ({ + evaluationSubmissions: many(evaluationSubmissions), +})); + +// 평가 제출과 응답들 관계 +export const evaluationSubmissionsRelations = relations(evaluationSubmissions, ({ one, many }) => ({ + company: one(vendors, { + fields: [evaluationSubmissions.companyId], + references: [vendors.id], + }), + generalEvaluationResponses: many(generalEvaluationResponses), + esgEvaluationResponses: many(esgEvaluationResponses), + vendorEvaluationAttachments: many(vendorEvaluationAttachments), +})); + +// 일반 평가표 응답 관계 +export const generalEvaluationResponsesRelations = relations(generalEvaluationResponses, ({ one, many }) => ({ + submission: one(evaluationSubmissions, { + fields: [generalEvaluationResponses.submissionId], + references: [evaluationSubmissions.id], + }), + generalEvaluation: one(generalEvaluations, { + fields: [generalEvaluationResponses.generalEvaluationId], + references: [generalEvaluations.id], + }), + vendorEvaluationAttachments: many(vendorEvaluationAttachments), +})); + +// ESG 평가표 응답 관계 +export const esgEvaluationResponsesRelations = relations(esgEvaluationResponses, ({ one }) => ({ + submission: one(evaluationSubmissions, { + fields: [esgEvaluationResponses.submissionId], + references: [evaluationSubmissions.id], + }), + esgEvaluationItem: one(esgEvaluationItems, { + fields: [esgEvaluationResponses.esgEvaluationItemId], + references: [esgEvaluationItems.id], + }), + esgAnswerOption: one(esgAnswerOptions, { + fields: [esgEvaluationResponses.esgAnswerOptionId], + references: [esgAnswerOptions.id], + }), +})); + +// 첨부파일 관계 +export const attachmentsRelations = relations(vendorEvaluationAttachments, ({ one }) => ({ + submission: one(evaluationSubmissions, { + fields: [vendorEvaluationAttachments.submissionId], + references: [evaluationSubmissions.id], + }), + generalEvaluationResponse: one(generalEvaluationResponses, { + fields: [vendorEvaluationAttachments.generalEvaluationResponseId], + references: [generalEvaluationResponses.id], + }), +})); + +// === 타입 정의 === + + +export type EvaluationSubmission = typeof evaluationSubmissions.$inferSelect; +export type NewEvaluationSubmission = typeof evaluationSubmissions.$inferInsert; + +export type GeneralEvaluationResponse = typeof generalEvaluationResponses.$inferSelect; +export type NewGeneralEvaluationResponse = typeof generalEvaluationResponses.$inferInsert; + +export type EsgEvaluationResponse = typeof esgEvaluationResponses.$inferSelect; +export type NewEsgEvaluationResponse = typeof esgEvaluationResponses.$inferInsert; + +export type Attachment = typeof vendorEvaluationAttachments.$inferSelect; +export type NewAttachment = typeof vendorEvaluationAttachments.$inferInsert; + +// === 조인된 타입 정의 === +export type EvaluationSubmissionWithDetails = EvaluationSubmission & { + company: Vendor; + generalEvaluationResponses: (GeneralEvaluationResponse & { + generalEvaluation: GeneralEvaluation; + vendorEvaluationAttachments: Attachment[]; + })[]; + esgEvaluationResponses: (EsgEvaluationResponse & { + esgEvaluationItem: EsgEvaluationItem; + esgAnswerOption: EsgAnswerOption; + })[]; + vendorEvaluationAttachments: Attachment[]; +}; + +export type GeneralEvaluationResponseWithDetails = GeneralEvaluationResponse & { + generalEvaluation: GeneralEvaluation; + vendorEvaluationAttachments: Attachment[]; +}; + +export type EsgEvaluationResponseWithDetails = EsgEvaluationResponse & { + esgEvaluationItem: EsgEvaluationItem & { + esgEvaluation: EsgEvaluation; + }; + esgAnswerOption: EsgAnswerOption; +};
\ No newline at end of file diff --git a/db/schema/evaluationTarget.ts b/db/schema/evaluationTarget.ts new file mode 100644 index 00000000..4eff1c19 --- /dev/null +++ b/db/schema/evaluationTarget.ts @@ -0,0 +1,385 @@ +import { pgTable, pgView, serial, varchar, text, timestamp, boolean, integer, numeric, date, uniqueIndex, unique, decimal } from "drizzle-orm/pg-core"; +import { eq , sql, relations} from "drizzle-orm"; +import { vendors } from "./vendors"; +import { users } from "./users"; +import { contracts } from "./contract"; + +// 평가 대상 메인 테이블 +export const evaluationTargets = pgTable("evaluation_targets", { + id: serial("id").primaryKey(), + + // 평가년도 (예: 2024) + evaluationYear: integer("evaluation_year").notNull(), + + // 구분 (해양/조선) + division: varchar("division", { + length: 20, + enum: ["SHIP", "PLANT"] + }).notNull(), + + // 벤더 정보 + vendorId: integer("vendor_id").references(() => vendors.id).notNull(), + vendorCode: varchar("vendor_code", { length: 100 }).notNull(), + vendorName: varchar("vendor_name", { length: 255 }).notNull(), + + // 내외자 구분 + domesticForeign: varchar("domestic_foreign", { + length: 20, + enum: ["DOMESTIC", "FOREIGN"] + }).notNull(), + + // 자재구분 + materialType: varchar("material_type", { + length: 30, + enum: ["EQUIPMENT", "BULK", "EQUIPMENT_BULK"] + }).notNull(), + + // 상태 + status: varchar("status", { + length: 30, + enum: ["PENDING", "CONFIRMED", "EXCLUDED"] + }).notNull().default("PENDING"), + + // 관리자 의견 + adminComment: text("admin_comment"), + adminUserId: integer("admin_user_id").references(() => users.id), + + // 종합 담당자 의견 (각 담당자들의 의견을 모아서 표시) + consolidatedComment: text("consolidated_comment"), + + // 의견 일치 여부 (null: 아직 검토중, true: 일치, false: 불일치) + consensusStatus: boolean("consensus_status"), + + // 최종 확정일 + confirmedAt: timestamp("confirmed_at"), + confirmedBy: integer("confirmed_by").references(() => users.id), + + ldClaimCount: integer("ld_claim_count").default(0), + ldClaimAmount: decimal("ld_claim_amount", { precision: 15, scale: 2 }).default("0"), + ldClaimCurrency: varchar("ld_claim_currency", { + length: 10, + enum: ["KRW", "USD", "EUR", "JPY"] + }).default("KRW"), + + + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at").defaultNow().notNull(), +}); + +// 평가 대상별 담당자 지정 테이블 +export const evaluationTargetReviewers = pgTable("evaluation_target_reviewers", { + id: serial("id").primaryKey(), + + evaluationTargetId: integer("evaluation_target_id") + .references(() => evaluationTargets.id, { onDelete: "cascade" }) + .notNull(), + + + departmentCode: varchar("department_code", { length: 50 }).notNull(), + departmentNameFrom: varchar("department_name_from", { length: 50 }), + + reviewerUserId: integer("reviewer_user_id") + .references(() => users.id) + .notNull(), + + // 지정일 + assignedAt: timestamp("assigned_at").defaultNow().notNull(), + assignedBy: integer("assigned_by").references(() => users.id).notNull(), + + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at").defaultNow().notNull(), +}, (table) => ({ + // 같은 평가대상에 같은 부서는 한 명의 담당자만 + uniqueTargetDepartment: unique("unique_target_department") + .on(table.evaluationTargetId, table.departmentCode), +})); + +// 각 담당자의 평가 대상 검토 결과 테이블 +export const evaluationTargetReviews = pgTable("evaluation_target_reviews", { + id: serial("id").primaryKey(), + + evaluationTargetId: integer("evaluation_target_id") + .references(() => evaluationTargets.id, { onDelete: "cascade" }) + .notNull(), + + reviewerUserId: integer("reviewer_user_id") + .references(() => users.id) + .notNull(), + + // 부서 코드 (API에서 부서 정보 조회용) + departmentCode: varchar("department_code", { length: 50 }).notNull(), + + // 평가 대상 동의 여부 + isApproved: boolean("is_approved"), + + // 검토 의견 + reviewComment: text("review_comment"), + + // 검토일 + reviewedAt: timestamp("reviewed_at"), + + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at").defaultNow().notNull(), +}, (table) => ({ + // 같은 평가대상에 같은 담당자는 한 번만 검토 + uniqueTargetReviewer: unique("unique_target_reviewer") + .on(table.evaluationTargetId, table.reviewerUserId), +})); + + +// 관계 정의 +export const evaluationTargetsRelations = relations(evaluationTargets, ({ one, many }) => ({ + vendor: one(vendors, { + fields: [evaluationTargets.vendorId], + references: [vendors.id], + }), + adminUser: one(users, { + fields: [evaluationTargets.adminUserId], + references: [users.id], + }), + confirmedByUser: one(users, { + fields: [evaluationTargets.confirmedBy], + references: [users.id], + }), + reviewers: many(evaluationTargetReviewers), + reviews: many(evaluationTargetReviews), +})); + +export const evaluationTargetReviewersRelations = relations(evaluationTargetReviewers, ({ one }) => ({ + evaluationTarget: one(evaluationTargets, { + fields: [evaluationTargetReviewers.evaluationTargetId], + references: [evaluationTargets.id], + }), + reviewer: one(users, { + fields: [evaluationTargetReviewers.reviewerUserId], + references: [users.id], + }), + assignedByUser: one(users, { + fields: [evaluationTargetReviewers.assignedBy], + references: [users.id], + }), +})); + +export const evaluationTargetReviewsRelations = relations(evaluationTargetReviews, ({ one }) => ({ + evaluationTarget: one(evaluationTargets, { + fields: [evaluationTargetReviews.evaluationTargetId], + references: [evaluationTargets.id], + }), + reviewer: one(users, { + fields: [evaluationTargetReviews.reviewerUserId], + references: [users.id], + }), +})); + +export const orderRecordsRelations = relations(contracts, ({ one }) => ({ + vendor: one(vendors, { + fields: [contracts.vendorId], + references: [vendors.id], + }), +})); + +// 평가 담당 부서 코드 상수 (조직 API와 매핑) +export const EVALUATION_DEPARTMENT_CODES = { + ORDER_EVAL: "ORDER_EVAL", // 발주 평가 담당 + PROCUREMENT_EVAL: "PROCUREMENT_EVAL", // 조달 평가 담당 + QUALITY_EVAL: "QUALITY_EVAL", // 품질 평가 담당 + DESIGN_EVAL: "DESIGN_EVAL", // 설계 평가 담당 + CS_EVAL: "CS_EVAL", // CS 평가 담당 +} as const; + +export type EvaluationDepartmentCode = keyof typeof EVALUATION_DEPARTMENT_CODES; + + // ============= TypeScript 타입 정의 ============= + + export type EvaluationTargetStatus = "PENDING" | "CONFIRMED" | "EXCLUDED"; + export type Division = "OCEAN" | "SHIPYARD"; + export type MaterialType = "EQUIPMENT" | "BULK" | "EQUIPMENT_BULK"; + export type DomesticForeign = "DOMESTIC" | "FOREIGN"; + + export interface EvaluationTargetCreate { + evaluationYear: number; + division: Division; + vendorId: number; + vendorCode: string; + vendorName: string; + domesticForeign: DomesticForeign; + materialType: MaterialType; + adminComment?: string; + managerComment?: string; + } + + export interface ReviewerAssignment { + departmentId: number; + reviewerUserId: number; + } + + export interface EvaluationReview { + evaluationTargetId: number; + reviewerUserId: number; + departmentId: number; + isApproved: boolean; + reviewComment?: string; + } + + export interface EvaluationTargetWithReviews { + id: number; + evaluationYear: number; + division: Division; + vendorCode: string; + vendorName: string; + domesticForeign: DomesticForeign; + materialType: MaterialType; + status: EvaluationTargetStatus; + consensusStatus: boolean | null; + adminComment?: string; + managerComment?: string; + reviews: { + departmentName: string; + reviewerName: string; + isApproved: boolean | null; + reviewComment?: string; + reviewedAt?: Date; + }[]; + } + + + + +export type EvaluationTargets = typeof evaluationTargets.$inferSelect; +export type NewEvaluationTargets= typeof evaluationTargets.$inferInsert; + + +export const evaluationTargetsWithDepartments = pgView("evaluation_targets_with_departments").as((qb) => { + return qb + .select({ + // 기본 정보 + id: evaluationTargets.id, + evaluationYear: evaluationTargets.evaluationYear, + division: evaluationTargets.division, + vendorCode: evaluationTargets.vendorCode, + vendorName: evaluationTargets.vendorName, + domesticForeign: evaluationTargets.domesticForeign, + materialType: evaluationTargets.materialType, + status: evaluationTargets.status, + consensusStatus: evaluationTargets.consensusStatus, + adminComment: evaluationTargets.adminComment, + consolidatedComment: evaluationTargets.consolidatedComment, + confirmedAt: evaluationTargets.confirmedAt, + confirmedBy: evaluationTargets.confirmedBy, + ldClaimCount: evaluationTargets.ldClaimCount, + ldClaimAmount: evaluationTargets.ldClaimAmount, + ldClaimCurrency: evaluationTargets.ldClaimCurrency, + createdAt: evaluationTargets.createdAt, + updatedAt: evaluationTargets.updatedAt, + + // 발주 평가 담당 (ORDER_EVAL) + orderReviewerName: sql<string | null>`order_reviewer.name`.as('order_reviewer_name'), + orderReviewerEmail: sql<string | null>`order_reviewer.email`.as('order_reviewer_email'), + orderDepartmentName: sql<string | null>`order_etr.department_name_from`.as('order_department_name'), + orderIsApproved: sql<boolean | null>`order_review.is_approved`.as('order_is_approved'), + orderReviewedAt: sql<Date | null>`order_review.reviewed_at`.as('order_reviewed_at'), + + // 조달 평가 담당 (PROCUREMENT_EVAL) + procurementReviewerName: sql<string | null>`procurement_reviewer.name`.as('procurement_reviewer_name'), + procurementReviewerEmail: sql<string | null>`procurement_reviewer.email`.as('procurement_reviewer_email'), + procurementDepartmentName: sql<string | null>`procurement_etr.department_name_from`.as('procurement_department_name'), + procurementIsApproved: sql<boolean | null>`procurement_review.is_approved`.as('procurement_is_approved'), + procurementReviewedAt: sql<Date | null>`procurement_review.reviewed_at`.as('procurement_reviewed_at'), + + // 품질 평가 담당 (QUALITY_EVAL) + qualityReviewerName: sql<string | null>`quality_reviewer.name`.as('quality_reviewer_name'), + qualityReviewerEmail: sql<string | null>`quality_reviewer.email`.as('quality_reviewer_email'), + qualityDepartmentName: sql<string | null>`quality_etr.department_name_from`.as('quality_department_name'), + qualityIsApproved: sql<boolean | null>`quality_review.is_approved`.as('quality_is_approved'), + qualityReviewedAt: sql<Date | null>`quality_review.reviewed_at`.as('quality_reviewed_at'), + + // 설계 평가 담당 (DESIGN_EVAL) + designReviewerName: sql<string | null>`design_reviewer.name`.as('design_reviewer_name'), + designReviewerEmail: sql<string | null>`design_reviewer.email`.as('design_reviewer_email'), + designDepartmentName: sql<string | null>`design_etr.department_name_from`.as('design_department_name'), + designIsApproved: sql<boolean | null>`design_review.is_approved`.as('design_is_approved'), + designReviewedAt: sql<Date | null>`design_review.reviewed_at`.as('design_reviewed_at'), + + // CS 평가 담당 (CS_EVAL) + csReviewerName: sql<string | null>`cs_reviewer.name`.as('cs_reviewer_name'), + csReviewerEmail: sql<string | null>`cs_reviewer.email`.as('cs_reviewer_email'), + csDepartmentName: sql<string | null>`cs_etr.department_name_from`.as('cs_department_name'), + csIsApproved: sql<boolean | null>`cs_review.is_approved`.as('cs_is_approved'), + csReviewedAt: sql<Date | null>`cs_review.reviewed_at`.as('cs_reviewed_at'), + }) + .from(evaluationTargets) + + // 발주 평가 담당자 JOIN + .leftJoin( + sql`evaluation_target_reviewers order_etr`, + sql`${evaluationTargets.id} = order_etr.evaluation_target_id AND order_etr.department_code = 'ORDER_EVAL'` + ) + .leftJoin( + sql`users order_reviewer`, + sql`order_etr.reviewer_user_id = order_reviewer.id` + ) + .leftJoin( + sql`evaluation_target_reviews order_review`, + sql`${evaluationTargets.id} = order_review.evaluation_target_id AND order_review.reviewer_user_id = order_reviewer.id` + ) + + // 조달 평가 담당자 JOIN + .leftJoin( + sql`evaluation_target_reviewers procurement_etr`, + sql`${evaluationTargets.id} = procurement_etr.evaluation_target_id AND procurement_etr.department_code = 'PROCUREMENT_EVAL'` + ) + .leftJoin( + sql`users procurement_reviewer`, + sql`procurement_etr.reviewer_user_id = procurement_reviewer.id` + ) + .leftJoin( + sql`evaluation_target_reviews procurement_review`, + sql`${evaluationTargets.id} = procurement_review.evaluation_target_id AND procurement_review.reviewer_user_id = procurement_reviewer.id` + ) + + // 품질 평가 담당자 JOIN + .leftJoin( + sql`evaluation_target_reviewers quality_etr`, + sql`${evaluationTargets.id} = quality_etr.evaluation_target_id AND quality_etr.department_code = 'QUALITY_EVAL'` + ) + .leftJoin( + sql`users quality_reviewer`, + sql`quality_etr.reviewer_user_id = quality_reviewer.id` + ) + .leftJoin( + sql`evaluation_target_reviews quality_review`, + sql`${evaluationTargets.id} = quality_review.evaluation_target_id AND quality_review.reviewer_user_id = quality_reviewer.id` + ) + + // 설계 평가 담당자 JOIN + .leftJoin( + sql`evaluation_target_reviewers design_etr`, + sql`${evaluationTargets.id} = design_etr.evaluation_target_id AND design_etr.department_code = 'DESIGN_EVAL'` + ) + .leftJoin( + sql`users design_reviewer`, + sql`design_etr.reviewer_user_id = design_reviewer.id` + ) + .leftJoin( + sql`evaluation_target_reviews design_review`, + sql`${evaluationTargets.id} = design_review.evaluation_target_id AND design_review.reviewer_user_id = design_reviewer.id` + ) + + // CS 평가 담당자 JOIN + .leftJoin( + sql`evaluation_target_reviewers cs_etr`, + sql`${evaluationTargets.id} = cs_etr.evaluation_target_id AND cs_etr.department_code = 'CS_EVAL'` + ) + .leftJoin( + sql`users cs_reviewer`, + sql`cs_etr.reviewer_user_id = cs_reviewer.id` + ) + .leftJoin( + sql`evaluation_target_reviews cs_review`, + sql`${evaluationTargets.id} = cs_review.evaluation_target_id AND cs_review.reviewer_user_id = cs_reviewer.id` + ); +}); + +// 타입 정의 +export type EvaluationTargetWithDepartments = typeof evaluationTargetsWithDepartments.$inferSelect; + diff --git a/db/schema/index.ts b/db/schema/index.ts index d3dbdf6d..fc59692d 100644 --- a/db/schema/index.ts +++ b/db/schema/index.ts @@ -18,6 +18,8 @@ export * from './techSales'; export * from './ocr'; export * from './bRfq'; export * from './techVendors'; +export * from './evaluation'; +export * from './evaluationTarget'; // MDG SOAP 수신용 // export * from './MDG/modelMaster' diff --git a/db/schema/procurementRFQ.ts b/db/schema/procurementRFQ.ts index f3b859d3..23521aaf 100644 --- a/db/schema/procurementRFQ.ts +++ b/db/schema/procurementRFQ.ts @@ -685,6 +685,8 @@ export const procurementRfqsRelations = relations( }), rfqDetails: many(procurementRfqDetails), prItems: many(prItems, { relationName: "rfqPrItems" }), + quotations: many(procurementVendorQuotations), + }) ); @@ -732,6 +734,7 @@ export const vendorsRelations = relations( users: many(users, { relationName: "vendorUsers" }), + quotations: many(procurementVendorQuotations), }) ); @@ -752,16 +755,14 @@ export const procurementVendorQuotationsRelations = relations( rfq: one(procurementRfqs, { fields: [procurementVendorQuotations.rfqId], references: [procurementRfqs.id], - relationName: "quotationRfq" // 명시적 관계명 추가 + // relationName 제거 }), vendor: one(vendors, { fields: [procurementVendorQuotations.vendorId], references: [vendors.id], - relationName: "quotationVendor" // 명시적 관계명 추가 + // relationName 제거 }), - // Add this missing relation - // items: many(procurementQuotationItems), - // These are optional but good to have + items: many(procurementQuotationItems), paymentTerms: one(paymentTerms, { fields: [procurementVendorQuotations.paymentTermsCode], references: [paymentTerms.code], diff --git a/db/schema/users.ts b/db/schema/users.ts index 2a1e45d6..f6a66a8f 100644 --- a/db/schema/users.ts +++ b/db/schema/users.ts @@ -1,4 +1,4 @@ -import { integer, pgTable, varchar,timestamp,pgEnum ,pgView, text, primaryKey} from "drizzle-orm/pg-core"; +import { integer, boolean,serial, pgTable, varchar,timestamp,pgEnum ,pgView, text, primaryKey} from "drizzle-orm/pg-core"; import { eq , sql} from "drizzle-orm"; import { vendors } from "./vendors"; import { techVendors } from "./techVendors"; @@ -24,6 +24,20 @@ export const users = pgTable("users", { }); + + // 부서 정의 테이블 + export const departments = pgTable("departments", { + id: serial("id").primaryKey(), + departmentCode: varchar("department_code", { length: 50 }).notNull().unique(), + departmentName: varchar("department_name", { length: 100 }).notNull(), + description: text("description"), + isActive: boolean("is_active").notNull().default(true), + + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at").defaultNow().notNull(), + }); + + export const otps = pgTable('otps', { email: varchar('email', { length: 256 }).notNull().primaryKey(), code: varchar('code', { length: 6 }).notNull(), |
