summaryrefslogtreecommitdiff
path: root/config/vendorRfqShipColumnsConfig.ts
blob: 7cd62c967ac863ac8b86a72c97b7a6c42cb48722 (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
export interface RfqShipVendorRow {
  /** 주요 식별 정보 */
  id: number
  vendorId: number
  rfqId: number
  
  /** Vendor 기본정보 */
  vendorName: string
  vendorCode: string | null
  vendorStatus: string | null
  
  /** 프로젝트 정보 */
  projectId: number | null
  projectCode: string | null
  projectName: string | null
  
  /** RFQ 정보 */
  rfqCode: string | null
  rfqDescription: string | null
  
  /** CBE 응답 정보 */
  commercialResponseStatus: string | null
  totalPrice: number | null
  currency: string | null
  paymentTerms: string | null
  incoterms: string | null
  deliveryPeriod: string | null
  warrantyPeriod: string | null
  validityPeriod: string | null
  commercialNotes: string | null
  respondedAt: Date | null
  
  /** 첨부파일 개수 */
  attachmentCount: number | null
  commercialAttachmentCount: number | null
  
  /** 댓글 목록 */
  comments: Array<{
    id: number
    commentText: string
    vendorId?: number
    createdAt: Date
    commentedBy?: number
  }>
}

export interface RfqShipColumnConfig {
  /** 객체의 어느 필드를 표시할지 */
  id: keyof RfqShipVendorRow;

  /** 화면에서 보여줄 컬럼명 */
  label: string;

  /** (선택) 그룹핑/카테고리 */
  group?: string;

  /** (선택) Excel에서의 헤더 */
  excelHeader?: string;

  /** (선택) 데이터 타입(예: date, string, number 등), 포맷 지정용 */
  type?: string;
}

/**
 * 프로젝트 정보, 벤더 정보, CBE 정보가 결합된 컬럼 구성
 */
export const rfqShipColumnsConfig: RfqShipColumnConfig[] = [
  // 프로젝트 정보
  {
    id: "projectCode",
    label: "Project Code",
    excelHeader: "Project Code",
    group: "Project Info",
  },
  {
    id: "projectName",
    label: "Project Name",
    excelHeader: "Project Name",
    group: "Project Info",
  },
  {
    id: "rfqCode",
    label: "RFQ Code",
    excelHeader: "RFQ Code",
    group: "Project Info",
  },
  
  // 벤더 정보
  {
    id: "vendorName",
    label: "Vendor Name",
    excelHeader: "Vendor Name",
    group: "Vendor Info",
  },
  {
    id: "vendorCode",
    label: "Vendor Code",
    excelHeader: "Vendor Code",
    group: "Vendor Info",
  },
  
  // 상업 응답 정보
  {
    id: "commercialResponseStatus",
    label: "Status",
    excelHeader: "Status",
    group: "Commercial Response",
    type: "text",
  },
  {
    id: "totalPrice",
    label: "Total Price",
    excelHeader: "Total Price",
    group: "Commercial Response",
    type: "number",
  },
  {
    id: "currency",
    label: "Currency",
    excelHeader: "Currency",
    group: "Commercial Response",
  },
  {
    id: "paymentTerms",
    label: "Payment Terms",
    excelHeader: "Payment Terms",
    group: "Commercial Response",
  },
  {
    id: "incoterms",
    label: "Incoterms",
    excelHeader: "Incoterms",
    group: "Commercial Response",
  },
  {
    id: "deliveryPeriod",
    label: "Delivery Period",
    excelHeader: "Delivery Period",
    group: "Commercial Response",
  }
]