diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-15 10:14:09 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-15 10:14:09 +0000 |
| commit | d7585b3f2ea941ee807c1e87bbc833265a193c78 (patch) | |
| tree | 70d659154ed5feeebc312a5bf850ceecc1c4c441 /lib/general-contracts/main | |
| parent | dd831478a3ab5ac7182903d41aa4b3e47f28224f (diff) | |
(최겸) 구매 일반계약 및 상세, PO 전달 구현
Diffstat (limited to 'lib/general-contracts/main')
4 files changed, 34 insertions, 34 deletions
diff --git a/lib/general-contracts/main/create-general-contract-dialog.tsx b/lib/general-contracts/main/create-general-contract-dialog.tsx index b2f538c3..3eb8b11c 100644 --- a/lib/general-contracts/main/create-general-contract-dialog.tsx +++ b/lib/general-contracts/main/create-general-contract-dialog.tsx @@ -2,7 +2,6 @@ import * as React from "react"
import { useRouter } from "next/navigation"
-import { useSession } from "next-auth/react"
import { Plus } from "lucide-react"
import { toast } from "sonner"
import { Button } from "@/components/ui/button"
@@ -29,9 +28,9 @@ import { createContract, getVendors } from "@/lib/general-contracts/service" import {
GENERAL_CONTRACT_CATEGORIES,
GENERAL_CONTRACT_TYPES,
- GENERAL_EXECUTION_METHODS,
- GENERAL_CONTRACT_SCOPES
+ GENERAL_EXECUTION_METHODS
} from "@/lib/general-contracts/types"
+import { useSession } from "next-auth/react"
interface CreateContractForm {
contractNumber: string
@@ -91,15 +90,6 @@ export function CreateGeneralContractDialog() { fetchVendors()
}, [])
- const generateContractNumber = () => {
- const now = new Date()
- const year = now.getFullYear()
- const month = String(now.getMonth() + 1).padStart(2, '0')
- const day = String(now.getDate()).padStart(2, '0')
- const time = String(now.getHours()).padStart(2, '0') + String(now.getMinutes()).padStart(2, '0')
- return `CT${year}${month}${day}${time}`
- }
-
const handleSubmit = async () => {
// 필수 필드 검증
if (!form.name || !form.category || !form.type || !form.executionMethod ||
@@ -116,7 +106,7 @@ export function CreateGeneralContractDialog() { setIsLoading(true)
const contractData = {
- contractNumber: generateContractNumber(),
+ contractNumber: '',
name: form.name,
category: form.category,
type: form.type,
@@ -129,8 +119,8 @@ export function CreateGeneralContractDialog() { // contractScope: form.contractScope,
// specificationType: form.specificationType,
status: 'Draft',
- registeredById: session?.user?.id ? parseInt(session.user.id) : 3,
- lastUpdatedById: session?.user?.id ? parseInt(session.user.id) : 3,
+ registeredById: session?.user?.id || 1,
+ lastUpdatedById: session?.user?.id || 1,
notes: form.notes,
linkedRfqOrItb: form.linkedRfqOrItb,
linkedBidNumber: form.linkedBidNumber,
diff --git a/lib/general-contracts/main/general-contract-update-sheet.tsx b/lib/general-contracts/main/general-contract-update-sheet.tsx index 57e4fe16..064fded3 100644 --- a/lib/general-contracts/main/general-contract-update-sheet.tsx +++ b/lib/general-contracts/main/general-contract-update-sheet.tsx @@ -38,7 +38,7 @@ import { } from "@/lib/general-contracts/types" import { updateContract } from "../service" import { GeneralContractListItem } from "./general-contracts-table-columns" - +import { useSession } from "next-auth/react" const updateContractSchema = z.object({ category: z.string().min(1, "계약구분을 선택해주세요"), type: z.string().min(1, "계약종류를 선택해주세요"), @@ -70,7 +70,8 @@ export function GeneralContractUpdateSheet({ onSuccess, }: GeneralContractUpdateSheetProps) { const [isSubmitting, setIsSubmitting] = React.useState(false) - + const session = useSession() + const userId = session.data?.user?.id ? Number(session.data.user.id) : null const form = useForm<UpdateContractFormData>({ resolver: zodResolver(updateContractSchema), defaultValues: { @@ -141,6 +142,8 @@ export function GeneralContractUpdateSheet({ linkedRfqOrItb: data.linkedRfqOrItb, linkedPoNumber: data.linkedPoNumber, linkedBidNumber: data.linkedBidNumber, + vendorId: contract.vendorId, + lastUpdatedById: userId, }) toast.success("계약 정보가 성공적으로 수정되었습니다.") diff --git a/lib/general-contracts/main/general-contracts-table-columns.tsx b/lib/general-contracts/main/general-contracts-table-columns.tsx index 394a2cf5..d7854ee6 100644 --- a/lib/general-contracts/main/general-contracts-table-columns.tsx +++ b/lib/general-contracts/main/general-contracts-table-columns.tsx @@ -46,6 +46,7 @@ export interface GeneralContractListItem { linkedBidNumber?: string
lastUpdatedAt: string
notes?: string
+ vendorId?: number
vendorName?: string
vendorCode?: string
managerName?: string
@@ -188,13 +189,16 @@ const getSelectionMethodText = (method?: string) => { // 금액 포맷팅
const formatCurrency = (amount: string | number | null | undefined, currency = 'KRW') => {
if (!amount && amount !== 0) return '-'
-
+
const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount
if (isNaN(numAmount)) return '-'
-
+
+ // 통화 코드가 null이거나 유효하지 않은 경우 기본값 사용
+ const safeCurrency = currency && typeof currency === 'string' ? currency : 'USD'
+
return new Intl.NumberFormat('ko-KR', {
style: 'currency',
- currency: currency,
+ currency: safeCurrency,
minimumFractionDigits: 0,
maximumFractionDigits: 0,
}).format(numAmount)
@@ -527,15 +531,18 @@ export function getGeneralContractsColumns({ setRowAction }: GetColumnsProps): C </Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
- <DropdownMenuItem onClick={() => setRowAction({ row, type: "view" })}>
- <Eye className="mr-2 h-4 w-4" />
- 상세보기
- </DropdownMenuItem>
- <DropdownMenuItem onClick={() => setRowAction({ row, type: "update" })}>
- <Edit className="mr-2 h-4 w-4" />
- 수정
- </DropdownMenuItem>
- <DropdownMenuSeparator />
+ {row.original.status !== 'Contract Delete' && (
+ <>
+ <DropdownMenuItem onClick={() => setRowAction({ row, type: "view" })}>
+ <Eye className="mr-2 h-4 w-4" />
+ 상세보기
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => setRowAction({ row, type: "update" })}>
+ <Edit className="mr-2 h-4 w-4" />
+ 수정
+ </DropdownMenuItem>
+ </>
+ )}
</DropdownMenuContent>
</DropdownMenu>
),
diff --git a/lib/general-contracts/main/general-contracts-table-toolbar-actions.tsx b/lib/general-contracts/main/general-contracts-table-toolbar-actions.tsx index 28d64824..f16b759a 100644 --- a/lib/general-contracts/main/general-contracts-table-toolbar-actions.tsx +++ b/lib/general-contracts/main/general-contracts-table-toolbar-actions.tsx @@ -56,12 +56,12 @@ export function GeneralContractsTableToolbarActions({ table }: GeneralContractsT return
}
- // 계약폐기 확인
- const confirmed = window.confirm(
- `선택한 ${selectedContracts.length}개 계약을 폐기하시겠습니까?\n계약폐기 후에는 복구할 수 없습니다.`
- )
+ // // 계약폐기 확인
+ // const confirmed = window.confirm(
+ // `선택한 ${selectedContracts.length}개 계약을 폐기하시겠습니까?\n계약폐기 후에는 복구할 수 없습니다.`
+ // )
- if (!confirmed) return
+ // if (!confirmed) return
try {
// 선택된 모든 계약을 폐기 처리
|
