diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-12-01 10:28:05 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-12-01 10:28:05 +0000 |
| commit | cd0ce0cbe8af8719a6f542098ec78f2a5c1222ce (patch) | |
| tree | aca09d123c60852400c2fc8603928e110c53e8f5 /lib/general-contracts | |
| parent | 3a76ebfa18df15096ac21d10bf46f85b4d1e45e2 (diff) | |
(최겸) 구매 입찰 사전견적 개발(rfq-last)
Diffstat (limited to 'lib/general-contracts')
5 files changed, 36 insertions, 89 deletions
diff --git a/lib/general-contracts/detail/general-contract-info-header.tsx b/lib/general-contracts/detail/general-contract-info-header.tsx index c0a79d09..c966685e 100644 --- a/lib/general-contracts/detail/general-contract-info-header.tsx +++ b/lib/general-contracts/detail/general-contract-info-header.tsx @@ -1,5 +1,6 @@ import { Building2, Package, DollarSign, Calendar, FileText } from 'lucide-react'
import { formatDate } from '@/lib/utils'
+import { GENERAL_CONTRACT_TYPE_LABELS, GeneralContractType } from '@/lib/general-contracts/types'
interface GeneralContractInfoHeaderProps {
contract: {
@@ -45,24 +46,6 @@ const categoryLabels = { '매각계약': '매각계약'
}
-const typeLabels = {
- 'UP': '자재단가계약',
- 'LE': '임대차계약',
- 'IL': '개별운송계약',
- 'AL': '연간운송계약',
- 'OS': '외주용역계약',
- 'OW': '도급계약',
- 'LO': 'LOI',
- 'FA': 'FA',
- 'SC': '납품합의계약',
- 'OF': '클레임상계계약',
- 'AW': '사전작업합의',
- 'AD': '사전납품합의',
- 'SG': '임치(물품보관)계약',
- 'SR': '폐기물매각계약',
- 'SP': 'S-PEpC'
-}
-
export function GeneralContractInfoHeader({ contract }: GeneralContractInfoHeaderProps) {
return (
<div className="bg-white border rounded-lg p-6 mb-6 shadow-sm">
@@ -137,7 +120,7 @@ export function GeneralContractInfoHeader({ contract }: GeneralContractInfoHeade <div className="flex flex-col gap-1">
<span className="text-gray-500 text-sm">계약종류</span>
- <span className="font-medium">{typeLabels[contract.type as keyof typeof typeLabels] || contract.type}</span>
+ <span className="font-medium">{GENERAL_CONTRACT_TYPE_LABELS[contract.type as GeneralContractType] || contract.type}</span>
</div>
<div className="flex flex-col gap-1">
diff --git a/lib/general-contracts/main/create-general-contract-dialog.tsx b/lib/general-contracts/main/create-general-contract-dialog.tsx index 8a506e4f..720192d8 100644 --- a/lib/general-contracts/main/create-general-contract-dialog.tsx +++ b/lib/general-contracts/main/create-general-contract-dialog.tsx @@ -22,6 +22,7 @@ import { createContract } from "@/lib/general-contracts/service" import {
GENERAL_CONTRACT_CATEGORIES,
GENERAL_CONTRACT_TYPES,
+ GENERAL_CONTRACT_TYPE_LABELS,
GENERAL_EXECUTION_METHODS
} from "@/lib/general-contracts/types"
import { useSession } from "next-auth/react"
@@ -209,26 +210,9 @@ export function CreateGeneralContractDialog() { </SelectTrigger>
<SelectContent>
{GENERAL_CONTRACT_TYPES.map((type) => {
- const typeLabels = {
- 'UP': '자재단가계약',
- 'LE': '임대차계약',
- 'IL': '개별운송계약',
- 'AL': '연간운송계약',
- 'OS': '외주용역계약',
- 'OW': '도급계약',
- 'LO': 'LOI',
- 'FA': 'FA',
- 'SC': '납품합의계약',
- 'OF': '클레임상계계약',
- 'AW': '사전작업합의',
- 'AD': '사전납품합의',
- 'SG': '임치(물품보관)계약',
- 'SR': '폐기물매각계약',
- 'SP': 'S-PEpC'
- }
return (
<SelectItem key={type} value={type}>
- {type} - {typeLabels[type as keyof typeof typeLabels]}
+ {type} - {GENERAL_CONTRACT_TYPE_LABELS[type]}
</SelectItem>
)
})}
diff --git a/lib/general-contracts/main/general-contracts-table-columns.tsx b/lib/general-contracts/main/general-contracts-table-columns.tsx index c43bb383..ce51b791 100644 --- a/lib/general-contracts/main/general-contracts-table-columns.tsx +++ b/lib/general-contracts/main/general-contracts-table-columns.tsx @@ -17,6 +17,7 @@ import { import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header"
import { DataTableRowAction } from "@/types/table"
import { formatDate } from "@/lib/utils"
+import { GENERAL_CONTRACT_TYPE_LABELS, GeneralContractType, isGeneralContractType } from "@/lib/general-contracts/types"
// 일반계약 리스트 아이템 타입 정의
export interface GeneralContractListItem {
@@ -115,40 +116,10 @@ const getCategoryText = (category: string) => { // 계약종류 텍스트 변환
const getTypeText = (type: string) => {
- switch (type) {
- case 'UP':
- return '자재단가계약'
- case 'LE':
- return '임대차계약'
- case 'IL':
- return '개별운송계약'
- case 'AL':
- return '연간운송계약'
- case 'OS':
- return '외주용역계약'
- case 'OW':
- return '도급계약'
- case 'LO':
- return 'LOI'
- case 'FA':
- return 'FA'
- case 'SC':
- return '납품합의계약'
- case 'OF':
- return '클레임상계계약'
- case 'AW':
- return '사전작업합의'
- case 'AD':
- return '사전납품합의'
- case 'SG':
- return '임치(물품보관)계약'
- case 'SR':
- return '폐기물매각계약'
- case 'SP':
- return 'S-PEpC'
- default:
- return type
+ if (isGeneralContractType(type)) {
+ return GENERAL_CONTRACT_TYPE_LABELS[type];
}
+ return type;
}
// 체결방식 텍스트 변환
diff --git a/lib/general-contracts/main/general-contracts-table.tsx b/lib/general-contracts/main/general-contracts-table.tsx index 5428435e..95bfe602 100644 --- a/lib/general-contracts/main/general-contracts-table.tsx +++ b/lib/general-contracts/main/general-contracts-table.tsx @@ -16,7 +16,8 @@ import { getGeneralContracts, getGeneralContractStatusCounts } from "@/lib/gener import { GeneralContractsTableToolbarActions } from "./general-contracts-table-toolbar-actions"
import { GeneralContractUpdateSheet } from "./general-contract-update-sheet"
import {
- GENERAL_EXECUTION_METHODS
+ GENERAL_EXECUTION_METHODS,
+ GENERAL_CONTRACT_TYPE_LABELS
} from "@/lib/general-contracts/types"
// 상태 라벨 매핑
@@ -42,23 +43,7 @@ const contractCategoryLabels = { }
// 계약종류 라벨 매핑
-const contractTypeLabels = {
- 'UP': '자재단가계약',
- 'LE': '임대차계약',
- 'IL': '개별운송계약',
- 'AL': '연간운송계약',
- 'OS': '외주용역계약',
- 'OW': '도급계약',
- 'LO': 'LOI',
- 'FA': 'FA',
- 'SC': '납품합의계약',
- 'OF': '클레임상계계약',
- 'AW': '사전작업합의',
- 'AD': '사전납품합의',
- 'SG': '임치(물품보관)계약',
- 'SR': '폐기물매각계약',
- 'SP': 'S-PEpC'
-}
+const contractTypeLabels = GENERAL_CONTRACT_TYPE_LABELS;
interface GeneralContractsTableProps {
promises: Promise<
diff --git a/lib/general-contracts/types.ts b/lib/general-contracts/types.ts index 6793d76c..9761b414 100644 --- a/lib/general-contracts/types.ts +++ b/lib/general-contracts/types.ts @@ -25,11 +25,35 @@ export const GENERAL_CONTRACT_TYPES = [ 'AD', // 사전납품합의 (Advanced Delivery)
'SG', // 임치(물품보관)계약
'SR', // 폐기물매각계약 (Scrap)
- 'SP' // S-PEpC
+ 'SP', // S-PEpC
+ 'CC', // 소모품 단가계약
+ 'DC', // 수출입가공 납품확인서
+ 'SA' // 정산합의
] as const;
export type GeneralContractType = typeof GENERAL_CONTRACT_TYPES[number];
+export const GENERAL_CONTRACT_TYPE_LABELS: Record<GeneralContractType, string> = {
+ 'UP': '자재단가계약',
+ 'LE': '임대차계약',
+ 'IL': '개별운송계약',
+ 'AL': '연간운송계약',
+ 'OS': '외주용역계약',
+ 'OW': '도급계약',
+ 'LO': 'LOI',
+ 'FA': 'FA',
+ 'SC': '납품합의계약',
+ 'OF': '클레임상계계약',
+ 'AW': '사전작업합의',
+ 'AD': '사전납품합의',
+ 'SG': '임치(물품보관)계약',
+ 'SR': '폐기물매각계약',
+ 'SP': 'S-PEpC',
+ 'CC': '소모품 단가계약',
+ 'DC': '수출입가공 납품확인서',
+ 'SA': '정산합의'
+};
+
// 3. 계약상태
export const GENERAL_CONTRACT_STATUSES = [
'Draft', // 임시 저장
|
