summaryrefslogtreecommitdiff
path: root/lib/avl/types.ts
blob: 640299efeabdd4ceb751fe1679ed9e1c80f9e0bf (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
// 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으로 변환

  // 추가 표시용 필드들 (실제로는 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'> {
  // UI에서 입력받을 추가 필드들
  projectInfo?: string;
  shipType?: string;
  avlType?: string;
}

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


// AVL Vendor Info UI 입력을 위한 인터페이스
export interface AvlVendorInfoInput {
  // 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;
}