diff --git a/src/app/(main)/m/admin/procurements/new/page.tsx b/src/app/(main)/m/admin/procurements/new/page.tsx index aa2f483..76b1dc2 100644 --- a/src/app/(main)/m/admin/procurements/new/page.tsx +++ b/src/app/(main)/m/admin/procurements/new/page.tsx @@ -4,6 +4,7 @@ import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Trash2, Plus } from "lucide-react"; import Swal from "sweetalert2"; +import { SearchableSelect } from "@/components/ui/searchable-select"; interface Vendor { OBJID: string; VENDOR_NAME: string } interface Item { OBJID: string; ITEM_CODE: string; ITEM_NAME: string; COST_PRICE: number } @@ -58,10 +59,14 @@ export default function NewProcPage() {
- +
+ ({ value: v.OBJID, label: v.VENDOR_NAME }))} + placeholder="공급업체 검색/선택" + /> +
diff --git a/src/app/(main)/m/admin/procurements/page.tsx b/src/app/(main)/m/admin/procurements/page.tsx index da1e8d2..9a478e5 100644 --- a/src/app/(main)/m/admin/procurements/page.tsx +++ b/src/app/(main)/m/admin/procurements/page.tsx @@ -352,8 +352,9 @@ function ProcurementForm({ detail, vendors, onSetVendor, onSetMemo, onSetTerm, o onUpdateLine: (line: { objid?: string; itemObjid?: string; qty: number; costPrice: number }) => void; onDeleteLine: (objid: string) => void; }) { - // 입금완료(PAID)/취소(CANCELLED) 전까지 수정 허용 — 발주요청/입고완료/부분입고 도 수량 수정 가능 - const editable = !["PAID", "CANCELLED"].includes(detail.proc.STATUS); + // OPEN(작성중) / REQUESTED(발주요청) 만 수정 가능. + // RECEIVED(입고완료) / PARTIAL(부분입고) / PAID(입금완료) / CANCELLED 는 수정 불가. + const editable = ["OPEN", "REQUESTED"].includes(detail.proc.STATUS); const formRef = useRef(null); const handleCapture = async () => { @@ -419,12 +420,14 @@ function ProcurementForm({ detail, vendors, onSetVendor, onSetMemo, onSetTerm, o 공급업체 {editable ? ( - +
+ ({ value: v.OBJID, label: v.VENDOR_NAME }))} + placeholder="공급업체 검색/선택" + /> +
) : ( {detail.proc.VENDOR_NAME ?? "-"} )} diff --git a/src/app/api/m/procurements/lines/save/route.ts b/src/app/api/m/procurements/lines/save/route.ts index 5ba2a2c..54015ac 100644 --- a/src/app/api/m/procurements/lines/save/route.ts +++ b/src/app/api/m/procurements/lines/save/route.ts @@ -34,10 +34,10 @@ export async function POST(req: NextRequest) { return NextResponse.json({ success: false, message: "발주서를 찾을 수 없습니다." }, { status: 404 }); } const status = procRes.rows[0].status; - // 입금완료(PAID)/취소(CANCELLED) 외 모든 상태에서 수정 허용 - if (status === "PAID" || status === "CANCELLED") { + // OPEN/REQUESTED 만 허용. 입고완료/부분입고/입금완료/취소는 차단. + if (status !== "OPEN" && status !== "REQUESTED") { await client.query("ROLLBACK"); - return NextResponse.json({ success: false, message: "입금완료/취소 상태는 수정할 수 없습니다." }, { status: 400 }); + return NextResponse.json({ success: false, message: "입고완료 이후 상태는 수정할 수 없습니다." }, { status: 400 }); } for (const ln of lines) {