summaryrefslogtreecommitdiff
path: root/lib/avl/types.ts
blob: 6a7b5143d78b0ac92551589a2ea256c6fc88fffa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
// AVL 관련 타입 정의
import { AvlList, AvlVendorInfo } from "@/db/schema/avl/avl";

// AVL 리스트 아이템 (UI에서 사용하는 타입)
export interface AvlListItem extends Omit<AvlList, 'createdAt' | 'updatedAt'> {
  no: number;
  selected: boolean;
  createdAt: string; // UI에서 사용하기 위해 string으로 변환
  updatedAt: string; // UI에서 사용하기 위해 string으로 변환
  vendorInfoSnapshot?: any; // JSON 데이터

  // 추가 표시용 필드들 (실제로는 AvlVendorInfo에서 가져와야 함)
  projectInfo?: string;
  shipType?: string;
  avlType?: string;
  htDivision?: string;
  rev?: number;
  pkg?: string;
  materialGroup?: string;
  vendor?: string;
  tier?: string;
  ownerSuggestion?: string;
  shiSuggestion?: string;
  registrant?: string;
  lastModifier?: string;
}

// AVL 상세 아이템 (UI에서 사용하는 타입)
export interface AvlDetailItem extends Omit<AvlVendorInfo, 'createdAt' | 'updatedAt'> {
  no: number;
  selected: boolean;
  createdAt: string;
  updatedAt: string;

  // UI 표시용 추가 필드들
  equipBulkDivision: 'EQUIP' | 'BULK'; // UI에서 표시하기 위한 변환
  faTarget: boolean; // UI에서 표시하기 위한 변환
  faStatus: string;
  agentStatus: string; // UI에서 표시하기 위한 변환
  shiAvl: boolean; // hasAvl로 매핑
  shiBlacklist: boolean; // isBlacklist로 매핑
  shiBcc: boolean; // isBcc로 매핑
  salesQuoteNumber: string; // techQuoteNumber로 매핑
  quoteCode: string; // quoteCode로 매핑
  salesVendorInfo: string; // quoteVendorName으로 매핑
  salesCountry: string; // quoteCountry로 매핑
  totalAmount: string; // quoteTotalAmount로 매핑 (string으로 변환)
  quoteReceivedDate: string; // quoteReceivedDate로 매핑
  recentQuoteDate: string; // recentQuoteDate로 매핑
  recentQuoteNumber: string; // recentQuoteNumber로 매핑
  recentOrderDate: string; // recentOrderDate로 매핑
  recentOrderNumber: string; // recentOrderNumber로 매핑
  remarks: string; // remark으로 매핑
}

// AVL 생성을 위한 입력 타입
export interface CreateAvlListInput extends Omit<AvlList, 'id' | 'createdAt' | 'updatedAt' | 'vendorInfoSnapshot'> {
  // UI에서 입력받을 추가 필드들
  projectInfo?: string;
  shipType?: string;
  avlType?: string;
  vendorInfoSnapshot?: any; // JSON 데이터, 선택적 속성
}

// AVL 업데이트를 위한 입력 타입
export interface UpdateAvlListInput extends Partial<CreateAvlListInput> {
  id: number;
}


// AVL Vendor Info UI 입력을 위한 인터페이스
export interface AvlVendorInfoInput {
  // AVL 타입 구분
  isTemplate?: boolean; // false: 프로젝트 AVL, true: 표준 AVL

  // 표준 AVL용 필드들 (isTemplate=true일 경우)
  constructionSector?: string; // 공사부문
  shipType?: string; // 선종
  avlKind?: string; // AVL 종류
  htDivision?: string; // H/T 구분

  // 프로젝트 코드 (나중에 AVL 리스트와 연결할 때 사용)
  projectCode?: string;

  // AVL 리스트 ID (생성 시 필수, UI에서는 선택적으로 사용)
  avlListId?: number;

  // 설계 정보
  equipBulkDivision: 'EQUIP' | 'BULK';
  disciplineCode?: string;
  disciplineName: string;

  // 자재 정보
  materialNameCustomerSide: string;

  // 패키지 정보
  packageCode?: string;
  packageName?: string;

  // 자재그룹 정보
  materialGroupCode?: string;
  materialGroupName?: string;

  // 협력업체 정보
  vendorId?: number;
  vendorName?: string;
  vendorCode?: string;

  // AVL 정보
  avlVendorName?: string;
  tier?: string;

  // 제안방향
  ownerSuggestion?: boolean;
  shiSuggestion?: boolean;

  // 위치 정보
  headquarterLocation?: string;
  manufacturingLocation?: string;

  // FA 정보
  faTarget?: boolean;
  faStatus?: string;

  // Agent 정보
  isAgent?: boolean;

  // 계약 서명주체
  contractSignerId?: number;
  contractSignerName?: string;
  contractSignerCode?: string;

  // SHI Qualification
  shiAvl?: boolean;
  shiBlacklist?: boolean;
  shiBcc?: boolean;

  // 기술영업 견적결과
  salesQuoteNumber?: string;
  quoteCode?: string;
  quoteVendorId?: number;
  salesVendorInfo?: string;
  quoteVendorCode?: string;
  salesCountry?: string;
  totalAmount?: string;
  quoteReceivedDate?: string;

  // 업체 실적 현황
  recentQuoteDate?: string;
  recentQuoteNumber?: string;
  recentOrderDate?: string;
  recentOrderNumber?: string;

  // 기타
  remarks?: string;
}

// 액션 처리 결과 타입
export interface ActionResult {
  success: boolean;
  message: string;
  data?: any;
}