diff options
Diffstat (limited to 'db/schema/generalContract.ts')
| -rw-r--r-- | db/schema/generalContract.ts | 16 |
1 files changed, 10 insertions, 6 deletions
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),
}));
|
