From c8beed57d9fb10c02b8951cd4267017984ca5beb Mon Sep 17 00:00:00 2001 From: dujinkim Date: Wed, 17 Sep 2025 10:41:29 +0000 Subject: (최겸) 구매 일반계약 프로젝트id추가, 선적지, 하역지 연동, numbering 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/schema/generalContract.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'db/schema') diff --git a/db/schema/generalContract.ts b/db/schema/generalContract.ts index 2571faa3..4d1de750 100644 --- a/db/schema/generalContract.ts +++ b/db/schema/generalContract.ts @@ -3,6 +3,7 @@ import { relations } from 'drizzle-orm'; import { users } from './users'; // users 테이블이 존재한다고 가정 import { vendors } from './vendors'; // vendors 테이블이 존재한다고 가정 import { contracts } from './contract'; +import { projects } from './projects'; // projects 테이블 추가 export const generalContractTemplates = pgTable('general_contract_templates', { id: integer("id").primaryKey().generatedAlwaysAsIdentity(), @@ -39,14 +40,14 @@ export const generalContracts = pgTable('general_contracts', { status: varchar('status', { length: 50 }).notNull(), // 계약 상태 (Draft, Complete the Contract, Contract Delete 등) category: varchar('category', { length: 50 }).notNull(), // 계약구분 (단가계약, 일반계약, 매각계약) type: varchar('type', { length: 50 }), // 계약종류 (UP, LE, IL, AL 등) - executionMethod: varchar('execution_method', { length: 50 }), // 체결방식 (단가계약, 일반계약 등) + executionMethod: varchar('execution_method', { length: 50 }), // 체결방식 (오프라인, 온라인 등) name: varchar('name', { length: 255 }), // 계약명 - selectionMethod: varchar('selection_method', { length: 50 }), // 업체선정방법 // ═══════════════════════════════════════════════════════════════ // 협력업체 및 계약 기간 // ═══════════════════════════════════════════════════════════════ vendorId: integer('vendor_id').notNull().references(() => vendors.id), // 협력업체 ID + projectId: integer('project_id').references(() => projects.id), // 프로젝트 ID (nullable) startDate: date('start_date'), // 계약 시작일 endDate: date('end_date'), // 계약 종료일 validityEndDate: date('validity_end_date'), // 계약 유효기간 종료일 @@ -109,11 +110,11 @@ export const generalContracts = pgTable('general_contracts', { // 기타 계약 조건 및 약관 (JSON 형태) // ═══════════════════════════════════════════════════════════════ terms: jsonb('terms').default({}), // 계약 조건 - complianceChecklist: jsonb('compliance_checklist').default({}), // 컴플라이언스 체크리스트 + complianceChecklist: jsonb('compliance_checklist').default({}), // 하도급법 체크리스트 communicationChannels: jsonb('communication_channels').default({}), // 커뮤니케이션 채널 locations: jsonb('locations').default({}), // 위치 정보 - fieldServiceRates: jsonb('field_service_rates').default({}), // 현장 서비스 요금 - offsetDetails: jsonb('offset_details').default({}), // 오프셋 세부사항 + fieldServiceRates: jsonb('field_service_rates').default({}), // 현장 서비스 요금(국가별 현장 서비스 요금) + offsetDetails: jsonb('offset_details').default({}), // 회입/상계내역 // ═══════════════════════════════════════════════════════════════ // 시스템 관리 정보 @@ -136,7 +137,6 @@ export const generalContractItems = pgTable('general_contract_items', { // ═══════════════════════════════════════════════════════════════ // 품목 기본 정보 // ═══════════════════════════════════════════════════════════════ - project: varchar('project', { length: 255 }), // 프로젝트 명 itemCode: varchar('item_code', { length: 100 }), // 품목코드 (PKG No.) itemInfo: varchar('item_info', { length: 500 }), // Item 정보 (자재그룹 / 자재코드) specification: varchar('specification', { length: 500 }), // 규격 @@ -199,6 +199,10 @@ export const generalContractsRelations = relations(generalContracts, ({ one, man fields: [generalContracts.vendorId], references: [vendors.id], }), + project: one(projects, { + fields: [generalContracts.projectId], + references: [projects.id], + }), items: many(generalContractItems), attachments: many(generalContractAttachments), })); -- cgit v1.2.3